월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@ResponseBody 어노테이션을 쓰는 메소드와 안 쓰는 메소드 차이가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 강의를 듣다가 헷갈리는 부분이 있어서 질문 드립니다. @ResponseBody를 메소드에 붙이고 안 붙히는 기준이 궁금합니다. 일단 제가 이해한 @ResponseBody는 뷰를 따로 사용하지 않고 HTTP 응답 본문에 메소드가 리턴한 정보(원시 데이터 또는 객체=json)를 입력해서 응답하는 것으로 이해했습니다. 근데 아래 사진의 빨간 밑줄 친 메서드들을 보면 뷰의 논리적 이름이 아닌 ResponseEntity 객체를 리턴하는 것으로 보여지고 객체를 리턴하면 HTTP 응답 본문에 입력하려면 @ResponseBody 어노테이션이 필요한 것이 아닌가 궁금합니다. 그런데 ResponseEntity의 코드를 보니까 HttpEntity를 상속 받던데 ResponseEntity가 HTTP 응답 그 자체라서 @ResponseBody를 사용하지 않는 것인가요?답변 주시면 정말 감사하겠습니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
webapp 관련 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이전 강의에서도 webapp에 넣어도 인식을 못해서 질문게시판을 봐도 해결이 안되서 static에 index.html을 넣어서 진행했는데 요번에 new-form.jsp(강의 3분 부분) 또한 static에 넣으면 되겠지 하고 했는데 안되서 webapp을 따로 만들어봐도 안되서 질문드립니다.https://drive.google.com/file/d/1vj5qb3pyqOGxxT2YTs2VrKI397SIARdv/view?usp=sharing에러코드Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Sat Dec 30 17:50:52 KST 2023There was an unexpected error (type=Not Found, status=404).------------------------------------------------------
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
html 한글 깨지는 현상
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]html 파일 복사붙여 넣기 하시는거 따라했는데제 화면에는 한글이 깨져서 나옵니다.(한글 대신 네모박스)어떻게하면 해결 할 수 있을지 도와주시면 감사하겠습니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Thymeleaf가 정확히 언제 쓰이는건가요?
타임리프가 server-side 라는건 알겠는데 정확히 언제쓰이는지 구글링해도 정확하게 모르겠어요. ViewResolver가 Thymeleaf를 이용해서 넣을 데이터 다 템플릿에 넣고 완전 더 이상 건들게 없는 view를 DispatcherServlet한테 넘기는건가요?아니면 ViewResolver한테 view template을 받고 DispatcherServlet이 Thymeleaf를 이용해서 데이터를 넣어서 완벽한 view만들고 client한테 전송하는건가요? Server 쪽에서 정확하게 어디서 쓰이는지 궁금하네여
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
frontControllerServletV5 클래스의 service 함수 호출 횟수와 시점, handler 가 null인 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요! 항상 양질의 강의를 위해 힘써주셔서 감사드립니다! 유연한 컨트롤러 v5를 공부하던 중 궁금한 점이 생겨서 질문 올렸습니다. 아래 제 코드에서는 현제 viewResolver 함수에서 경로가 "/WEB-INF/...." 가 아닌 "WEB-INF/..." 으로 되어 있어서 해당 코드를 수정하지 않으면 404 에러가 발생하는 상황입니다. 처음에는 어느 곳이 틀렸는지 찾을 수가 없어서 틀린 곳을 찾기 위해 디버깅 하던 중, handler가 null인지 검사하는 부분에서 handler가 null인 것을 확인했습니다. 저는 viewResolver가 호출 되기 이전에는 정상적으로 handler를 찾는 작업이 수행되어 handler가 null일 수가 없다고 생각했는데 실제로 확인해보니 제 예상과 달라 잘 이해가 되지 않았습니다. 또한, mapping된 url을 한번만 요청했는데도 service 함수 내의 첫번째 줄에서 println 함수를 호출했을 때 해당 문장이 2번 출력되는 것을 확인했는데 왜 이런 결과가 나왔는지도 궁금합니다.package hello.servlet.web.frontcontroller.v5;import hello.servlet.web.frontcontroller.ModelView;import hello.servlet.web.frontcontroller.MyView;import hello.servlet.web.frontcontroller.v3.controller.MemberFormControllerV3;import hello.servlet.web.frontcontroller.v3.controller.MemberListControllerV3;import hello.servlet.web.frontcontroller.v3.controller.MemberSaveControllerV3;import hello.servlet.web.frontcontroller.v4.controller.MemberFormControllerV4;import hello.servlet.web.frontcontroller.v4.controller.MemberListControllerV4;import hello.servlet.web.frontcontroller.v4.controller.MemberSaveControllerV4;import hello.servlet.web.frontcontroller.v5.adapter.ControllerV3HandlerAdapter;import hello.servlet.web.frontcontroller.v5.adapter.ControllerV4HandlerAdapter;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;@WebServlet(name = "frontControllerServletV5", urlPatterns = "/front-controller/v5/*")public class FrontControllerServletV5 extends HttpServlet {// private Map<String, ControllerV4> controllerV4Map = new HashMap<>();private final Map<String, Object> handlerMappingMap = new HashMap<>();private final List<MyHandlerAdapter> handlerAdapter = new ArrayList<>();public FrontControllerServletV5() {initHandlerMappingMap();initHandlerAdapters();}private void initHandlerMappingMap() {handlerMappingMap.put("/front-controller/v5/v3/members/new-form", new MemberFormControllerV3());handlerMappingMap.put("/front-controller/v5/v3/members/save", new MemberSaveControllerV3());handlerMappingMap.put("/front-controller/v5/v3/members", new MemberListControllerV3());//v4 추가handlerMappingMap.put("/front-controller/v5/v4/members/new-form", new MemberFormControllerV4());handlerMappingMap.put("/front-controller/v5/v4/members/save", new MemberSaveControllerV4());handlerMappingMap.put("/front-controller/v5/v4/members", new MemberListControllerV4());}private void initHandlerAdapters() {handlerAdapter.add(new ControllerV3HandlerAdapter());handlerAdapter.add(new ControllerV4HandlerAdapter());}@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("here");Object handler = getHandler(request);if (handler == null) {System.out.println("is null");response.setStatus(HttpServletResponse.SC_NOT_FOUND);return;}MyHandlerAdapter adapter = getHandlerAdapter(handler);ModelView mv = adapter.handle(request, response, handler);String viewName = mv.getViewName(); //논리이름 new-formMyView view = viewResolver(viewName);view.render(mv.getModel(), request, response);}private Object getHandler(HttpServletRequest request) {String requestURI = request.getRequestURI();return handlerMappingMap.get(requestURI);}private MyHandlerAdapter getHandlerAdapter(Object handler) {//handlerAdapter.iter -> for문 생성for (MyHandlerAdapter adapter : handlerAdapter) {if (adapter.supports(handler)) {return adapter;}}throw new IllegalArgumentException("handler adapter를 찾을 수 없습니다. handler=" + handler);}private static MyView viewResolver(String viewName) {MyView view = new MyView("WEB-INF/views/" + viewName + ".jsp");return view;}}
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ArgumentResolver에 대해서 질문있습니다.
HandlerMethodArgumentResolver에서 supportsParameter에 지원하는것이 기본 스프링이 지원하는 Parameter말고도 ex)이런식으로 적으면 supportsParameter부분에 Member에 대한 객체가 등록이 된다는 말씀이신가요?그리고 해당 부분을 지원하면 resolveArgument를 통해서 객체를 생성한다라고 이해하면될까요? @GetMapping("/members") public String answer(Member meber){ return "hello"; }
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Component로 핸들러 매핑에 핸들을 등록하는 과정에 대한 궁금점.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 학습을 하다가 조금 궁금한 점이 생겨서 질문드립니다. 제가 궁금한 점은 이전에 MVC를 사용하지 않은 방식에서는 직접 Map으로 핸들러 이름과 핸들을 핸들러 맵에 등록했는데 MVC를 사용하는 방식에서는 @Component("/springmvc/request-handler")가 어노테이션 안에 있는 문자열이 key가 되고 핸들 객체가 value로 핸들 맵에 등록되는 것인가요? 답변 주시면 감사하겠습니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
오류 문제...
그 전까지는 잘 되었는데 강의 교재에 있는 메뉴얼대로 dependencies를 수정했더니 자꾸 이런 에러가 납니다....계속 해결 방법을 찾고 있는데 잘 모르겠습니다... 도와주세요
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp파일 첫 줄 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]jsp파일을 만들고 첫번째 줄에서 오류가 뜨고 있습니다.The default superclass, "javax.servlet.http.HttpServlet", according to the project's Dynamic WebModule facet version (2.4), was not found on the Java Build Path.이런 오류가 뜨는데 구글링을 해보니 톰캣 버전 문제인거 같다~ 이렇게 이야기 하는데 톰캣도 제 눈에서는 보이지가 않네요,,
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
타임리프 리졸브가 안됩니다 ㅜㅜ
타임리프 코드에 오류는 전혀없고 복사 붙여넣기 했는데도basic/items 페이지에 저희가 등록한 상품이 보이지 않습니다. 구글 드라이브 링크 : https://drive.google.com/file/d/1teL4AlmDdsDJD_S7BFYxiw7l6N-2Q3zE/view 전에 저와 같은 문제가 있으신 분을 봤는데 해결이 정확히 안난것같아서 다시한번 여쭙니다 !!😔 봐주시면 감사하겠습니다 ㅜㅜㅜ 참고로 무료버전입니다!
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@ModelAttribute와 생성자
안녕하세요.@ModelAttribute 바인딩에 대한 질문 드립니다.바인딩 방식으로 제가 생각한 것은필드를 인자로 받는 생성자가 있다면 해당 생성자로 값을 주입한다.없다면 기본 생성자와 Setter를 이용해 값을 할당한다.이렇게 생각했습니다. @Getter @Setter public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item(String itemName, Integer price, Integer quantity) { this.itemName = itemName; this.price = price; this.quantity = quantity; } }이렇게 해놓은 상태에서 Controller addItemV2 메소드를 실행할 경우,Cannot resolve parameter names for constructor public hello.itemservice.domain.item.Item(java.lang.String,java.lang.Integer,java.lang.Integer)위와 같은 오류가 발생합니다. 기본 생성자를 추가했을 경우에는 정상 작동하구요.1번의 방식으로 실행된다면 오류없이 실행되어야 한다고 생각했는데 바인딩 방식을 잘 못 이해하고 있는 것인지 궁금합니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
톰캣의 webapp 인식에 대한 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 강의를 듣다가 문제가 발생하여 질문 남깁니다.먼저 발생한 문제점은 어느 순간부터 톰캣이 localhost:8080을 인식하지 못하는 것 같습니다. 코드를 실행하면 톰캣이 8080에서 start했다는 로그는 찍히는데 url 창에 localhost:8080을 입력하면 톰캣의 루트 디렉토리(webapp)에 있는 webapp.index.html을 인식하지 못하는 것 같습니다. 그런데 html을 브라우저로 여는 것을 지원해주는 것 같길래 열어보니(첫 번째 사진에 화살표로 강조된 부분) 두 번째 사진과 같이 localhost:8080이 아닌 "http://localhost:63342/spring_MVC/servlet.main/webapp/index.html?_ijt=22fu4h3punn2kubkafeq5afd18&_ij_reload=RELOAD_ON_SAVE" 로 찍히네요 혹시 이러한 상황에 대해서 조언을 얻을 수 있을까 해서 글을 남깁니다 답변주시면 감사하겠습니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
톰캣이 웰컴 페이지를 찾는 과정이 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 학습하다가 궁금한 점이 생겨 질문 글을 남깁니다.url 창에 localhost:8080을 입력하면 웰컴 페이지(index.html)가 이전에 는 잘 떳는데 웰컴페이지를 조금 항목이 많은 html 페이지로 바꾸고 나니까 whitelabel 에러가 뜨더군요. 한참 여기저기 뒤져보다가 어떤 글에서 index.html은 main.resources.static 디렉토리 경로에 존재해야 한다고 하더라고요? 그래서 index.html을 해당 디렉토리에 두니까 다시 잘 도되더군요 근데 강의를 들었을 때는 main.webapp에 index.html에 둔 상태로 코딩을 했었을 때도 문제 없이 잘 되는 거 같은데 제가 강의를 들으면서 놓친 부분이 있는지 모르겠습니다. 왜 톰캣이 main.webapp에 존재하는 index.html을 못 찾았을까요? 그리고 왜 main.resources.static에 index.html을 추가로 만드니까 잘 찾아낼까요? 원리가 궁금합니다. 바쁘신 와중에 답변 주시면 정말 감사하겠습니다!
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
이번 수업과는 관련이 있는진 모르겠지만 질문있습니다.
Model model 파라미터를 넘기면서model.addAttribute() 메서드의 동작원리에 대해 갑자기 궁금증이 생겼는데, 현재 로직이 /basic/items 으로 웹페이지가 넘어가면 items 메서드가 호출되면서 model.addAttribute("items",item); 메서드를 통해 모델에 items라는 이름에 items 객체가 저장이 되잖아요 새로운 아이템을 등록한 뒤에, 다시 /basic/items 페이지로 넘어가게 된다면 다시 items 메서드가 호출될텐데 이때 다시 로직이 돌면서 model.addAttribute("items", item); 메서드가 호출이 될텐데, 이럴때에는 items 이름에 정보를 덮어씌우는 방식으로 모델에 넘어가는건가요? 아니면 items객체에 수정된 부분만 고쳐서 모델에 넘어가는건가요??
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
localhost:8080 했을 때 창이 안뜨고 다운로드가 이뤄져요
강사님이 알려주신대로 dependencies 수정했어요. 어제 할때까지만 해도 잘 됐는데 오늘 갑자기< localhost:8080/hello?username>를 입력하니 hello이름의 파일이 계속 다운로드 되고 창이 뜨지 않아요. hello 파일을 열면 제대로 이름이 뜨긴 합니다.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
RequestMappingHandlerAdapter 궁금증이 있습니다.
@RequestMapping("/springmvc/v2/members/new-form") public ModelAndView newForm() { return new ModelAndView("new-form"); } @RequestMapping("/springmvc/v2/members/save") public ModelAndView save(HttpServletRequest request, HttpServletResponse response) { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); Member member = new Member(username, age); memberRepository.save(member); ModelAndView mv = new ModelAndView("save-result"); mv.addObject("member", member); return mv; } 이 코드처럼 RequestMapping어노테이션이 붙은 메서드는 매개변수가 다를수도있는데RequestMappingHandlerAdapter가 알아서 잘 찾아서 handle 메서드에서 내부적으로 알아서 잘 굴러가게 구현이 되어있는건가요?몇가지 정해진 틀이있는건지 궁금합니다. 제가 임으로 int 나 String 같은 매개변수 넣어볼때는 안되더라구요
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
수강하고 만들어 봤는데, DB에 데이터가 안 담길 때
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]https://drive.google.com/file/d/1Z_rdsH2x1n9SW7aaFnK1holSxUclj0rk/view?usp=sharing제 파일 압축한 겁니다!localhost:8080 들어가면 회원가입 만들었습니다.테이블은 jpa로 생성이 잘 됐는데, 회원가입시 데이터가 DB로 안 들어갑니다. 테이블은 잘 만들어진 걸 보니 mysql과 스프링은 잘 연동이 된 거 같은데이 때 어떤걸 고려해야하나요 ??
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
핸들러 매핑정보 조회 전 "스프링 빈" 컨트롤러(핸들러)조회
(스프링부트 3.0 이상인 상태에서)@Controller 에노테이션을 붙이면 (스프링부트 서버 가동시!) 스프링컨테이너에 싱글톤빈으로 미리 등록이 되고 클라이언트로부터 예) @RequestMapping("get-form") 의 요청이 들어온다면1.디스패처 서블릿은 모든 요청을 받을 수 있으므로 요청을 받는다.디스패처서블릿은 @RequestMapping("~~")으로 (스프링 컨테이너에서 스프링빈으로 등록된 컨트롤러중) 에서 url 정보와 일치하는 컨트롤러의 메소드 정보를 조회한다.디스패처 서블릿은 조회한 메소드정보를 호출할수 있는 RequestMappingHandlerAdapter 을 조회한다. 2번에서 핸들러 매핑을 통해 조회한 메소드정보를 RequestMappingHandlerAdapter 을 호출하면서 파라미터로 넘겨주어 핸들러 메소드가 실행하게 한다.궁금한점은,등록이 되어있다면 초반에 매핑정보를 조회할때 스프링에 이미 등록되어있는 핸들러 목록(아래 캡처본)에서1.BeanNameUrlHandkerMapping : "빈 이름으로 컨트롤러 조회" 를 먼저 거친 후 0=RequestMappingHandlerMapping("") 으로 1번으로 필터링이 된 컨트롤러안의 메소드가 실행되는것일까요?초반에 스프링빈으로 등록된 컨트롤러를 먼저 찾아야 하니까 0번도 포함이라고 생각했습니다.!!
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@Controller 와 @ requestMapping //스프링 빈 등록 컨트롤러
(스프링부트 3.0 이상인 상태에서)@Controller 에노테이션을 붙이면 (스프링부트 서버 가동시!) 스프링컨테이너에 싱글톤빈으로 미리 등록이 되고 클라이언트로부터 예) @RequestMapping("get-form") 의 요청이 들어온다면1.디스패처 서블릿은 모든 요청을 받을 수 있으므로 요청을 받는다.디스패처서블릿은 @RequestMapping("~~")으로 (스프링 컨테이너에서 스프링빈으로 등록된 컨트롤러중) 에서 url 정보와 일치하는 컨트롤러의 메소드 정보를 조회한다.디스패처 서블릿은 조회한 메소드정보를 호출할수 있는 RequestMappingHandlerAdapter 을 조회한다. 2번에서 핸들러 매핑을 통해 조회한 메소드정보를 RequestMappingHandlerAdapter 을 호출하면서 파라미터로 넘겨주어 핸들러 메소드가 실행하게 한다.여기서 궁금한점은 핸들러 매핑정보를 확인할때 일단 컨트롤러가 스프링 빈(싱글톤 빈)으로 등록되어있어야 한다고 이해한 상태입니다.등록이 되어있다면 초반에 매핑정보를 조회할때 스프링에 이미 등록되어있는 핸들러 목록(아래 캡처본)에서1.BeanNameUrlHandkerMapping : "빈 이름으로 컨트롤러 조회" 를 먼저 거친 후 0=RequestMappingHandlerMapping("") 으로 1번으로 필터링이 된 컨트롤러안의 메소드가 실행되는것일까요?1~5번 각각 답변 주시면 제 궁금중이 시원하게 풀릴것같습니다. 감사합니다. 초반에 스프링빈으로 등록된 컨트롤러를 먼저 찾아야 하니까 0번도 포함이라고 생각했습니다.!!
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@RequestMapping에 대해서 질문이있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]Controller 인터페이스 HttpRequestHandler 인터페이스를 상속받은클래스를 OverRide한 메소드를 사용하는경우에는 해당 클래스의 객체 단위로 Mapping이 등록되는것으로 아는데 @RequestMapping를 사용하면 기존과는 다르게 HandlerMapping부분에는 메소드 단위로 Mapping에 등록이 되는건가요?