묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
3분 55초에 HelloServlet 클래스를 만들어서 스프링 테스트 실행 해봤는데 오류가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]https://drive.google.com/file/d/1oarfNr9oWYa93-YMLIPBrK-P1yc87EQF/view?usp=drive_link해당 링크는 작성한 코드 압축 파일입니다.에러 메세지는 Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.라고 뜨구요 APPLICATION FAILED TO START 라고 나옵니다. 구글링 하면서 찾아보다 어떻게 해결하는지 모르겠어서 질문 남깁니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
SpringMemberControllerV2 핸들러 매핑 과정이 궁금합니다
처음엔 스프링이 @Controller가 붙어있는 SpringMemberControllerV2를 스프링 빈으로 등록하고 @RequestMapping옆에 있는 url 정보를 인식해서 담아둡니다. 그 다음url요청("/spring/mvc/v2/members/new-form")이 오면 DispatcherServlet이 RequestMappingHandlerMapping을 이용하여 handler(SpringMemberControllerV2)를 반환 받고 사용할 수 있는 어댑터를 조회해서 RequestMappingHandlerAdapter를 반환 받습니다. DispatcherServlet은 어댑터를 실행하여 SpringMemberControllerV2 객체에서@RequestMapping("/spring/mvc/v2/members/new-form")이 붙은 메서드를 실행합니다. 라고 이해했는데 틀린 부분이 있으면 수정 부탁드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원가입 테스트 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 다음과 같은 에러가 발생합니다 이유가 궁금합니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 빌드
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]JDK은 21로 Gradle은 8.5로 맞췄는데요 gradlew build하면 BUILD FAILED가 뜨지만 localhost:8080은 잘작동합니다. 파일경로에는 한글포함안되어있고 gradlew clean build해도 동일한 오류가 발생합니다. 해당 오류가 왜 발생하는지 그냥 진행해도 되는지 궁금합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
http 요청 메세지를 서버에서 가공할 일이 생기면 어떻게 하시나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네[질문 내용]안녕하세요. 영한님 강의 언제나 잘 듣고 있습니다 ㅎㅎ강의를 들으면서 궁금증이 하나 드는데요. 만약 http 메세지를 서버에서 가공할 일이 생기면 어떻게 가공하시는지 궁금합니다.예시에 나오는 방법은 모두 매핑 방식인데요.예를 들어,클라이언트에서는 현재 시간이 서버로 전달됩니다.17시 1분도, 17시 59분도 같은 데이터를 조회해야 할 때, 애플리케이션에서 데이터를 조작하거나 sql로 데이터를 조작해야 할 것 같아서요. 이렇게 데이터를 조작해야 할 때 어떤 방법을 채택하시는지 궁금합니다.dto에서 생성자를 만들어 조작해야 할까요? 아니면 조작 메서드를 따로 만들어야 하는지, aop 같은 걸로(될지는 모르겠지만..) 조작해야 하는지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 타임아웃과 refresh token
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]기존에 JWT의 access token과 refresh token 플로우를 알고 있는 상태에서 세션관련 강의를 듣다보니까 의문점이 생겼습니다. 강의에서 세션은 세션 타임아웃 설정을 통해 예를 들어 접속할때마다 세션 유효 기간을 30분씩 늘리는 방식으로 사용하여 세션 탈취로부터 보안을 강화하고 사용자의 빈번한 재로그인을 방지합니다.그렇다면 여기서 JWT도 세션과 유사하게 refresh token을 사용하지 말고 accesstoken을 통해 서버에 접근할때마다 유효시간을 30분씩 늘리는 방식으로 동작하면 더 효율적일거 같은데 굳이 refresh token을 활용하는 이유가 있을까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
intellij JVM설정 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]인텔리제이의 설정화면 두곳이 있습니다.하나는 settings > build, Execution, Deployment > build Tools > Gradle > 맨 하단 Gradle JVM 다른 하나는 project Structure > project settings > project > sdk 위 두 곳은 어떤 차이점이 있는 것인지 알고싶습니다.둘다 JDK경로를 지정하는 것처럼 보이는데 Dependency requires at least JVM runtime version 17 에러를 마주했을 때 후자에서 해결을 해보려고 해도 해결이 안됐었습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 저장 위치
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]세션은 쿠키에 저장하는데 로컬 스토리지나 세션 스토리지에 저장하지 않는 이유가 있을까요??
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 부트 빌드파일 JAR와 WAS 직접 배포 차이가 궁금합니다
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의 내용중에 스프링 부트는 내장 서버가 있어 JAR 빌드 후 바로 실행할 수 있다고 말씀해주셨고, 일반 스프링 MVC는 WAS를 따로 연동하여 구동한다고 말씀해 주셨는데요 실제 배민같은 대규모 트래픽이 발생하는 곳에서는 내장형 WAS와 외장 WAS의 성능적인 차이가 크게 발생하는지 또는거의 차이가 없는지 문의드립니다. ( '실제 편리함은 내장형이지만, 대규모 처리에는 성능상 외장 WAS가 효율적이다' 같은 의미가 있는지? )
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
7. 스프링 MVC - 웹 페이지 만들기 > 상품 목록 페이지 th:onclick
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 김영한 강사님현재 진행중인 7. 스프링 MVC - 웹 페이지 만들기 강의 - 상품 목록 페이지 th:onclick 부분은 아래와 같이 작성되어 있고,<div class="row"> <div class="col"> <button class="btn btn-primary float-end" onclick="location.href='addForm.html'" th:onclick="|location.href='@{basic/items/add}'|" type="button">상품 등록 </button> </div> </div>컨트롤러의 상품 등록 부분도 예제와 동일하게 작성되어 있습니다.@Controller @RequestMapping("/basic/items") @RequiredArgsConstructor public class BasicItemController { private final ItemRepository itemRepository; ...(생략) @GetMapping("/add") public String addForm() { return "basic/addForm"; } }그런데 브라우저에서 등록 버튼을 누르면 /basic이 한 번 더 붙는데 이유가 궁금합니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
체크예외와 언체크예외
체크예외와 언체크예외에 대해서 복구불가능한 문제와 언체크예외를 주로 사용해야하는 부분에 대해서 아래와 같이 이해했는데 이렇게 이해하면 될까요?? 1. 예외는 주로 복구 불가능한 이유가 예외가 발생하면 try~catch로 예외를 처리해서 정상흐름대로는 할순있지만, 예외가 발생한거에대해서 이를 복구해서 원했던결과대로 정상적으로 돌리는것은 불가능하기때문에 그런건가요?? + 애플리케이션내에서 코드를 통해서 복구할수는 없는건가요??체크예외에서는 예외가 발생하면 throws로 예외를 던져야하지만 이를 서비스나 컨트롤러에서는 try catch로 처리할순있어도 딱히 예외를 복구할순없다. 그래서 그냥 try~catch로 예외를 처리하지말고 예외를 발생시켜서 개발자가 로그를통해 예외를 인지하는게 낫다. 결국 그래서 throws를 할필요가없는 언체크예외가 낫다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
addItemV5 와 addItemV6 차이점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]addItemV5 함수에서는public String addItemV5(Item item) { itemRepository.save(item); return "redirect:/basic/items/"+item.getId(); } 보시다시피 return 값을 줄 때 리포지토리에 저장한 item의 id를 가져오는 것이 아니라 파라미터로 받은 item의 id를 가져와서 반환했는데,public String addItemV6(Item item, RedirectAttributes redirectAttributes) { Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:/basic/items/{itemId}"; }v6 에서는 savedItem으로 저장한 item 자체를 가져와서 id를 넣어주는데, 혹시 차이점이 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost:8080 Whitelabel Error Page 뜹니다...
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, 해당 static 폴더에 index.html파일에 코드를 입력한후 서버 실행결과 whilelabel 에러가 뜹니다.해결에 도움을 주시면 감사하겠습니다.. 콘솔 내용:: Spring Boot :: (v3.3.3)2024-08-26T17:27:55.146+09:00 INFO 4895 --- [ main] h.hello_spring.HelloSpringApplication : Starting HelloSpringApplication using Java 17.0.12 with PID 4895 (/Users/kipyo/Documents/스프링/hello-spring/out/production/classes started by kipyo in /Users/kipyo/Documents/스프링/hello-spring)2024-08-26T17:27:55.148+09:00 INFO 4895 --- [ main] h.hello_spring.HelloSpringApplication : No active profile set, falling back to 1 default profile: "default"2024-08-26T17:27:55.573+09:00 INFO 4895 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)2024-08-26T17:27:55.580+09:00 INFO 4895 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]2024-08-26T17:27:55.580+09:00 INFO 4895 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.28]2024-08-26T17:27:55.606+09:00 INFO 4895 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2024-08-26T17:27:55.607+09:00 INFO 4895 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 433 ms2024-08-26T17:27:55.743+09:00 WARN 4895 --- [ main] ion$DefaultTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)2024-08-26T17:27:55.768+09:00 INFO 4895 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/'2024-08-26T17:27:55.772+09:00 INFO 4895 --- [ main] h.hello_spring.HelloSpringApplication : Started HelloSpringApplication in 0.793 seconds (process running for 0.952)
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
다음으로에 나온 실전 REST API 강의
다음으로에 나온 실전 REST API 강의는 아직 나오지 않은 상태일까요? 아니면 다른 강의에 녹아있는걸까요
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
복구 불가능한 예외
강의에서 설명하신 복구 불가능한 예외에 대해서 질문드립니다. 말씀하신 복구 불가능한 예외라는게 구체적으로 어떤것을 의미하는것인지 이해를 잘 못하겠습니다. 앞서 배운것처럼 해당 예외가 발생하면 애플리케이션 로직에서 try~catch를 통해 예외를 잡아서 처리하면 되는것 아닌가요??
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
mybatis xml파일을 만드는중 sql문법 질문
[질문 내용]안녕하세요 열심히 강의를 듣던 중 MyBatis 적용1-기본 강의 11:37초 쯤에 and item_name...라는 sql구문을 쓰셨는데 이렇게 앞에 and가 들어가면select * from item where and item_name...이런 식으로 sql문이 쓰여지는거 아닌가요??앞에 and가 꼭 필요한건지 알아서 떼지는건지 궁금합니다!
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
Q클래스 파일 생성 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]상황: build tool는 Gradle를 사용하고 있습니다.Gradle -> Tasks -> build -> clean Gradle -> Tasks -> other -> compileJava위에 작업을 실행해도 generated폴더에 Q클래스가 생성되지 않습니다. 참고로 generated도 생성되지 않습니다.다른 분들처럼 오류가 발생하지는 않습니다!!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
SpringMemberFormControllerV1 404에러
SpringMemberFormControllerV1에서 @Controller를 붙이고실행하면 폼이 정상적으로 뜨는데 이렇게@Controller를 주석처리하고@Component@RequestMapping 를 붙이고실행하면 404가 에러가 뜹니다. 게다가이렇게 testcontroller를 해서 실행해도 마찬가지로 404가 에러가 뜹니다 어떻게 해야 되나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타임리프html
<li>${user.username} = <span th:text="${user.username}"></span></li>제가 html에서 태그를 잘 알지 못해서 어느정도 영역까지 html을 알아야 하는지 감이 안잡혀서요예를 들어 현재 예시에서 해당지역에 th:text로 타임리프를 사용하는것은 알겠지만 span태그와 같은것을 사용해야 한다는것 또한 알아야 하나요?? 아니면 프론트 분들이 span 태그를 사용해야 한다는것을 남겨주시는 건가요??p태그, a태그, tr태그.. 등등 다양하게 변수를 감싸서 사용하는 것 같아서 알아야하는 부분인지 궁금합니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
bindingResult 질문입니다
MVC2 강의를 듣고 복습하는 겸 직접 상품관리 페이지를 만들어보고 있습니다.validation 부분에서 상품 추가까지는 잘 작동하게 되었는데, 수정 부분에서 문제가 생겼습니다.어느 부분이 문제인지 아무리 찾아봐도 모르겠어서 질문드립니다.@Data public class ItemUpdateForm { @NotNull private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer price; private Integer quantity; public ItemUpdateForm(Long id, String itemName, Integer price, Integer quantity) { this.id = id; this.itemName = itemName; this.price = price; this.quantity = quantity; } }@PostMapping("/edit/{itemId}") public String editItem(@PathVariable Long itemId, @Validated @ModelAttribute("item") ItemUpdateForm form, BindingResult bindingResult) { log.info("*** edit post 요청 ***"); log.info("itemUpdateForm: {}", form); if (bindingResult.hasErrors()) { log.info("bindingResult= {}", bindingResult); return "item/edit"; } itemService.updateItem(itemId, form); return "redirect:/item/detail/{itemId}"; }<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .field-error { border-color: red; color: red; } </style> </head> <body> <div> <div th:replace="fragment/bodyHeader :: bodyHeader" /> <div> <h2>상품 수정</h2> </div> <form method="post" th:object="${item}" th:action> <div> <label>ID</label> <input type="text" th:field="*{id}" readonly> </div> <div> <label>상품명</label> <input type="text" th:field="*{itemName}" th:errorclass="field-error" placeholder="상품명을 입력하세요."> <div class="field-error" th:errors="*{itemName}"> 상품명 오류 </div> </div> <div> <label>가격</label> <input type="text" th:field="*{price}" th:errorclass="field-error" placeholder="가격을 입력하세요."> <div class="field-error" th:errors="*{price}"> 가격 오류 </div> </div> <div> <label>수량</label> <input type="text" th:field="*{quantity}" th:errorclass="field-error" placeholder="수량을 입력하세요."> <div class="field-error" th:errors="*{quantity}"> 수량 오류 </div> </div> <button type="submit">저장</button> </form> </div> </body> </html>상품 수정 페이지에서 다른 경우에는 잘 작동하는데, typeMismatch가 발생한 경우에는 bindingResult에 다른 에러는 담기지 않고 typeMismatch 에러만 담기고 있습니다.다음은 에러 코드입니다.2024-08-25T17:50:41.455+09:00 INFO 15096 --- [nio-8080-exec-3] community.demo.web.ItemController : *** edit post 요청 ***2024-08-25T17:50:41.455+09:00 INFO 15096 --- [nio-8080-exec-3] community.demo.web.ItemController : itemUpdateForm: ItemUpdateForm(id=1, itemName=, price=10, quantity=null)2024-08-25T17:50:41.455+09:00 INFO 15096 --- [nio-8080-exec-3] community.demo.web.ItemController : bindingResult= org.springframework.validation.BeanPropertyBindingResult: 1 errorsField error in object 'item' on field 'quantity': rejected value [100a]; codes [typeMismatch.item.quantity,typeMismatch.quantity,typeMismatch.java.lang.Integer,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [item.quantity,quantity]; arguments []; default message [quantity]]; default message [Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; For input string: "100a"]2024-08-25T17:50:41.456+09:00 WARN 15096 --- [nio-8080-exec-3] actStandardFragmentInsertionTagProcessor : [THYMELEAF][http-nio-8080-exec-3][item/edit] Deprecated unwrapped fragment expression "fragment/bodyHeader :: bodyHeader" found in template item/edit, line 15, col 10. Please use the complete syntax of fragment expressions instead ("~{fragment/bodyHeader :: bodyHeader}"). The old, unwrapped syntax for fragment expressions will be removed in future versions of Thymeleaf. 다음은 코드파일입니다.https://drive.google.com/file/d/1aDFEYzno4e6slRN8K2Tm5EFEYUb5WDJP/view?usp=sharing