본문 바로가기

JSP/기본다지기

JSP 7일차 필기 (Bean)

Bean객체를 사용하여 파라미터를 주고받기.


index.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jsp에서 bean객체 사용하기</title>
</head>
<body>
    <h1>bean객체 사용법</h1>
    <h3><a href="./L01UseBean.jsp">bean에 값을 저장하고 불러오기</a></h3>
    <h3><a href="./L02Property.jsp">jsp태그를 이용해서 저장하고 불러오기</a></h3>
    <h3><a href="./L03AddMemberForm.jsp">제출한 양식을 bean으로 받아보기</a></h3>
</body>
</html>
cs


이전에 request.getParameter를 이용하여 값을 주고받았던 방법에서,

이번에는 Beans객체를 이용하여 값을 주고받는 방식을 공부해보자.


우선 회원 정보를 저장하는 클래스 파일을 하나 만든다.

src/com.jsp.bean 패키지에 Member.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.jsp.bean;
 
//Member는 데이터베이스의 Member table과 매칭
public class Member {
    private int num;
    private String id;
    private String pwd;
    private String name;
    private String email;
    private String phone;
    private char admin;
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public char getAdmin() {
        return admin;
    }
    public void setAdmin(char admin) {
        this.admin = admin;
    }
}
 
cs


Member 클래스로부터 값을 저장하고 받아오기 위해서는 import를 해야만 했다.

그러나 jsp의 useBean을 이용하면 import 하지 않고도 값을 설정(set)하거나 가져올(get) 수 있다.


L01UseBean.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
27
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!--<%@ page import="com.jsp.bean.Member" %>-->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>import와 useBean의 차이</title>
</head>
<body>
    <jsp:useBean id="bean" class="com.jsp.bean.Member"/>
    <!-- import와 객체 생성이 생략되어 있어, 보다 명시적임. -->
    <h1>javaBean 객체 생성</h1>
    <%
    //Member bean = new Member();
    bean.setId("jspLesson");
    bean.setName("tako");
    bean.setPhone("010-1234-5678");
    %>
    <h3>bean객체 생성 완료</h3>
    <hr>
    <h1>Bean 출력</h1>
    <p><b>id: </b><%=bean.getId()%></p>
    <p><b>name: </b><%=bean.getName()%></p>
    <p><b>phone: </b><%=bean.getPhone()%></p>
</body>
</html>
cs


다음은 jsp의 property를 이용해서 bean을 설정하고, 가져오는 방법이다.


L02Property.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
27
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>property를 이용해서 bean 설정하기</title>
</head>
<body>
    <jsp:useBean id="member" class="com.jsp.bean.Member"/>
    <h1>jsp property로 Member bean 설정하기</h1>
    <jsp:setProperty property="id" name="member" value="jspLesson"/>
    <!-- member.setId("jspLesson") -->
    <!-- frontend 개발자가 java 구문을 싫어해서 ->xml 형식이 더 편하다. -->
    <jsp:setProperty property="name" name="member" value="tako"/>
    <jsp:setProperty property="email" name="member" value="tako@gmail.com"/>
    <jsp:setProperty property="phone" name="member" value="010-1234-1234"/>
    <h3>설정 완료</h3>
    <hr>
    <h1>jsp property로 Member bean 가져오기</h1>
    <h3><jsp:getProperty property="id" name="member"/></h3>
    <h3><jsp:getProperty property="name" name="member"/></h3>
    <h1>el 태그로 가져오기 -> jstl(java구문을 jsp태그처럼 대신 처리)</h1>
    <h3>${member.email}</h3><!-- 가장 많이 사용하는 방법 -->
    <h3>${member["phone"]}</h3>
</body>
</html>
cs


값을 설정하는 여러가지 방법중의 하나.


값을 받아올 때 el태그를 이용하는 방법이 있는데, 많이 사용하는 방법이므로 잘 알아두면 좋다.

    <h3>${member.email}</h3><!-- 가장 많이 사용하는 방법 -->

나중에 jstl과 연동하여 사용하는 방법을 공부해볼 예정.



이전에도 여러 번 사용했던 회원가입 양식을 이용하여 Post 방식으로 넘어온 파라미터를 beans로 받아 출력해 보자.


L03AddMemberForm.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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
    body{
        font-family: Meiryo,굴림;
    }
</style>
<title>bean으로 parameter 받기</title>
</head>
<body>
    <h1>会員登録</h1>
    <form action="L04DetailMember.jsp" method="post">
        <table>
            <tr>
                <td><label for="uNum">NUM </label></td>
                <td><input type="text" id="uNum" name="num" size=20 value="1"></td>
            </tr>
            <tr>
                <td><label for="uId">ID </label></td>    
                <td><input type="text" id="uId" name="id" size="20" value="jspLesson"></td>
            </tr>
            <tr>
                <td><label for="uPwd">PWD </label></td>    
                <td><input type="password" id="uPwd" name="pwd" size="20" value="admin1234"></td>
            </tr>
            <tr>
                <td><label for="uName">名前 </label></td>
                <td><input type="text" id="uName" name="name" size="20" value="tako"></td>
            </tr>
            <tr>
                <td><label for="uPhone">Phone </label></td>    
                <td><input type="tel" id="uPhone" name="phone" size="20" value="010-1111-1111"></td>
            </tr>
            <tr>
                <td><label for="uEmail">E-mail </label></td>    
                <td><input type="email" id="uEmail" name="email" size="20" value="takoyaki@gmail.com"></td>
            </tr>
            <tr>
                <td><label for="admin">管理者</label>
                <input type="radio" id="admin" name="admin" value="0" checked></td>
                <td><label for="normal">一般ユーザ</label>    
                <input type="radio" id="noraml" name="admin" value="1"></td>
            </tr>
        </table>
        <h3><input type="submit" value="提出"></h3>
    </form>
</body>
</html>
cs

이전과 크게 다를 것 없는 회원 가입 양식!


L04DetailMember.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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>bean으로 파라미터 받기</title>
</head>
<jsp:useBean id="mem" class="com.jsp.bean.Member"/>
<jsp:setProperty property="*" name="mem"/>
<!-- 받아온 모든 파라미터를 set한다. -->
<body>
    <h1>입력 받은 회원 정보를 bean으로 출력</h1>
    <table>
        <tr>
            <td>NUM</td>
            <td>${mem.num}</td>
        </tr>
        <tr>
            <td>ID</td>
            <td>${mem.id}</td>
        </tr>
        <tr>
            <td>PWD</td>
            <td>${mem.pwd}</td>
        </tr>
        <tr>
            <td>이름</td>
            <td>${mem.name}</td>
        </tr>
        <tr>
            <td>전화</td>
            <td>${mem.phone}</td>
        </tr>
        <tr>
            <td>메일</td>
            <td>${mem.email}</td>
        </tr>
        <tr>
            <td>관리자</td>
            <td>${mem.admin}</td>
        </tr>
    </table>
</body>
</html>
cs


값을 받아와 출력하는 과정이 상당히 깔끔해졌다. 

코드가 깔끔해진다는 것은 유지보수가 쉬워진다는 것과 동일한 말이다.


9행과 10행을 보면

<jsp:useBean id="mem" class="com.jsp.bean.Member"/>
<jsp:setProperty property="*" name="mem"/>

Bean객체를 만들고 넘어온 파라미터를 받는 부분이다.


setProperty를 이용하면 넘어온 모든 파라미터를 데이터 타입에도 관계없이 편리하게 받을 수 있고,

아래와 같이 el태그를 이용하여 간편하게 출력할 수 있다.