묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
helloController 중 addAttribute
이 부분에서 문제가 발생하는데 어떻게 해결해야할까요?위에 Model에서 오류나는 부분은 다른분의 질문을 보고 해결했는데 이 부분은 질문을 찾지 못해 올립니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
RequestMappingHandlerMapping이 더이상 @RequestMapping이 붙은 클래스를 매핑 정보로 인식하지 않습니다.
안녕하세요 좋은 강의 항상 잘 보고 있습니다. 다름이 아니라 8분 경 RequestMappingHandlerMapping은 스프링 빈 중에서 @RequestMapping 또는 @Controller가 클래스 레벨에 붙어 있는 경우 매핑 정보로 인식한다 하였는데, 스프링 6 버전 이후부터는 @RequestMapping은 인식하지 않게 변경된 것 같아 말씀 드립니다. 관련 커밋 링크 참조합니다!https://github.com/spring-projects/spring-framework/commit/3600644ed1776dce35c4a42d74799a90b90e359e 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
afterCompletion 에서의 에러 로깅
안녕하세요, afterCompletion() 에서 에러 로깅과 관련해서 질문드립니다.현재 강의에서는 컨트롤러에서 예외가 터지면 afterCompletion() 의 파라미터 ex 가 널이 아니니까 이 ex를 통해 어떤 에러가 났는지 로깅을 해주고 있습니다.그렇다면 만약 @ExceptionnHandler 를 이용해 컨트롤러의 예외처리를 한다면 이 ex 는 별도로 사용하지 않아도 될까요?(거의 사용을 안 하게 될 것 같은데, 맞나요?)항상 영한님과 서포터님들께 감사드립니다!🙇♂️
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
redirect RestController
안녕하세요.redirect를 써서 새로고침 시에중복 방지하는 것까지는 이해를 했습니다. 그런데 만약에,restcontroller일 경우즉 값만 받아서 저장하고 값만 돌려주는 경우에는따로 redirect 처리하지 않아도 되는 거죠?예를들면 javascript로 ajax를 사용해서값을 보내고 저장(또는 삭제, 수정) 하는경우일 때가 궁금한것입니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
input tag에 타임리프로 chekced를 넣는 방법
[질문 내용]안녕하세요 강사님! 강의 잘 듣고 있습니다. 다름이 아니라 타임리프에서 chekced를 표기하는 방법을 알고 싶습니다! html 소스보기 사진<div class="form-check form-check-inline"> <input type="radio" value="ETC" class="form-check-input" id="itemType3" name="itemType" /> <label for="itemType3" class="form-check-label" checked="checked" >기타</label> </div> 소스코드 <!-- radio button --> <div> <div>상품 종류</div> <div th:each="type : ${itemTypes}" class="form-check form-check-inline"> <input type="radio" th:field="*{itemType}" th:value="${type.name()}" class="form-check-input" th:checked="${(type.description == '기타')? 'true':'false'}" /> <label th:for="${#ids.prev('itemType')}" th:text="${type.description}" class="form-check-label" th:checked="${(type.description == '기타')? 'true':'false'}" > BOOK </label> </div> </div>위처럼 표시했는데 label 태그에는 나오고 input태그에는 나오지가 않습니다 ㅠ 이유가 무엇일까요? 또 thymeleaf로 표기하려면 어떻게 해야할까요? 그리고 formController에서 초기값을 설정하는 방법은 직접 해봤습니다! 타임리프에서 조건을 줘서 checked를 주는 방식이 궁금합니다! 감사합니다 ㅎㅎ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
process(paramMap,model) 질문
String viewName= controller.process(paramMap,model) 을 하게 되면 무슨 값이 들어가게 되나요?paramMap과 model 자체가 map 형태인데 어떻게 string 으로 치환이 되는건지 궁금합니다.process 메서드를 제가 잘 이해를 못한건지 이해가 잘 되지않습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
mv.getModel().put("member",member);
이 부분에서ModelView mv = new ModelView("save-result")mv.getModel().put("member",member);이렇게 하면 결과가 어떻게 되는 건가요?mv.setModel().put("member",member);을 해야 맞는거 같은데 잘 이해가 안되서 질문 드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
controller.process(request, response); 의 궁금점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]controller.process(request, response); 가dispatcher.forward(request, response);와 똑같이 화면을 전환해주는 의미로 볼 수 있나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
(14:40) 세션에 로그인 멤버만 담아야한다.
세션과 메모리에 대해서 질문드립니다.강의 14:40 경 '예제에서는 Member 인스턴스 자체를 세션 메모리에 저장했지만, 실무에서는 최소한의 정보를 담은 객체만 저장한다.' 라는 의미로 말씀해주셨습니다.그렇다면 이 때, 최소한의 정보를 담은 객체 는 어떻게 생성해야 하는지 궁금합니다.제가 생각한 방법은 1. LoginForm 의 ID, PW 를 추출2. 로그인 서비스에서 리포지토리에 접근에 실제로 ID, PW가 일치하는지 확인 (로그인 로직 수행)3. 위 로직이 끝나고 ID, PW에 오류가 없으면 ID 필드만 갖는 LoginMember 인스턴스 생성 (이 경우 JPA를 쓴다면 식별자만 필드로 갖는 LoginMember)4. 생성된 LoginMember 인스턴스를 value 로 세션 메모리 에 저장이 될 것 같습니다. 혹시 제가 생각한 방법대로 하면 될지, 아니면 다른 방법이 있을 지 (더 좋은 방법이 없는지) 서포터님의 의견을 묻고 싶습니다.영한님과 서포터님들께 항상 감사드립니다. 🙇♂️
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
${member.id} ${member.name}의 member가 어떻게 domain.Member에서 오는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]html코드 중 <tr th:each="member : ${members}">의 members는 controller 코드의 members로부터 오는 것으로 알고 있습니다. List<Member> members = memberService.findMembers(); model.addAttribute("members", members); return "members/memberList"; 그런데 members의 값이 memberService.findMembers(); 부터 오는 것이여서 MemoryMemberRepository.java의 findAll()를 찾아봤습니다.@Override public List<Member> findAll() { return new ArrayList<>(store.values()); }여기서 values() method로 인해서 map의 값만 추출되어 list로 변환해서 받는 것으로 알고 있습니다.그래서 저는 controller의 members가 값만 list로 나열된 것으로 생각했는데 memberList.html에서 "member : ${members}"member가 list의 value가 아닌 domain.Member class라는 것이 잘 이해가 안됩니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
요청이 String이고 응답이 객체 형태일 때 메시지 컨버터
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.요청이 text/plain인 "hello"이고,응답이 application/json인 HelloData ({"username: "hello", "age" : 10})인 경우에는 StringHttpMessageConverter만 쓰이나요? 아니면 MappingJackson2HttpMessageConverter도 함께 쓰이나요? 영한 님의 강의에 따르면 content-type이 application/json이고, void hello(@RequestBody String data) {}일 때는 StringHttpMessageConverter가 모든 타입의 미디어 타입이 가능하므로 StringHttpMessageConverter가 쓰인다고 했는데 그렇게 생각하면 될 지 질문드립니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
SaveCheck, UpdateCheck 질문
Bean Validation-groupsSaveCheckUpdateCheck위 인터페이스를 만드는 것만으로 어떻게 item model이 나눠서 구분이 되는지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
MessageSourceTest의 helloMessage() 메서드 테스트 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]MessageSourceTest의 helloMessage()메서드를 테스트중 인데 계속 오류가 발생해 질문을 남기게 되었습니다.처음엔 인코딩 문제인 것 같아 인코딩과 관련된 설정은 모두 질문에 나와있는데로 바꾸었는데도 불구하고 계속 오류가 뜹니다.messages_en.properties 파일을 지우고 messages.properties 파일 하나만 남겨두고 테스트를 하면 테스트가 정상적으로 성공합니다. 하지만 messages_en.properties를 추가하는 순간이런식으로 Expecting이 "hello"로 바뀌고 오류가 뜨는 것 같습니다. 해결방법을 가르쳐주시면 감사하겠습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
logout 과 관련한 질문이 있습니다.
@PostMapping("/logout") public String logout(HttpServletResponse response) { expireCookie(response, "memberId"); return "redirect:/"; } private void expireCookie(HttpServletResponse response, String cookieName) { Cookie cookie = new Cookie(cookieName, null); cookie.setMaxAge(0); response.addCookie(cookie); }logout 메서드를 공부하면서 의문이 생겼습니다.코드를 보니까 memberId 이름을 가진 쿠키를 하나 생성해서 setMaxAge = 0으로 설정한 후에 addCookie를 하는데 이렇게 되면 memberId 이름을 가진 쿠키가 2개가 되는 것 아닌가요? (기존에 로그인 할 때 memberId 생성 + 로그아웃할 때 memberId 생성)이 memberId가 대체된다고 생각했을 때에도 여러 회원이 로그인을 하게 되면 memberId = x, memberId = y, ... 이렇게 다양하게 존재할 것 같은데 저렇게 같은 이름으로 memberId의 setMaxAge = 0 처리를 해버리면 모든 회원의 memberId의 setMaxage가 0이 되지 않을까 싶어서 의문이네요ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 오류
다음과 같은 오류로 구글링 한 결과구글링에서 위 두가지 방법을 알려줘서 했더니 그래도 오류가 나서 문의드립니다..ㅜㅜ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프로젝트 생성 단계, build.gradle 오픈시 오류
build.gradle를 오픈하자마자 다음과 같은 오류가 뜹니다ㅜㅜ 자바는 11버전 설치했고 강의 제일 처음, build.gradle부터 오픈하자마자 저런 오류가 났고 아무것도 안건들었습니다. <오류코드>- 일부만 가져왔습니다.A problem occurred configuring root project 'hello-spring'.> Could not resolve all files for configuration ':classpath'.> Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.1.Required by:project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.0.1> No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.1 was found. The consumer was configured to find a runtime of a library compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.6' but:- Variant 'apiElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares an API of a component compatible with Java 17 and the consumer needed a runtime of a component compatible with Java 11- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '7.6')- Variant 'javadocElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.0.1 declares a runtime of a component, and its dependencies declared externally:- Incompatible because this component declares documentation and the consumer needed a library- Other compatible attributes:- Doesn't say anything about its target Java version (required compatibility with Java 11)- Doesn't say anything about its elements (required them packaged as a jar)- Doesn't say anything about org.gradle.plugin.api-version (required '7.6')- Variant 'mavenOptionalApiElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.0.1 declares a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares an API of a component compatible with Java 17 and the consumer needed a runtime of a component compatible with Java 11- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '7.6')- Variant 'mavenOptionalRuntimeElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.0.1 declares a runtime of a library, packaged as a jar, and its dependencies declared externally:- Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 11- Other compatible attribute:- Doesn't say anything about org.gradle.plugin.api-version (required '7.6')
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 실행 안됨
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]org.h2.jdbc.JdbcSQLNonTransientException: IO Exception: "java.net.UnknownHostException: ?��채린: ?��?���? ?��?��?���? ?� h2.bat파일을 실행하면 cmd창에 위와 같이 뜨면서 localhost:8082에 접속하면위의 사진 같은 에러가 납니다.인프런의 모든 질문을 읽어봐도 저처럼 UnknownHostException 오류가 난 사람은 없어서 질문합니다!(환경변수 설정부터 재부팅, 재설치, 모든 행동을 다 해보았습니다..)
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
StringToIpConverter 가 2번 호출되는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용][소스코드] @PostMapping("/converter/edit") public String converterEdit(@ModelAttribute Form form, Model model) { IpPort ipPort = form.getIpPort(); model.addAttribute("ipPort", ipPort); log.info("post request end"); return "converter-view"; } @Data @Slf4j static class Form { private IpPort ipPort; public Form(IpPort ipPort) { log.info("form create"); this.ipPort = ipPort; } } [화면]"제출" 버튼을 눌러 POST 요청을 보내면 StringToIPConverter가 2번 호출됩니다. [로그][질문]첫번째는 @ModelAttribute Form 객체를 만들때 호출하는 것으로 보이는데, 두번째는 언제 호출되는건가요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
BindingResult에서 bindingFailure의 의미
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요. BindingResult에서 bindingFailure의 의미가 잘 이해되지 않아 질문드립니다.강의 자료에 아래와 같이 적혀있는데요. 이 부분이 이해가 되지 않습니다.“bindingFailure 는 타입 오류 같은 바인딩이 실패했는지 여부를 적어주면 된다. 여기서는 바인딩이 실패한 것은 아니기 때문에 false 를 사용한다. “ 수업에서 진행한 예시에서 가격에 숫자가 아닌 문자(qqqq)를 적은 경우, 타입이 맞지 않아 바인딩 실패가 발생하는 것이라고 생각했습니다. 타입이 달라 바인딩 실패가 될지는 사용자가 값을 입력하기 전까지는 모르는 것이라고 생각되는데, false를 적는 이유가 궁금합니다.감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
REST API 컨트롤러에서도 BindingResult를 사용하나요?
강의 내용을 보면, BindingResult 는 @ModelAttribute 를 사용할 때만 사용하는 것으로 보여집니다.질문: 그렇다고 한다면, RestController의 경우는 BindingReulst 를 별도로 사용할 필요가 없을까요❓(REST API 에서는 주로 @RequestBody를 이용하여 JSON 포맷으로 데이터를 주고받는 것으로 알고있어서요!)