ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] 01-7. HTML 폼과 커맨드 객체(JavaBean)
    프로그래밍/Spring 2015. 9. 13. 22:15
    반응형

    SPRING MVC는 HTML 폼에 입력한 데이터를 Java빈 객체를 이용해서 전달 받을 수 있도록 하고 있다. 예을 들어, 다음과 같이 HTML 폼의 항목 이름과 Java빈 Class의 프로퍼티 이름이 일치할 경우 폼에 입력한 값을 해당 Java빈 Class의 프로퍼티 값으로 설정해주는 기능을 제공하고 있다.


    HTML 폼에 입력한 데이터를 Java빈 객체로 전달받는 방법은 매우 간단하다. 단지 @RequestMapping Annotation이 적용된 메서드의 파라미터로 Java빈 타입을 추가해주기만 하면 된다.




    뷰에서 커맨드 객체 접근하기

    : 뷰 Code에서는 컨트롤러의 @RequestMapping Annotation 메서드에서 전달받은 커맨드 객체에 접근할 수 있다.


    [Orderitem.java]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    package spring.chap06.model;
     
    public class OrderItem {
     
        private Integer itemId;
        private Integer number;
        private String remark;
     
        public Integer getItemId() {
            return itemId;
        }
     
        public void setItemId(Integer itemId) {
            this.itemId = itemId;
        }
     
        public Integer getNumber() {
            return number;
        }
     
        public void setNumber(Integer number) {
            this.number = number;
        }
     
        public String getRemark() {
            return remark;
        }
     
        public void setRemark(String remark) {
            this.remark = remark;
        }
     
    }
    cs


    [OrderCommand.java]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    package spring.chap06.controller;
     
    import java.util.List;
     
    import spring.chap06.model.Address;
    import spring.chap06.model.OrderItem;
     
    public class OrderCommand {
     
        private List<OrderItem> orderItems;
        private Address address;
     
        public List<OrderItem> getOrderItems() {
            return orderItems;
        }
     
        public void setOrderItems(List<OrderItem> orderItems) {
            this.orderItems = orderItems;
        }
     
        public Address getAddress() {
            return address;
        }
     
        public void setAddress(Address address) {
            this.address = address;
        }
     
    }
    cs


    [Address.java]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    package spring.chap06.model;
     
    public class Address {
     
        private String zipcode;
        private String address1;
        private String address2;
     
        public String getZipcode() {
            return zipcode;
        }
     
        public void setZipcode(String zipcode) {
            this.zipcode = zipcode;
        }
     
        public String getAddress1() {
            return address1;
        }
     
        public void setAddress1(String address1) {
            this.address1 = address1;
        }
     
        public String getAddress2() {
            return address2;
        }
     
        public void setAddress2(String address2) {
            this.address2 = address2;
        }
     
        @Override
        public String toString() {
            return "Address [address1=" + address1 + ", address2=" + address2 + ", zipcode=" + zipcode + "]";
        }
     
    }
     
    cs




    [OrderController.java]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package spring.chap06.controller;
     
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
     
    @Controller
    @RequestMapping("/order/order.do")
    public class OrderController {
     
        @RequestMapping(method = RequestMethod.GET)
        public String form() {
            return "order/orderForm";
        }
     
        @RequestMapping(method = RequestMethod.POST)
        public String submit(OrderCommand orderCommand) {
            return "order/orderCompletion";
        }
    }
    cs


    [/WEB-INF/dispatcher-servlet.xml]

    1
    <bean class="madvirus.spring.chap06.controller.OrderController" />
    cs


    [/view/order/orderCompletion.jsp]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <%@ page contentType="text/html; charset=EUC-KR"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
    <title>주문 완료</title>
    </head>
    <body>
        주문 완료
        <br /> 주문 아이템
        <ul>
            <c:forEach var="item" items="${orderCommand.orderItems}">
                <li>${item.itemId}/ ${item.number} / ${item.remark}</li>
            </c:forEach>
        </ul>
        배송지: ${orderCommand.address}
    </body>
    </html>
    cs


    [/view/order/orderForm.jsp]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <%@ page contentType="text/html; charset=EUC-KR"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
    <title>주문</title>
    </head>
    <body>
        <form method="post">
            상품1: ID - <input type="text" name="orderItems[0].itemId" /> 개수 - <input
                type="text" name="orderItems[0].number" /> 주의 - <input type="text"
                name="orderItems[0].remark" /> <br /> 상품2: ID - <input type="text"
                name="orderItems[1].itemId" /> 개수 - <input type="text"
                name="orderItems[1].number" /> 주의 - <input type="text"
                name="orderItems[1].remark" /> <br /> 상품3: ID - <input type="text"
                name="orderItems[2].itemId" /> 개수 - <input type="text"
                name="orderItems[2].number" /> 주의 - <input type="text"
                name="orderItems[2].remark" /> <br /> 배송지: 우편번호 - <input type="text"
                name="address.zipcode" /> 주소1 - <input type="text"
                name="address.address1" /> 주소2 - <input type="text"
                name="address.address2" /> <br /> <input type="submit" />
        </form>
    </body>
    </html>
     
    cs

    서버 구동후 http://localhost:8080/Spring/order/order.do 으로 실행

    반응형

    댓글

Designed by Tistory.