스프링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>