12 장. JSP 에서자바빈활용
자바빈 (JavaBean) 1. 자바빈 (JavaBean) 객체단위의관련데이터를저장및관리하는목적을지닌 Java 객체 데이터베이스와 JSP의중간에서데이터관리의매개체역할을한다. 자바빈활용의장점 데이터를객체단위로한데묶어서관리하는데에많은편리성이있다. 전체적으로 JSP 소스가깔끔해지는효과 자바빈구성요소 생성자 값을저장하는프로퍼티 (Property) 프로퍼티값을읽어올때사용되는멤버메소드 getter 메소드 프로퍼티값을저장할때사용되는멤버메소드 setter 메소드 2/44
1. 자바빈 (JavaBean) 자바빈의일반적인구현형태 3/44 public class JavaBeanClassName implements java.io.serializable { /* 값을저장하는프로퍼티 */ private String id; private String name; /* JavaBeanClassName의기본생성자 */ public JavaBeanClassName() { /* 프로퍼티의값을읽어오는멤버메소드 : getter */ public String getid() { return id; public String getname() { return name; /* 프로퍼티의값을변경하는멤버메소드 : setter */ public void setid(string id) { this.id = id; public void setname(string name) { this.name = name;
자바빈규약 ( 반드시모든사항을지켜야하는것은아니다 ) 1) 클래스는 java.io.serializable 을구현 (implement) 해야한다. 1. 자바빈 (JavaBean) 2) 클래스내부에기본생성자가정의되어야한다. 3) 클래스는 public, 프로퍼티는 private, 메소드는 public 접근제어자를붙인다. 4) 프로퍼티에접근할수있는 getter 메소드와 setter 메소드가정의되어야하며메소드의이름은다음과같은규칙을따라야한다. - 프로퍼티와메소드의이름은소문자로시작한다. - 메소드의이름은 get 또는 set으로시작한다. - get 이나 set 뒤에따라오는단어는프로퍼티명과일치해야하며대문자로시작해야한다. 5) 프로퍼티타입이 boolean 일경우 getter 메소드의이름은 get 대신에 is 로서 시작한다. 4/44
자바빈코딩방법 getter 와 setter 메소드설정 1. 자바빈 (JavaBean) 예를들어, 프로퍼티의이름이 width이고타입이 int라고할때 public void setwidth(int width); public int getwidth(); 다소규약에서벗어난코딩방법 private int mywidth = 0; public void setwidth(int width) { mywidth = width; public int getwidth() { return mywidth; 위코드에서자바빈객체를활용하는외부에서간주하게되는프로퍼티이름은 mywidth 가아니라 width 가된다. 5/44
자바빈코딩방법 읽기전용프로퍼티와프로퍼티의실체 public class Temperature { private double celsius; public double getcelsius() { return celsius; public void setcelsius(double celsius) { this.celsius = celsius; // fahrenheit 프로퍼티는읽기전용프로퍼티 public double getfahrenheit() { return celsius*9.0/5.0+32.0; 1. 자바빈 (JavaBean) 프로퍼티는 private 으로지정된변수에의해만들어지는것이아니라외부에서접근이가능하도록 public 으로지정된메소드에의하여정의되는것이다. 6/44
1. 자바빈 (JavaBean) 자바빈코딩방법 boolean 타입의프로퍼티 private boolean good; public boolean isgood() { return end; public void setgood(boolean good) { this.good = good; 7/44
1. 자바빈 (JavaBean) 자바빈코딩방법 배열프로퍼티 private int[] grade; public int[] getgrade() { return grade; public void setgrade(int[] grade) { this.grade = grade; 배열전체가아닌배열의각원소를접근할수있는메소드제공가능 public int getgrade(int index) { return grade[index]; public void setgrade(int index, int value) { grade[index] = value; 8/44 메소드오버로딩 (Overloading) 메소드이름이같지만 (getgrade, setgrade) 파라미터형태가틀리게중복하여메소드를정의하는것
자바빈생성하기 2. 자바빈의활용 예제로서사용할자바빈클래스는이름이 Member 이며다음표와같은프로퍼티를갖는다. 프로퍼티이름값타입읽기 / 쓰기여부 id String 읽기 / 쓰기 name String 읽기 / 쓰기 password String 읽기 / 쓰기 email String 읽기 / 쓰기 각프로퍼티별 로 getter/setter 메소드존재 registerdate java.util.date 읽기 / 쓰기 9/44
10/44 자바빈생성하기 01 package thinkonweb.bean; 02 03 04 import java.util.date; import java.io.serializable; 05 06 07 08 09 10 11 public class Member implements Serializable{ private String id; private String name; private String password; private String email; private Date registerdate; 12 13 14 15 public String getid() { return id; //getter methods 16 17 18 19 20 21 22 public String getname() { return nickname; public String getpassword() { return password; public String getemail() { 23 24 return email; 2. 자바빈의활용 [ 예제 12.1] jspbook\web-inf\java_sources\member.java
자바빈생성하기 25 26 27 public Date getregisterdate() { return registerdate; 28 29 public void setid(string id) { //setter methods 30 31 this.id = id; 32 33 34 35 36 37 38 39 40 41 42 43 public void setname(string name) { this.name = name; public void setpassword(string passwordl) { this.password = password; public void setemail(string email) { this.email = email; public void setregisterdate(date registerdate) { this.registerdate = registerdate; 44 2. 자바빈의활용 [ 예제 12.1] jspbook\web-inf\java_sources\member.java 11/44
자바빈생성및사용을위한액션태그 2. 자바빈의활용 회원정보데이터들을자바빈객체에담아서그객체로부터값을꺼내와보여주는일반적인 JSP 코드 <% Member member = new Member(); member.setid(request.getparameter("id")); member.setname(request.getparameter("name"));... %> 이름 - <%= member.getname() %>, 아이디 - <%= member.getid()%> 위와같이자바빈객체에데이터를할당하는작업및데이터를얻어오는작업을일일이 Java 코딩으로해결하는것이다소귀찮을수있다. 12/44
2. 자바빈의활용 자바빈생성및사용을위한액션태그 자바빈관련액션태그 <jsp:usebean> <jsp:setproperty> <jsp:getproperty> <jsp:usebean> 액션태그 JSP 페이지에서사용할자바빈객체를생성해주는역할을한다. 용법 <jsp:usebean id="[ 자바빈이름 ] class="[ 자바빈클래스이름 ] scope="[ 범위 ] /> id - 새롭게생성하는자바빈객체의이름을명시한다. class - 패키지이름을포함한자바빈클래스의완전한이름을명시한다. scope - 자바빈객체가속성으로서저장될영역 (Scope) 을지정한다. page, request, session, application 중하나를값으로갖는다. 기본값은 page 이다. 13/44
2. 자바빈의활용 자바빈생성및사용을위한액션태그 <jsp:usebean> 액션태그 코딩예 <jsp:usebean id="member" class="thinkonweb.bean.member" scope="request"/> 주의할점 id 속성에서지정한이름에대한객체가해당영역에이미저장이되어있다면객체를새로생성하지않고이미저장되어있는기존객체를그대로사용한다 위의코드가내부적으로수행되는모습 thinkonweb.bean.member member = (thinkonweb.bean.member)request.getattribute("member"); if ( member == null ) { member = new thinkonweb.bean.member(); request.setattribute("member", member); 14/44
자바빈생성및사용을위한액션태그 <jsp:usebean> 액션태그사용예제 2. 자바빈의활용 [ 예제 12.2-1] jspbook\ch12\makebean.jsp 01 02 03 04 05 06 07 08 09 10 11 <%@ page contenttype="text/html;charset=utf-8" %> <%@ page import="java.util.date" %> <jsp:usebean id="member" class="thinkonweb.bean.member" scope="request" /> <% member.setid("200910231"); member.setname(" 홍길동 "); member.setpassword("112233"); member.setemail("hong@aaa.bbb.com"); member.setregisterdate(new Date()); %> <jsp:forward page="usebean.jsp" /> 15/44
01 02 03 04 05 06 07 08 09 10 11 12 자바빈생성및사용을위한액션태그 <jsp:usebean> 액션태그사용예제 ( 계속 ) 2. 자바빈의활용 [ 예제 12.2-2] jspbook\ch12\usebean.jsp <%@ page contenttype="text/html;charset=utf-8" %> <jsp:usebean id="member" class="thinkonweb.bean.member" scope="request" /> <html> <head><title> 자바빈객체사용 </title></head> <body> <%= member.getname() %> (<%= member.getid() %>) 회원님안녕하세요.<br/> 당신의이메일은 <%= member.getemail() %> 입니다. <br/> 당신의가입날짜는 <%= member.getregisterdate() %> 입니다. </body> </html> 16/44
자바빈생성및사용을위한액션태그 <jsp:usebean> 액션태그사용예제 ( 계속 ) makebean.jsp 실행없이 usebean.jsp 를곧바로실행한모습 2. 자바빈의활용 member 객체를새롭게생성함 17/44
자바빈생성및사용을위한액션태그 2. 자바빈의활용 <jsp:usebean> 액션태그에서 class 속성대신 type 속성사용 <jsp:usebean id="member" type="thinkonweb.bean.member" scope="request"/> 지정한영역에이미 id 에지정한이름의객체가존재한다고가정함 만약존재하지않을경우새로 thinkonweb.bean.member 객체를생성하지않고에러를발생시킨다. 위의코드가내부적으로수행되는모습 thinkonweb.bean.member member = (thinkonweb.bean.member)request.getattribute("member"); if ( member == null ) { // HTTP 응답코드 500 에러를발생! 18/44
자바빈생성및사용을위한액션태그 2. 자바빈의활용 <jsp:usebean> 액션태그에서 class 속성대신 type 속성사용예제 [ 예제 12.3] jspbook\ch12\usebean2.jsp 01 02 03 04 05 06 07 08 09 10 11 12 <%@ page contenttype="text/html;charset=utf-8" %> <jsp:usebean id="member" type="thinkonweb.bean.member" scope="request" /> <html> <head><title> 자바빈객체사용 </title></head> <body> <%= member.getname() %> (<%= member.getid() %>) 회원님안녕하세요.<br/> 당신의이메일은 <%= member.getemail() %> 입니다. <br/> 당신의가입날짜는 <%= member.getregisterdate() %> 입니다. </body> </html> 19/44
자바빈프로퍼티접근을위한액션태그 <jsp:setproperty> 액션태그 이미생성되어있는자바빈객체의프로퍼티값을지정한다. 용법 2. 자바빈의활용 <jsp:setproperty name="[ 자바빈이름 ]" property="[ 프로퍼티이름 ]" value="[ 값 ]" /> 사용예 name - 프로퍼티의값을지정할자바빈객체이름. <jsp:usebean> 액션태그의 id 속성에서지정한값과동일한값이지정된다. property - 값을지정할프로퍼티이름 value - 프로퍼티값. 표현식사용이가능하다. <jsp:usebean id="member" class="thinkonweb.bean.member" scope="request" /> <jsp:setproperty name="member" property="id" value="101010 /> <jsp:setproperty name="member" property="name" value=" 홍길동 /> 20/44
01 02 03 04 05 06 07 08 09 10 자바빈프로퍼티접근을위한액션태그 2. 자바빈의활용 <jsp:setproperty> 액션태그의 value 속성대신 param 속성사용 request 기본객체가간직하고있는파라미터값을자바빈객체의프로퍼티값으로지정할때사용 <jsp:setproperty> 액션태그의 param 속성사용예제 11 </body> 12 21/44 </html> <jsp:setproperty name="member" property="id" param="id"/> <%@ page contenttype="text/html;charset=utf-8" %> <html> <head><title> 간단한폼 </title></head> <body> <form action="parameterbean.jsp" method="get"> 아이디 : <input type="text" name="id"><br/> 이름 : <input type="text" name="name"><br/> <input type="submit" value=" 전송 "> </form> [ 예제 12.4-1] jspbook\ch12\simpleform.jsp
01 02 03 04 05 06 07 08 09 10 11 12 자바빈프로퍼티접근을위한액션태그 <jsp:setproperty> 액션태그의 param 속성사용예제 <%@ page contenttype="text/html;charset=utf-8" %> <% request.setcharacterencoding("utf-8"); %> <jsp:usebean id="member" class="thinkonweb.bean.member" /> <jsp:setproperty name="member" property="id" param="id" /> <jsp:setproperty name="member" property="name" param="name" /> 자바빈처리완료 <br/> 아이디 : <%= member.getid() %><br/> 이름 : <%= member.getname() %> </body> </html> 2. 자바빈의활용 [ 예제 12.4-2] jspbook\ch12\parameterbean.jsp 22/44
자바빈프로퍼티접근을위한액션태그 <jsp:setproperty> 액션태그의 param 속성사용예제 2. 자바빈의활용 [Note] 문자열외의타입을지닌프로퍼티처리 만약자바빈프로퍼티타입이문자열이아닌 int 라고가정해보자. 이경우파라미터로입력된값이 "10" 이라는문자열이라면이것은 int 타입으로자동으로변환되어정수인 10 이저장된다. 즉, <jsp:setproperty> 액션태그는프로퍼티타입에따라서알맞게그값을처리하는좋은기능을지닌다. double 또는 float 도마찬가지이다. 23/44
자바빈프로퍼티접근을위한액션태그 2. 자바빈의활용 만약사용자입력폼에서입력받는파라미터데이터가많고이에관한자바빈객체프로퍼티도같은이름으로모두설정되어있을때코딩방법 <jsp:usebean id="member" class="thinkonweb.bean.member" scope="request" /> <jsp:setproperty name="member" property="id" param="id"/> <jsp:setproperty name="member" property="password" param="password"/> <jsp:setproperty name="member" property="name" param="name"/> <jsp:setproperty name="member" property="email" param="email"/> <jsp:setproperty> 액션태그의 property 속성값으로 * 을사용한축약된코딩방법 <jsp:usebean id="member" class="thinkonweb.bean.member" scope="request"/> <jsp:setproperty name="member" property="*"/> 유의할점 각각의파라미터이름이자바빈객체의프로퍼티이름과대소문자까지정확하게같아야한다. 24/44
자바빈프로퍼티접근을위한액션태그 <jsp:getproperty> 액션태그 자바빈객체의프로퍼티값을가지고올때사용 용법 사용예 2. 자바빈의활용 <jsp:getproperty name="[ 자바빈이름 ]" property="[ 프로퍼티이름 ]"/> name - <jsp:usebean> 액션태그의 id 속성에서지정한값과동일한값이지정된다. property - 값을가져올프로퍼티이름 <jsp:getproperty name="member" property="name"/> 위의코드는수행된후가져온값을바로출력한다. 25/44
자바빈프로퍼티접근을위한액션태그 <jsp:getproperty> 액션태그사용예제 2. 자바빈의활용 [ 예제 12.5-1] jspbook\ch12\registerform.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 <%@ page contenttype="text/html;charset=utf-8" %> <html> <head><title> 회원가입입력폼 </title></head> <body> <form action="<%= request.getcontextpath() %>/ch12/register.jsp" method="post"> <table border="1" cellpadding="0" cellspacing="0"> <tr> <td> 아이디 </td> <td><input type="text" name="id" size="15"></td> <td> 비밀번호 </td> <td><input type="password" name="password" size="10"></td> </tr> 26/44
자바빈프로퍼티접근을위한액션태그 <jsp:getproperty> 액션태그사용예제 ( 계속 ) 14 <tr> 15 <td> 이름 </td> 16 <td colspan="3"><input type="text" name="name" size="15"></td> 17 </tr> 18 <td> 이메일 </td> 19 <td colspan="3"><input type="text" name="email" size="30"></td> 20 </tr> 21 <tr> 22 <td colspan="4" align="center"> 23 <input type="submit" value=" 회원가입 "> 24 </td> 25 </tr> 26 </table> 27 </form> 28 </body> 29 </html> 2. 자바빈의활용 [ 예제 12.5-1] jspbook\ch12\registerform.jsp 27/44
자바빈프로퍼티접근을위한액션태그 <jsp:getproperty> 액션태그사용예제 ( 계속 ) 2. 자바빈의활용 [ 예제 12.5-2] jspbook\ch12\register.jsp 01 <%@ page contenttype="text/html;charset=utf-8" %> 02 <%@ page import="java.util.date" %> 03 <% 04 request.setcharacterencoding("utf-8"); 05 %> 06 <jsp:usebean id="member" class="thinkonweb.bean.member" /> 07 <jsp:setproperty name="member" property="*" /> 08 <jsp:setproperty name="member" property="registerdate" value="<%= new Date() %>" /> 09 <html> 10 <head><title> 가입처리 </title></head> 11 <body> 12 회원가입처리완료 <br/> 13 <table width="400" border="1" cellpadding="0" cellspacing="0"> 14 <tr> 15 <td> 아이디 </td> 16 <td><jsp:getproperty name="member" property="id" /></td> 17 </tr> 28/44 제12장
자바빈프로퍼티접근을위한액션태그 <jsp:getproperty> 액션태그사용예제 ( 계속 ) 2. 자바빈의활용 [ 예제 12.5-2] jspbook\ch12\register.jsp 18 <tr> 19 <td> 이름 </td> 20 <td><jsp:getproperty name="member" property="name" /></td> 21 </tr> 22 <td> 이메일 </td> 23 <td><jsp:getproperty name="member" property="email" /></td> 24 </tr> 25 <tr> 26 <td> 가입일시 </td> 27 <td><jsp:getproperty name="member" property="registerdate" /></td> 28 </tr> 29 </table> 30 </body> 31 </html> 29/44
객체직렬화 (Serialization) 3. 객체직렬화와자바빈저장 소프트웨어객체를재구조화하여서스트림 (Stream) 을통하여읽고쓸수있도록만드는과정 데이터베이스의사용없이객체를하드디스크에저장하거나네트워크로전송하기위한기법 객체지향적데이터관리 객체직렬화의이용 회원관리프로그램에서회원에대한정보를자바빈객체에담아내면그정보를데이터베이스에저장할필요가있다. 데이터베이스에대한학습을하지못한상태에서는객체직렬화를이용하여회원정보를영구적으로저장가능하다. 30/44 제 1 장
3. 객체직렬화와자바빈저장 객체직렬화 (Serialization) 와관련된클래스와메소드 객체를읽고쓰는스트림을지원하는 java.io 패키지에있는클래스 public class ObjectOutputStream extends OutputStream implements ObjectOutput, ObjectStreamConstants public class ObjectInputStream extends InputStream implements ObjectInput, ObjectStreamConstants 위클래스로부터생성자메소드를통하여객체를읽고쓸수있는스트림객체를만들면그객체에게다음의두메소드를호출하여원하는일을할수있다. public final void writeobject(object o)throws IOException public final Object readobject() throws OptionalDataException, ClassNotFoundException, IOException 31/44
3. 객체직렬화와자바빈저장 객체직렬화 (Serialization) 를사용한객체저장코드 try { Point p = new Point(1, 2); FileOutputStream fos = new FileOutputStream("point.ser"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeobject(p); oos.close(); catch(exception e) { System.out.println(e); 32/44
3. 객체직렬화와자바빈저장 객체직렬화 (Serialization) 를사용한객체읽기코드 try { FileInputStream fis = new FileInputStream("point.ser"); ObjectInputStream ois = new ObjectInputStream(fis); Object o = ois.readobject(); Point p = (Point) o; ois.close(); catch(exceptin e) { System.out.println(e); 33/44
3. 객체직렬화와자바빈저장 객체직렬화 (Serialization) 를사용하기위한자바빈객체구성 자바빈구현시에반드시 java.io.serializable 이라는인터페이스를구현 package thinkonweb.bean; import java.util.date; import java.io.serializable; public class Member implements Serializable { private String id; private String name; private String password; java.io.serializable 인터페이스를구현하는클래스가반드시구현해야할메소드는무엇? " 아무것도없다 " java.io.serializable 인터페이스는일종의마크 (Mark) 와같은역할을하는것으로서이것을구현하는클래스는직렬화기능을활용할수있다는마크를붙여주는일을담당 34/44
회원가입과회원정보저장기능구현 3. 객체직렬화와자바빈저장 [ 예제 12.6-1] jspbook\ch12\registerform2.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 <%@ page contenttype="text/html;charset=utf-8" %> <html> <head><title> 회원가입입력폼 </title></head> <body> <form action="<%= request.getcontextpath() %>/ch12/register2.jsp" method="post"> <table border="1" cellpadding="0" cellspacing="0"> <tr> <td> 아이디 </td> <td><input type="text" name="id" size="15"></td> <td> 비밀번호 </td> <td><input type="password" name="password" size="10"></td> </tr> 35/44
회원가입과회원정보저장기능구현 3. 객체직렬화와자바빈저장 [ 예제 12.6-1] jspbook\ch12\registerform2.jsp 14 15 16 17 18 19 202 1 22 23 24 25 26 27 28 29 <tr> <td> 이름 </td> <td colspan="3"><input type="text" name="name" size="15"></td> </tr> <td> 이메일 </td> <td colspan="3"><input type="text" name="email" size="30"></td> </tr> <tr> <td colspan="4" align="center"> <input type="submit" value=" 회원가입 "> </td> </tr> </table> </form> </body> </html> 36/44
회원가입과회원정보저장기능구현 3. 객체직렬화와자바빈저장 자바빈객체를저장할폴더생성 : ch12 폴더밑의 member 폴더 37/44
38/44 회원가입과회원정보저장기능구현 21 3. 객체직렬화와자바빈저장 [ 예제 12.6-2] jspbook\ch12\register2.jsp 01 <%@ page contenttype="text/html;charset=utf-8" %> 02 <%@ page import="java.util.date" %> 03 <%@ page import="java.io.*" %> 04 <% 05 request.setcharacterencoding("utf-8"); 06 %> 07 <jsp:usebean id="member" class="thinkonweb.bean.member" /> 08 <jsp:setproperty name="member" property="*" /> 09 <jsp:setproperty name="member" property="registerdate" value="<%= new Date() %>" /> 10 <% 11 member.setpassword(request.getparameter("password")); 12 String realpath = application.getrealpath("/ch12/member/member_"+member.getid()); 13 FileOutputStream fos = new FileOutputStream(realPath); 14 ObjectOutputStream oos = new ObjectOutputStream(fos); 15 oos.writeobject(member); 16 oos.close(); 17 %> 18 <html> 19 <head><title> 가입처리 </title></head> 20 <body> 회원가입처리완료 <br/>
회원가입과회원정보저장기능구현 3. 객체직렬화와자바빈저장 22 <table width="400" border="1" cellpadding="0" cellspacing="0"> 23 <tr> 24 <td> 아이디 </td> 25 <td><jsp:getproperty name="member" property="id" /></td> 26 </tr> 27 <tr> 28 <td> 이름 </td> 29 <td><jsp:getproperty name="member" property="name" /></td> 30 </tr> 31 <td> 이메일 </td> 32 <td><jsp:getproperty name="member" property="email" /></td> 33 </tr> 34 <tr> 35 <td> 가입일시 </td> 36 <td><jsp:getproperty name="member" property="registerdate" /></td> 37 </tr> 38 </table> 39 <a href="loginmember.jsp"> 로그인 </a> 40 </body> 41 </html> [ 예제 12.6-2] jspbook\ch12\register2.jsp 39/44
회원가입과회원정보저장기능구현 3. 객체직렬화와자바빈저장 회원가입시마다 member 폴더에저장된객체모습 40/44
3. 객체직렬화와자바빈저장 로그인기능구현 01 02 03 04 05 06 07 08 09 [ 예제 12.6-3] jspbook\ch12\loginmember.jsp <%@ page contenttype="text/html;charset=utf-8" %> <html> <head><title> 로그인 </title></head> <body> <form action="loginmemebrprocess.jsp" method="post"> ID : <input type="text" name="id"><br/> Password : <input type="password" name="pw"><br/> <input type="submit" value=" 전송 "> </body> </html> 41/44
20 42/44 21 로그인기능구현 3. 객체직렬화와자바빈저장 [ 예제 12.6-4] jspbook\ch12\loginmemberprocess.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14-15 16 17 18 <%@ page contenttype="text/html;charset=utf-8" %> <%@ page import="thinkonweb.bean.member" %> <%@ page import="java.io.*" %> <% String storedid = null; String storedpw = null; String id = request.getparameter("id"); String pw = request.getparameter("pw"); try { String realpath = application.getrealpath("/ch12/member/member_"+ id); FileInputStream fis = new FileInputStream(realPath); if (fis!= null) { ObjectInputStream ois = new ObjectInputStream(fis); thinkonweb.bean.member storedmember = (thinkonweb.bean.member)ois.readobject(); storedid = storedmember.getid(); storedpw = storedmember.getpassword(); ois.close(); 19 if (id.equals(storedid) && pw.equals(storedpw)) { // 아이디와패스워드모두일치 %> session.setattribute("success_login", id);
3. 객체직렬화와자바빈저장 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 로그인기능구현 [ 예제 12.6-4] jspbook\ch12\loginmemberprocess.jsp <html> <head><title> 로그인처리 </title></head> <body> 로그인에성공했습니다. <br/> </body> </html> <% else if (id.equals(storedid)) { // 패스워드불일치 %> <script> alert(" 패스워드가다릅니다."); history.go(-1); </script> <% else { // 아이디불일치 ( 아이디가다른경우패스워드는일치유무검사하지않음 ) %> <script> alert(" 일치하는 ID의회원정보가없습니다."); history.go(-1); </script> 43/44
3. 객체직렬화와자바빈저장 42 43 44 45 46 47 48 49 50 로그인기능구현 <% catch (Exception e) { %> <script> alert(" 일치하는 ID의회원정보가없습니다."); history.go(-1); </script> <% %> [ 예제 12.6-4] jspbook\ch12\loginmemberprocess.jsp 44/44