-
커맨드 객체 이용하기웹페이지 제작을 위한 스프링공부 2020. 5. 2. 21:52
지금까지 클라이언트가 전달해주는 파라미터 데이터를 리스트나 map을 통해서 주입받았는데 이번에는 class를 만들어서 객체를 주입받아 파라미터를 담을 수 있다.
넘어오는 파라미터를 받을 빈의 class 타입을 정의해주면 class 타입을 보고 객체를 만든 다음 그객체에 넘어오는 파라미터 데이터를 다 담아서 주입을 해준다
<%@ 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>
data1과 data2의 데이터를 서버로 전송하고있다.
컨트롤러에서 넘어오는 파라미터 데이터를 자바 빈객체에 받아서 주입받겠다 라고 셋팅해주면 data1은 빈객체의 setData1을 호출하여 값을 넣어주고 data2는 setData2를 호출하여 값을 넣는다
package kr.co.softcampus.beans; public class DataBean { //data1이라는 이름으로 파라미터 데이터가 넘어오면 setData1을 호출하여 주입시켜줌,data2,data3동일한 방식 private int data1; private int data2; public int getData1() { return data1; } public void setData1(int data1) { this.data1 = data1; } public int getData2() { return data2; } public void setData2(int data2) { this.data2 = data2; } }
@PostMapping("/test1") public String test1(@ModelAttribute DataBean bean) {//data1과 data2라는 이름으로 파라미터가 넘어오기 때문에 data1과 data2 프라퍼티에 주입을 해주게됩니다(DataBean 으로 객체를 만들어 bean에 주입해줌) return "test1"; }
@ModelAttribute(생략가능)
주입받은 bean 객체를 request영역에 담아서 test1.jsp로 전달을 하겠다는 의미
requestScope
request영역의 값을 불러오기위한 jstl태그
개발자가 주입받은 bean을 request영역에 어떠한 이름으로 저장할것 이란걸 저장하지 않으면 자동으로 클래스의 이름(첫글자 소문자)으로 request영역에 저장됨
이름 지정하는방법
@ModelAttribute("이름지정")
<%@ 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> <h3>data1:${requestScope.dataBean.data1}</h3><!-- JSP의 기본객체인 request에 저장된 맵 형태의 속성이 requestScope 라는 EL 내장객체이다. --> <h3>data2:${requestScope.dataBean.data2}</h3> </body> </html>
'웹페이지 제작을 위한 스프링공부' 카테고리의 다른 글
Form 요소1 (0) 2020.05.04 form 태그 (0) 2020.05.03 viewResolver (0) 2020.05.02 객체로 파라미터 주입받기 (0) 2020.05.02 파라미터 추출하기 (0) 2020.05.02