[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] build.gradle 파일에 jdbc 라이브러리를 추가하고, Load Gradle Changes도 해보고 File -> Open -> build.gradle을 선택해서 Open as Project도 해보았는데 JdbcTemplate을 import 못하고 있습니다. 어떤 부분에 문제가 있는 건가요?
현재 복습중입니다. 12분 34초에 나오는데, 분명 예전에는 @AfterEach 를 넣지 않으면 repository에서 기존 값들이 지워지지 않아 테스트에 오류가 생겼었습니다. 그런데 지금은 @AfterEach에서 clear 해주지 않아도 알아서 다른 테스트들에서 저장한 값들이 저장되지 않는데, 기본 구조가 바뀐 걸까요? 예를 들면 findAll에서 repository에 멤버1, 멤버2를 저장했습니다. 그러면 레포지토리의 사이즈는 2가 되어야 하는데, 다음 테스트 맨 처음에 repository.size를 출력해주면 0이 나옵니다.
스프링부트 gradle 2.6.2 버전인데 설치하고 나서 기본 세팅된 프로그램 돌려봤는데 다음과 같은 워닝이 떠요 Java HotSpot(TM) 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release. 어떻게 해결할 수 있을까요?
안녕하세요. 좋은 강의 정말 감사드립니다^^! 서블릿에 관련하여 궁금한 것이 생겨서 질문 드리고 싶습니다. 1. 서블릿 객체는 언제 생성되나요? 처음 스프링 부트가 띄워질 때 만들어 지는 것인가요? 아니면 url mapping이 되어서 서블릿 객체가 필요해지면 생성되나요? 그리고 스프링에서 사용하는 dispatcherservlet은 언제 생성되나요? 2. HttpServelet reqest 객체에 HTTP 요청 메시지 파싱해서 넣고 처리해주는게 서블릿 객체라고 배웠습니다. 그렇다면 HttpServelet response의 내용을 바탕으로 HTTP 응답 메시지를 생성하는 것도 서블릿이 하나요? 3. 서블릿의 요청 메시지 처리 작업은 언제 이루어지나요? was가 url에 맞는 서블릿 객체의 service()를 수행하는데, 저희가 만든 service에는 요청 메시지 파싱 작업이 없어보입니다! service를 부르기 전에 다른 메소드가 먼저 불리는 것인가요? 감사합니다!
그렇다면 실무에서는 REST API의 예외처리를 처리하는경우, 앞서 배운 ResponseStatusExceptionResolver, DefaultHandlerExceptionResolver 이거는 제쳐두고 궁극기인 ExceptionHandlerExceptionResolver 의 @ExceptionHandler와 이를 모아서 관리하는 @ControllerAdvice 이렇게 2개만 사용이 되는편인가요?
안녕하세요 크게 의미가 있는 질문은 아닌것 같지만 궁금해서 질문드립니다. 13:42초에 리다이렉트 후 hello-from.html을 200으로 응답코드를 내려줍니다. 그리고 HTTP 강의에서도 200으로 내려준다고 배웠던 기억이 있습니다. 그런데 왜 저는 똑같이 했는데 302로 내려주는 걸까요? 감사합니다.
안녕하세요! Model에 데이터를 보관할 때 request.setAttribute를 사용하잖아요. 근데 model에 있는 데이터는 응답으로 나가야하는 데이터면 response가 아닐까라는 생각이 들었는데,, request에서 온 파라미터를 꺼내서 객체를 만들고 model에 그 데이터를 보관해서 뷰로 나가는 거니까 request인건가요? 감사합니다..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 강사님 안녕하세요! 항상 좋은 수업 감사합니다. 28분 45초 부근에서 타입 오류 처리(필드 타입 Integer인데 사용자가 String으로 입력하는 경우) 스프링 MVC에서 컨트롤러에 진입하기 전에 터진다는 말씀을 듣고 궁금증이 생겨 질문드립니다! 스프링 MVC1 강의에서, ModelAttribute 사용시 요청 파라미터로부터 리소스 객체를 만들고 setXXXX함수가 자동으로 실행되어 필드값이 설정된다고 설명해주셨었습니다. 이 경우, RequestMapping을 통해 컨트롤러에는 진입하지만 setXXXX함수가 실행되는 과정에서 객체의 필드와 타입이 매칭되지 않아 예외를 발생시키는 것이라고 이해하면 될까요? 아니면 타입 오류를 처리하는 별도의 로직이 스프링에 내장되어 있을까요? 제가 이해한 실행 흐름대로면 타입 체크가 들어갈만한 부분이 setXXXX 메서드 말고는 없을것같은데, 또 스프링이 워낙 많은 기능을 제공하다보니 컨트롤러 진입 전에 뭔가 해줄것 같기도 하고 그렇네요 ...ㅎㅎㅎ
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 강의 항상 잘 듣고 있습니다. 또한 항상 수고스럽게 답변해주시는 서포터 분들에게 먼저 감사 말씀 드립니다. 람다식의 용법에 대해서 궁금한 점이 있습니다. private Map<String , String> createParamMap (HttpServletRequest request) { Map<String , String> paramMap = new HashMap<>() ; request.getParameterNames().asIterator() .forEachRemaining(paramName -> paramMap .put(paramName , request .getParameter(paramName))) ; return paramMap ; } 위의 코드에서 paramName -> paramMap.put(paramName, request.getParameter(paramName))); 의 라인에서 paramName 이라는 매개변수를 어떻게 사용할 수 있는건가요? 람다식이 (파라미터) -> (로직) 의 형태((a,b) -> (a+b)로 사용하는 문법인 걸로 알고 있는데 위의 코드가 paramName이라는 매개변수를 받아서 paramMap에 paramName이라는 Key와 request.getParameter(paramName)이라는 Value를 넣는 것으로 이해했습니다. 그런데 paramName을 선언한 곳은 없는데 어떻게 사용할 수 있을까요? 자바 문법적인 강의는 영한 선생님께서 기본이라 안 해주시지만, 이미 기본서를 읽고 왔고 나름대로 검색을 해봤는데도 해답을 얻을 수가 없어서 질문을 남기게 되었습니다.
안녕하세요 localhost:8080/hello를 요청하는 부분에서 매핑페이지가 없다고 오류가 나옵니다. // hello 서블릿 클래스 입니다. //서버는 8080포트라고 잘 뜹니다. //스프링부트 메인 클래스 입니다. 스프링부트 메인페이지가 최상단에 위치해야 한다고 하여 main 클래스를 확인해보아도 hello.servlet 으로 위치해있고 , 위치를 hello로 바꾸어도 결과는 똑같았습니다. webapp에 만들어놓은 정적 페이지를 요청했을땐 잘 실행이 됩니다. 그 이후에 response 등등 여러 클래스를 만들었던 url로 요청을해도 모두 매핑페이지가 없다고 뜹니다. 감사합니다
안녕하세요. 항상 강의 너무 잘 듣고 있습니다! 개인 프로젝트로 질문/답변 게시판 웹사이트 구현을 진행하고 있습니다. 대부분의 로직에 질문/답변 요청의 작성자임을 확인하는 로직이 필요한데 해당 검증 로직은 필연적으로 어플리케이션(DB단 까지)로직이 필요합니다. 제 생각에 검증기validator 클래스를 도입하는 것 보다 Filter나 인터셉터를 활용하는 방식이 좋아보이는데 맞을까요?? 현재 코드는 아래와 같습니다. 게시글의 수정페이지에 대한 Get매핑과 수정하는 PostMapping입니다. Post - 게시글, Account - 계정(작성자) @GetMapping ( "qna/edit/{postId}" ) public String PostEditForm ( @PathVariable Long postId , Model model){ // 사용자 검증 if (!isValidEditRequest(postId)){ return "denied" ; } Post post = postService .findById(postId) ; model.addAttribute( "post" , post) ; return "qna/edit" ; } @PostMapping ( "qna/edit/{postId}" ) public String PostEdit ( @PathVariable Long postId , PostDto postDto){ // 사용자 검증 if (!isValidEditRequest(postId)){ return "denied" ; } // 수정 postService .edit(postId , postDto) ; // 수정 후 수정된 게시글로 이동 return "redirect:/qna/show/" +postId ; } private boolean isValidEditRequest (Long postId) { return postService .isWrittenBy(postId , getAccount().getId()) ; } 질문은 아래와 같습니다. 1. Validator, Filter, Interceptor가 service를 참조해도 괜찮을까요? 2. 해당 로직을 처리하는 정형화된 방식이 Spring Security에 있을까요?? 감사합니다!
연관된 질문이 있습니다. 1. (2번을 위한 질문입니다) 리엑트 같은 경우 서버에서 쏴준 Json데이터를 통해 클라이언트 웹에서 JS가 받은 데이터를 만져서 결과를 사용자에게 보여주는데 이러한 방식이 Rest API방식이다. 라고 인지하고있는데 맞을까요? 2. 1번이 맞다면 해당 메시지과 국제화에 관련해서, 리엑트에서는 받은 데이터를 가지고 만지기때문에 타임리프를 쓰지않을텐데, 보통 실무에서는 리엑트같은 RESTAPI의 경우 어떤식으로 국제화, 메시지를 관리하는지 궁금합니다!
Database "mem:ea62e49b-fd2d-4217-8245-939ed574682c" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 (도움말) 자꾸 이런 오류가 떠요ㅠㅠ
안녕하세요. 이번 강의에서는 Servlet 종속성을 제거하기 위해 'ModelView' 객체를 만들고, 이를 적극 활용하는 컨트롤러를 만드는 것에 대해 다루었는데요. 강의 자료에 다음과 같은 내용이 있었습니다. (빨간색으로 밑줄 그은 내용) 여기서 말하는 "테스트하기 쉽다" 라는 말은 정확히 어떤 의미인가요? 무언가에 종속적이면 테스트 코드를 작성하기 어렵다는 뜻으로 받아들여도 되는걸까요? 조금 더 구체적으로 설명해주시면 정말 감사하겠습니다!