'2008/09/26'에 해당되는 글 1건
- 2008.09.26 로그인, 회원가입, 정보수정, 탈퇴 2
로그인, 회원가입, 정보수정, 탈퇴
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");
}
}
}
==========================================================================
아이디 제한 등 예외처리는 별도의 클래스를 만들어서 처리할 계획입니다.
==========================================================================
'수업 > Head First Servlets & JSP' 카테고리의 다른 글
[0923]jspBean, forward, include (0) | 2008.09.23 |
---|---|
Chap 1. 서블릿과 JSP는 어디에 쓰는 물건인고? (1) | 2008.09.17 |