묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
FrontControllerServletV5의 mv.getModel()에 대해서 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. MemberFormControllerV3을 사용했을 때는 mv.getModel()이 비어있는 상태가 맞나요??2. view.render(mv.getModel(), request, response);에서 mv.getModel()은 빈 상태로 넘어가는 건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2.Driver 오류와 HelloProjectApplication 실행오류
[질문 내용]여기서 org.h2.Driver 인식이 안되는 문제가 발생합니다. 초록색으로 떠야하는 것 같은데 왜 인식이 안되는지 모르겠어요. build.gradle에도 dependencies에도 h2관련되어서 잘 추가했고 뒤에 띄어쓰기도 되어 있지 않습니다! 이 상태에서 HelloProjectApplication을 실행시켰더니 여러 오류들이 뜨는 것을 발견했습니다. com.zaxxer.hikari.pool.HikariPool j.LocalContainerEntityManagerFactoryBeano.s.boot.SpringApplication 이 3곳에서 에러가 발생합니다. 아래에 소스코드 파일 구글드라이브 첨부드립니다.. 감사합니다!https://drive.google.com/drive/folders/18tc10v1OtuO7iS6ZFTqcy0ag6eJH0NGU?usp=sharing
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
Checked, Unchecked 예외 변환 질문드립니다.
안녕하세요. 복습 도중 개념적으로 혼동이 와서 질문드립니다.Checked Exception - 체크를 하라고 만든 예외Unchecked Exception(Runtime Exception) - 체크를 하지 말라고 만든 예외예를 들어서 NullPointerException 같은 경우, 개발자가 예외를 잡아서 처리하지 않습니다.런타임 예외는 원래 처리하지 않기 때문에 당연하다고 생각합니다.그런데 체크를 하라고 만든 예외를 체크를 하지 말라고 만든 예외로 변환을 하는 것이 개념적으로 이해가 잘 가지 않습니다.Checked 예외를 Unchecked 예외로 변환함으로써Unchecked는 체크를 하는게 아닌데, 마치 Checked 처럼 핸들링 하는 느낌이 듭니다.물론 강의에서 설명해 주신 변환을 함으로써의 이점은 이해가 잘 갑니다!throws SQLException → throws JPAException반복적인 throws 을 변경하지 않아도 되고, 특정 기술에 의존하지 않아도 됨다만, 이는 커스텀 Checked 예외를 사용해도 해결할 수 있다고 생각합니다.public class MyCustomCheckedException extends Exception { ... }Checked 예외를 커스텀 Checked 예외로 변환 이 경우에는 반복적인 throws 작성은 피할 수 없긴 합니다.코틀린 등의 언어에서 이런 개념적 혼동을 막기 위해 Checked/Unchecked를 나누지 않는 것인지..제가 무언가 잘못 이해하고 있는것이 있을까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@RequestMapping에 대하여
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]1. 스프링 부트를 구동시켜서 톰캣 서버가 띄워지면 HandlerMapping 인터페이스가 애플리케이션 내에 존재하는 핸들러 매핑을 시도하는데 우선적으로 HandlerMapping 인터페이스의 구현체인 RequestMappingHandlerMapping 클래스가 @RequestMapping 어노테이션이 지정된 핸들러를 매핑해서 사용자가 해당 어노테이션으로 지정된 핸들러 중 하나를 요청할 경우 해당 핸들러가 반환되고해당 핸들러에 대한 어댑터를 연결하고 호출하는데 필요한 구현체가 RequestMappingHandlerAdapter 로 이해했는데 맞을까요? 1번의 내용이 맞다면 @RequestMapping을 컨트롤러에 지정할 경우 해당 컨트롤러가 매핑 정보로 활용이 되는데 한 컨트롤러 내에 여러 메서드에 @RequestMapping을 지정할 경우 그 메서드들이 전부 컨트롤러가 되는 것인가요? 그렇다면 메서드들을 정의하고 있는 클래스도 컨트롤러인데 어떤 차이가 있는 건지 궁금합니다 ! 그리고 추가로 컨트롤러는 클래스로 알고있는데 어떻게 메서드 레벨에 @RequestMapping을 지정할 수 있는지도 궁금합니다..
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 데이터베이스 연결 문제
[질문 내용]db 생성 확인하고 주신대로 입력하였는데 이런 오류가..ㅠ 도와주심 감사하겠습니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
메시지 컨버터 질문
만약 요청이 String 타입이고, 응답도 String 타입을 원한다면, 내부적으로 메시지 컨버터가 할일이 없는건가요?이 경우에도 메시지 컨버터가 작동되는지 궁금합니다.(결과적으로 메시지 컨버터 작동 x, 뷰 리졸버 작동 x)
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
properties파일 경로
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 수강중 질문이 있어 문의남깁니다!스프링부트가 resolver를 자동등록해주고 messages.properties와 error.properties를 읽어서 데이터를 사용하는데 properties파일의 경로를 변경해서 사용하려면 어떻게 해야될까요?현재는 resources/messages.properties 로 사용하는데 resources/item/itemMessages.properties로 사용하고 싶은데 path를 설정하는 방법이 궁금합니다
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
SocketTimeoutException 이거는 어떻게 해결해야 하나요??
로컬에선 잘되는데 운영서버에 빌드할 때 이런에러가 자꾸 뜹니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@Controller, @RequestMapping 질문
@Controller @RequestMapping("basic/items") @RequiredArgsConstructor public class BasicItemController { private ItemRepository itemRepository; @GetMapping public String items(){ return "basic/items"; } }강의를 다 수강하고 혼자서 처음부터 만들어보고자 개발하고 있는데 오류가 발생해서 질문드립니다.여기서 @RequestMapping 대신에 @Controller("basic/items")를 넣어주니 localhost:8080으로 접속시 기존에 웰컴 페이지인 index.html로 접속하지 않고 바로 items.html을 화면에 보여주는 오류가 발생합니다. 뭐가 문제일까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 MVC - 웹 페이지 만들기에서 상품 상세강의 중에 질문
코드는 차이점은 포트를 8081로 바꾼 점 밖에 없는 데에서 id와 상품명을 눌러서 이동할 때 ERROR 15300 --- [nio-8081-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [java.lang.Long] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.] with root cause오류가 났습니다 해결은 여기 설정을 다시 gradle로 바꾸니까 해결은 됬는데 어째서 문제가 생겼던건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
1강 프로젝트 생성 강의 중
run 을 눌러서 0808을 확인해야 하는데 run자체가 안되네요. 왜 이러는 걸까요!?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
리다이렉트를 하는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 상품 내용 수정 폼에서 저장을 해줄 때 리다이렉트를 하는 이유가 무엇인지 궁금합니다. 전에 했던 방식으로 뷰를 반환하면 안되는 것인가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@ModelAttribute 어노테이션에 대한 질문이요!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@ModelAttribute 어노테이션을 쓸 때, 해당 객체를 부르는 클래스 타입 위에 @Data 어노테이션을 사용하셨어요.근데 @Data 어노테이션 안에 @RequiredArgsContstructor라는 어노테이션이 있는데제가 보니까 @RequiredArgsContstructor는 멤버 변수의 접근제어자가 private이며 final이 붙은 애들에 대한 생성자를 자동으로 만들어준다. 라고 하거든요 근데 HelloData 클래스 안의 멤버 변수 (필드값)은 private이길래 @RequiredArgsContstructor 대신 @AllArgContstructor 어노테이션과 @Getter, @Setter 어노테이션만 사용해서 @ModelAttribute 어노테이션을 통해 요청하는 값에 대해 바인딩을 하려고 했는데, 바인딩이 안되는 오류가 발생해서 왜 이런 오류가 발생하는지 잘 모르겠습니다. 꼭 @RequiredArgsConstructor를 써야하는 이유에 대해서도 궁금하고, @AllArgConstructor는 왜 안되는지 궁금합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
BasicErrorController와 Interceptor로 오류페이지 처리하기
안녕하세요, 스프링 부트에서 인터셉터로 로그인 체크를 하면서 오류 페이지를 보이도록 하는데인터셉터의 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가 작동을 잘 하여 오류 페이지가 보이는데, 인터셉터의 경로를 제외하는 부분에서 제가 잘못 작성한 부분이 있을까요?그렇지 않다면 제가 놓친 다른 부분이 있을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
상품관리 컨트롤러 /주문관리 컨트롤러 예외 객체
안녕하세요. @ExceptionHandler 강의에서 예를 들어주시던 상품을 처리하는 컨트롤러와 주문을 처리하는 컨트롤러에서 발생하는 예외를 다른 응답방식으로 처리하고 싶다면 @Data@AllArgsConstructorpublic class ProductErrorResult {private String productName;private String code;private String message;} @Data@AllArgsConstructorpublic class OrderErrorResult {private int orderNumber;private String code;private String message; } 예를 들면 위와 같은 방식으로 각각 상품과 주문에러 처리를 다른 DTO객체로 만들어서 api json 응답을 하면 되는것일까요?+ 추가로, 또한 @ExceptionHanlder(annotation = ProoductController.class) @ExceptionHandler(annotaion= OrderProduct.class) 각각의 특정 클래스(상품 ,주문 클래스)를 개별적으로 달아주면 한개의 @RestControllerAdvice 에서 "같은 예외도 다른 방식으로 처리" 가 가능한 것이죠?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
앞으로 사야할 유료 강의들 소스코드 제공 여부가 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 아니요[질문 내용]여기에 질문 내용을 남겨주세요.무료강의 잘들었습니다, 감사합니다,이제 스프링과 스프링부트,JPA 완전정복 로드맵 구매를 고려하고 있는데앞선 다른 질문글보니 이 강의는 소스코드가 따로 github에 공유가 안되는데저 로드맵들에 있는 유료강의에서는 제공이 되나요?ps. 제가 공부할때 필기하며 싹 강의 듣고 코드보면서 공부하는 스타일라서요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 조회가 되지 않습니다 ㅠ.ㅠ..
[질문 내용]오타가 있는지 꼼꼼히 확인했는데도 조회하지 못해 글 올립니다. 회원을 입력하고 조회할 때의 페이지 소스를 보면 값은 제대로 들어갔는데 뷰로 보이지가 않습니다. https://drive.google.com/file/d/10VLD9t8EssyDyLIPXITCINxJUngSrQyz/view?usp=sharing
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
섹션 1번 프로젝트 생성 후 tomcat 접속하면 이름 및 비밀번호 알람
섹션 1번 프로젝트 강의를 따라서프로젝트 생성 후 tomcat 접속하면 이름 및 비밀번호 알람이 나옵니다.근데 강의 내용에서는 이름 및 비밀번호 입력없이 접속 되던데,혹시 디폴트 이름 및 비밀번호좀 알 수 있을까요?스프링 프로젝트 버전은 3.2.0 버전입니다.
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
엔티티 매니저 공유
트랜잭션 전파가 REQUIRED인 경우에,코드적으로 각각 다른 트랜잭션을 가져와서 사용하더라도,persistence context를 공유해서 사용한다고 이해해도 될까요??
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
아이디 중복확인 NullPointerException
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)