본문 바로가기

Web App/Spring Web MVC11

Spring Web MVC - @ResponseBody, ResponseEntity Spring Web MVC - 핸들러 메소드 4 @RequestBody @RequestBody 는 핸들러의 아규먼트로 받아 올 수 있다. 요청 본문(body)에 들어있는 데이터를 HttpMessageConverter를 통해 변환한 객체로 받아올 수 있다. HttpMessageConverter : 스프링 MVC 설정 (WebMvcConfigurer) 에서 설정할 수 있다. 이 때 configureMessageConverters 를 오버라이딩하면 기본 메시지 컨버터를 대체하게 되어, 기본설정이 바뀔 수 있으므로 조심한다. 대신 extendMessageConverters 를 이용하면 원하는 메시지 컨버터를 추가할 수 있다. (객체를 XML으로 바꾼다든지) 기본 컨버터는 WebMvcConfigurationSup.. 2021. 2. 21.
Spring Web MVC - 파일업로드, 파일다운로드 Spring Web MVC - 파일업로드, 다운로드 파일 업로드 - MultipartFile MultipartFile 은 파일 업로드시 사용하는 메소드 아규먼트이다. MultipartResolver 라는 빈이 설정 되어 있어야 사용이 가능하다. 단, 스프링부트는 자동 설정이 되어있다. 이를 사용하면 POST 요청의 multipart/form-data 정보에 들어있는 파일을 참조할 수 있다. 간단한 파일업로드를 구현해보자. @Controller public class FileController { @GetMapping("/files") public String fileUploadForm(Model model) { return "files/index"; } @PostMapping("/files") publi.. 2021. 2. 21.
Spring Web MVC - Attributes, 멀티 폼 서브밋 Spring Web MVC 009 - 핸들러 메소드 3 SessionAttributes 모델 정보를 HTTP 세션에 저장해주는 어노테이션이다. 먼저 HttpSession 을 보자. 핸들러 메소드의 아규먼트로 받아와서 세션을 관리할 수 있게 도와주는 객체이다. 상대적으로 low 레벨 단위의 코딩을 할 수 있다. @GetMapping("/news/form") public String newsForm(Model model, HttpSession httpSession) { News news = new News(); news.setLimit(10); model.addAttribute("news", news); // 세션안에 news 라는 이름으로 객체를 넣어준다. httpSession.setAttribute("n.. 2021. 2. 21.
Spring Web MVC - ModelAttribute, 폼 서브밋 Spring Web MVC - 핸들러 메소드 2 @ModelAttribute @Controller public class NewsController { @PostMapping("/news") @ResponseBody public News news(@ModelAttribute News news) { return news; } } @Test public void postNews() throws Exception { mockMvc.perform(post("/news") .param("title", "blue") .param("limit", "10")) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("title").value("blue")) ;.. 2021. 2. 21.
Spring Web MVC - Handler 아규먼트 다루기 Spring Web MVC - 핸들러 메소드 핸들러 메소드에서 다양한 아규먼트를 사용할 수 있다. 핸들러 메소드 아규먼트 설명 WebRequest NativeWebRequest ServletRequest/Reponse HttpServletRequest/Reponse 요청 또는 응답 객체에 접근 가능한 API InputStream Reader OutputStream Writer 요청 본문을 읽어 오거나, 응답 본문을 쓸 때 사용할 수 있는 API PushBuilder Spring 5에 추가됨. HTTP/2에서 사용할 수 있다. 리소스 푸쉬에 사용된다. 일반적으로 일어나는 HTTP 요청 : 1 클라이언트가 뷰 요청 2 서버 응답 (이 때 뷰에 다른 리소스 자원이 있어서 불러오고 싶음) 3 클라이언트가 이미지.. 2021. 2. 17.
Spring Web MVC - RequestMapping Spring Web MVC - 요청 매핑 HTTP Method HTTP 메소드에는 GET, POST, PUT, PATCH, DELETE 등이 있다. 예제를 하나 만들어보자. 컨트롤러 @Controller public class BookController { @RequestMapping(value = "/bookstore") @ResponseBody public String bookStore() { return "Welcome book store"; } } 테스트 코드 @WebMvcTest class BookControllerTest { @Autowired MockMvc mockMvc; @Test public void bookStoreTest() throws Exception { mockMvc.perfor.. 2021. 2. 15.
Spring Web MVC - HTTP Message Converter Spring Web MVC - Message Converter HTTP 메시지 컨버터 요청 본문에서 메시지를 읽어들이거나 (@RequestBody), 응답 본문에 메시지를 작성할 때(@ResponseBody) 사용한다. 기본 HTTP 메시지 컨버터 바이트 배열 컨버터, 문자열 컨버터, Resource 컨버터 Form 컨버터(폼 데이터 to/from MultiValueMap) JAXB2 컨버터 (xml) Jackson2, Jackson, Gson 컨버터 (json) Atom 컨버터 - 아톰 피드 RSS 컨버터 - RSS 채널 테스트. String 타입으로 본문을 전달한 후, String 타입으로 본문 반환. @Test public void stringMessage() throws Exception { th.. 2021. 2. 13.
Spring Web MVC - 여러가지 설정 1 Spring Web MVC - 여러가지 설정 1 JSP 제약 사항 jar 프로젝트로는 만들 수 없다. war 로 만들어야 한다. java -jar 명령어로 실행은 할 수 있지만, 실행가능한 jar 파일은 지원하지 않는다. undertow 는 jboss에서 만든 서블릿 컨테이너인데, 여기서는 jsp 를 지원하지 않는다. whitelabel 에러 파이지를 error.jsp 로 오버라이딩 할 수 없다. JSP 실행 방법 1) java -jar $ java -jar /target/*.war 위 명령어로 war 파일을 실행시킬 수 있다. 2) SpringApplication.run 사용 IDE 에서 run 을 클릭해서 실행한다. 3) 서블릿 컨테이너(톰캣)에 WAR 배포하여 실행하기 WAR : Web Applic.. 2021. 2. 13.
Spring MVC 설정 Spring Web MVC - Spring MVC 설정 @EnableWebMvc 어노테이션 기반 스프링 MVC 를 사용할 때, 웹 MVC 에 필요한 설정을 편리하게 설정해준다. @Configuration 과 함께 자바 설정 클래스에 같이 붙이면 된다. Dispatcher 에 등록된 기본 인터페이스 외에 다양한 인터페이스가 추가된다. delegation(위임) 패턴으로 되어 있어서 확장성이 좋다. WebMvcConfigurer @EnableWebMvc 에서 제공하는 다양한 인터페이스를 커스터마이즈 할 때, WebMvcConfigurer 을 상속받아서, 메소드를 오버라이딩하면 편하다. 스프링부트 없이 스프링 웹 MVC 를 활용하는 방법 정리 web.xml 설정을 통해 servletContext, WebApp.. 2021. 2. 13.
Servlet이란 + Spring MVC 연동 Spring Web MVC - Servlet Servlet 서블릿(Servlet) 이란 웹 통신에서 요청과 응답을 처리하는 자바 객체이다. 자바 엔터프라이즈 에디션이 웹 애플리케이션 개발용 스펙과 API를 제공해준다. 요청 당 쓰레드가 생성되거나, 풀에서 가져와서 사용된다. 주요 클래스로 HttpServlet 이 있다. 서블릿 등장이전에는 CGI (Common Gateway Interface) 기술이 있었는데 이는 요청 당 프로세스를 생성하였다. 서블릿은 CGI 에 비해서 작동이 빠르고, 플랫폼에 독립적이며, 보안이 좋고, 이식성이 강하다. 서블릿 엔진 (=서블릿 컨테이너) Tomcat, Jetty, Undertow 같은 WAS(Web Applilcation Server)가 서블릿 엔진이다. 서블릿을 실.. 2021. 2. 13.