자바(Java)/JAVA 2EE

로그인 페이지

본클라쓰 2009. 1. 15. 15:16

세션을 사용한 로그인 페이지

 

 

VO 자바빈(아이디, 패스워드, 이름, 등록일)

import java.sql.Timestamp;

 

public class LogonDB {
 private String id;
 private String passwd;
 private String name;
 private Timestamp reg_date;
 
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getPasswd() {
  return passwd;
 }
 public void setPasswd(String passwd) {
  this.passwd = passwd;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Timestamp getReg_date() {
  return reg_date;
 }
 public void setReg_date(Timestamp reg_date) {
  this.reg_date = reg_date;
 }
}

 

 

DAO 자바빈 

import java.sql.*;
import java.util.Vector;        /* 목록을 보기위한 벡터 클래스 사용*/

 

/*
 * 데이터베이스 관리
 */
public class LogonDBManager {

 

/*

 * 싱글턴 패턴을 사용한 인스턴스 생성

 */
 private static LogonDBManager instance = new LogonDBManager();
 
 public static LogonDBManager getInstance(){
  return instance;
 }

 

/*

 * 컨넥션 객체를 생성

 */ 
 protected static Connection getConnection() {
  Connection conn = null;
  
  try{
   String jdbc_url = "jdbc:mysql://localhost:3306/jspbeginner";
   String db_user = "user";
   String db_pass = "userpass";

 

   Class.forName("com.mysql.jdbc.Driver");
   conn=DriverManager.getConnection(jdbc_url, db_user, db_pass);

 
  }catch(Exception e){
   System.err.println(e.getMessage());
  }
  return conn;
 }
 
 /*
  * 데이터베이스의 목록 얻기
  */
 
public Vector<LogonDB> getList() throws Exception, NullPointerException {
  Vector<LogonDB> article_list = new Vector<LogonDB>();
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;

 

  try {
   conn = getConnection();

   pstmt = conn.prepareStatement("select * from member");
   rs = pstmt.executeQuery();

 

   while(rs.next()) {
    LogonDB article = new LogonDB();
    
    article.setId(rs.getString("id"));
    article.setPasswd(rs.getString("passwd"));
    article.setName(rs.getString("name"));
    article.setReg_date(rs.getTimestamp("reg_date"));

    article_list.addElement(article);
   }

  }catch(Exception e){
   e.printStackTrace();
  }finally {
   if(rs != null)try{ rs.close(); }catch(SQLException e){}
   if(pstmt != null)try{ pstmt.close(); }catch(SQLException e){}
   if(conn != null)try{ conn.close(); }catch(SQLException e){}
  }

  return article_list;
 }
 
 /*
  * 로그온(아이디, 패스워드) 확인 메소스
  */
 public int userCheck(String id, String passwd) throws Exception {
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;

  int result = -1; /* 기본값 -1 : 해당 아이디없음*/
  String dbpasswd="";
  
  try {
   conn = getConnection();
   
   pstmt = conn.prepareStatement("select passwd from member where id = ?");
   pstmt.setString(1, id);
   rs = pstmt.executeQuery();
   
   if(rs.next()) {
    dbpasswd = rs.getString("passwd");
    if(dbpasswd.equals(passwd)) { result = 1; } /* 인증성공*/
    else{ result = 0; } /* 인증실패 */
   }else {
    result = -1;
   }
   
  }catch(Exception e){
   e.printStackTrace();
  }finally{
   if(rs != null)try { rs.close(); }catch(SQLException e){}
   if(pstmt != null)try { pstmt.close(); }catch(SQLException e){}
   if(conn != null)try { conn.close(); }catch(SQLException e){}
  }
  
  return result;  
 }
 
 /*
  * 회원가입
  */
 
public void insertMember(LogonDB member) throws Exception {
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  
  try {
   conn = getConnection();
   String sql = "insert into member values (?, ?, ?, ?)";
   
   pstmt = conn.prepareStatement(sql);
   pstmt.setString(1, member.getId());
   pstmt.setString(2, member.getPasswd());
   pstmt.setString(3, member.getName());
   pstmt.setTimestamp(4, member.getReg_date());
   pstmt.executeUpdate();
  }catch(Exception e) {
   e.printStackTrace();
  }finally {
   if(pstmt != null)try { pstmt.close(); }catch(SQLException e){}
   if(conn != null)try {conn.close(); }catch(SQLException e){}
  }
 }
}

 

 

메인HTML

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<html>
<head>
<title> DIV 태그 태스트 </title>

<style type="text/css">    

   <!-- 스타일 시트 사용 -->
    body {
     font-size: 10pt;
        margin: 0;
        padiing: 10px;
        background-color: #ffffff;
    }
 
 #header {
  background-color: #ffffff;
  align: center;
  width: 100%;
  height: 70px;
 }
 #container {
  width: 100%;
  height: 500px;
 }
 #contents {
  float: right;
  background-color: #ccecf4;
  width: 800px;
  height: 500px;
 }
 
 #sidebar {
  float: left;
  background-color: #ddfff6;
  width: 200px;
  height: 500px;
 } 
    #footer {
        clear: both;
        background-color: #404962;
        height: 50px;
        width: 100%;
    }

</style>
</head>

<body>

    <div id="header"><center> <br><h2> 로 그 인 페 이 지 작 성</h2></center> </div>
    <div id="container">
     <div id="sidebar"> <%@ include file="LogonPage.jsp" %> </div>
        <div id="contents"> <br> 로그인 페이지 예제 작성 <br><br>
         테이블을 사용하지 않고 div태그를 사용</div>
    </div>
    <div id="footer"> <center><br> <h2>연 습</h2> </center></div>

</body>
</html> 

 

[ 메인 페이지 출력 화면 ]

 

[ 로그인 페이지(파라미터 입력 페이지) ]

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<html>
<head>
<title>로그온 페이지</title>
</head>
<body>
  <h2> 로그온 페이지 </h2>
 <form method="post" action="SessionLogon.jsp">
  아이디 <input type="text" name="id" maxlength="12"><br>
  패스워드<input type="password" name="passwd" maxlength="12"><br>
  <input type="submit" value="로그인">
  <input type="button" value="회원가입" onclick="location.href='insertForm.jsp'">
 </form>
 <form method="post" action="ListDisplay.jsp">
  <input type="submit" value="목록보기">
 </form>
</body>
</html> 

 

[ 세션을 이용한 로그인 페이지 ]

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="co.kim.*" %>   

<% request.setCharacterEncoding("euc-kr"); %>

<%
 String id=request.getParameter("id");
 String passwd=request.getParameter("passwd");
 
 LogonDBManager manager = LogonDBManager.getInstance();
 int check = manager.userCheck(id, passwd);
 
%>
<html>
<head>
</head>
<body>
<% 
 if(check==1) {
  session.setAttribute("id", id);
  %>
  <h2>로그인 성공</h2>
  <%
 }else if(check==0) {
  %><script type="text/javascript">
  alert("비밀번호 오류");
  </script><%
 }else {
  %><script>
  alert("아이디가 없습니다");
  </script><%
 }
%>
id 속성의 속성값은 <%=(String)session.getAttribute("id") %>입니다.
</body>
</html>

  

[ 회원가입을 위한 파라미터 입력 페이지 ]

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<html>
<head>
<title>회원가입 페이지</title>
</head>
<body>
 <h2> 회원 가입 </h2>
 <form method="post" action="insertMember.jsp">
  아이디 : <input type="text" name="id" maxlength="12"><br>
  패스워드: <input type="password" name="passwd" maxlength="12"><br>
  이름 : <input type="text" name="name" maxlength="12"><br>
  <input type="submit" value="입력 확인">
  <input type="reset" value="다시 입력">
 </form>
</body>
</html>

  

[ 회원 가입 페이지(입력받은 파라미터를 통해 데이터 베이스에 입력) ]

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
   
<% request.setCharacterEncoding("euc-kr"); %>

<%@ page import="co.kim.*"%>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>


<jsp:useBean id="member" class="co.kim.LogonDB">
 <jsp:setProperty property="id" name="member"/>
 <jsp:setProperty property="passwd" name="member"/>
 <jsp:setProperty property="name" name="member"/>
</jsp:useBean>
<%
 member.setReg_date(new Timestamp(System.currentTimeMillis()));

 LogonDBManager manager = LogonDBManager.getInstance();
 manager.insertMember(member);
%>

<a href="LogonPage.jsp"> 로그인 페이지 </a>

 

[ 데이터 베이스에 있는 회원의 목록을 보여주는 페이지 ]

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
   
<%@ page import="co.kim.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>

<%
 Vector<LogonDB> article_list = null;
 LogonDBManager manager = LogonDBManager.getInstance();
 article_list = manager.getList();
 
%>
</html>
<head>
<title>목록 보기 페이지</title>
</head>
<body>
 <table border="1" width="500">
  <tr>
   <th>아이디</th>
   <th>패스워드</th>
   <th>이름</th>
   <th>가입일</th>
  </tr>
  <%
  try {
   for(int i = 0 ; i < article_list.size() ; i++) {
    LogonDB article = article_list.elementAt(i);
    %>
    <tr>
     <td><%=article.getId()%></td>
     <td><%=article.getPasswd()%></td>
     <td><%=article.getName()%></td>
     <td><%=article.getReg_date()%></td>
    </tr><%
   } 
  }catch(Exception e){
   e.printStackTrace();
  }
  
  %>
</body>
</html>