본문 바로가기
JSP/JSP & Servlet

액션태그 jsp:useBean / 자바빈즈(JavaBeans)

by avvin 2019. 4. 30.

액션태그의 종류

1. include

2. forward

3. useBean

4. setProperty

5. getProperty

6. plug-in



자바 빈즈(JavaBeans)


JSP프로그래밍의 단점

1. jsp 페이지를 이해하기 어려워진다.

2. jsp페이지 내에 작성된 프로그램 코드는 다시 사용하기가 어렵다.


jsp가 복잡한 자바코드로 구성되는 것을 가능한 한 피하고 

jsp페이지에는 HTML과 같은 쉽고 간단한 코드만 구성할 수 있도록 하기위해 자바빈즈 사용


자바 빈즈

JSP안의 수많은 자바 코드들이 담당했던 일들을 독립적으로 처리하기 위한 부품과도 같은 역할을 함

이렇게 부품(=컴포넌트)을 만들어 놓고 JSP에서 호출하여 사용

자바빈즈란 java로 작성되어진 이러한 컴포넌트(Bean은 클래스형식(.java))들을 일반적으로 일컫는 단어.


3. useBean

4. setProperty

5. getProperty

는 Bean을 사용하기 위해 따로 제공하는 Bean 태그




3. useBean


jsp에서 자바빈즈를 사용할 때 쓰는 액션태그


자바 빈즈 (Java Beans)


DB와 JSP간에 데이터를 쉽게 주고받기 위해 사용하는 객체 개념


DB에서 정보를 가져올 때 가변적으로 배열의 역할을 하는 List 계열을 사용하는데


List에  각 정보가 맵핑돼있는 자바 변수들만 담은 클래스(정보의 세트인 셈)를 담는데 


이러한 List를 자바 빈즈라한다.




Java Resources - src에 패키지를 만들어 클래스를 생성한다// 패키지로 묶어야 import해와서 쓰기가 좋다.


모든 변수는 jsp페이지와 이름을 동일하게 설정하고 private으로 보호해야하며 반드시 Getter와 Setter를 생성한다.


이렇게 생성된 데이터의 묶음을 getProperty() , setProperty() 메서드를 사용하여 ArrayList에?


JSP에서는 useBean 액션태그를 써야만 데이터가 자동으로 매핑되는데 Spring에서는 useBean을 쓰지 않고 Bean만 쓰고도 매핑이 된다.

Spring은 JSP를 보다 편리하게 사용할 수 있게 하는 플랫폼이라고 보면 된다.



MerberJoin.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
<%@ 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>
     <div style="text-align:center;">
        <h2 align="center">회원가입</h2>
        <form align="center" action="MemberJoinProc.jsp" method="post">
            <table align="center" width="500" border="1">
                <tr height="50">
                    <td width="150" align="center">아이디</td>
                    <td width="350" align="center"><input type="text" name="id"
                        placeholder="id를 입력하세요" size="40"></td>
                </tr>
                <tr height="50">
                    <td width="150" align="center">패스워드</td>
                    <td width="350" align="center"><input type="password"
                        name="password" placeholder="비밀번호는 영문과 숫자만 넣어주세요" size="40"></td>
                </tr>
                <tr height="50">
                    <td width="150" align="center">이메일</td>
                    <td width="350" align="center"><input type="email"
                        name="email" size="40"></td>
                </tr>
                <tr height="50">
                    <td width="150" align="center">전화번호</td>
                    <td width="350" align="center"><input type="tel" name="tel"
                        size="40"></td>
                </tr>
                <tr height="50">
                    <td width="150" align="center">주소</td>
                    <td width="350" align="center"><input type="text"
                        name="address" size="40"></td>
                </tr>
                <tr height="50">
                <td align="center" colspan="2"><input type="submit"
                    value="회원가입"> &nbsp; &nbsp; &nbsp; &nbsp; <input
                    type="reset" value="다시 입력"></td>
            </tr>            
            </table>
        </form>
    </div>
</body>
</html>
cs



MemberBean.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
package bean;
 
public class MemberBean {
    
    private String id;//데이터의 은닉성을 위해서 항상 private
    private String password;
    private String email;
    private String tel;
    private String address;
    
    //useBean을 쓰려면 반드시 jsp에서 사용하는 각 변수의 name을 따라야하고 
    //getter와 setter를 만들어줘야한다.
    //값을 입력하면 jsp가 알아서 클래스에 매핑해준다.
    
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getTel() {
        return tel;
    }
    public void setTel(String tel) {
        this.tel = tel;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    
}
 
cs



MemberJoinProc.jsp (회원가입 처리페이지. useBean 액션태그를 사용하여 데이터를 자동 매핑 시킨다.)

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 charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        request.setCharacterEncoding("UTF-8");//UTF-8쓰면 굳이 이 설정할 필요 없다... 
        //request.getParameter(name)으로 name을 하나하나 받아 오면 데이터 종류가 많을 때 너무 번거로워진다.
    %>
    <!-- request로 넘어온 데이터를 자바 빈즈(List)와 매핑시켜주는 useBean -->
 
    <jsp:useBean id="mbean" class="bean.MemberBean">
 
    <!-- MemberBean mbean = new Meberbean(); 객체 생성하는 것과 같다
    id는 MemberBean의 참조변수와 유사한 효과. mbean으로 멤버변수에 접근하면 된다.-->
    <!-- 자바빈즈에 매핑시키는 과정도 useBean 태그 안에서 이루어진다. -->
    <!-- JSP의 데이터를 자바빈 클래스에  매핑-->
 
    <%-- <jsp:setProperty name="mbean" property="id"/> 자동으로 id만 매핑--%>
    <jsp:setProperty name="mbean" property="*" /><!--★자동으로 모두 매핑! -->
 
 
    </jsp:useBean>
 
    <h2>
        아이디 :
        <jsp:getProperty property="id" name="mbean" /></h2>
    <h2>
        패스워드 :
        <jsp:getProperty property="password" name="mbean" /></h2>
    <h2>
        이메일 :
        <jsp:getProperty property="email" name="mbean" /></h2>
    <h2>
        전화번호 :
        <%=mbean.getTel()%>
        <!--위 식은 너무 기니까  표현식에서 mbean에 접근하여 각 데이터 출력 가능 -->
    </h2>
 
</body>
</html>
cs



실행화면



'JSP > JSP & Servlet ' 카테고리의 다른 글

서블릿(Servlet)  (0) 2019.04.30
package javax.servlet does not exist 오류  (0) 2019.04.30
액션 태그 jsp : forward  (0) 2019.04.30
액션 태그 jsp: include  (0) 2019.04.29
JSP의 지시자(Directive)  (0) 2019.04.29