묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
DispatcherServlet의 서블릿 등록 방법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]선생님께서 DispatcherServlet은 스프링 부트 실행 후 톰캣 서버가 띄워지면서 자동으로 DispatcherServlet이 서블릿으로 등록된다고 말씀해주셨는데, 자동으로 서블릿으로 등록하려면 @ServletComponentScan 어노테이션이 필요한 것 아닌가요? 그런데 스프링 부트 애플리케이션 처음 생성한 후 최상위 Application 클래스의 어노테이션은 @SpringBootApplication만 존재하고 @ServletComponentScan은 제가 임의로 만들어줘서 생성된 것인데 어떻게 스프링 부트의 톰캣 서버가 DispatcherServlet을 자동으로 서블릿으로 등록해주는지 궁금합니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
RequestParam과 PathVariable의 차이
안녕하세요 수업들으면서 RequestParam과 PathVariable의 차이가 궁금해서 질문남깁니다.두 어노테이션 모두 클라이언트에 보낸 값들을 서버부분에서 가지고오는데 두 어노테이션을 언제 어떻게 구분하는지 헷갈려서 질문드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 전체 구조에서 3번과 4번의 설명이 잘 이해가 가지 않습니다.
안녕하세요 강의 잘듣고 있습니다. 다름이 아니라 제가 강의를 듣고 따로 정리를 하다 강의 노트를 보고 이해가 잘 가지 않는 것이 있어서 이렇게 질문을 드립니다. Spring MVC구조에서 3. 핸들러 어댑터 실행: 핸들러 어댑터를 실행한다. 4. 핸들러 실행: 핸들러 어댑터가 실제 핸들러를 실행한다. 이렇게 되어 있는데 3번에서 "핸들러 어댑터가 실행된다는 말"은 사용자의 요청으로 임의의 핸들러가 실행될때 해당 핸들러가 implement한 인터페이스의 요구사항대로 셋팅해준다는 말이고 4번에서는 그렇게 셋팅된 핸들러의 로직을 수행한다는 말씀이신가요?? 혹시 제가 잘못이해한 것이 있으면 정정 부탁드립니다. 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ExceptionResolver와 BasicErrorController의 분기점을 모르겠습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 공통 상황 WAS -> Servlet -> Controller (예외 발생) @ExceptionHandler를 사용한 API 예외 처리 애플리케이션 BasicErrorController를 사용한 HTML 오류 페이지 처리 애플리케이션 질문 Q1. BasicErrorController와 ExceptionResolver 모두 적용된 프로그램 흐름이 궁금합니다. ExceptionResolver와 BasicErrorController의 분기점을 모르겠습니다. Q2. Accept: text/html HTTP 요청이 들어왔을 때, BasicErrorController는 내부 호출(WAS -> Servlet -> BasicErrorContoller)이 발생하는지, 아닌지 궁금합니다. Q3. Accept: text/html HTTP 요청이 들어왔을 때, @ResponseStatus 값에 관계없이 무조건 500 HTML 에러 페이지를 반환하고 있습니다. @ExceptionHandler와 BasicErrorContoller의 조합이 어떻게 가능한지 모르겠습니다. 강의 코드에서 MyHandlerExceptionResolver를 없앴습니다. 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
메소드 선언 시 BindingResult의 위치
강의에서 BindingResult를 사용할 때 객체 바로 뒤에 선언을 해야 한다고 하셨는데, 이게 꼭 전체 중 2번째가 아니어도 괜찮은가요? 예를 들면 public String addItem(Model model, @ModelAttribute Item item, BindingResult bindingResult) { // ... } 이러한 방식으로 선언이 가능한지 궁금합니다. 제가 알고 있기로는 매개변수의 순서가 다르면 메소드 오버로딩 때문에 원하는 메소드가 실행되지 않는 것으로 알고 있는데 다른 규칙이 더 적용되고 있는지 궁금합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
whitepage에러 질문드립니다
package mvcStructure.basic.request;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@Slf4j@Controllerpublic class RequestParamController { @RequestMapping("/request-param-v1") public void requestParamV1(HttpServletRequest request, HttpServletResponse response) throws IOException { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); response.getWriter().write("ok"); } @ResponseBody @RequestMapping("/request-param-v3") public String requestParamV3(@RequestParam String username, @RequestParam String age){ log.info("username = {}, age = {}", username, age); return "ok"; } //@RequestParam 생략하고 단순 타입이면 자동으로 RequestParam이라고 요청 파라미터라고 인식한다 @ResponseBody @RequestMapping("/request-param-v4") public String requestParamV34( String username, String age){ log.info("username = {}, age = {}", username, age); return "ok"; } @ResponseBody @RequestMapping("/request-param-Required") public String requestParamRequired( @RequestParam(required = true) String username, @RequestParam(required = false) Integer age){ log.info("username = {}, age = {}", username, age); return "ok"; }}현재소스이고 경로는 아래와 같이 했습닌다 ===========================================properties속성은 아래와 같습니다 ============================ #mvcStructure.~~ 패키지와 그 하위 로그레벨 설정logging.level.root=infologging.level.hello.springmvc=debug==============================현재 접속하면 whitepage가 나는건 왜그런가요
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
핸들러 조회와 핸들러 어댑터 조회에 대해 질문올립니다.
강사님 안녕하세요, 복습을 하다 제 이해가 맞는지 확인하고 싶어서 질문 올립니다 FrontControllerServletV5나, DispatcherServlet.doDispatch()를 보면getHandler(request)에는 예외처리를 하지만, getHandlerAdapter(request, reponse, handler)는 예외처리를 하지 않습니다. 1. 이건 개발자에게 Handler 추가했으면 어댑터도 만들라고(없는 경우, 오류를 내서) 강제하는 것 처럼 느껴집니다.. 이게 맞는건가요?2. 그렇다면 개발을 할 때, 각각의 경우에 예외 처리를 할 지 안 할지에 대한 좋은 판단 기준을 미리 배울 수 있는 방법(책, 강사님의 강의 등..)이 있을까요? 항상 고맙습니다.좋은 하루 되세요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
상품 POST로 등록후 상세화면.
항상 잘듣고있습니다.!! 수업듣기전에 혼자 해볼땐 상품을 POST로 등록하면 상세화면으로 내부호출이된다는 표를보고 /basic/items/{itemId} 이런식으로 redirect가 되어야된다 생각했습니다. 즉, URL과 현재 보여지고있는 화면이 일치돼야한다고 생각해서요. 즉, 상품 상세등록화면이 렌더되어있으니 URL도 /basic/items/{itemId}이어야한다고 생각했습니다. 그러나 수업을 들어보니 상품을 등록하고 상품이 잘등록되었나 확인할 필요도 있기 때문에 굳이 URL과 상품등록후 상세화면을 안맞춰도 된다는 생각이 들었습니다. 이렇게 URL과 랜더되는 화면과의 관계는 미리 현업에서는 다 약속을 하고 하는건가요?? 궁금합니다. 아니면 추가로 . 추가가되었으니 확인하는 페이지라는걸 알려주기위해 URL을 /basic/items/added로 변경하려면 redirect를 통해서 구현하는방법뿐인지궁금합니다. 예를들면 리다이렉트를 거치지않고 컨트롤러에서 다른컨트롤러를 호출한다던지의 방법이 있나싶습니다.!! 읽어주셔서감사합니다.