7. JavaBeans 프로그래밍 JavaBeans JavaBeans 만들기 빈을 이용한 회원가입 양식 작성하기 빈 작성 빈 컴파일 빈을 이용하는 JSP 파일 작성 빈을 이용한 회원가입 양식 작성하기
o 자바빈즈(JavaBeans)란 컴포넌트 형태로 제작된 자바 모듈 JSP 페이지가 복잡한 자바코드로 구성되는 것을 피하고 JSP 페이지에는 HTML과 같은 쉽고 간단한 코드만을 구성하도록 하는 것이 목적 컴포넌트들의 개별 -> 빈 효율성, 재사용 등의 측면에서 장점
o 자바빈즈 만들기 빈 작성 정보를 저장하는 변수는 모두 private로 선언 private로 선언된 변수의 값을 저장하는 메소드를 만듬. 메소드의 이름은 setXxx()형식으로 만듬. Xxx는 변수의 이름과 같으며 첫 글자는 대문자 private로 선언된 변수의 값을 가져오는 메소드를 만듬. 메소드의 이름은 getXxx()형식으로 만듬. Xxx는 변수의 이름과 같으며 첫 글자는 대문자 setXxx() 메소드와 getXxx() 메소드를 public으로 선언
빈 작성 빈즈 클래스 구성 멤버 변수 getter 메소드 (getXxx()) setter 메소드 (setXxx()) pulbic class xxxBean { // 멤버 변수, DB 테이블의 컬럼 이름과 매칭된다. private String xxx; private int xxx; // get, set 메서드, 멤버 변수와 매칭된다. public getXxx() { return xxx; } public setXxx(String xxx) { this.xxx = xxx; pulbic class MyBean { private String name; public void getName() { return name; } public setName(String name) { this.name = name;
Recall Ch5: Action Tag 지시자 액션 태그 page 지시자 include 지시자 Include 액션 태그 Forward 기타 액션 태그 자바빈즈 프로그래밍
Recall Ch5: Action Tag useBean으로 선언된 빈즈 클래스의 getXxx() 메서드를 호출 <jsp:getProperty name=“cls” property=“xxx” /> useBean으로 선언된 빈즈 클래스의 setXxx() 메서드를 호출 <jsp:setProperty name=“cls” property=“xxx” /> xx 패키지의 MyBean 클래스를 cls로 page 범위에서 사용할 것을 선언 <jsp:useBean scope=“page” id=“cls" class=“xx.MyBean” /> Beans 현재 페이지의 제어를 다른 페이지로 전달 <jsp:forward page=“xx.jsp” /> forward 다른 페이지를 현재 페이지에 포함 <jsp:include page=“xx.jsp” /> include 기능 사용법 액션 자바빈즈 프로그래밍
멤버변수 getter 메소드 클래스외부에서의 접근을 막기위해 private 로 선언함 멤버변수이름, HTML form 이름, DB테이블 컬럼명을 일치하는 것이 좋음. getter 메소드 멤버변수의 값을 리턴하는 메서드 getXxx() 와 같이 이름을 붙여야 한다. 멤버변수명의 첫글자를 대문자로 해야함(Bean 액션과 연동). <jsp:getProperty name=”gb” property=”username” /> -> 내부적으로 getUsername() 메서드를 호출하게됨.
setter 메소드 멤버변수에 값을 설정하는 메서드 setXxx()와 같이 이름을 붙여야 한다. 멤버변수명의 첫글자를 대문자로 해야함. <jsp:setProperty name=“gb” property=“username” value=“ … ”/> 내부적으로 setUsername(request.getParameter(“username”))과 함께 호출
빈 만들기 $(Tomcat Home)\webapps\ch07\WEB-INF\classes에 저장 //SimpleBean.java 01 package ch07; 02 03 public class SimpleBean { 04 05 private String message = ""; 06 07 public String getMessage() { 08 return message; 09 } 10 11 public void setMessage(String message) { 12 this.message = message; 13 } 14 15 }
빈 컴파일 javac [옵션] [자바소스파일] 옵션 : -d 디렉토리 경로 :주어진 디렉토리 경로에 패키지 구조대로 폴더를 생성하여 자바 파일을 컴파일 << 자바빈즈 컴파일 >> ch07 폴더 생성 후 컴파일해도 무방함
빈을 이용하는 JSP 파일 작성 빈을 사용하기 위한 액션 태그 제공 -> 빈 태그 빈 태그 빈 관련 태그 내용 <jsp:useBean id="..." class="..." scope="..."/> 빈을 생성하여 둡니다 <jsp:setProperty name="..." property="..." value="..."/> 빈에 값을 저장합니다 <jsp:getProperty name="..." property="..." /> 빈의 값을 가져옵니다
빈을 생성하기( useBean 액션 ) useBean 액션 속성 목록 <jsp:useBean id=“myBean” class=“ch07.SimpleBean” scope=“page”/> 빈즈 클래스 범위로 page, request, session, application이 올 수 있음 scope 빈즈 클래스 클래스명으로 패키지 경로를 포함 class 빈즈 클래스 인스턴스명으로 사용할 변수 id 설명 속성
scope의 종류 종류 설명 page 해당 JSP 페이지 내에서만 존재 request session 사용자가 최초에 접속하여 접속을 종료되기까지 존재 application 해당 어플리케이션이 살아 있는 동안 함께 존재
scope의 예제 pageBean1.jsp , pageBean2.jsp requestBean1.jsp , requestBean2.jsp sessionBean1.jsp , sessionBean2.jsp applicationBean1.jsp , applicationBean2.jsp TestBean.java
빈에 값을 넣기( setProperty 액션 ) <jsp:useBean id=“myBean” class=“ch07.SimpleBean” scope=“page”/> <jsp:setProperty name=“myBean” property=“*”/> 속성 값으로 빈즈 클래스의 setXxx (Xxx 는 속성 이름) 메서드와 대응할 속성 값. “*”를 지정하면 모든 setXxx에 자동으로 대응된다. property 빈즈 클래스 인스턴스명으로 id 값에 설정한 변수명 name 설명 속성
빈의 저장된 값을 가져오기( getProperty 액션 ) <jsp:useBean id=“myBean” class=“ch07.SimpleBean” scope=“page”/> <jsp:setProperty name=“myBean” property=“*”/> <jsp:getProperty name=“myBean” property=“name”/> 속성 값으로 빈즈 클래스의 getXxx (Xxx 는 속성 이름) 메서드와 대응할 속성 값. property 빈즈 클래스 인스턴스명으로 id 값에 설정한 변수명 name 설명 속성
빈을 이용한 jsp 파일 예제 //SimpleBean.jsp 01 <%@ page contentType="text/html; charset=euc-kr" %> //page 지시자. 현재 페이지의 타입과 페이지의 인코딩을 지시 02 <jsp:useBean id="test" class="ch07.SimpleBean" scope="page" /> 03 <jsp:setProperty name="test" property="message" value="빈을 쉽게 정복하자!" /> 04 05 <html> 06 <body> 07 08 <h1>간단한 빈 프로그래밍</h1> 09 <br> 10 Message: <jsp:getProperty name="test" property="message" /> 11 12 </body> 13 </html>
o 빈을 이용한 회원가입 양식 작성하기 << 회원가입 프로세스 >>
1. 회원가입 입력 폼 작성 회원정보를 처리하기 위한 빈 작성 회원입력 정보확인 페이지 작성 Register.jsp RegisterBean.java 회원입력 정보확인 페이지 작성 RegisterProc.jsp
Register.jsp 자바빈즈 프로그래밍 <tr> <td>패스워드 확인</td> <td> <input type="password" name="mem_repasswd" size="15"> </td> <td>패스워드를 확인합니다.</td> </tr> <td>이름</td> <td> <input type="text" name="mem_name" size="15"> </td> <td>고객실명을 적어주세요.</td> <td>이메일</td> <td> <input type="text" name="mem_email" size="27"> </td> <td>이메일을 적어주세요</td> <td>전화번호</td> <td> <input type="text" name="mem_phone" size="20"> </td> <td>연락처를 적어주세요</td> <td colspan="3" align="center"> <input type="button" value="회원가입" onclick="inputCheck()"> <input type="reset" value="다시쓰기"> </td> </form> </table> </table> </body> </html> <html> <head> <title>회원가입</title> <link href="style.css" rel="stylesheet" type="text/css"> <script language="JavaScript" src="script.js"></script> </head> <body bgcolor="#996600"> <table width="80%" align="center" border="0" cellspacing="0" cellpadding="5" > <tr> <td align="center" valign="middle" bgcolor="#FFFFCC"> <table width="90%" border="1" cellspacing="0" cellpadding="2" align="center"> <form name="regForm" method="post" action="RegisterProc.jsp"> <tr align="center" bgcolor="#996600"> <td colspan="3"><font color="#FFFFFF"><b>회원 가입</b></font></td> </tr> <td width="24%">아이디</td> <td width="35%"> <input type="text" name="mem_id" size="15"> </td> <td width="41%">아이디를 적어 주세요.</td> <td>패스워드</td> <td> <input type="password" name="mem_passwd" size="15"> </td> <td>패스워드를 적어주세요.</td> 자바빈즈 프로그래밍
RegisterBean.java 자바빈즈 프로그래밍 public void setMem_phone(String mem_phone) { this.mem_phone = mem_phone; } public String getMem_id() { return mem_id; public String getMem_passwd() { return mem_passwd; public String getMem_name() { return mem_name; public String getMem_email() { return mem_email; public String getMem_phone() { return mem_phone; package ch07; public class RegisterBean{ private String mem_id; private String mem_passwd; private String mem_name; private String mem_email; private String mem_phone; public void setMem_id(String mem_id) { this.mem_id = mem_id; } public void setMem_passwd(String mem_passwd) { this.mem_passwd = mem_passwd; public void setMem_name(String mem_name) { this.mem_name = mem_name; public void setMem_email(String mem_email) { this.mem_email = mem_email; 자바빈즈 프로그래밍
RegisterProc.jsp 자바빈즈 프로그래밍 <tr> <td width="24%">아이디</td> <td width="41%"><jsp:getProperty name="regBean" property="mem_id" /></td> </tr> <td>패스워드</td> <td> <jsp:getProperty name="regBean" property="mem_passwd" /> </td> <td>이름</td> <td> <jsp:getProperty name="regBean" property="mem_name" /> </td> <td>이메일</td> <td> <jsp:getProperty name="regBean" property="mem_email" /> </td> … <%@ page contentType="text/html; charset=euc-kr" %> <% request.setCharacterEncoding("euc-kr"); %> <jsp:useBean id="regBean" class="ch07.RegisterBean" scope="page" /> <jsp:setProperty name="regBean" property="*" /> <html> <head> <title>회원가입 확인</title> <link href="style.css" rel="stylesheet" type="text/css"> <script language="JavaScript" src="script.js"></script> </head> <body bgcolor="#996600"> <table width="80%"align="center" border="0" cellspacing="0" cellpadding="5" > … <b> <jsp:getProperty name="regBean" property="mem_name" /> 회원님이 작성하신 내용입니다. 확인해 주세요</b></font> </td> </tr> 자바빈즈 프로그래밍
실습예제: p184_1.html <html> <h1>p.184 입력 html </h1> <FORM NAME="favorite" METHOD=POST ACTION="MyFavorite.jsp"> 당신이 가장 좋아하는 색깔은? <input type="text" name="color"><br> 당신이 가장 좋아하는 꽃은? <input type="text" name="flower"><br> 당신이 가장 좋아하는 음악은? <input type="text" name="music"><br> <INPUT TYPE="submit" VALUE="보내기"> </FORM> </html> 자바빈즈 프로그래밍
FavoriteBean.java 자바빈즈 프로그래밍 package simple; public class FavoriteBean { private String color; private String flower; private String music; public void setColor(String color) { this.color = color; } public void setFlower(String flower) { this.flower = flower; public void setMusic(String music) { this.music = music; public String getColor() { return color; public String getFlower() { return flower; public String getMusic() { return music; 자바빈즈 프로그래밍
MyFavorite.jsp <%@ page contentType="text/html; charset=euc-kr" %> <% request.setCharacterEncoding("euc-kr"); %> <jsp:useBean id="bean" class="simple.FavoriteBean" scope="page" /> <jsp:setProperty name="bean" property="*" /> 당신이 좋아하는 색깔은 <jsp:getProperty name="bean" property="color" /> 입니다. <p> 당신이 좋아하는 꽃은 <jsp:getProperty name="bean" property="flower" /> 입니다. <p> 당신이 좋아하는 음악은 <jsp:getProperty name="bean" property="music" /> 입니다. <p> 자바빈즈 프로그래밍
Compile Current directory : Tomcat6.0/webapps/ch07/ FavoriteBean.java, MyFavorite.jsp, p184_1.html ch07> dir ch07> md WEB-INF\classes ch07> javac –d ./WEB-INF/classes FavoriteBean.java ch07> dir .\WEB-INF\classes\simple FavoriteBean.class 자바빈즈 프로그래밍
Container 디렉토리 구조 http://localhost:8080/ch07/xxx.jsp bin WEB-INF classes package xxx.class (프로젝트) lib src xxx.java ch07 conf lib xxx.jar web.xml xxx.jsp Tomcat6.0 webapps xxx.html Root WEB-INF web.xml WEB-INF web.xml http://localhost:8080/ch07/xxx.jsp JAVA_HOME -> 자바 설치경로 확인 환경변수 classpath에 %JAVA_HOME%\lib\tools.jar; 확인.