월 16,940원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
오류 발생 시 Postman에서 항상 JSON형식으로 반환됩니다.
error/500.html 을 만들고@RequiredArgsConstructor @Controller public class ProductController { @GetMapping("/api/response") public String responseStatusEx1() { throw new RuntimeException(); } }위와 같이 연습코드를 작성하면 웹페이지에서는 제가만든 500오류페이지가 나오는데 PostMan에서는{ "timestamp": "2023-12-19T03:41:17.680+00:00", "status": 500, "error": "Internal Server Error", "path": "/api/response-status-ex1" }Accept: text/html이면 잘 나오나 Accept: */* 이면 위와같이 항상 Json형식으로 나옵니다. 우선순위가 Json형식이 높아서 그런건지 알려주시면 감사하겠습니다.
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
섹션 2 - 셀렉트 박스 강의 내용에서 발생된`MethodArgumentNotValidException` 를 고치지 못하고 있습니다...
셀렉트 박스를 만들기 위해 강의에서 추가하는 코드를 저도 추가한 후 동일하게 서버를 띄웠지만,2023-12-19T09:06:49.880+09:00 WARN 11452 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public java.lang.String hello.itemservice.web.form.FormItemController.addItem(hello.itemservice.domain.item.Item,org.springframework.web.servlet.mvc.support.RedirectAttributes): [Field error in object 'item' on field 'deliveryCode': rejected value [FAST]; codes [typeMismatch.item.deliveryCode,typeMismatch.deliveryCode,typeMismatch.hello.itemservice.domain.item.DeliveryCode,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [item.deliveryCode,deliveryCode]; arguments []; default message [deliveryCode]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'hello.itemservice.domain.item.DeliveryCode' for property 'deliveryCode'; Cannot convert value of type 'java.lang.String' to required type 'hello.itemservice.domain.item.DeliveryCode' for property 'deliveryCode': no matching editors or conversion strategy found]] ]라고 에러가 뜹니다. 에러 내용대로 고치려면 DeliveryCode 선언할 때 컨버터를 정의해야 하는 것 같은데, 그렇게 코딩한다면 타임리프 기능에서 벗어나는 방식으로 코딩하는 것 같네요..아래는 제 코드에 추가된 내용들입니다.FormController@ModelAttribute("deliveryCodes") public List<DeliveryCode> deliveryCodes() { List<DeliveryCode> deliveryCodes = new ArrayList<>(); deliveryCodes.add(new DeliveryCode("FAST", "빠른 배송")); deliveryCodes.add(new DeliveryCode("NORMAL", "일반 배송")); deliveryCodes.add(new DeliveryCode("SLOW", "느린 배송")); return deliveryCodes; }addForm.html <!-- SELECT --> <div> <div>배송 방식</div> <select th:field="*{deliveryCode}" class="form-select"> <option value="">==배송 방식 선택==</option> <option th:each="deliveryCode : ${deliveryCodes}" th:value="${deliveryCode.code} " th:text="${deliveryCode.displayName}">FAST</option> </select> </div> <hr class="my-4">추가된 코드 외에 다른 곳에서부터 에러가 발생되는 것일 수도 있어 프로젝트도 공유해볼게요.https://drive.google.com/drive/folders/1CrfrMJEdHRJDvrEAMSyDAOr9xLac7I4a?usp=sharing
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 파일업로드에서 오류뜹니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not found in class file either. v1과 v2에서는 문제가없는데요 /spring/upload에서 제출하면 500에러뜨면서 illegalArgumentexception뜹니다. 어떻게 해결해야할지 모르겠습니다
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
java: cannot access java.nio.file.Path 오류
안녕하세요.강의 잘 듣고 있습니다.제 개인 프로젝트에서 multipartfile을 활용한 파일 업로드 기능을 구현하고 있는데 빌드 과정에서 아래와 같은 오류가 발생합니다.jdk버전은 11버전입니다. 진짜 하루종일 이것저것 다해봤는데 원인을 모르겠어요..file.transferTo() 부분에서 에러가 발생하는데 미치겠습니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
자바스크립트 파일을 별도로 만들게되는 경우
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]자바스크립트 파일을 별도로 만들게 되는 경우에는, 자바스크립트 인라인 사용할 수 있는 방법이 없나요? <script type="text/javascript" th:inline="javascript" th:src="@{/javascript.js}"></script>위의 코드처럼, 넣어봤는데 별도의 파일이라 그런지 동적으로 변환되지 않고 그대로 인식되어버리네용😅 자바스크립트 인라인을 사용하기 위해서는, 항상 html파일에 script 태그를 함께 사용해야만하나요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@RequestParam (name= ) 설정을 안했을때
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@GetMapping("/hello-v2") public String helloV2(@RequestParam(name = "data") Integer data) { System.out.println("data = " + data); return "ok"; 영상에서는 (name="data")를 안해도 화면이 잘 출력이되는데 저는 (name="data") 이거를 안넣으면 whitelabel이 뜹니다. 뭔가 설정이 잘못된건가요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
기본객체들 404
스프링MVC 기본객체들 강의 학습중인데요404가 나오네요 소스 자체를 복붙해도 404가 나오는데 원인을 모르겠습니다 스프링은 3.2.0 버전사용하고 있고아래는 소스코드 입니다BasicControllerpackage hello.thymeleaf.basic; import jakarta.servlet.http.HttpSession; import lombok.Data; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Controller @RequestMapping("/basic") public class BasicController { @GetMapping("text-basic") public String textBasic(Model model) { model.addAttribute("data", "Hello Spring!"); return "/basic/text-basic"; } @GetMapping("text-unescaped") public String textUnescaped(Model model) { model.addAttribute("data", "<b>Hello Spring!</b>"); return "/basic/text-unescaped"; } @GetMapping("/variable") public String variable(Model model) { User userA = new User("userA", 10); User userB = new User("userB", 20); List<User> list = new ArrayList<>(); list.add(userA); list.add(userB); Map<String, User> map = new HashMap<>(); map.put("userA", userA); map.put("userB", userB); model.addAttribute("user", userA); model.addAttribute("users", list); model.addAttribute("userMap", map); return "basic/variable"; } @Data static class User { private String username; private int age; public User(String username, int age) { this.username = username; this.age = age; } @GetMapping("/basic-objects") public String basicObjects(HttpSession session) { session.setAttribute("sessionData", "Hello Session"); return "basic/basic-objects"; } @Component("helloBean") static class HelloBean { public String hello(String data) { return "Hello " + data; } } } } basic-objects<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>식 기본 객체 (Expression Basic Objects)</h1> <ul> <li>request = <span th:text="${request}"></span></li> <li>response = <span th:text="${response}"></span></li> <li>session = <span th:text="${session}"></span></li> <li>servletContext = <span th:text="${servletContext}"></span></li> <li>locale = <span th:text="${#locale}"></span></li> </ul> <h1>편의 객체</h1> <ul> <li>Request Parameter = <span th:text="${param.paramData}"></span></li> <li>session = <span th:text="${session.sessionData}"></span></li> <li>spring bean = <span th:text="${@helloBean.hello('Spring!')}"></span></li> </ul> </body> </html>index.html<html> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <ul> <li>텍스트 <ul> <li><a href="/basic/text-basic">텍스트 출력 기본</a></li> <li><a href="/basic/text-unescaped">텍스트 text, utext</a></li> </ul> </li> <li>표준 표현식 구문 <ul> <li><a href="/basic/variable">변수 - SpringEL</a></li> <li><a href="/basic/basic-objects?paramData=HelloParam">기본 객체들</a></li> <li><a href="/basic/date">유틸리티 객체와 날짜</a></li> <li><a href="/basic/link">링크 URL</a></li> <li><a href="/basic/literal">리터럴</a></li> <li><a href="/basic/operation">연산</a></li> </ul> </li> <li>속성 값 설정 <ul> <li><a href="/basic/attribute">속성 값 설정</a></li> </ul> </li> <li>반복 <ul> <li><a href="/basic/each">반복</a></li> </ul> </li> <li>조건부 평가 <ul> <li><a href="/basic/condition">조건부 평가</a></li> </ul> </li> <li>주석 및 블록 <ul> <li><a href="/basic/comments">주석</a></li> <li><a href="/basic/block">블록</a></li> </ul> </li> <li>자바스크립트 인라인 <ul> <li><a href="/basic/javascript">자바스크립트 인라인</a></li> </ul> </li> <li>템플릿 레이아웃 <ul> <li><a href="/template/fragment">템플릿 조각</a></li> <li><a href="/template/layout">유연한 레이아웃</a></li> <li><a href="/template/layoutExtend">레이아웃 상속</a></li> </ul> </li> </ul> </body> </html>링크여기서 막혀서 학습을 못하고 있어요 ㅠㅠ 도와주세요
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
properties안에 써놓은 한글이 깨집니다.
이런식으로 한글이 깨지는데, 처음엔 @Getter나 jackson라이브러리나 slf4j가 깨지는 줄 알았는데게터 세터 직접 구현하고 브라우저에서 찍고, ide상에서 System.out.println으로 찍어도 깨지네요 ㅠㅠ.. 검색해서 나온이런것 다 해보았습니다.vmoption 파일도 수정했습니다. 실행 옵션에 따라 동적으로 서비스 명 다르게 해서 배포하고 싶었는데, 잘 안되네요 ㅠㅠ..강의를 따라했을 때 국제화 message는 안깨졌었는데 이상하네요..
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
메서드 설정시 어떤부분은 static어 어떤부분은 static없이 하는데 이유가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]1분31초에 addUsers에서는 private void로 일반 메서드를 생성했는데 이전에 HelloBean 메서드를 컴포넌트에 등록하기 위해 정의내릴때는 static으로 설정하는데 두개의 차이가 궁금합니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@InitBinder과 validator 에 대한 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요 InitBinder 할시 위와 같은 결과를 얻는데요순서를 조정하는 방법은 없습니까? 제가 구현하고 싶은건 "숫자를 입력해주세요" 만 나타나게 하고 싶고 이전 코드에서는 코드의 순서를 간단하게 조정해주는 정도로 구현이 가능했는데 InitBinder를 쓸 경우 어떻게 해야 제가 원하는대로 구현할 수 있는지 궁금합니다. 글로벌하게 validator를 구현하고 또 하나 컨트롤러에서 validator를 구현했다고 가정했을때 두개 다 했을시 에러가 발생합니까? 아니면 컨트롤러 validator가 우선권을 가집니까? 아니면 두개 다 검증됩니까?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
logback mdc 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 마지막에 Logback MDC에 관한 내용이 나와서 적용을 해보았는데요. 설정 방법이 다양하고, 확인이 필요하여 여쭤봅니다. MDC구글링해보니 어플리케이션 요청에서 처음 만나는 filter에 설정해주는 것이 좋다하여 LogFilter doFilter 메소드 try-catch문에 아래와 같이 적용해주었구요.@Override public void doFilter(중략) { ..중략 try { log.info("REQUEST [{}][{}]", uuid, requestURI); MDC.put("requestId", uuid); //추가 chain.doFilter(request, response); MDC.clear();//추가 } catch (Exception e) { throw e; } finally { log.info("RESPONSE [{}][{}]", uuid, requestURI); } } log pattern 설정로그 패턴 설정이 logback-spring.xml, base.xml, properties 등 가이드가 여럿 있었지만,resources 밑에 logback-spring.xml 생성했습니다.<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>[%d{yyyy.MM.dd HH:mm:ss.SSS}] - [%-5level] - [%X{requestId}] - [%logger{5}] - %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="consoleAppender"/> </root> </configuration> items/add 호출하여 error log 출력localhost:8080/items/add 호출하여 공백으로 save 시 로그 패턴 설정해준 위치에 uuid 찍히는 것 확인됐습니다. [2023.12.17 00:51:15.335] - [INFO ] - [] - [h.l.w.f.LogFilter] - REQUEST [b67de768-0ef9-49cb-a4f6-65d9d5983b6f][/items/add] [2023.12.17 00:51:15.434] - [INFO ] - [b67de768-0ef9-49cb-a4f6-65d9d5983b6f] - [h.l.w.i.ItemController] - errors=org.springframework.validation.BeanPropertyBindingResult: 3 errors Field error in object 'item' on field 'price': rejected value [null]; codes [NotNull.item.price,NotNull.price,NotNull.java.lang.Integer,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [item.price,price]; arguments []; default message [price]]; default message [must not be null] Field error in object 'item' on field 'itemName': rejected value []; codes [NotBlank.item.itemName,NotBlank.itemName,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [item.itemName,itemName]; arguments []; default message [itemName]]; default message [must not be blank] Field error in object 'item' on field 'quantity': rejected value [null]; codes [NotNull.item.quantity,NotNull.quantity,NotNull.java.lang.Integer,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [item.quantity,quantity]; arguments []; default message [quantity]]; default message [must not be null] [2023.12.17 00:51:15.441] - [INFO ] - [] - [h.l.w.f.LogFilter] - RESPONSE [b67de768-0ef9-49cb-a4f6-65d9d5983b6f][/items/add] 질문위와 같은 설정 중 보완할 부분이 있을까요.?logback-spring.xml, base.xml, application.properties 중 어떤 방식을 주로 실무에서 많이 사용하나요? 환경에 따라 다를까요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Thymeleaf 기본 객체들 강의 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]기본 객체들 중 request response session servletContent는 더이상 사용이 안된다고 에러 메시지가 나오던데요 확인 가능할까요? The 'request','session','servletContext' and 'response' expression utility objects are no longer available by default for template expressions and their use is not recommended. In cases where they are really needed, they should be manually added as context variables. at org.thymeleaf.standard.expression.StandardExpressionObjectFactory.buildObject(StandardExpressionObjectFactory.java:207) ~[thymeleaf-3.1.2.RELEASE.jar:3.1.2.RELEASE] 공식 문서를 보니깐 ctx.session 이런식으로 붙이라고 나와서 붙이니깐 에러는 안뜨는데 request response servletContent는 내용이 안뜨네요 세션은 뜨는데 좀 다르게 뜨고
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
폼 데이터 포맷터가 안되요
여기서 폼 제출하면 문자열"10,000"을 Integer로 변환할 수 없다고 나와요
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Item 클래스에서 사용되는 멤버변수에 대해서 질문이 있습니다.
멤버변수를 생성할 때, 기본 타입이 아닌 래퍼 클래스로 사용하는 이유가 있을까요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
jsessionid가 url에 있을때 404에러
세션을 지우고,로그인을 하면 세션이 만들어져야하는데 세션은 만들어졌는데 url에 jsessionid가 들어가면 404 에러가 나오네요이유가 멀까요 해결하신분 없나요세션을 안 지우고하면 에러는 안뜹니다 ps. 코드 문제일수도 있다 생각되어 ,강의자료에 있는 애초에 완성되있는 완성본 코드로 실험한 결과도 역시나 결과는 같았습니다. 실제로 쓸때는 session.tracking-modes를 넣을꺼라 문제는 없겠지만 정책이 바뀐건지 강의랑다르게 404에러가 나와서 답답하네요,,참고로 제 부트 버전은 3.1.5 입니다
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
이스케이프 예시를 조금 변형하다 이해가 안 가는 부분이 있어 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.제가 이해하기로는 모델에 담긴 "Hello <b>Spring</b>"이라는 문자열을 꺼내서 ${data} 대신에 들어간다고 생각했습니다.그래서 html 코드에서 ${data}를 지우고 이 자리에 "Hello <b>Spring</b>"를 바로 넣어봤는데 오류가 납니다.두 경우에는 어떤 차이가 있는 건가요? 왜 오류가 나는지 알 수 있을까요
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
패키지명이 다 나오는 이유
패키지명이 임포트가 안되고 위에처럼 되는데 이유가 뭔가요??
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
이런 경우엔 어떤 예외와 응답 코드가 적절할까요?
친구랑 커뮤니티 계정을 같이 쓴다고 가정할 때,각자의 pc로 웹 브라우저에서 로그인하여 서로 세션이 있는 상태에서제가 게시글을 작성하고 있는데 다른 친구가 회원 탈퇴를 합니다(db에서 회원 데이터 삭제됨).글을 마저 작성하고 글쓰기를 누르면, 세션이 유지 중이므로 로그인 체크 인터셉터도 통과하고 해당 세션에는 회원 데이터가 있습니다(세션은 레디스에 저장되어 있음). 게시글 엔티티를 db에 저장하기 위해 필요한 회원 데이터를 db에서 조회했지만 회원이 없습니다.포털 사이트 한군데에서 크롬이랑 엣지로 시험해봤는데 한곳에서 회원 탈퇴 성공한 뒤다른 곳에서 비밀번호 변경을 시도하면 "비밀번호 변경에 실패했습니다. 잠시 후 다시 시도해주세요"라고 400 응답코드를 반환했고,회원 탈퇴를 시도하면 500 응답과 함께 "회원 탈퇴에 실패했습니다. 잠시 후 다시 시도해주세요."라고 나옵니다. 기사에 댓글을 달아봤는데 댓글은 달렸고, 로그인 재시도는 실패했습니다.이런 경우 어떤 예외를 발생시켜야 하나요? 스프링 추상화 예외 EmptyResultDataAccessException를 발생시키고 session.invalidate(); 처리하는 것은 어떤가요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
경로설정
1.서버를 실행하니 url이 http://localhost:8080/templates/basic/text-basic 여기로 매핑되어있는데 강사님 화면은 http://localhost:8080/basic/text-basic으로 되어있는데 뭐가 문제인가요?모든 url에서 템플릿을 빼니까 화면이 출력되긴합니다코드도 다 똑같이 따라했는데 뭐가 문제인가요..?import lombok.Data; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Controller @RequestMapping("/basic") public class BasicController { @GetMapping("/text-basic") public String textBasic(Model model) { model.addAttribute("data", "Hello Spring!"); return "basic/text-basic"; } @GetMapping("/text-unescaped") public String textUnescaped(Model model) { model.addAttribute("data", "Hello Spring!"); return "basic/text-unescaped"; } @GetMapping("/variable") public String variable(Model model) { User userA = new User("userA", 10); User userB = new User("userB", 20); List<User> list = new ArrayList<>(); list.add(userA); list.add(userB); Map<String, User> map = new HashMap<>(); map.put("userA", userA); map.put("userB", userB); model.addAttribute("user", userA); model.addAttribute("users", list); model.addAttribute("userMap", map); return "basic/variable"; } @Data static class User{ private String username; private int age; public User(String username, int age) { this.username = username; this.age = age; } } }
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@InitBinder의 검증기 생성에 대해서
안녕하세요 해당 컨트롤러 안에 init()메서드가 있는경우 애노테이션Validated가 있는 메서드가 호출되는 경우만 init()가 호출 되는 건가요? 또 init가 호출될 떄마다 검증기도 새로 생성된다고 했는데 검증기도 객체인데 그 객체를 호출마다 새로 생성하고 리퀘스트 스코프 끝나면 검증기 객체가 자동 삭제되고 다른 호출일 때 또 새로운 검증기 객체가 생성되는 인식이 맞을까요?