MVC
-
[Spring MVC] @RequestMapping 요청 매핑Spring/Spring MVC 2021. 5. 20. 18:43
컨트롤러의 메소드에 @ReqeustMapping 어노테이션을 추가하면 클라이언트의 요청을 수행할 수 있다 또한 추가적으로 @RequestMapping 어노테이션에 파라미터를 추가하면 요청을 선택적으로 수행할 수 있다 이번엔 요청 매핑에 관련된 설정 정보들을 알아 볼 것이다 @RestController 일반적인 @Controller가 반환하는 String값은 뷰로 인식되어 렌더링 과정을 거친다. 하지만 @RestController가 반환하는 String 값은 렌더링 과정 없이 HTTP Body에 그대로 들어간다. 어노테이션의 Rest는 Rest API의 Rest를 의미하며 Json을 return 할 수 있도록 설계된 것이다 @RequestMapping("/hello-basic", "hello-koji") ..
-
[Spring MVC] 어노테이션 기반의 스프링 MVC 컨트롤러Spring/Spring MVC 2021. 5. 19. 18:44
앞서 보았듯이 가장 가장 우선순위가 높은 핸들러 매핑과 핸들러 어댑터는 각각 RequestMappingHandlerMapping, RequestMappingHandlerAdapter 이다 이제 이 어노테이션 기반의 스프링 MVC 컨트롤러를 만들어 볼 것이다 1. 컨트롤러 작성 더보기 클래스 레벨에서 @Controller, @RequestMapping 어노테이션이 있다면 Spring은 해당 클래스를 핸들러로 인식하고 핸들러 리스트에 추가한다. @RequestMapping 어노테이션만 존재한다면 컴포넌트 스캔의 대상이 되지 않으므로 @Controller를 사용했다 2. 컨트롤러 통합 더보기 @RequestMapping 어노테이션은 메서드 단위로 동작하므로 각 컨트롤러들을 하나로 통합해 보았다 3. 편의성 수..
-
[Spring MVC] Spring MVC 구조의 이해Spring/Spring MVC 2021. 5. 19. 15:56
Spring MVC 전체 구조 이전 포스팅에서 직접 MVC 프레임워크를 만들어 보았다. Spring MVC 프레임워크와 직접 만든 프레임워크를 비교해보자 FrontController : DispatcherServlet ModelView : ModelAndView MyView : View Spring MVC 동작 과정 1. 핸들러 조회 더보기 스프링은 다음의 순서로 핸들러를 탐색하고 먼저 탐색된 핸들러를 사용한다 (정확히는 모든 핸들러를 찾은 뒤 다음의 순서로 정렬한 뒤 하나씩 검사하는 것이다) 1. RequestMappingHandlerMapping 탐색 Annotation 기반의 컨트롤러인 @RequestMapping 핸들러를 탐색한다 2. BeanNameHandlerMapping 탐색 스프링 빈의 이..
-
[Spring MVC] 서블릿, JSP로 웹 어플리케이션 설계하기Spring/Spring MVC 2021. 5. 14. 18:33
웹 어플리케이션 설계 회원 정보 이름: username 나이: age 기능 요구사항 회원 저장 회원 목록 조회 서블릿으로 웹 어플리케이션 설계하기 1. 멤버 생성 폼 2. 멤버 리스트 JSP로 웹 어플리케이션 설계하기 1. 멤버 생성 폼 2. 멤버 리스트 서블릿, JSP의 한계 서블릿의 사용 서블릿으로 개발할 때는 View 화면을 위한 HTML을 만드는 작업이 자바 코드에 섞여 지저분하고 복잡했다 이는 JSP로 넘어오면서 어느 정도 해결되었지만 아직 해결되지 않는 몇가지 고민이 남는다 JSP의 사용 JSP를 사용한 덕분에 View를 생성하는 작업을 깔끔하게 가져가고, 중간중간 동적으로 변경이 필요한 부분만 자바 코드를 적용했다 하지만 이렇게 해도 JSP의 책임이 너무 크다는 문제가 발생한다 위 예시를 보..
-
[Spring MVC] HTTP 응답 메시지 객체 - HttpServletResponseSpring/Spring MVC 2021. 5. 14. 14:47
HttpServletResponse란? 서블릿이 생성한 응답 객체, 웹 어플리케이션 서버는 이 객체의 정보를 바탕으로 HTTP 응답 메시지를 생성하여 웹 브라우저에 전달한다 HttpServletResponse 사용법 1. writer.println() 사용 - 단순 텍스트를 전달할 경우 setContentType("text/plain") - HTML 텍스트를 전달할 경우 setContentType("text/html") 2. objectMapper.writeValueAsString() 사용 - 자바 객체에서 JSON 텍스트로 변환한 뒤 response.getWriter().write() 메소드를 사용 HTTP 응답 데이터 예시 - 단순 텍스트, HTML 1. 응답 데이터 - 단순 텍스트 2. 응답 데이터..
-
[Spring MVC] HTTP 요청 메시지 객체 - HttpServletRequestSpring/Spring MVC 2021. 5. 13. 18:55
HttpServletRequest란? 서블릿은 HTTP 요청 메시지를 파싱하여 그 결과를 HttpServletRequest 객체에 저장한다 개발자는 이를 사용하여 HTTP 요청 메시지를 직접 파싱하지 않고 조회할 수 있다 HttpServletRequest 사용법 1. request.getParmeter() 메소드 사용 - HTTP GET, HTTP POST Form 방식일 때 사용할 수 있다 2. request.getInputStream() 메소드 사용 - 추가적으로 StreamUtils.copyToString() 메소드를 사용하면 메시지 바디를 String 형식으로 얻을 수 있다 - content-type: text/plain 또는 application/json 형식일 경우 사용할 수 있다 HTTP 요..
-
[Spring MVC] 웹 애플리케이션(WAS)의 동작 원리Spring/Spring MVC 2021. 5. 13. 16:11
1. 웹 서버, 웹 어플리케이션 서버 웹 서버 (Web Server) - HTTP 기반으로 동작 - 정적 HTML, CSS, JS, 이미지, 영상 등을 제공 - ex) NGINX, APACHE 웹 어플리케이션 서버 (Web Application Server) - HTTP 기반으로 동작 - 웹 서버의 기능을 확장 - 프로그램 코드를 실행해 애플리케이션 로직을 수행 - 서블릿, JSP, 스프링 MVC 등을 사용 - 동적 HTML, HTTP API(JSON) 등을 제공 - ex) Tomcat, Jetty, Undertow 웹 서버, 웹 어플리케이션 서버의 차이 - 웹 서버는 정적 리소스를 제공하는 데 특화, 웹 어플리케이션 서버는 동적 리소스를 제공하는 데 특화되어있다 - 일반적으로 서블릿 컨테이너 기능을 제..