묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
인텔리제이가 jsp를 인식 못하는 거 같습니다..
url로 들어가보면 jsp가 잘 뜨긴하는데, ide에서는 인식이 안되는지.. 자동 import도 안되고.. 아래 사진과 같은 상황입니다 ..
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
AOP 적용 후 프록시
안녕하세요 AOP를 적용하면 스프링 컨테이너가 진짜 빈 앞에 가짜 빈을 세워놓는다고 하셨고 실제로도 콘솔에 찍어서 확인을 했는데요, AOP 관련 코드를 싹 다 지우고 AOP를 아예 안 써도 아래와 같이 hello.hellospring.service.MemberService 가 아닌 MemberService$$EnhancerBySpringCGLIB$$d7471118 이라고 뜹니다. 왜 그런 것인가요? AOP 적용 여부와 상관없이 빈이면 무조건 그 앞에 가짜 빈을 만드는 것인가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JdbcTemplate 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]JdbcTemplate 강의대로 코드 작성했는데 MemberServiceIntegrationTest를 돌려보니 중복_회원_예외() 메소드랑 회원가입() 두 메소드 다 에러가 뜹니다. 두 에러 내용은 <Data Conversion error converting "spring"; SQL statement>로 동일합니다. 구글링 해봤는데도 해결방법을 찾을 수 없어 질문 드립니다 ㅠㅠ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 웹 기능 - 등록 강의 내용 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] 안녕하세요. 본 강의를 통해 스프링 공부를 시작한 학생입니다. 강의를 듣다가 궁금한 점이 생겨 질문 드립니다. domain의 Member 클래스에도 Getter, Setter가 있고, controller의 MemberForm 클래스에도 Getter, Setter가 있는데 MemberController의 create 함수에서 member.setName은 있고 form.setName은 없는 이유가 궁금합니다. createMemberForm.html의 <form action="/members/new/ method="post">를 통해 사용자가 입력한 "spring"이라는 이름이 value값으로 넘어가는 것, 그리고 @PostMapping이 있는 create 함수로 넘어가는 것까진 이해했는데 왜 이 함수에서 MemberForm의 set 함수 코드는 없는 것인지 궁금합니다. 사용자가 이름을 입력했을 때, 스프링이 자동으로 MemberForm의 name 값을 입력한 이름으로 설정해준 건가요? 답변 미리 감사합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
file.dir 경로 질문입니다 ㅠㅠ
현재 경로 설정은 이렇게 되어 있습니다. 위와 같은 에러가 나오며 파일 저장이 안됩니다 ㅠ java.io.IOException: java.io.FileNotFoundException: C:\Users\hdhwin\AppData\Local\Temp\tomcat.8080.1372549510501022096\work\Tomcat\localhost\ROOT\Users\hdhwin\study\file\pngegg (4).png (지정된 경로를 찾을 수 없습니다) at org.apache.catalina.core.ApplicationPart.write(ApplicationPart.java:122) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at hello.upload.controller.ServletUploadControllerV2.saveFileV1(ServletUploadControllerV2.java:64) ~[main/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) ~[spring-web-5.3.8.jar:5.3.8] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) ~[spring-web-5.3.8.jar:5.3.8] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1063) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.8.jar:5.3.8] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.8.jar:5.3.8] at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) ~[tomcat-embed-core-9.0.46.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.8.jar:5.3.8] at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.46.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.46.jar:9.0.46] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.8.jar:5.3.8] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar:5.3.8] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.8.jar:5.3.8] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar:5.3.8] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.8.jar:5.3.8] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar:5.3.8] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na] Caused by: java.io.FileNotFoundException: C:\Users\hdhwin\AppData\Local\Temp\tomcat.8080.1372549510501022096\work\Tomcat\localhost\ROOT\Users\hdhwin\study\file\pngegg (4).png (지정된 경로를 찾을 수 없습니다) at java.base/java.io.FileOutputStream.open0(Native Method) ~[na:na] at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298) ~[na:na] at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237) ~[na:na] at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:187) ~[na:na] at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.write(DiskFileItem.java:406) ~[tomcat-embed-core-9.0.46.jar:9.0.46] at org.apache.catalina.core.ApplicationPart.write(ApplicationPart.java:120) ~[tomcat-embed-core-9.0.46.jar:9.0.46] ... 51 common frames omitted
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
aws ec2 배포 목표 토이 프로젝트 개발시 jar/war?
안녕하세요. mvc2편 끝나고 토이 프로젝트 진행하라고 추천하셔서 시작할려고 합니다. jar는 로컬 개발떄 쓰이는거고 war는 서버 배포시 쓰이는걸로 알고있습니다. aws ec2 배포 목표인 제 토이 프로젝트는 start.spring.io에서 뭘 선택해야 되나요? war선택하면 jar처럼 서버 배포전 로컬 개발을 원활하게 할수있나요? 인터넷에서는 확답이 없어서 여쭤봅니다. 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
[공유] 인텔리제이 유료버전 인데 타임리프 이동 또는 빨간줄 뜨시는분
인텔리제이 얼티메이트 버전인데 컨트롤러에서 타임리프 링크 안되는 현상 또는 타임리프 리소스에서 빨간불 뜨시는분들 ! 별짓 다해보았지만 Spring boot 버전문제로 보입니다. (강의소스 그대로 버전만 2.7.0 해보니 링크안되고 빨간불 동일하네요) 2022.06.11 기준 2.7.0 버전에서는 안되고, 2.6.8 버전에서는 잘동작합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
IntelliJ IDEA> Preferences
왼쪽 상단에 IntelliJ IDEA> Preferences 상기 항목이 안나와요? 어디서 찿을수 있을까요? 버전은 아래와 같습니다.IntelliJ IDEA 2022.1.2 (Community Edition)Build #IC-221.5787.30, built on June 1, 2022Runtime version: 11.0.15+10-b2043.56 amd64VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.Windows 10 10.0GC: G1 Young Generation, G1 Old GenerationMemory: 750MCores: 8Kotlin: 221-1.6.21-release-337-IJ5787.30
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
view 환결설정강의 addAttribute오류
계속 오류가 납니다 뎃글에 사진 첨부하겠습니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
No value present 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 회원가입() 실행시 db에 값은 들어가는데 콘솔에 java.util.NoSuchElementException: No value present 오류 뜨는데 왜 이런 건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
"/error-page/**" 자세한 설명...
excludePathPatterns("/error-page/**") 자세한 뜻을 잘 모르겠습니다.. 결국 /error-page/** 해주면 '제외하기 쉽게 되어 있기 때문에, 이러한 설정을 사용해서 오류 페이지 경로를 excludePathPatterns 를 사용해서 빼주면 된다.' 라고 알고 있습니다. 그리고 /error-page/** 작성하여 실행 시키면 REQUEST가 두번 출력되지 않는 다는 것과 postHandle() 메서드가 출력되지 않는 다는 것만 알고 있습니다. 반대로 /error-page/** 빼고 실행 한다면 REQUEST가 두번 출력되고, postHandle() 가 호출 된다는 것을 알고는 있는데,, 왜 그렇게 동작하는지 자세히 모르겠습니다. 뭔가,, 답만 알고 풀이는 모르고 있단 생각이 듭니다.. 둘다 똑같은거 같은데, 차이가 뭔지... 하는 마음입니다. 제가 이해하기론 /error-page/** 는 error-page 밑에 있는 모든 파일을 해당한다고 이해하고 있는데, 그렇다면 templates 밑에 있는 /error-page/404.html 와 /error-page/500.html 이 제외 되어 출력 되면 안되는 것이 아닌가 싶습니다. 그리고 둘다 컨트롤러를 통해 잘 동작하는거 같습니다.. 그리고, WAS까지 갔다 두번째 필터에서 제외 된다는 것이 /error-page/** 이렇게 설정하여, 어떻게 필터를 제외한다는 것인지도 모르겠습니다. /error-page/** 설정 함으로써 제외 된다.. 무슨 말인지 잘 모르겠습니다 ...
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
인텔리제이 타임리프 글자 색 설정 방법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] 인텔리제이 얼티메이트 버전 사용중입니다. 선생님 강의대로 진행중인데 타임리프 문법 작성시 글자 색이 바뀌지 않습니다. 전부 초록색으로 나오다보니 괄호 구분이 너무 힘드네요 혹시 설정할 수 있는 방법이 있을까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
assertThrows 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 59줄에 assertThrows에 오류가 나는거 일까요?ㅜㅜ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
WebConfig에서 Autowired로 myHandlerExceptinoResolver를 주입받을 경우
안녕하세요! resolver 등록관련해서 질문이 있습니다. WebConfig에서 ExceptionResolver를 등록할 때 new로 MyHandlerExceptionResolver를 직접 생성하지 않고, MyHandlerExceptionResolver에 @Component 어노테이션을 사용하고 WebConfig에서 @Autowired로 주입받아서 resolver 등록한 후 /api/member/ex 로 요청을 해봤는데요, 이 경우 resolver가 2회 호출되는 것으로 확인했습니다. 아무리 생각해봐도 이유를 잘 모르겠는데 혹시 어떤 이유로 2회 호출되는 것일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
단축키문의
안녕하세요 강사님! 동영상 43초에 memberService.findMembers()만 쳤을때, members라는 List<Member>타입의 객체 자동생성 단축키가 mac과 윈도우기준 각각 어떻게 되는지 알 수 있을가요? 이전 강의에 나온거 같은데 잘 안찾아져서 문의드려봅니다. 구글링해도 키워드가 안맞아서 그런지 잘안나오네요 ㅠㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인텔리제이말고 이클립스 사용시 반환형 단축키
안녕하세요 해당 수업을 인텔리제이가 아닌 이클립스를 사용해서 수강중입니다 List<UploadFile> uploadFiles =fileStore.storeFiles(imageFiles); 이런식으로 작성할 경우 =의 좌측 반환형을 단축키를 사용해서 반환하시던데 이클립스에서는 단축키가 없는건지 여쭤봅니다
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 관련 보안 문제 질문
초보적인 질문일 수 있지만 궁금한 부분이 있어 문의 드립니다. 강의 내용 중 " 세션과 관련된 쿠키( JSESSIONID)를 탈취 당했을 경우 오랜 시간이 지나도 해당 쿠키로 악의적인 요청을 할수있다. " 라는 내용이 있고, 세션 타임아웃 설정으로 방지하는 것으로 이해하였습니다. 그런데 탈취 당하여 악용하는 시점에, 타임아웃으로 설정한 30분이 지나지 않았다면 이 순간에는 악용이 가능하지 않나 생각이 들었습니다. 이 순간에는 막을 수 있는 방법이 따로 있는 것일까요 ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
response와 ModelAndView가 각각 별개로 WAS로 반환이 되는 거로 이해하는게 맞나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의 잘 듣고 있습니다! 궁금한 점이 있는데요. 예외가 발생할 경우에는 ExceptionResolver가 이 예외를 처리할 수 있는지 체크하고 sendError를 통해서 500에러가 아닌 400에러를 WAS로 보낸 다음에 ModelAndView를 WAS로 보낸다고 이해를 했습니다. 그러면 response랑 ModelAndView는 별개로 WAS로 응답이 되는 건가요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
혹시 강의에 올려주신 html 파일 관련해서
안녕하세요 강의를 거의 다 완강해가서 질문남기게 되었습니다 ! 스프링 MVC2편을 몇강 안남겨두었는데 아직도 여러가지 애노테이션 (@Autowired 랑 @Required ArgsConstructor) 등이 쓸 때마다 어떤 차이가 있는지 왜 사용하는지 등 머릿속에 개념이 희미해져서 부족한 내용들 강의 찾아보면서 DB랑 JPA 강의전에 스프링을 복습해보려고 하는데 데이터베이스를 사용하지 않으면서 스프링을 공부할만한 html 파일들이 없더라구요 그래서 김영한 선생님이 최종본으로 올려주신 파일들중 html만 베껴서 기록도 남길겸 깃헙에 공유하면서 저만의 소스로 페이지를 만들어봐도 되는지 여쭤보려고 질문 남기게 되었습니다 혹시 github에 김영한 선생님이 올려주신 html파일들만 제가 사용해서 스프링 공부를 복습해봐도 될까요 ??
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
html 대신 객체를 반환할 때 Dispatcher Servlet에서는 어떻게 처리가 되는걸까요??
안녕하세요, 강의를 보다가 이해가 안되는 부분이 있어서요. Spring MVC 구조에서 핸들러 어댑터는 Dispatcher Servlet한테 ModelAndView를 반환해주잖아요! 그러면 Dispatcher Servlet은 view Resolver를 사용해서 View로 만들어줘 HTML을 보내주고요. 그런데 @ResponseBody 등을 사용해 html대신 직접 객체를 반환해주는 경우에는 어떤 식으로 흐름이 진행되는지가 헷갈려서요, Http 메세지 컨버터에 보내주면 여기에서 응답 결과를 만드는 거 까지는 이해했는데, 그러면 핸들러 어댑터는 DispatcherServlet에 ModelAndView를 반환하지 않아도 되는건가요? 요약하면 HTML대신 객체를 반환하는 경우 Dispatcher Servlet에서 어떻게 처리가 일어나는지가 궁금합니다..!