[    JSP 자바 빈즈(JAVA BEANS)    ]



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
40
41
42
43
44
package ex4.com.java.study;
 
public class StudentDTO {
    /*
        [   자바 빈즈  ]
        : 그냥 단순히 DTO, VO 개념임...
        StudentDTO 이게 DTO이고 jsp단에서 useBean이 객체 생성
        setProperty, getProperty를 통해 값을 가져올 수 있음.
        단, 네이밍 규칙은 지켜줘야 함
    */
    private String id;
    private String name;
    private String address;
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getAddress() {
        return address;
    }
 
    public void setAddress(String address) {
        this.address = address;
    }
 
    @Override
    public String toString() {
        return "StudentDTO [id=" + id + ", name=" + name + ", address="
                + address + "]";
    }
}




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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
 
    <!--
        useBean 액션 태그
            : 사용할 객체를 지정하는 작업 class 속성에 명시한 클래스를 id로 지정한 이름으로 사용하겠다는 의미
            scope는 해당 객체의 유효범위를 지정함 => page, request, application 등..
     -->
    <jsp:useBean id="studentDTOId" class="ex4.com.java.study.StudentDTO" scope="page"></jsp:useBean>
     
    <!--
        setProperty 액션 태그
            : useBean에서 지정한 id에 해당하는 객체의 name 필드에 hyr을 대입함
            name 속성은 위에서 지정한 id이며
            property는 필드 변수 명
            value는 값을 의미한다.
     -->
    <jsp:setProperty property="name" value="hyr" name="studentDTOId"/>
 
    값 가져다 쓰기 : <jsp:getProperty property="name" name="studentDTOId"/><br/>

그렇다면 지금까지 살펴본 빈즈는 왜 사용하는 것일까?? 무엇인가 편리한게 있지 않을까?


그렇다. 빈즈를 이용하면 우리가 form 태그에서 input 태그 등을 이용해서 많은 값들을 submit으로 보낼 때


이러한 값들을 일일이 하나씩 request.getParameter("name") 등으로 가져오지 않고 한번에 빈즈 객체에 저장시킬 수 있다.


매우 편리하다!!


하지만, 조건이 있다. form태그에 있는 input 태그 등의 name값과 빈즈의 필드변수명이 일치해야만 한다.


아래의 예제를 보자.


-PeopleBeans 클래스

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
package com.jsp.study;
 
public class PeopleBenas {
    // 자바 빈즈에서 필드변수명을 폼태그의 input 의 name과 일치시키면
    // 한번에 폼에서 전송한걸 세팅할 수 있음으로 이름을 같게 맞춰주자.
    private String name;
    private int age;
    private String address;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "PeopleBenas [name=" + name + ", age=" + age + ", address=" + address + "]";
    }
}


-beansMain.jsp : 폼태그가 있는 페이지
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
 
<%
    request.setCharacterEncoding("UTF-8");
%>
    <form action="beans.jsp" method="post">
        이름 : <input type="text" name="name"/><br/>
        나이 : <input type="number" name="age" /><br/>
        주소 : <input type="address" name="address" /><br/>
        <input type="submit" value="전송" />
    </form>


-beans.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
25
26
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
 
    <!-- 빈즈 선언 -->
    <jsp:useBean id="peopleId" class="com.jsp.study.PeopleBenas"></jsp:useBean>
    <!--
        property에 * 를 주게 되면 폼태그에서 전달한게 한꺼번에 세팅되기 때문에 굉장히 간편하게 값을 세팅할 수 있다.
        단, 전제조건은 input의 name값과 beans class의 필드변수명들이 일치해야만 한다!!
     -->
    <jsp:setProperty property="*" name="peopleId"/>
     
    <%
        String name = peopleId.getName();
        int age = peopleId.getAge();
        String addr = peopleId.getAddress();
    %>
    이름 : <%=name %><br/>
    나이 : <%=age %><br/>
    주소 : <%=addr %><br/>



'스터디 > JSP' 카테고리의 다른 글

JSP 커넥션 풀(Connection Pool)  (0) 2017.08.16
JSP DB(데이터베이스)  (0) 2017.08.14
JSP 에러페이지에 대하여...  (0) 2017.08.11
JSP 쿠키(cookie)에 대하여...  (0) 2017.08.11
JSP에서의 세션(session)에 대해서...  (0) 2017.08.11

+ Recent posts