Dev/Spring

Spring3.0 MVC 예제(2)

창문닦이 2019. 4. 16. 12:49

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