세션을 사용한 로그인 페이지
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.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>
[ 메인 페이지 출력 화면 ]
[ 로그인 페이지(파라미터 입력 페이지) ]
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>
[ 회원 가입 페이지(입력받은 파라미터를 통해 데이터 베이스에 입력) ]
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>
'자바(Java) > JAVA 2EE' 카테고리의 다른 글
페이지 파라미터 확인 후 null 일때 기본값 지정하기 (0) | 2009.08.05 |
---|---|
인크루드 액션태그와 인크루드 디렉티브의 차이점 (0) | 2009.06.15 |
JSP 페이지 제어방법 (0) | 2009.01.11 |
JDBC를 사용한 데이터베이스 연결 (0) | 2009.01.08 |
request 객체를 이용한 헤더와 파라미터 출력 예제 (0) | 2008.12.22 |