묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의노트 어디서 볼 수 있나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오)[질문 내용]테이블 생성 스크립트를 받으려고 하는데요. 강사님이 보시는 강의노트는 어디서 확인할 수 있나요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
API인터셉터 경로
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]만약에 API로 개발할경우 인터셉터 경로는 어떻게 설정해야하죠?ex 유저API@RestController("api/user")@postmapping유저등록api @Deletemapping유저 삭제 api 이때만 인터셉터 실행 이렇게 있으면 .addPathPatterns("/**")할시 둘다 등록이 되기 때문에 @Deletemapping 이때만 등록하고 싶은데 방법이 있나요? 유저등록일때만@postmapping("/join")으로 설정해야 하나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
FrontControllerservletV3 의 render 매서드 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. Save 나 list를 조회할때 아래의 코드가 어떻게 돌아가는지 이해할 수 있었습니다. 이때는 해당 기능을 하는 컨트롤러가 model Map에 데이터를 주입하는 과정이 있기때문인데요, new-form같은경우는 위와같이 model 객체를 따로 만드는 것이 없는데, 그렇다면 이럴땐 그값에 Null값이 들어가게 되는 건가요? new-form 컨트롤러가 실행되었을때는 어떻게 되는지 알고 싶습니다. 만약 Map<String, Object> model 에 null 값이 들어간다고 하면 당연히 setAttribute 또한 제대로 작동이 되지 않을 것 같은데 그렇게 된다면 RequestDispatcher 부분도 제대로 작동하지 않으면서 jsp로 넘어가지 않을 것 같다는 생각이 듭니다.public void render(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { modelToRequestAttribute(model, request); RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response);} private static void modelToRequestAttribute(Map<String, Object> model, HttpServletRequest request) { model.forEach((key, value) -> request.setAttribute(key,value));}
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ModelAttribute에 "item"이 없는경우 질문드립니다!!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@ModelAttribute("item")을 안한다면? bindingResult에 에러정보가 있을경우 addForm으로 돌아갈때 th:object="item"이기 때문에 itemSaveForm이 모델의 키값으로 넘어가서 렌더링이 안되는것은 이해했습니다. addItem에서 ModelAttribute name에 "item"을 넣지 않고 addItem()메서드에 Model 객체를 추가해서 model.addAttribute("item",form)으로 데이터를 전송했다면 렌더링은 됩니다. 하지만 bindingResult에 object name은 ModelAttribute name과 매핑이 되기 때문에 "itemSaveForm"이 object 값으로 들어갑니다. @PostMapping("/add") public String addItem(Model model,@Validated @ModelAttribute ItemSaveForm form, BindingResult bindingResult, RedirectAttributes redirectAttributes) { //log.info("bindingResult codes = {}",bindingResult.getFieldError()); log.info("form = {}" , form); if (form.getPrice() != null && form.getQuantity() != null) { int resultPrice = form.getPrice() * form.getQuantity(); if (resultPrice < 10000) { bindingResult.reject("totalPriceMin", new Object[]{10000, resultPrice}, null); } } //검즘 실패시 입력 폼 if(bindingResult.hasErrors()){ log.info("errors ={}",bindingResult); model.addAttribute("item",form); return "validation/v4/addForm"; } 여기서 궁금한점입니다.2번과 같은 상황에서 #fields.hasGlobalErrors() 과 th:errors로 아무런 에러정보를 조회할 수 없게 되는거 같은데, th:object="${item}"는 모델을 통해 itemServiceForm 객체를 넘겻는데, 오류정보를 조회 할 때 bindingResult에 담긴 object name과 th:object="${item}" 에서 ${item}은 itemSaveForm이지만, ${}안에 item 문자열 자체 가 bindingResult의 object name과 일치해야지 오류 정보를 조회할수 있는 건가요?? 입력폼로그질문하려다보니까 글이 길어졌네요 ㅠㅠ결론은 bindingResult 에러정보를 추가할때 object name(@ModelAttribute의 name)과 th:object="${}"안에 들어가는 문자열이 일치해야 bindingResult의 오류정보를 조회할수 있는건가요?? 제가 어떤 부분을 놓치고있는 있는건가요..ㅠㅠ!?
-
해결됨스프링 부트 웹 개발 입문 - 따라하며 배우기
주문내역 작업 (VO 객체사용)에서 오류...
주문 내역 처리인데 오류가 납니다.구글에 소스 올리겠습니다...
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
MultipartFile 사용 계층에 관하여
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 영한님 강의 정말 잘 듣고 있습니다. 수강 도중 MultipartFile 사용 계층에 관해서 궁금한 부분이 생겨서 질문 드립니다.제가 생각하기에 MultipartFile은 web 기술과 관련이 있다고 생각을 해서 그런지 서비스 계층의 파라미터로 MultipartFile을 전달하게 된다면 서비스 계층이 web 기술에 대한 의존이 생기는게 아닌가 하는 생각과, 파일을 저장하는 것도 비지니스 로직이니 서비스 계층으로 넘겨서 처리하는게 맞는 것 같다는 생각이 동시에 듭니다. 보통 인터넷을 찾아보면 서비스 계층에서 파일 저장을 수행하는 것 같은데 MultipartFile를 서비스 계층의 파라미터 넘기는 것에 대해 의문을 갖는게 맞는 걸까요? 강의 내용과 관련없는 내용이지만 추가적으로 controller에서 파라미터로 받은 dto를 서비스 계층으로 바로 넘겨도 괜찮은 걸까요?? 괜찮다면 dto의 패키지는 서비스 패키지 하위 o컨트롤러, 서비스 패키지와 같은 계층 o컨트롤러 하위 계층 x이라고 생각하는데 이렇게 생각하는게 맞는 건지 궁금합니다..
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
findByLonginId와 findById의 차이에 대해 질문이 있습니다
둘다 저장된 값을 찾는것은 동일한데 왜 findById에는 Optional을 안붙이고, findByLoginId에만 Optional을 붙이는 건지 궁금합니다!!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@GetMapping("/edit")와 @GetMapping("add")에서 Item 반환
안녕하세요! 강의를 학습함에 있어 궁금한 부분이 있습니다.강의에서 폼 데이터 전달을 위한 등록, 수정용 폼 객체를 분리해서 사용을 했는데 그러면 @GetMapping("/edit")과 @GetMapping("add") 에서도 Item 도메인 객체를 반환하는 것 보다는 아래와 같이 등록, 수정용 객체를 분리해서 반환하는게 더 낫지 않을까 하고 생각되는데 혹시 어떻게 생각하시는지 궁금합니다! @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new ItemSaveForm()); return "validation/v4/addForm"; }@GetMapping("/{itemId}/edit") public String editForm(@PathVariable Long itemId, Model model) { Item item = itemRepository.findById(itemId); ItemUpdateForm form = ItemUpdateForm.from(item); model.addAttribute("item", form); return "validation/v4/editForm"; }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실행 오류 발생
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요. 기존 인텔리제이를 사용하여 학교 수업 및 팀프로젝트를 수행하여 기본 값과는 다른 수 있습니다.하지만 프로젝트 생성하고 hellospring.main 실행시 Process finished with non-zero exit value 라는 오류가 발생해 구글링 하여 설정을 변경하니 java: warning: source release 17 requires target release 17라는 오류가 발생합니다. 어디를 수정해야하나요?(참고한 사이트:https://yjh5369.tistory.com/entry/intellij-%EC%8B%A4%ED%96%89-%EC%8B%9C-finished-with-non-zero-exit-value-1-%EC%98%A4%EB%A5%98)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
500 화이트에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]마지막에 h2실행하고 회원가입 목록 확인하려는데C:\Users\gbc31\.jdks\openjdk-20.0.1\bin\java.exe -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2023.1.1\lib\idea_rt.jar=55033:C:\Program Files\JetBrains\IntelliJ IDEA 2023.1.1\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath C:\Users\gbc31\study\hello-spring\build\classes\java\main;C:\Users\gbc31\study\hello-spring\build\resources\main;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-thymeleaf\3.1.1\69e351b19ee4fa37ff7cb851354498a880b5a937\spring-boot-starter-thymeleaf-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-web\3.1.1\f2c2d9e35430e4b4a98ad91780bb9b2d1deec08\spring-boot-starter-web-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-jdbc\3.1.1\8e6bdc511fc9ade17c09fcc20a0f6a44fa39a876\spring-boot-starter-jdbc-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter\3.1.1\cf74eeaef5a265c75dd89fea829391bf08efdb6c\spring-boot-starter-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.thymeleaf\thymeleaf-spring6\3.1.1.RELEASE\deb52ef921a4ac5132fedb7ebfc2bc1dad4382b3\thymeleaf-spring6-3.1.1.RELEASE.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-json\3.1.1\8dc99860536a6a858de6caaeb67f84d7af8a30a3\spring-boot-starter-json-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-tomcat\3.1.1\927f80fb9d8816209420223d1a1a09e730ea78e6\spring-boot-starter-tomcat-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-webmvc\6.0.10\af3f040747f4bfbcdb96140f8c9d252d3a6a4ef1\spring-webmvc-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-web\6.0.10\e61defa7908bf7a499f000dab8ef7691c2aa75c1\spring-web-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.zaxxer\HikariCP\5.0.1\a74c7f0a37046846e88d54f7cb6ea6d565c65f9c\HikariCP-5.0.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jdbc\6.0.10\5179c98c5eba511cdd31852d1f74063aa17bf3da\spring-jdbc-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-autoconfigure\3.1.1\618ec717eef4ba2ff347c7713150aac8e73fe233\spring-boot-autoconfigure-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot\3.1.1\f8f80c1453c8fe0e08a6235f983d8daf571d3e3\spring-boot-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-logging\3.1.1\53bb456e4bf8f751de5a6ce154707b052946fd43\spring-boot-starter-logging-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\jakarta.annotation\jakarta.annotation-api\2.1.1\48b9bda22b091b1f48b13af03fe36db3be6e1ae3\jakarta.annotation-api-2.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core\6.0.10\889aa214b6607763ddeb6bd391d682cd71681b36\spring-core-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\1.33\2cd0a87ff7df953f810c344bdf2fe3340b954c69\snakeyaml-1.33.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.thymeleaf\thymeleaf\3.1.1.RELEASE\374a129dfa5e7d7f1a46eacc4d49e594ca0cf26f\thymeleaf-3.1.1.RELEASE.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\2.0.7\41eb7184ea9d556f23e18b5cb99cad1f8581fc00\slf4j-api-2.0.7.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jsr310\2.15.2\30d16ec2aef6d8094c5e2dce1d95034ca8b6cb42\jackson-datatype-jsr310-2.15.2.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.module\jackson-module-parameter-names\2.15.2\75f8d2788db20f6c587c7a19e94fb6248c314241\jackson-module-parameter-names-2.15.2.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jdk8\2.15.2\66a50e089cfd2f93896b9b6f7a734cea7bcf2f31\jackson-datatype-jdk8-2.15.2.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.15.2\9353b021f10c307c00328f52090de2bdb4b6ff9c\jackson-databind-2.15.2.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-websocket\10.1.10\10604119402bcaa8490b638698ad177f8df4c50c\tomcat-embed-websocket-10.1.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-core\10.1.10\7423236b34aa78d6f36592b2aa294d7c8469f219\tomcat-embed-core-10.1.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-el\10.1.10\717033c0417fdc7e794b382c066b7e78f6029268\tomcat-embed-el-10.1.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context\6.0.10\e2bd59f05c95647a274b7719d419cf8fde6f25a0\spring-context-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aop\6.0.10\cc309a306fa759018b107dea9a208c758af0297\spring-aop-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-beans\6.0.10\8fc0684773cc1598edd810660f57d9e9c8ae6055\spring-beans-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-expression\6.0.10\bd8c93e473e713fe9150a772487507a8e600d5f1\spring-expression-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-observation\1.11.1\9027a35892c7e08ea8affce87b3662b6ceca122c\micrometer-observation-1.11.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-tx\6.0.10\459698d22aadc881afe425934cca79cc1f6bce91\spring-tx-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-classic\1.4.8\f00ba91d993e4d14301b11968d3cacc3be7ef3e1\logback-classic-1.4.8.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-to-slf4j\2.20.0\d37f81f8978e2672bc32c82712ab4b3f66624adc\log4j-to-slf4j-2.20.0.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.slf4j\jul-to-slf4j\2.0.7\a48f44aeaa8a5ddc347007298a28173ac1fbbd8b\jul-to-slf4j-2.0.7.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jcl\6.0.10\cba44e98dab40a506c50978a0e5f11ceaa90b3ff\spring-jcl-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.attoparser\attoparser\2.0.6.RELEASE\8f603f22a18d4f7258f8860ccbb68b069f49904a\attoparser-2.0.6.RELEASE.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.unbescape\unbescape\1.1.6.RELEASE\7b90360afb2b860e09e8347112800d12c12b2a13\unbescape-1.1.6.RELEASE.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.15.2\4724a65ac8e8d156a24898d50fd5dbd3642870b8\jackson-annotations-2.15.2.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.15.2\a6fe1836469a69b3ff66037c324d75fc66ef137c\jackson-core-2.15.2.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-commons\1.11.1\45bc0f2aa4d6180f1a783f1930f307a4efbb12e8\micrometer-commons-1.11.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-core\1.4.8\3fba9c105e0efc5ffdcda701379687917d5286f7\logback-core-1.4.8.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.20.0\1fe6082e660daf07c689a89c94dc0f49c26b44bb\log4j-api-2.20.0.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.h2database\h2\2.1.214\d5c2005c9e3279201e12d4776c948578b16bf8b2\h2-2.1.214.jar hello.hellospring.HelloSpringApplication . ____ _ /\\ / ___'_ __ (_)_ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.1.1)2023-07-13T14:42:57.982+09:00 INFO 2516 --- [ main] h.hellospring.HelloSpringApplication : Starting HelloSpringApplication using Java 20.0.1 with PID 2516 (C:\Users\gbc31\study\hello-spring\build\classes\java\main started by gbc31 in C:\Users\gbc31\study\hello-spring)2023-07-13T14:42:57.986+09:00 INFO 2516 --- [ main] h.hellospring.HelloSpringApplication : No active profile set, falling back to 1 default profile: "default"2023-07-13T14:43:00.097+09:00 INFO 2516 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)2023-07-13T14:43:00.117+09:00 INFO 2516 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]2023-07-13T14:43:00.117+09:00 INFO 2516 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.10]2023-07-13T14:43:00.297+09:00 INFO 2516 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2023-07-13T14:43:00.298+09:00 INFO 2516 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2207 ms2023-07-13T14:43:00.750+09:00 INFO 2516 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]2023-07-13T14:43:01.169+09:00 INFO 2516 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''2023-07-13T14:43:01.185+09:00 INFO 2516 --- [ main] h.hellospring.HelloSpringApplication : Started HelloSpringApplication in 3.946 seconds (process running for 5.154)2023-07-13T14:43:08.270+09:00 INFO 2516 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'2023-07-13T14:43:08.270+09:00 INFO 2516 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'2023-07-13T14:43:08.271+09:00 INFO 2516 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms2023-07-13T14:43:11.912+09:00 INFO 2516 --- [nio-8080-exec-4] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2023-07-13T14:43:14.153+09:00 ERROR 2516 --- [nio-8080-exec-4] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:510) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.readException(SessionRemote.java:637) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.done(SessionRemote.java:606) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:163) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:433) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:325) ~[h2-2.1.214.jar:2.1.214] at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122) ~[h2-2.1.214.jar:2.1.214] at org.h2.Driver.connect(Driver.java:59) ~[h2-2.1.214.jar:2.1.214] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-5.0.1.jar:na] at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:160) ~[spring-jdbc-6.0.10.jar:6.0.10] at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:118) ~[spring-jdbc-6.0.10.jar:6.0.10] at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) ~[spring-jdbc-6.0.10.jar:6.0.10] at hello.hellospring.repository.JdbcMemberRepository.getConnection(JdbcMemberRepository.java:114) ~[main/:na] at hello.hellospring.repository.JdbcMemberRepository.findByName(JdbcMemberRepository.java:96) ~[main/:na] at hello.hellospring.service.MemberService.validateDuplicateMember(MemberService.java:25) ~[main/:na] at hello.hellospring.service.MemberService.join(MemberService.java:20) ~[main/:na] at hello.hellospring.controller.MemberController.create(MemberController.java:29) ~[main/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:578) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) ~[spring-webmvc-6.0.10.jar:6.0.10] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) ~[tomcat-embed-core-10.1.10.jar:6.0] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.10.jar:6.0.10] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.10.jar:6.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at java.base/java.lang.Thread.run(Thread.java:1623) ~[na:na]2023-07-13T14:43:14.183+09:00 ERROR 2516 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalStateException: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection] with root causeorg.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:510) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.readException(SessionRemote.java:637) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.done(SessionRemote.java:606) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:163) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:433) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:325) ~[h2-2.1.214.jar:2.1.214] at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122) ~[h2-2.1.214.jar:2.1.214] at org.h2.Driver.connect(Driver.java:59) ~[h2-2.1.214.jar:2.1.214] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-5.0.1.jar:na] at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:160) ~[spring-jdbc-6.0.10.jar:6.0.10] at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:118) ~[spring-jdbc-6.0.10.jar:6.0.10] at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) ~[spring-jdbc-6.0.10.jar:6.0.10] at hello.hellospring.repository.JdbcMemberRepository.getConnection(JdbcMemberRepository.java:114) ~[main/:na] at hello.hellospring.repository.JdbcMemberRepository.findByName(JdbcMemberRepository.java:96) ~[main/:na] at hello.hellospring.service.MemberService.validateDuplicateMember(MemberService.java:25) ~[main/:na] at hello.hellospring.service.MemberService.join(MemberService.java:20) ~[main/:na] at hello.hellospring.controller.MemberController.create(MemberController.java:29) ~[main/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:578) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) ~[spring-webmvc-6.0.10.jar:6.0.10] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) ~[tomcat-embed-core-10.1.10.jar:6.0] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.10.jar:6.0.10] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.10.jar:6.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.10.jar:6.0.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at java.base/java.lang.Thread.run(Thread.java:1623) ~[na:na]이런식으로 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed 오류가 나오네요 다른분들은 servlet.service오류는 없는거 같던데 어떻게 해야될까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ModelAttribute 와 생성자의 관계
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 예제를 따라하다가 @ModelAttribute 에 매핑하는 Item 클래스에 @AllArgsConstructor 와 @NoArgsConstructor 만 붙이고, 진행을 하니 @AllArgsConstructor가 있음에도 불구하고 form 데이터의 값을 매핑하지 못했습니다. 이 경우 기본 생성자를 지우거나, @Setter 를 달면 정상작동하는데, 왜 이렇게 동작하는 것인지 질문드리고 싶습니다 !
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JdbcMemberRepository.java 코드
안녕하세요! 순수 JDBC 강의에서 JdbcMemberRepository.java 전체 코드 혹시 어디서 확인할 수 있을까요....?!
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
BindingResult의 타입오류시 400 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 가격에 문자를 입력하면 400 에러가 발생합니다. Controller @PostMapping("/add") public String addItemv3(@ModelAttribute Item item, RedirectAttributes redirectAttributes, BindingResult bindingResult) { // bindingResult 스프링 제공 검증 기능 //검증 로직 if(!StringUtils.hasText(item.getItemName())){ // bindingResult.addError(new FieldError("item","itemName","상품 이름은 필수 입니다.")); bindingResult.addError(new FieldError("item","itemName",item.getItemName(),false,new String[]{"required.item.itemName"},null,null)); } if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) { // bindingResult.addError(new FieldError("item","price","가격은 1,000 ~ 1,000,000 까지 허용합니다.")); bindingResult.addError(new FieldError("item","price",item.getPrice(),false,new String[]{"range.item.price"},new Object[]{1000,1000000},null)); } if (item.getQuantity() == null || item.getQuantity() >= 9999) { // bindingResult.addError(new FieldError("item","quantity","수량은 최대 9,999 까지 허용합니다.")); bindingResult.addError(new FieldError("item","quantity",item.getQuantity(),false,new String[]{"max.item.quantity"},new Object[]{9999},null)); } //특정 필드가 아닌 복합 룰 검증 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { bindingResult.addError(new ObjectError("item",new String[]{"totalPriceMin"},new Object[]{10000,resultPrice},null)); } } log.info("bindingResult ={}"+bindingResult); //검증에 실패하면 다시 입력 폼으로 if (!bindingResult.hasErrors()) { log.info("errors={}",bindingResult); return "validation/v2/addForm"; } // 성공 로직 Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:/validation/v2/items/{itemId}"; } @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item()); return "validation/v2/addForm"; } 강의에서는 error 출력하는 부분에서 스프링에서 제공하는 메세지가 뜨는데 저는 위와 같이 결과가 나옵니다.로그는 2023-07-13 08:31:36.584 WARN 20844 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errorsField error in object 'item' on field 'price': rejected value [qq]; codes [typeMismatch.item.price,typeMismatch.price,typeMismatch.java.lang.Integer,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [item.price,price]; arguments []; default message [price]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Integer' for property 'price'; nested exception is java.lang.NumberFormatException: For input string: "qq"]] 이렇게 나옵니다. 혹시 원인을 알 수 있을까여?
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
안녕하세요 7장 커피메뉴 DB 연동과정에서 오류납니다.
제 소스파일은 구글드라이브 링크를 걸어드리겠습니다ㅠ수업과정 그대로 진행했고, 혹시 틀린부분없나 일일히 체크해봤는데도 잘모르겠네요 https://drive.google.com/drive/folders/1Qh3u8f_Y3Serz1JDhtKld6PEFiUGEfpt?usp=drive_link
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의 6:23 필드주입
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.6:23에 필드주입을 하면 중간에 바꿔치기를 할수있는 방법이 없다는게 무슨 말인가요? 그럼 생성자주입은 바꿔치기가 된다는건데 이게 조립될때를 말하는건가요? 그럼 필드주입은 조립될때도 안바뀐다는건가요? 실행중에 바꾸는건 세터만 된다는식으로 얘기를해서요 컨트롤러가 정확하게 어떻게 작동되는지에 대한 이해가 아직 부족한거같은데 로드맵 따라가다보면 채워지는 부분일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원서비스테스트 BeforeEach AfterEach
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.MemberServiceTest에서 BeforeEach에서 새로 객체를 불러오고 AfterEach에선 다음 테스트를 위해 저장된걸 지우는걸로 이해를 했는데 어차피 객체를 새로 만드는데 지우는 과정이 왜 필요한건가요? 그래서 AfterEach 코드를 지워봤는데 회원가입()에서부터 막히더라고요AfterEach는 테스트가 끝나고 실행되는건데 왜 첫번째 테스트부터 작동에 문제가 생기는건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jstl 관련 회원목록 조회 시 에러 발생(스프링 부트 3.0 이상 사용)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]JAVA 17, 스프링부트 3.0 이상 사용중입니다.현재 매뉴얼에는 스프링부트 3.0 이상 사용자는 dependency 부분만 수정하면 작동이 가능하다고 되어있는데회원등록 후 회원조회를 해보니 WhiteLabel Error와 함께 다음과 같은 오류가 발생했습니다.ERROR 84347 --- [nio-8080-exec-2] a.c.c.C.[.[.[.[frontControllerServletV1] : Servlet.service() for servlet [frontControllerServletV1] in context with path [] threw exception [/WEB-INF/views/members.jsp (line: [17], column: [4]) According to TLD or attribute directive in tag file, attribute [items] does not accept any expressions] with root cause이와 관련하여 해결방법을 찾아보니 JSTL의 버전업으로 인해 taglib 사용 시 uri를 "http://java.sun.com/jstl/core" 가 아닌 "http://java.sun.com/jstl/core_rt"를 사용하면 정상적으로 회원목록 조회가 작동하는 것을 확인하였습니다.관련자료 : https://erim1005.tistory.com/entry/JSTLAccording-to-TLD-or-attribute-directive-in-tag-file
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드하기 오류
빌드하고 실행하기 오류가 납니다제 환경은 아래와 같습니다설치한 자바 버전: javac 11.0.19컴퓨터 환경: 윈도우 명령프롬프트자바 경로: C:\Program Files\Java\jdk-11변경후 자바경로: C:\Program Files\Java\jdk-11.0.19hello-spring 경로: C:\Astudy\hello-spring시스템환경변수: C:\Program Files\Java\jdk-11.0.19 라고 설정(이전에 1.8 자바를 설치했던 경험이 있어서 인텔리에서는 모든 환경을 java 11.0.19로 바꿔줌)시스템 변수 path: %JAVA_HOME%\bin 프로젝트 경로로 이동해서 dir에서 gradlew.bat 확인까지는 잘됩니다 오류1: ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk-11.0.9Please set the JAVA_HOME variable in your environment to match thelocation of your Java installation.라고 떠서 혹시나 환경변수의 자바명과 자바경로의 명이 달라서 그런가 싶어서이번에는 아예 jdk-11를 지우고 폴더명을 jdk-11.0.19로 다시 만들어 설치함그래도 아래와 같은 오류가 뜸 오류2: C:\Astudy\hello-spring>gradlew.batERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk-11.0.9Please set the JAVA_HOME variable in your environment to match thelocation of your Java installation. 여기서 의문인 것은 왜 java 11.0.19가 아니라 11.0.9로 나온건지 모르겠음 명령어는 gradlew build, ./gradlew build, ./gradlew, ./gradlew.bat, gradlew, gradlew.bat다쳐봄 이중에서 뭘로 골라서 쳐야할 지도 헷갈림 제발 도와주세요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
cookie 관련 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]안녕하세요 현재 쿠키를 보내면 ga=~~~~~~~~~~~~~~~~~~~~gaGOPSD9nLR1=~~~~~~~~~reponse에 세팅하면 해당 값들이 같이 나오는데 어떠한 의미인지 궁금합니다.!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
http://localhost:8000/hello가 안됩니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]http://localhost:8000은 실행이 되는데 http://localhost:8000/hello는 Error Page가 뜹니다.복사 붙여넣기로 코드를 작성했는데 어디가 잘못되었는지 모르겠습니다 ㅠㅠHelloController가 사용되지 않은 것 같은데 어디를 고쳐야하는지 모르겠습니다..경로는 다 영어 경로로 확인했습니다!