inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

176만명의 커뮤니티!! 함께 토론해봐요.

BasicErrorController와 Interceptor로 오류페이지 처리하기

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요, 스프링 부트에서 인터셉터로 로그인 체크를 하면서 오류 페이지를 보이도록 하는데 인터셉터의 excludePathPatterns와 관련하여 질문글을 올립니다. BasicErrorController가 <예외 처리와 오류 페이지> 강의 전반에 걸쳐 했던 작업들을 모두 자동으로 해주기 때문에, 개발자는 오류 페이지만 resources/templates/error/4xx.html 등의 경로에 생성해주면 된다 이해했습니다. 이 과정에서 작성할 부분은 오류페이지 html 로그인 인터셉터 구현 및 WebConfig에 인터셉터 등록, 설정 BasicErrorController의 기본 경로인 "/error" 제외하기 라고 생각했는데, 실제로 저 부분만 작성하여 컨트롤러에 등록되지 않은 url로 테스트를 해보니 인터셉터로 인해 로그인 페이지로 이동됩니다. 제가 작성한 WebConfig의 코드는 아래와 같습니다. @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { log.info("addInterceptors 실행"); registry.addInterceptor(new MyInterceptor()) .order(1) .addPathPatterns("/**") .excludePathPatterns("/", "/user/join", "/user/login", "/user/logout", "/css/**", "/*.ico", "/error"); } @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { resolvers.add(new LoginUserArgumentResolver()); } } 인터셉터 관련 부분만 주석처리하고 테스트를 해보면 BasicController가 작동을 잘 하여 오류 페이지가 보이는데, 인터셉터의 경로를 제외하는 부분에서 제가 잘못 작성한 부분이 있을까요? 그렇지 않다면 제가 놓친 다른 부분이 있을까요?

  • spring
  • mvc
HyunRian 댓글 4 좋아요 0 조회수 592

상품관리 컨트롤러 /주문관리 컨트롤러 예외 객체

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요. @ExceptionHandler 강의에서 예를 들어주시던 상품을 처리하는 컨트롤러와 주문을 처리하는 컨트롤러에서 발생하는 예외를 다른 응답방식으로 처리하고 싶다면 @Data @AllArgsConstructor public class ProductErrorResult { private String productName; private String code; private String message; } @Data @AllArgsConstructor public class OrderErrorResult { private int orderNumber; private String code; private String message; } 예를 들면 위와 같은 방식으로 각각 상품과 주문에러 처리를 다른 DTO객체로 만들어서 api json 응답을 하면 되는것일까요? + 추가로, 또한 @ExceptionHanlder(annotation = ProoductController.class) @ExceptionHandler(annotaion= OrderProduct.class) 각각의 특정 클래스(상품 ,주문 클래스)를 개별적으로 달아주면 한개의 @RestControllerAdvice 에서 "같은 예외도 다른 방식으로 처리" 가 가능한 것이죠?

  • spring
  • mvc
수빈 댓글 1 좋아요 0 조회수 283

앞으로 사야할 유료 강의들 소스코드 제공 여부가 궁금합니다

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 아니요 [질문 내용] 여기에 질문 내용을 남겨주세요. 무료강의 잘들었습니다, 감사합니다, 이제 스프링과 스프링부트,JPA 완전정복 로드맵 구매를 고려하고 있는데 앞선 다른 질문글보니 이 강의는 소스코드가 따로 github에 공유가 안되는데 저 로드맵들에 있는 유료강의에서는 제공이 되나요? ps. 제가 공부할때 필기하며 싹 강의 듣고 코드보면서 공부하는 스타일라서요

  • java
  • spring
  • mvc
  • spring-boot
Chansoo 댓글 1 좋아요 0 조회수 632

회원 조회가 되지 않습니다 ㅠ.ㅠ..

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 내용] 오타가 있는지 꼼꼼히 확인했는데도 조회하지 못해 글 올립니다. 회원을 입력하고 조회할 때의 페이지 소스를 보면 값은 제대로 들어갔는데 뷰로 보이지가 않습니다. https://drive.google.com/file/d/10VLD9t8EssyDyLIPXITCINxJUngSrQyz/view?usp=sharing

  • java
  • spring
  • mvc
  • spring-boot
코코넛빵 댓글 2 좋아요 0 조회수 555

섹션 1번 프로젝트 생성 후 tomcat 접속하면 이름 및 비밀번호 알람

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

섹션 1번 프로젝트 강의를 따라서 프로젝트 생성 후 tomcat 접속하면 이름 및 비밀번호 알람이 나옵니다. 근데 강의 내용에서는 이름 및 비밀번호 입력없이 접속 되던데, 혹시 디폴트 이름 및 비밀번호좀 알 수 있을까요? 스프링 프로젝트 버전은 3.2.0 버전입니다.

  • java
  • spring
  • mvc
  • spring-boot
spahqhdl 댓글 1 좋아요 0 조회수 276

엔티티 매니저 공유

해결됨

스프링 DB 2편 - 데이터 접근 활용 기술

트랜잭션 전파가 REQUIRED인 경우에, 코드적으로 각각 다른 트랜잭션을 가져와서 사용하더라도, persistence context를 공유해서 사용한다고 이해해도 될까요??

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
qpal1zm23 댓글 1 좋아요 0 조회수 210

아이디 중복확인 NullPointerException

미해결

스프링 프레임워크는 내 손에 [스프1탄]

20:35 예시 코드처럼 입력했는데, 공백을 입력하고 중복확인을 하는 경우처럼 반환되는 Member 가 없는 경우 NullPointerException 이 발생합니다. memID 로 찾아지는 Member 가 있는 경우 0 을 반환하면서 잘 동작합니다. 선생님 예시에서는 작동이 잘 되는데 왜 저는 안 되는 걸까요? 옵셔널이나 예외처리를 해주어야 할까요? @RequestMapping("/memRegisterCheck.do") public @ResponseBody int memRegisterCheck(@RequestParam("memID") String memID) { //넘어오는 파라미터 이름과 받는 이름이 같은 경우 생략 가능 Member m = memberMapper.registerCheck(memID); if (m != null || m.equals("")) { //아이디가 중복이거나 공백인 경우 => 사용불가 return 0; } return 1; //사용 가능 } java.lang.NullPointerException kr.board.controller.MemberController.memRegisterCheck(MemberController.java:25) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:871) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:777) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870) javax.servlet.http.HttpServlet.service(HttpServlet.java:489) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855) javax.servlet.http.HttpServlet.service(HttpServlet.java:583) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

  • jsp
  • spring
  • mvc
  • spring-security
댓글 2 좋아요 0 조회수 411

테스트코드 오류

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 강의 듣기 전에 혼자서 update 테스트 코드를 짜봤는데 오류가 나더라고요. 어느 부분이 잘못된건지 알 수 있을까요? void updateItem(){ //given Item item1=new Item("itemA",10000,10); itemRepository.save(item1); //when Item item2=new Item("itemB",20000,12); itemRepository.update(item1.getId(),item2); //then Item updateItem=itemRepository.findById(item2.getId()); assertThat(updateItem.getItemName()).isEqualTo("itemB"); assertThat(updateItem.getPrice()).isEqualTo(20000); assertThat(updateItem.getQuantity()).isEqualTo(12); }

  • spring
  • mvc
anten 댓글 1 좋아요 0 조회수 349

main 실행시

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

처음 강의 부분에서 main 함수를 실행시키는데 실행 결과가 이렇게 뜨면서 에러가 납니다. 그리고 HelloSpringApplicationtest.java 의 코드도 위 사진과 같이 강사님하고 다른데 뭐가 문제일까요..? +추가로 제가 직접 코드를 바꿔서 run을 실행하니까 비슷하게 된것 같긴 한데 실행 완료가 되지 않습니다.. 다 똑같이 했는데 왜이럴까요..?

  • java
  • spring
  • mvc
  • spring-boot
954qew 댓글 1 좋아요 0 조회수 395

사용자별로 세션이 따로 관리되나요?

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

사용자마다 서로 다른 세션 저장소가 생성되고 관리되는지 궁금합니다. 만약 공유된다면 session 저장소를 삭제하는 과정에서 다른 사용자의 정보도 같이 삭제되어 문제가 발생할 수도 있을 것 같습니다. 더 나아가서 HttpSession은 서블릿이 제공하는 기능이라고 하셨는데, 서블릿이 아닌 HttpServletRequest 객체의 getSession 메소드로 세션에 접근하는 이유가 궁금합니다. 세션 저장소가 사용자별로 다르기 때문에 request 객체로 이를 식별하기 위함일까요? //세션 삭제 로직 HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); } LoginControllerV3에서 로그인 성공 처리과정 중에 세션에 값을 저장하고 쿠키에 세션 id를 등록하는 과정이 언제 이루어지는 것인지 궁금합니다. request.getSession으로 세션 저장소를 가져오고 session.setAttribute에서 세션에 loginMember를 저장함과 동시에 쿠키에 LOGIN_MEMBER의 이름으로 세션 id를 등록하는 걸로 이해했는데 올바르게 이해한건가요? @PostMapping("/login") public String loginV3(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletRequest request){ if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); log.info("login? {}", loginMember); if (loginMember == null){ bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다."); return "login/loginFrom"; } // 로그인 성공 처리 // 세션 저장소 호출, 없으면 신규 세션 생성 HttpSession session = request.getSession(); // 세션 저장소에 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); return "redirect:/"; } 감사합니다!

  • spring
  • mvc
cjm9591 댓글 1 좋아요 0 조회수 552

자바 17 프로젝트 시작

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

[질문 내용] 안녕하세요 자바 17 프로젝트 시작 관련해서 질문 드립니다. 다른 질문글 답변을 보고 따라했는데도 프로젝트 시작이 안됩니다.. 이유가 뭘까요..

  • spring
  • mvc
s2사랑해요s2김영한s2 댓글 2 좋아요 0 조회수 862

실행 오류

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

환경설정에서 위에 처럼 진행을 했는데 No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.1.7 was found. The consumer was configured to find a library for use during runtime, compatible with Java 8, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.5' but: 해당 오류가 자꾸 발생합니다. 스프링 부트도 3.2.1 이상이고 Java도 17버전 이상인데도 오류가 발생합니다...ㅠ 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.

  • java
  • spring
  • mvc
  • spring-boot
지성 댓글 2 좋아요 0 조회수 502

DispatcherServlet의 서블릿 등록 방법

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 선생님께서 DispatcherServlet은 스프링 부트 실행 후 톰캣 서버가 띄워지면서 자동으로 DispatcherServlet이 서블릿으로 등록된다고 말씀해주셨는데, 자동으로 서블릿으로 등록하려면 @ServletComponentScan 어노테이션이 필요한 것 아닌가요? 그런데 스프링 부트 애플리케이션 처음 생성한 후 최상위 Application 클래스의 어노테이션은 @SpringBootApplication만 존재하고 @ServletComponentScan은 제가 임의로 만들어줘서 생성된 것인데 어떻게 스프링 부트의 톰캣 서버가 DispatcherServlet을 자동으로 서블릿으로 등록해주는지 궁금합니다

  • spring
  • springframwork
  • mvc
  • springmvc
경민 댓글 2 좋아요 1 조회수 341

MyBatis 적용2에서 오류가 발생합니다.

해결됨

스프링 DB 2편 - 데이터 접근 활용 기술

MyBatis 버전도 낮춰보고 코드도 비교해보고 했는데 자꾸 Invalid bound statement오류가 발생합니다. 혹시 어떤 게 문제일까요.. 제가 잘 못 찾는 건가요..? 코드 : https://drive.google.com/file/d/14j1mBlyOWm9aELoBGtqbPQ6AAwla6DX5/view?usp=drive_link

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
jaemoon 댓글 3 좋아요 0 조회수 909

requestDto 데이터 바인딩 질문

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

프론트에서 request를 보내서 RequestDto에 데이터가 바인딩 될 때, List가 안오면 빈array가 바인딩 되도록 하는 것은 RequestDto의 생성자에서 해야하나요? 아니면 공통적으로 처리하게 만들 수 있는 건가요? 혹은 빈array라도 프론트에서 보내야하는 건가요?

  • spring
  • mvc
김재연 댓글 1 좋아요 0 조회수 148

선생님 혹시 파일업로드도 알려주실수있나여?

해결됨

스프링 부트 웹 개발 입문 - 따라하며 배우기

재귀함수로 파일 삭제하고 머 다시 추가하고 머하는거있던데 잘모르겠습니다 이런것도 선생님 강의 올려주시면 좋을거 같아여 public void delFolderTrigger(String relativePath){ delFolder(uploadPrefixPath +relativePath); } // 처음에 폴더 페스가 들어가야함 public void delFolder(String folderpath) { //폴더 아래에 폴더 및 파일 삭제 , 보냈는 폴더는 삭제 안함 File folder = new File( folderpath); // 폴더가 존재하는지 묻는다 if (folder.exists()){ // 처음부터 다 객체화가 되서 리스트 로 넘어간다 File[] files = folder.listFiles(); // 재귀 함수 스택 이라 생각하면됨 // 일단 폴더 안에 다드가서 파일다지우고 그담 폴도 // 그담 계속 반복 for(File file : files) { if(file.isDirectory()) { delFolder(file.getAbsolutePath()); } else { file.delete(); } } folder.delete(); } } } public UserPicPatchDto patchUserPic(MultipartFile pic) { UserPicPatchDto dto = new UserPicPatchDto(); dto.setIuser(authenticationFacade.getLoginUserPk()); String target = "/user/"+dto.getIuser(); myFileUtils.delFolderTrigger(target); String saveedPicFileNm = myFileUtils.transferTo(pic,target); dto.setPic(saveedPicFileNm); int affectedRows = mapper.updUserPic(dto); return dto; }

  • spring
  • mvc
  • spring-boot
오꿀 댓글 1 좋아요 2 조회수 642

제가 이해한것이 맞는지 궁금합니다

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안년하세요 웹 서비스 구조에사 웹 서버 웹컨테이너 와스 와 자바에서는 웹서비스 구조가 제가 그린것이 맞는지 긍금합니다 2. 그러면 was와 jvm 순서가 어떻게되나요? Jvm은 코드를 실행하은것이므로 Was -> jvm인가요?

  • spring
  • mvc
조소영 댓글 1 좋아요 0 조회수 294

스프링 데이터 JPA 적용2 테스트 코드 위치 문의

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 해당 강의 테스트 코드 전체가 코드가 안보이던데 첨부된 소스코드에 없는드 싶습니다. 강의 영상에는 전체 코드가 생략되어 있다보니 질문 드립니다. 감사합니다.

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
James Kim 댓글 1 좋아요 0 조회수 342

ModelView 객체 여러개 생성

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] MemberSaveControllerV3와 MemberListControllerV3에서 process 메서드가 실행될 때마다 새로운 ModelView객체를 생성하는데, 해당 컨트롤러로 들어오는 url은 같으므로 이를 싱글톤으로 만들면 메모리 관점에서 더 좋은것 아닌가요? 이를 따로 고려하시지 않은건지 아니면 다른 이유가 있는지 궁금합니다!

  • spring
  • mvc
980513k 댓글 1 좋아요 0 조회수 333

MemberService 구현과 역할 분리

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의를 보면 MemberService의 경우 구현과 역할을 분리하지 않고 클래스 하나에서 전부 처리하는데 왜 역할과 구현을 따로 분리하지 않나요?

  • java
  • spring
  • mvc
  • spring-boot
박상훈 댓글 1 좋아요 0 조회수 487

인기 태그

인프런 TOP Writers

주간 인기글