ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring MVC - 커맨드 객체(Command Object)
    Spring/Spring MVC 2021. 12. 26. 21:19
    728x90
    반응형

    커맨드 객체(Command Object)

    • 커맨드 객체는 HttpServletRequest 객체에 자동으로 담기고 jsp로 전달된다.
    • 커맨드 객체에 이름을 정해주지 않으면 HttpSevletRequest 객체에 저장되는 이름은 클래스의 이름으로
      저장되고, 이름을 정해주면 해당 이름으로 HttpSevletRequest 객체에 저장된다

     

    커맨드 객체 이름을 정해주지 않을 경우

     커맨드 객체 이름을 정해주지 않으면 자동으로 클래스 이름으로 설정이 된다. (단, 첫 글자는 소문자로 바뀐다.)

     

    inde.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'>
    		data2 : <input type='text' name='data2'>
    		<button type="submit">확인</button>		
    	</form>
    </body>
    </html>

     

    testController.java

    @Controller
    public class testController {
    
    	@PostMapping("/test1")
    	public String test1(DataBean bean) {
    		return "test1";
    	}
    }
    public String test1(DataBean bean) {
     - @ModelAttiribute 생략 됨
     - 데이터를 주입받는 DataBean의 이름을 정해 주지 않았으므로
      자동으로 dataBean으로 HttpServletRequest에 저장된다.

     

     

    test1.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>${requestScope.dataBean.data1 }</h3>
    	<h3>${requestScope.dataBean.data2 }</h3>
    </body>
    </html>
    requestScope.dataBean.data1
     - request 영역에 dataBean으로 저장되어있으므로 JSP에서 데이터를 추출할 때 다음과 같이 작성한다.
     - 스코프영역.객체명.프로퍼티명

     


    커맨드 객체 이름을 정해줄 때

     

    inde.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'>
    		data2 : <input type='text' name='data2'>
    		<button type="submit">확인</button>		
    	</form>
    </body>
    </html>

     

    testController.java

    @Controller
    public class testController {
    	//이름을 지정해주면 해당이름으로 request에 담긴다.
    	@PostMapping("/test2")
    	public String test1(@ModelAttribute("testData") DataBean bean) {
    		return "test2";
    	}
    }
    public String test1(@ModelAttribute("testData") DataBean bean) {
     - 데이터를 주입하는 DataBean의 이름을 testData로 정해 주었기 때문에
      HttpServletRequest에 testData 이름으로 저장된다.

     

    test2.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>${requestScope.testData.data1 }</h3>
    	<h3>${requestScope.testData.data2 }</h3>
    </body>
    </html>
    requestScope.testData.data1
     - request 영역에 testData으로 저장되어있으므로 JSP에서 데이터를 추출할 때 다음과 같이 작성한다.
     - 스코프영역.설정된객체명.프로퍼티명
    728x90
    반응형

    댓글

Designed by Tistory.