커맨드 객체란?
- 클라이언트가 전달해 주는 파라미터 데이터를 주입 받기 위해 사용하는 객체
Request 객체를 통해 전달
- 커맨드 객체는 HttpServletRequest 객체에 자동으로 담기고 jsp로 전달된다.
- 이 때, HttpServletRequest 객체에 저장되는 이름은 클래스의 이름으로 결정
예제
1)index.jsp 생성하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action='test1' method='post'>
data1 : <input type='text' name='data1'/><br/>
data2 : <input type='text' name='data2'/><br/>
<button type='submit'>확인</button>
</form>
</body>
</html>
2) 커맨드 객체 생성하기
public class DataBean {
private String data1;
private String data2;
public String getData1() {
return data1;
}
public void setData1(String data1) {
this.data1 = data1;
}
public String getData2() {
return data2;
}
public void setData2(String data2) {
this.data2 = data2;
}
}
-커맨드 객체에 정의된 프로퍼티와 동일한 이름의 파라미터를 찾아 set매소드를 통해 자동으로 담아준다.
3) TestController 생성해서 컨트롤러로 전달되는지 확인
@Controller
public class TestController {
@PostMapping("/test1")
public String test1(DataBean bean) {
System.out.printf("data1 : %s\n", bean.getData1());
System.out.printf("data2 : %s\n", bean.getData2());
return "test1";
}
}
-파라미터를 담아 세팅 된 DataBean을 매개변수에 담아주고, 출력해보면 data1과 data2가 잘 넘어온 것을 확인 가능
-@ModelAttribute는 생략 가능! (@ModelAttribute DataBean bean)과 동일
-jsp로 전달 할 때 bean을 따로(직접) request에 담아 줄 필요가 없음. ModelAttribute를 통해 자동으로 request에 담아져
jsp에 전달됨
4) test1.jsp 생성해서 jsp로 전달되는지 확인
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>test1</h1>
<h3>data1 : ${requestScope.dataBean.data1 }</h3>
<h3>data2 : ${requestScope.dataBean.data2 }</h3>
</body>
</html>
-request에 담겨져 오기 때문에 requestScope를 사용 (requestScope)
-어떠한 이름으로 저장될 까? >> bean의 클래스 이름의 camelCase (.dataBean)
-.dataBean이 아닌 다른 이름을 쓰고 싶다면 어떻게 해야할까?
저장되는 이름 설정하기
- HttpServletRequest에 저장되는 이름을 클래스명과 다르게 지정하고 싶다면
- ModelAttribute 어노테이션에 지정하면 된다.
- 이 때는 @ModelAttribute 생략하면 안 됨!
예제
1) index.jsp 생성하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action='test2' method='post'>
data1 : <input type='text' name='data1'/><br/>
data2 : <input type='text' name='data2'/><br/>
<button type='submit'>확인</button>
</form>
</body>
</html>
2) TestController 생성하기
@Controller
public class TestController {
@PostMapping("/test2")
public String test2(@ModelAttribute("testData") DataBean bean) {
return "test2";
}
}
3. test2.jsp 생성해서 jsp로 전달되는지 확인
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>test2</h1>
<h3>data1 : ${requestScope.testData.data1 }</h3>
<h3>data2 : ${requestScope.testData.data2 }</h3>
</body>
</html>
'SPRING' 카테고리의 다른 글
[SPRING] FORM TAG 요소 - 1 (0) | 2021.07.21 |
---|---|
[SPRING] Form 커스텀 태그 (0) | 2021.07.20 |
[SPRING] View Resolver 뷰리졸버 (0) | 2021.07.19 |
[SPRING] 객체로 파라미터 주입 받기 (0) | 2021.07.19 |
[SPRING] 파라미터 추출하기 (0) | 2021.07.19 |
댓글