MVC 예제4 - DTO 전송
DTO를 만들어두고나면 Form에서 입력한 데이터가 스프링에서 자동으로 DTO에 들어가게 된다.
단, DTO의 변수명과 Form안에 변수명이 일치해야만 매핑이 된다.
1. DTO클래스 생성(Model)
package com.exe.springmvc; public class PersonDTO { private String name; private String phone; private String email;
public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } |
2. 컨트롤러 작성
package com.exe.springmvc; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller("test.controller") public class TestController { @RequestMapping(value="/test/param.action", method = {RequestMethod.GET,RequestMethod.POST}) public String processPostRequest(PersonDTO dto, String name, HttpServletRequest request) { System.out.println("GET/POST방식 Request"); System.out.println(name); System.out.println(request.getParameter("email")); System.out.println(dto);//해쉬코드 출력 System.out.println("dto.getName() : "+ dto.getName()); System.out.println("dto.getEmail() : "+dto.getEmail()); System.out.println("dto.getPhone() : "+dto.getPhone()); return "paramResult"; } } |
3. 콘솔 출력 화면
한글은 인코딩이 필요하므로 web.xml 에 필터 추가
<!-- UTF-8 Encoding setting --> <filter> <filter-name>CharsetEncoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharsetEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
한글도 오류가 나지 않는 걸 확인
MVC 예제5 - ModelAndView
1. View - home.jsp 입력페이지
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!-- JSTL이 디폴트로 들어감 --> <%@ page session="false" pageEncoding="UTF-8"%> <html> <head> <title>Home</title> </head> <body> <h1> Hello world! </h1> <P> The time on the server is ${serverTime}. </P> <h3><a href="hello.action">Spring 환영 메세지</a></h3> <h3><a href="test/param.action?name=suzi&phone=010-1234-1234&email=suzi@naver.com"> 1. GET방식 테스트</a></h3> <h3>2. POST방식 테스트</h3> <form action="test/param.action" method="post"> 이름:<input type="text" name="name"/><br> 전화:<input type="text" name="phone"/><br> 메일:<input type="text" name="email"/><br> <input type="submit" value="전송"/><br> </form> <br> <h3><a href="test/mav.action?name=shin&phone=010-2222-2222&email=shin@naver.com"> 3. ModelAndView GET방식 테스트</a></h3> <h3>4. ModelAndView POST방식 테스트</h3> <form action="test/mav.action" method="post"> 이름:<input type="text" name="name"/><br> 전화:<input type="text" name="phone"/><br> 메일:<input type="text" name="email"/><br> <input type="submit" value="전송"/><br> </form> </body> </html> |
2. testController
package com.exe.springmvc; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; @Controller("test.controller") public class TestController { @RequestMapping(value="/test/param.action", method = {RequestMethod.GET,RequestMethod.POST}) public String processPostRequest(PersonDTO dto, String name, HttpServletRequest request) { System.out.println("GET/POST방식 Request"); System.out.println(name); System.out.println(request.getParameter("email")); System.out.println(dto);//해쉬코드 출력 System.out.println("dto.getName() : "+ dto.getName()); System.out.println("dto.getEmail() : "+dto.getEmail()); System.out.println("dto.getPhone() : "+dto.getPhone()); return "paramResult"; }
@RequestMapping(value="/test/mav.action", method= {RequestMethod.GET,RequestMethod.POST}) public ModelAndView mavRequest(PersonDTO dto) {
ModelAndView mav = new ModelAndView(); mav.setViewName("paramResult");// 뷰 /paramResult.jsp mav.addObject("dto",dto); // 모델. 전송되는 dto는 여러개가 될수있음 //하지만 매핑되는 뷰는 하나여야함 return mav; } } |
3. View - paramResult 출력페이지
<%@page import="com.exe.springmvc.PersonDTO"%> <%@ page contentType="text/html; charset=UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath();
String name = request.getParameter("name"); String phone = request.getParameter("phone"); String email = request.getParameter("email"); PersonDTO dto = (PersonDTO)request.getAttribute("dto");//downcast %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>paramResult</title> </head> <body> <h2>paramResult</h2> 이름: <%=name %> 전화: <%=phone %> 이메일: <%=email %> <br><br> <h2>ModelAndView</h2> <%if(dto!=null){ %> 이름: <%=dto.getName() %> 전화: <%=dto.getPhone() %> 이메일: <%=dto.getEmail() %> <%}else{ %> 데이터 없음 <%} %> </body> </html> |
4. 출력 페이지
Request로도 넘어오고 ModelAndView를 통해서도 전달이 되기 때문에 개발 상황에 따라 맞춰서 작성하면 된다.
MVC 예제6 - 리다이렉트
1. View - home.jsp 입력페이지
<h3>5. <a href="test/redirect.action">리다이렉트 테스트</a></h3> |
2. testController
@RequestMapping(value="/test/redirect.action", method= {RequestMethod.GET,RequestMethod.POST}) public String mavRedirectRequest(PersonDTO dto) { //return "redirect:/";//form으로 다시 이동 return "redirect:/hello.action";//특정 페이지로 리다이렉트 } |
'Dev > Spring' 카테고리의 다른 글
Spring3.0 - ORM(MyBatis) (0) | 2019.04.17 |
---|---|
Spring3.0 - DAO(JDBC) (0) | 2019.04.16 |
Spring3.0 MVC 예제(1) (0) | 2019.04.15 |
Spring3.0 - 제어의역전,의존성주입 복습 (0) | 2019.04.15 |
Spring 3.0 셋팅 (0) | 2019.04.15 |