HTTP message body 데이터 조회 - text 요청 파라미터와 다르게, HTTP 메시지 바디를 통해 데이터가 직접 넘어오는 경우는 @RequestParam , @ModelAttribute 를 사용할 수 없다 1. InputStream HTTP 메시지 바디의 데이터를 InputStream 을 사용해서 직접 읽을 수 있다. @PostMapping("/request-body-string-v1") public void requestBodyString(HttpServletRequest request, HttpServletResponse response) throws IOException { ServletInputStream inputStream = request.getInputStream(); Stri..
Spring/Spring MVC
쿼리 파라미터, HTML From 1. request.getParameter() HttpServletRequest 의 request.getParameter() 를 사용하면 다음 두가지 요청 파라미터를 조회할 수 있다. GET, 쿼리 파라미터 전송 POST, HTML Form 전송 @RequestMapping("/request-param-v1") public void requestParamV1(HttpServletRequest request, HttpServletResponse response) throws IOException { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParamete..
요청 매핑 요청이 왔을 때 컨트롤러와 매핑해 주는 것 @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); /** * 기본 요청 * 둘다 허용 /hello-basic, /hello-basic/ * HTTP 메서드 모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE */ @RequestMapping("/hello-basic") public String helloBasic() { return "ok"; } } @RestController @RestController 는 반환 값으로 뷰를 찾는 것이 아니라, HTTP 메시지 바디에 바로 입력한다. @R..
컴포넌트 스캔과 의존관계 자동 주입 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다 이렇게 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기도 귀 찮고, 설정 정보도 커지고, 누락하는 문제도 발생한다 아래 코드처럼 컴포넌트 스캔을 사용하려면 먼저 @ComponentScan 을 설정 정보에 붙여주면 된다. @Configuration //@ComponentScan: 스프링 빈을 다 끌어다가 자동으로 스프링 빈으로 끌어올리는.. @ComponentScan( //스프링 빈 등록에서 제외할 것 excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuratio..
@Component //컴포넌트 스캔을 통해 스프링 빈으로 등록 @RequestMapping public class SpringMemberFormControllerV1 { @RequestMapping("/springmvc/v1/members/new-form") public ModelAndView process() { return new ModelAndView("new-form"); } } 컴포넌트 스캔 없이 스프링 빈으로 직접 등록해도 동작 가능하지만 컴포넌트 스캔을 주로 이용한다 데이터 저장 ModelAndView를 통해 Model 데이터를 추가하자 @Controller public class SpringMemberSaveControllerV1 { private MemberRepository membe..
직접 만든 MVC 프레임워크 구조 vs. SpringMVC 구조 Spring MVC 동작 순서 DispacherServlet.doDispatch() 코드를 분석하면 MVC 동작이 보인다. DispacherServlet을 서블릿으로 등록하고 모든 경로(urlPatterns="/")에 대해서 매핑된다. 핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다. 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다. 핸들러 어댑터 실행: 핸들러 어댑터를 실행한다. 핸들러 실행: 핸들러 어댑터가 핸들러를 실행한다. ModelAndView 반환: 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다. viewResolver 호출: 뷰 리졸..