2008. 9. 26. 16:16

로그인, 회원가입, 정보수정, 탈퇴

MVC 모델을 통한 회원가입에 대한 페이지들입니다.
전체가 참조하게 될 web.xml / MemberBean.java / MemberDAO.java 파일 입니다.
데이터베이스는 MYSQL을 사용하였고 서블릿은 TOMCAT 5.5 버전입니다.
======== web.xml ========================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
  <display-name>Welcome to Test0922</display-name>
  <description>
     Welcome to Test0922
  </description>
 <servlet>
  <servlet-name>login.jsp</servlet-name>
  <jsp-file>/member/login.jsp</jsp-file>
 </servlet>
 <servlet>
  <servlet-name>logout.jsp</servlet-name>
  <jsp-file>/member/logout.jsp</jsp-file>
 </servlet>
 <servlet>
  <servlet-name>welcome.jsp</servlet-name>
  <jsp-file>/member/welcome.jsp</jsp-file>
 </servlet> 
 <servlet>
  <servlet-name>LoginServlet</servlet-name>
  <servlet-class>member.control.LoginServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>JoinMemberServlet</servlet-name>
  <servlet-class>member.control.JoinMemberServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>modify.jsp</servlet-name>
  <jsp-file>/member/modify.jsp</jsp-file>
 </servlet>
 <servlet>
  <servlet-name>ModifyMemberServlet</servlet-name>
  <servlet-class>member.control.ModifyMemberServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>modifyok.jsp</servlet-name>
  <jsp-file>/member/modifyok.jsp</jsp-file>
 </servlet>
 <servlet>
  <servlet-name>modifyfail.jsp</servlet-name>
  <jsp-file>/member/modifyfail.jsp</jsp-file>
 </servlet>
 <servlet>
  <servlet-name>memberout.jsp</servlet-name>
  <jsp-file>/member/memberout.jsp</jsp-file>
 </servlet>
 <servlet>
  <servlet-name>OutMemberServlet</servlet-name>
  <servlet-class>member.control.OutMemberServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>outmemberok.jsp</servlet-name>
  <jsp-file>/member/outmemberok.jsp</jsp-file>
 </servlet>
 <servlet>
  <servlet-name>outmemberfail.jsp</servlet-name>
  <jsp-file>/member/outmemberfail.jsp</jsp-file>
 </servlet> 
 <servlet-mapping>
  <servlet-name>login.jsp</servlet-name>
  <url-pattern>/login.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>logout.jsp</servlet-name>
  <url-pattern>/logout.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>welcome.jsp</servlet-name>
  <url-pattern>/welcome.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>LoginServlet</servlet-name>
  <url-pattern>/login.do</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>JoinMemberServlet</servlet-name>
  <url-pattern>/joinmember.do</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>modify.jsp</servlet-name>
  <url-pattern>/modify.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>ModifyMemberServlet</servlet-name>
  <url-pattern>/modifymember.do</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>modifyok.jsp</servlet-name>
  <url-pattern>/modifyok.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>modifyfail.jsp</servlet-name>
  <url-pattern>/modifyfail.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>memberout.jsp</servlet-name>
  <url-pattern>/memberout.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>OutMemberServlet</servlet-name>
  <url-pattern>/outmember.do</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>outmemberok.jsp</servlet-name>
  <url-pattern>/outmemberok.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>outmemberfail.jsp</servlet-name>
  <url-pattern>/outmemberfail.jsp</url-pattern>
 </servlet-mapping> 
</web-app>
==========================================================================
회원가입 항목인 필드들을 정의 하였습니다.
======== MemberBean.java ================================================
package member.model;
public class MemberBean {
 protected String num;
 protected String name;
 protected String id;
 protected String passwd;
 protected String tel;
 protected String add;
 public String getAddr() {
  return add;
 }
 public void setAddr(String add) {
  this.add = add;
 }
 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 getNum() {
  return num;
 }
 public void setNum(String num) {
  this.num = num;
 }
 public String getPasswd() {
  return passwd;
 }
 public void setPasswd(String passwd) {
  this.passwd = passwd;
 }
 public String getTel() {
  return tel;
 }
 public void setTel(String tel) {
  this.tel = tel;
 } 
}
==========================================================================
데이터베이스 연결 및 처리부분에 대한 DAO 파일입니다.
======== MemberDAO.java ================================================
package member.model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MemberDAO {
  public MemberBean memberInfo(String id){
  MemberBean temp=null;
  String sql="select * from member where id=?";
  PreparedStatement  pstmt=null;
  ResultSet rest=null;
  try{
   pstmt=conn.prepareStatement(sql);
   pstmt.setString(1,id);
   rest=pstmt.executeQuery();
   if(rest.next()){
    temp=new MemberBean();
    temp.setNum(rest.getString(1));
    temp.setName(rest.getString(2));
    temp.setId(rest.getString(3));
    temp.setPasswd(rest.getString(4));
    temp.setTel(rest.getString(5));
    temp.setAddr(rest.getString(6));
   }
  }catch (Exception e) {
   e.printStackTrace();
  }
  return temp;
 }
 public boolean memberJoin(MemberBean mb){
  PreparedStatement pstmt=null;
  String sql3="insert into member values(?,?,?,?,?,?);";
  try {
   pstmt=conn.prepareStatement(sql3);
   pstmt.setString(1, mb.getNum());
   pstmt.setString(2, mb.getName());
   pstmt.setString(3, mb.getId());
   pstmt.setString(4, mb.getPasswd());
   pstmt.setString(5, mb.getTel());
   pstmt.setString(6, mb.getAddr());
   pstmt.executeUpdate();
   return true;
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return false;
 }
 public boolean memberModify(MemberBean mb){
  PreparedStatement pstmt=null;
  String sql4="update member set name=?, id=?, passwd=?, tel=?, addr=? where num=?;";
  try {
   pstmt=conn.prepareStatement(sql4);   
   pstmt.setString(1, mb.getName());
   pstmt.setString(2, mb.getId());
   pstmt.setString(3, mb.getPasswd());
   pstmt.setString(4, mb.getTel());
   pstmt.setString(5, mb.getAddr());
   pstmt.setString(6, mb.getNum());
   pstmt.executeUpdate();
   return true;
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return false;
 }
 public boolean outmember(MemberBean mb){
  PreparedStatement pstmt=null;
  String sql4="delete from member where num=?;";
  try {
   pstmt=conn.prepareStatement(sql4);   
   pstmt.setString(1, mb.getName());
   pstmt.setString(2, mb.getId());
   pstmt.setString(3, mb.getPasswd());
   pstmt.setString(4, mb.getTel());
   pstmt.setString(5, mb.getAddr());
   pstmt.setString(6, mb.getNum());
   pstmt.executeUpdate();
   return true;
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return false;
 }
 public boolean loginCheck(String id,String passwd){
  String sql1="select * from member  where  id='kim123'";
  sql1="select * from member  where  id='"+id+"'   and  passwd='"+passwd+"'";
    String sql2="select * from member  where  id=? and passwd=?";
  //
    PreparedStatement  pstmt=null;
    ResultSet  rest=null;
    try {
   pstmt=conn.prepareStatement(sql2);
   pstmt.setString(1, id);
   pstmt.setString(2, passwd);
   rest=pstmt.executeQuery();
   if(rest.next())
   return true;
  
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return false;
 } 
 Connection conn;
 public MemberDAO(){
  //DB에 접속하는 부분
  //driver load
  //connection
  try {
   Class.forName("com.mysql.jdbc.Driver");
   String url="jdbc:mysql://localhost:3306/mydb";
   String user="root";
   String passwd="admin";
   conn=DriverManager.getConnection(url, user, passwd);
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }// properties file에서 선택적으로 가져올수 있도록
            // 톰캣의web.xml에 애초에 설정하고 들어가는 방법
                                    // 현재app의 web.xml설정
  catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 } 
}
==========================================================================
로그인 페이지입니다.
======== index.jsp ========================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>환영합니다.</title>
</head>
<body>
 환영합니다. <%@include file="member/login.jsp" %>
</body>
</html>
======== login.jsp ========================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title> Login JSP</title>
</head>
<body>
 <form action="login.do"  method="post">
 아이디:<input type="text"  name="id"><br>
 암  호:<input  type="password"  name="passwd"><br>
 <input type="submit" value="로그인">
 <input type="reset" value="취소" >
 <%-- 회원가입 버튼으로 바꾸어야함 --%>
 </form>
 <form action="member/joinmember.jsp"  method="post">
 <input type="submit" value="회원가입">
 <%-- 회원가입 버튼으로 바꾸어야함 --%>
 </form> 
</body>
</html>
======== LoginServlet.java =================================================
package member.control;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import member.model.MemberBean;
import member.model.MemberDAO;

public class LoginServlet extends HttpServlet {
 public void doPost(HttpServletRequest req,HttpServletResponse res)throws IOException,ServletException{
  //  client로부터 받은 id,passwd가 존재하는지 확인
  String id= req.getParameter("id").trim();
  String passwd=req.getParameter("passwd").trim();
  //id,passwd는 null이 아니라는 전제  
  // MemberDAO 에 id,passwd를 전달해서 결과를 통보 받은후
   MemberDAO dao=new MemberDAO();
   //필요할때마다 커넥션을 만드는 것은 좋지 않은 방법
   boolean isMember=dao.loginCheck(id, passwd);
   if(isMember){
    //멤버의 데이타를 받아옴
    MemberBean loginMember=dao.memberInfo(id);
    if(loginMember==null){
     //???
    }else{
    //로그인상태에서 로그아웃할때까지 멤버데이타 값을 기억시키고
    HttpSession  session=  req.getSession(); 
    //필요하면 언제든지 사용할 수 있도록 유지
    session.setAttribute("loginMemberData", loginMember);    
    // welcome.jsp
    //login.do 에의해서 현재서블릿이 호출된 상태
    req.getRequestDispatcher("welcome.jsp").forward(req,res);
    }
   }else {
    //loginfaile.jsp
    res.sendRedirect("member/loginfail.jsp");    
   }  
 }//doPost() end
}//class end
======== loginok.jsp ===============================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>loginfail</title>
</head>
<body>
 loginfail
</body>
</html>
======== logout.jsp =======================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>logout</title>
</head>
<body>
 이용해 주셔서 감사합니다.<br>
 <%
  if(!session.isNew())session.invalidate();
 %>
</body>
</html>
==========================================================================
회원가입 페이지입니다.
======== joinmember.jsp ==================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>JOIN MEMBER JSP</title>
</head>
<body>
 JOIN MEMBER<br> 
 <form action="../joinmember.do"  method="post">
  번호:<input type="text"  name="num"><br>
  이름:<input type="text"  name="name"><br>
  아이디:<input type="text"  name="id"><br>
  암  호:<input  type="password"  name="passwd"><br>  
  연락처:<input type="text"  name="tel"><br>
  주소:<input type="text"  name="addr"><br>
  <input type="submit" value="회원가입">
  <input type="reset" value="취소" >  
 </form> 
</body>
</html>
======== JoinMemberServlet.jsp ===========================================
package member.control;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import member.model.MemberBean;
import member.model.MemberDAO;

public class JoinMemberServlet extends HttpServlet{
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
  // joinmember.jsp 값을 받는다
  MemberDAO dao=new MemberDAO();
  MemberBean mb=new MemberBean();
  mb.setNum(req.getParameter("num"));
  mb.setName(req.getParameter("name"));
  mb.setId(req.getParameter("id"));
  mb.setPasswd(req.getParameter("passwd"));
  mb.setTel(req.getParameter("tel"));
  mb.setAddr(req.getParameter("addr"));
  boolean isSuccess=dao.memberJoin(mb);
  if(isSuccess){
   HttpSession session=req.getSession();
   session.setAttribute("loginMemberData", mb);
   req.getRequestDispatcher("welcome.jsp").forward(req,res);
  }
  else {
   res.sendRedirect("member/loginfail.jsp");
  }
 } 
}
======== welcome.jsp ====================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page import="member.model.MemberBean"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Welcome jsp</title>
 <script type="text/javascript" language="javascript">
    function logout(){
     document.location="logout.jsp";
    }
 </script>
 <script type="text/javascript" language="javascript">
    function modify(){
     document.location="modify.jsp";
    }
 </script>
 <script type="text/javascript" language="javascript">
    function memberout(){
     document.location="memberout.jsp";
    }
 </script>
</head>
<body>
Welcome<br>
 <%
 MemberBean loginMember = new MemberBean();
 session = request.getSession();
 
 loginMember=
   (MemberBean)session.getAttribute("loginMemberData");
 %>

 <%=loginMember.getName() %>님 환영합니다.<br> 
 <input type="button" value="정보수정"  onclick="modify()"> 
 <input type="button" value="로그아웃"  onclick="logout()">
 <input type="button" value="회원탈퇴"  onclick="memberout()">
</body>
</html>
==========================================================================
정보수정 페이지 입니다.
======== modify.jsp =======================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page import="member.model.MemberBean"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Modify JSP</title>
</head>
<body>
 정보 수정
 <%
 session = request.getSession(); 
 MemberBean mb = new MemberBean();
 mb = (MemberBean)session.getAttribute("loginMemberData");
 %>
 <form action="modifymember.do"  method="post">
  번호:<%=mb.getNum() %><br>
  이름:<input type="text"  name="name" value = <%=mb.getName() %>><br>
  아이디:<input type="text"  name="id" value = <%=mb.getId() %>><br>
  암  호:<input  type="password"  name="passwd" value = <%=mb.getPasswd() %>><br>  
  연락처:<input type="text"  name="tel" value = <%=mb.getTel() %>><br>
  주소:<input type="text"  name="addr" value = <%=mb.getAddr() %>><br>
  <input type="submit" value="완료">
  <input type="reset" value="취소" >  
 </form> 
</body>
</html>
======== ModifyMemberServlet.java =======================================
package member.control;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import member.model.MemberBean;
import member.model.MemberDAO;

public class ModifyMemberServlet extends HttpServlet{
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
  MemberDAO dao=new MemberDAO();
  MemberBean mb=new MemberBean();
  mb.setNum(req.getParameter("num"));
  mb.setName(req.getParameter("name"));
  mb.setId(req.getParameter("id"));
  mb.setPasswd(req.getParameter("passwd"));
  mb.setTel(req.getParameter("tel"));
  mb.setAddr(req.getParameter("addr"));
  boolean isSuccess=dao.memberModify(mb);
  if(isSuccess){
   HttpSession  session=  req.getSession();
   session.setAttribute("loginMemberData", mb);
   req.getRequestDispatcher("modifyok.jsp").forward(req,res);
  }else{   
   // 센드 리다이렉트로 처리한다.
   res.sendRedirect("modifyfail.jsp");
  }   
 } 
}
=== modifyok.jsp & modifyfail.jsp 는 텍스트 파일이라 올리지 않습니다. ========
==========================================================================
회원탈퇴페이지입니다.
======== memberout.jsp ==================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page import="member.model.MemberDAO"%>
<%@page import="member.model.MemberBean"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Memberout JSP</title>
</head>
<body>
 아래의 정보를 삭제하시겠습니까?
 <% 
 MemberBean mb=(MemberBean)session.getAttribute("loginMemberData"); 
 %>
 <form action="outmember.do"  method="post">
  번호:<%=mb.getNum() %><br>
  이름:<%=mb.getName() %><br>
  아이디:<%=mb.getId() %><br>
  암  호:<%=mb.getPasswd() %><br>  
  연락처:<%=mb.getTel() %><br>
  주소:<%=mb.getAddr() %><br>
  <input type="submit" value="회원탈퇴">
 </form>
</body>
</html>
======== OutMemberServlet.jsp ============================================
package member.control;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import member.model.MemberBean;
import member.model.MemberDAO;

public class OutMemberServlet extends HttpServlet {
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
  MemberDAO dao=new MemberDAO();
  MemberBean mb=new MemberBean();
  mb.setNum(req.getParameter("num"));
  mb.setName(req.getParameter("name"));
  mb.setId(req.getParameter("id"));
  mb.setPasswd(req.getParameter("passwd"));
  mb.setTel(req.getParameter("tel"));
  mb.setAddr(req.getParameter("addr"));
  boolean isSuccess=dao.memberModify(mb);
  if(isSuccess){
   HttpSession  session=  req.getSession();
   session.setAttribute("loginMemberData", mb);
   req.getRequestDispatcher("outmemberok.jsp").forward(req,res);
  }else{   
   // 센드 리다이렉트로 처리한다.
   res.sendRedirect("outmemberfail.jsp");
  }
 }
}
==========================================================================
아이디 제한 등 예외처리는 별도의 클래스를 만들어서 처리할 계획입니다.
==========================================================================

2008. 9. 23. 15:54

[0923]jspBean, forward, include

멤버 필드에 있는 값은 초기화 되어 사용된다.
boolean은 false 값으로 상수형은 0값으로 문자형은 null 값으로

아래의 예제는 클라이언트가 페이지를 호출할 때 값이 어떻게 변하는지 보여준다.
init() 메서드의 a 값은 처음에 한번 불려지는데 이 값은 static한 멤버필드가 되어
은행의 이율처럼 인스턴스가 생성되기 전부터 고정적인 상수 값을 가지게 되며,
b값은 클라이언트가 브라우져를 호출할때마다 값이 갱신되며,
c값은 클라이언트가 어떤 값을 입력할때마다 그 값이 변경된다.
======== mem.jsp ========================================================
======== http://localhost:9090/Test0923/mem.jsp?c=10======================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 <%!
 int a;
 int b;
 %>
 <%!
 @Override
 public void init(){
  a++;  
 }
 %>
 <%
 int c=Integer.parseInt(request.getParameter("c"));
 b++;
 %>
 <%="a = "+a%><br>
 <%="b = "+b%><br>
 <%="c = "+c%><br>
</body>
</html>
======== foo.MemberFieldTestServlet.java =================================
= http://localhost:9090/Test0923/servlet/foo.MemberFieldTestServlet.jsp?c=50 =
package foo;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MemberFieldTestServlet extends HttpServlet{
 int a;
 int b;
 @Override
 protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
  b++;
  int c=0;
  c=Integer.parseInt(req.getParameter("c"));
  System.err.println("doGet() a :"+a+"<br>");
  System.err.println("doGet() b :"+b+"<br>");
  System.err.println("doGet() c :"+c+"<br>");
  PrintWriter out=res.getWriter();
  out.println("doGet() a :"+a+"<br>");
  out.println("doGet() b :"+b+"<br>");
  out.println("doGet() c :"+c+"<br>");
 }// doGet end
 @Override
 public void init() throws ServletException {
  a++;
  System.err.println("init :"+a);
 }// init() end
}// class end
=========================================================================
아래 예제는 에러가 발생했을때 에러페이지로 이동하라는 소스가 담겨 있다.
======== test1.jsp ========================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@page errorPage="errPage.jsp" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 <%
 int a=4/0;
 %>
</body>
</html>
======== errPage.jsp ====================================================
=== 주의 사항 : 에러페이지의 내용이 너무 짧으면 에러 처리가 안 될 수도 있다.=
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    <%@page isErrorPage="true" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 Error Handling Page<br>
 <%
 out.print("Exception : "+exception.getClass().getName()+"<br>");
 %>
</body>
</html>
=========================================================================
useBean을 이용한 예와 그렇지 않은 경우 소스를 비교해 본다.
======== test2.jsp ========================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page import="mem.MemberBean"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 <%
 MemberBean mem1=new MemberBean();
 session.setAttribute("mem1",mem1);
 mem1.setName("이강국");
 out.print(mem1.getName()+"<br>");
 %>
 <jsp:useBean id="mem2" class="mem.MemberBean" scope="session" />
 <jsp:setProperty name="mem2" property="name" value="김강국" />
 <jsp:getProperty name="mem2" property="name"/><br>
</body>
</html>
======== mem.MemberBean ===============================================
package mem;
public class MemberBean {
 protected String num;
 protected String name;
 protected String id;
 protected String passwd;
 protected String tel;
 protected String add;
 public String getAdd() {
  return add;
 }
 public void setAdd(String add) {
  this.add = add;
 }
 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 getNum() {
  return num;
 }
 public void setNum(String num) {
  this.num = num;
 }
 public String getPasswd() {
  return passwd;
 }
 public void setPasswd(String passwd) {
  this.passwd = passwd;
 }
 public String getTel() {
  return tel;
 }
 public void setTel(String tel) {
  this.tel = tel;
 }
}
=========================================================================
자바빈을 이용한 두번째 예제 폼에서 데이터를 입력 받아 출력
======== test3call.jsp ====================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 <form action="test3.jsp">
 번호 : <input type="text" name="num"><br>
 이름 : <input type="text" name="name"><br>
 아이디 : <input type="text" name="id"><br>
 비밀번호 : <input type="password" name="passwd"><br>
 연락처 : <input type="text" name="tel"><br>
 주소 : <input type="text" name="add"><br>
 <input type="submit" value="전송">
 <input type="reset" value="취소">
 </form>
</body>
</html>
======== test3.jsp ========================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page import="mem.MemberBean"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 <%
 MemberBean mem11=new MemberBean();
 mem11.setNum(request.getParameter("num").trim());
 mem11.setName(request.getParameter("name").trim());
 mem11.setId(request.getParameter("id").trim());
 mem11.setPasswd(request.getParameter("passwd").trim());
 mem11.setTel(request.getParameter("tel").trim());
 mem11.setAdd(request.getParameter("add").trim());
 %>
 <jsp:useBean id="mem22" class="mem.MemberBean"/>
 <jsp:setProperty name="mem22" property="*"/>
 <jsp:getProperty name="mem22" property="name"/><br>
 mem22.getAdd()==<%=mem22.getAdd()%><br>
 mem11.getAdd()==<%=mem11.getAdd()%><br>
</body>
</html>
=========================================================================
include와 forward를 이용한 정적, 동적 데이터 호출에 관한 예
test4include.jsp 와 test4_1include.jsp를 호출했을때의 차이점
include "test4_1include.jsp" 호출이 되지 않는다. ㅡㅡ;
forward를 호출했을 경우 앞의 include는 무시된다.
======== test4.jsp ========================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 test4.jsp start<br>
 <%
 int c=50;
 %>
 <%@include file="test4include.jsp" %>
 test4.jsp end<br>
 동적으로 부를수 있는가?<br>
 <jsp:include flush="true" page="test4_1include.jsp" >
 <jsp:param name="d" value="이강국" />
 </jsp:include>
</body>
</html>
======== test4include.jsp =================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <%
 int a=40;
 int b=a*c;
 out.print(a+"*"+c+"="+b);
 %>
======== test4_1include.jsp ===============================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <%
 int c=3;
 int a=40;
 int b=a*c;
 request.setCharacterEncoding("EUC=KR");
 out.print(a+"*"+c+"="+b+request.getParameter("d"));
 %>
======== test4_2.jsp ======================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 forward file
</body>
</html>
======== test4forward.jsp ================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
 test4.jsp start<br>
 <%
 int c=50;
 %>
 <%@include file="test4include.jsp" %>
 test4.jsp end<br>
 동적으로 부를수 있는가?<br>
 <jsp:forward page="test4forward.jsp"/>
</body>
</html>
=========================================================================

2008. 9. 17. 17:52

Chap 1. 서블릿과 JSP는 어디에 쓰는 물건인고?

학습 목표 : GET, POST 등 HTTP 메소드에 대해 장점과 기능을 알아봅시다.

GET 는 서버로부터 뭔가를 돌려 받는다고 생각하시면 됩니다.
GET 메소드는 폼 데이터를 URL 뒤에 추가합니다.
POST는 서버에게 자원을 요청할 때 필요한 정보를 함께 넘겨줍니다.
POST 메소드는 요청의 몸체(body)에 폼 데이터를 포함합니다.

사용자 삽입 이미지
사용자 삽입 이미지

MINE 타입은 브라우저에게 어떤 종류의 데이터를 받을 것이라는 정보를 미리 알려주어, 브라우저가 데이터를 어떻게 다룰지 준비하도록 합니다.


'수업 > Head First Servlets & JSP' 카테고리의 다른 글

로그인, 회원가입, 정보수정, 탈퇴  (2) 2008.09.26
[0923]jspBean, forward, include  (0) 2008.09.23