본문 바로가기

Spring 3/Form Processing

Spring Form Processing

스프링3 폼 처리 예 ( Spring 3 Form Processing )



스프링 프로젝트 설정은 우측 링크를 참조하세요 --> http://micropilot.tistory.com/category/Spring%203/STS


form.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>hello.jsp</title>

</head>

<body>

스프링 폼 처리 예

<p>

<form action="formProc.do" method="post">

번호 <input type="text" name="num" value="7369">

이름 <input type="text" name="name" value="SMITH">

<input type="submit" value="SEND">

</form>

</body>

</html>



MyController.java

package org.kdea.java;


import java.util.*;


import org.kdea.service.MyService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.*;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.*;


@Controller

public class MyController {


    @Autowired

    private MyService myservice; // Setter Injection

    @RequestMapping(value="/hello", method = RequestMethod.GET)

    public String home(Locale locale, Model model) {

        model.addAttribute("sampleData", myservice.getMsg());

        return "hello";

    }

    

    @RequestMapping(value="/formProc", method = RequestMethod.POST)

    public String formProc FormBean fb, Model model ) {

        /* 브라우저에서 전달된 파라미터는 자동으로 Model 오브젝트에 추가되고

    * Model에 추가된 데이터는 자동으로 request 객체에 저장되므로 뷰에서도 출력할 수 있다

    * 위의 FormBean은 브라우저 폼에서 전달된 파라미터를 자동으로 저장하고 또한 Model오브젝트에도

    * 자동으로 'formBean' 이라는 이름으로 저장되므로 뷰에서 ${formBean.num}으로 접근할 수도 있다

    * 그러므로 아래 라인처럼 명시적으로 fb를 Model에 저장하는 것은 2중으로 저장되는 셈이된다

    */

        model.addAttribute("fb", fb);

        return "result";

    }


    public MyService getMyservice() {

return myservice;

    }


    public void setMyservice(MyService myservice) {

this.myservice = myservice;

    }

}



Constructor Injection 사용 예

위의 코드에서는 Dependency Injection ( DI ) 을 사용할 때 Setter Injection 을 사용했지만 아래처럼 Constructor Injection 을 사용하면 좀더 간결해질 수 있다

@Controller

public class MyController {


private MyService myservice;

@Autowired

public MyController(MyService myservice){ // 콘트롤러의 생성자

this.myservice = myservice;

}

     ........

     .....

     Injection을 위한 Setter, Getter 메소드는 필요 없음

}



FormBean.java

package org.kdea.java;


public class FormBean {

private int num;

private String name;

public int getNum() {

return num;

}

public void setNum(int num) {

this.num = num;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}



result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>result.jsp</title>

</head>

<body>

Result<p>

번호=${fb.num }<br> <%-- 혹은 자동으로 저장된 ${ formBean.num } 을 사용할 수 있다 --%>

이름=${fb.name }

</body>

</html>