티스토리 뷰
로그인/회원가입/조회
MemberDao.java
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import model.Member;
public class MemberDao {
private static MemberDao instance;
public static MemberDao getInstance() {
if (instance == null)
instance = new MemberDao();
return instance;
}
private Connection conn;
private static String URL = "jdbc:mysql://localhost:3306/board";
private static String USERNAME = "root";
private static String PASSWORD = "mysql";
private MemberDao() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("클래스 적재 실패");
//e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("DB연결 실패");
//e.printStackTrace();
}
}
// 회원정보셋 데이터 추가하기
public void insertMember(Member member) {
// 미완성의 쿼리문을 준비
String sql = "insert into member values(?,?,?,?)";
// 구문객체 참조변수 준비
PreparedStatement pstmt = null;
try {
// conn객체에 미완성 쿼리문 준비해둔걸 던져서 구문객체 획득
pstmt = conn.prepareStatement(sql);
// 구문객체에 ? 채우기
pstmt.setString(1, member.getId());
pstmt.setString(2, member.getPw());
pstmt.setString(3, member.getName());
pstmt.setString(4, member.getEmail());
// 구문객체 날리기!!
pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 구문객체 닫기
try {
if (pstmt != null && !pstmt.isClosed())
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void updateMember(Member member) {
// 미완성의 쿼리문을 준비
String sql = "update member set pw = ?, name=?, email=? where id = ?";
// 구문객체 참조변수 준비
PreparedStatement pstmt = null;
// conn객체에 미완성 쿼리문 준비해둔걸 던져서 구문객체 획득
try {
pstmt = conn.prepareStatement(sql);
// 구문객체에 ? 채우기
pstmt.setString(4, member.getId());
pstmt.setString(1, member.getPw());
pstmt.setString(2, member.getName());
pstmt.setString(3, member.getEmail());
// 구문객체 날리기!!
pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 구문객체 닫아주기
try {
if (pstmt != null && !pstmt.isClosed())
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// id에 해당하는 멤버 조회
public Member selectOne(String id) {
// sql문, 구문객체, 리턴할 객체, 결과셋 참조변수들 준비
String sql = "select * from member where id = ?";
PreparedStatement pstmt = null;
Member member = null;
ResultSet rs = null;
try {
// 구문객체 획득
pstmt = conn.prepareStatement(sql);
// 구문완성
pstmt.setString(1, id);
// 구문 날리고 resultset 획득
rs = pstmt.executeQuery();
// result set 탐색
if (rs.next()) {
member = new Member();
member.setId(rs.getString("id"));
member.setPw(rs.getString("pw"));
member.setName(rs.getString("name"));
member.setEmail(rs.getString("email"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 구문객체랑 ResultSet객체 닫아주기
try {
if (pstmt != null && !pstmt.isClosed())
pstmt.close();
if (rs != null && !rs.isClosed())
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return member;
}
// 전부 조회하기
public List<Member> selectAll() {
String sql = "select * from member";
PreparedStatement pstmt = null;
ResultSet rs = null;
List<Member> list = new ArrayList<Member>();
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
Member member = new Member();
member.setId(rs.getString("id"));
member.setPw(rs.getString("pw"));
member.setName(rs.getString("name"));
member.setEmail(rs.getString("email"));
list.add(member);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
// 구문객체와 ResultSet객체 닫아주기
try {
if (pstmt != null && !pstmt.isClosed())
pstmt.close();
if (rs != null && !rs.isClosed())
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return list;
}
}
Member.java
package model;
public class Member {
private String id;
private String pw;
private String name;
private String email;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Member [id=" + id + ", pw=" + pw + ", name=" + name + ", email=" + email + "]";
}
}
MemberService.java
package service;
import java.util.List;
import dao.MemberDao;
import model.Member;
public class MemberService {
private MemberDao memberDao;
public MemberService() {
memberDao = MemberDao.getInstance();
}
// 로그인을 처리하는 기능(파라미터 id, pw, 리턴 로그인성공여부)
//입력받은 id에 해당하는 데이터가 디비에 있는지 확인
// 있으면 그 데이터의 pw가 입력받은 pw와 같은지 확인
public boolean login(String id, String pw)
{
Member member = memberDao.selectOne(id);
if(member == null)
return false;
else
{
if(member.getPw().equals(pw))
return true;
else
return false;
}
}
// id에 해당하는 정보를 가져다 주는 기능(파라미터 id, 리턴 회원정보셋)
// 입력받은 id에 해당하는 데이터들을 갖다주기
public Member getMember(String id)
{
return memberDao.selectOne(id);
}
// 회원정보를 수정해주는 기능(파라미터 회원정보셋)
// 회원정보셋의 id에 해당하는 데이터를 디비에서 찾아 그 pw가 회원정보셋의 pw와 일치한다면
// 해당 데이터의 name, email을 파리미터로 넘어온 회원정보셋의 name, email로 수정
public boolean update(String id, String pw, String name, String email) {
Member member= new Member();
member.setId(id);
member.setPw(pw);
member.setName(name);
member.setEmail(email);
Member originMember = memberDao.selectOne(id);
if(originMember.getPw().equals(member.getPw()))
{
memberDao.updateMember(member);
return true;
}
else
return false;
}
// 모든 회원 정보 리스트를 갖고 오는 기능(파라미터x, 리턴 회원정보셋의 배열)
// 모든 회원 정보 리스트를 갖고오기
public List<Member> getMemberList() {
return memberDao.selectAll();
}
// 회원가입 기능(파라미터 : 회원정보셋, 리턴 : 가입성공여부)
// 회원정보셋의 id에 해당하는 데이터가 있는지 확인
// 없으면 회원정보셋 데이터를 디비에 추가
public boolean join(String id, String pw, String name, String email) {
if(memberDao.selectOne(id) == null)
{
Member member = new Member();
member.setId(id);
member.setPw(pw);
member.setName(name);
member.setEmail(email);
memberDao.insertMember(member);
return true;
}
else
return false;
}
}
LoginServlet.java
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.Member;
import service.MemberService;
public class LoginServlet extends HttpServlet{
private MemberService service;
public LoginServlet()
{
// TODO Auto-generated constructor stub
service = new MemberService();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
// super.doGet(req, resp);
doProc(req ,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
// super.doPost(req, resp);
doProc(req ,resp);
}
protected void doProc(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
// super.doPost(req, resp);
String contextPath = req.getContextPath();
String reqUri = req.getRequestURI();
if(reqUri.equals(contextPath + "/login.do"))
{
String id = req.getParameter("id");
String pw = req.getParameter("pw");
if(service.login(id, pw)){
req.setAttribute("msg", "로그인 성공");
req.getSession().setAttribute("id", id);
req.getRequestDispatcher("loginResult.jsp").forward(req, resp);
}else{
req.setAttribute("msg", "로그인 실패");
req.getRequestDispatcher("loginResult.jsp").forward(req, resp);
}
}
else if(reqUri.equals(contextPath + "/loginForm.do")) {
req.getRequestDispatcher("loginForm.jsp").forward(req, resp);
}
else if(reqUri.equals(contextPath + "/main.do")) {
if(req.getSession().getAttribute("id") == null) {
resp.sendRedirect("loginForm.do");
return;
}
req.getRequestDispatcher("main.jsp").forward(req, resp);
}
else if(reqUri.equals(contextPath + "/memberUpdateForm.do"))
{
// memberUpdateForm : 회원 정보 수정 폼을 보여달라는 요청
// 파라미터 id 가져갈 데이터 회원정보 셋트
// id에 해당하는 회원정보 셋트 데이터를 가지고
// 이동할 페이지 memberUpdateForm.jsp 포워드
String id = req.getParameter("id");
Member member = service.getMember(id);
req.setAttribute("member", member);
req.getRequestDispatcher("memberUpdateForm.jsp").forward(req, resp);
}
else if(reqUri.equals(contextPath + "/memberUpdate.do"))
{
// memberUpdate : 회원정보들을 수정해달라는 요청
// 파라미터 : 회원들의 모든정보
// 가져갈 데이터 x
// main 요청으로 리다이렉트
String id = req.getParameter("id");
String pw = req.getParameter("pw");
String name = req.getParameter("name");
String email = req.getParameter("email");
service.update(id, pw, name, email);
resp.sendRedirect("main.do");
return;
}
else if(reqUri.equals(contextPath + "/memberList.do"))
{
// 메인페이지에서 전체회원 보기 버튼을 누르면 발생할 요청
// memberList : 모든 회원정보를 보여달라는 요청
// 파라미터 x 가져갈 데이터 모든 회원들의 정보
// 이동할 페이지 memberList.jsp로 포워드
req.setAttribute("memberList", service.getMemberList());
req.getRequestDispatcher("memberList.jsp").forward(req, resp);
}
else if(reqUri.equals(contextPath + "/joinForm.do"))
{
// Joinfom : 회원 가입 폼을 보여달라는 요청
// 파라미터 x 가져갈 데이터 x
// 이동할 페이지 joinForm.jsp로 포워드
req.getRequestDispatcher("joinForm.jsp").forward(req, resp);
}
else if(reqUri.equals(contextPath + "/join.do"))
{
// join : 회원가입 처리를 해달라는 요청
// 파라미터 id, pw, name, email 가져갈 데이터 x
// 이동할 페이지 loginForm 요청으로 리다이렉트
String id = req.getParameter("id");
String pw = req.getParameter("pw");
String name = req.getParameter("name");
String email = req.getParameter("email");
service.join(id, pw, name, email);
resp.sendRedirect("loginForm.do");
return;
}
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>20160513</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name> login </servlet-name>
<servlet-class>servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>*.do</url-pattern>
<!-- <servlet> -->
<!-- <servlet-name> Hello </servlet-name> -->
<!-- <servlet-class>servlet.HelloServlet</servlet-class> -->
<!-- </servlet> -->
<!-- <servlet-mapping> -->
<!-- <servlet-name>Hello</servlet-name> -->
<!-- <url-pattern>*.do</url-pattern> -->
<!-- <url-pattern>/hello</url-pattern> -->
<!-- *.do 를 하면 do로 끝나는 것 실행 -->
</servlet-mapping>
</web-app>
loginForm.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!-- attribute 데이터 없고 -->
<!-- id, pw 입력받아 login.do로 요청할수있는 페이지 -->
<form action="login.do">
아이디 <input type="text" name="id"><br>
비 번 <input type="password" name="pw"><br>
<input type="submit" value="로그인">
</form>
<input type="button" value="회원가입" onclick="location.href='joinForm.do'">
</body>
</html>
loginResult.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!-- attribute에 msg에 로그인 성공여부 결과가 담겨있음 -->
<!-- main.do로 가는 버튼 -->
<%
String msg = (String) request.getAttribute("msg");
%>
<%=msg%><br>
<input type="button" value="메인으로" onclick="location.href='main.do'">
</body>
</html>
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%= session.getAttribute("id") %>님 환영합니다
<input type="button" value="정보수정하기"
onclick="location.href='memberUpdateForm.do?id=<%=session.getAttribute("id") %>'"
>
<br>
<input type="button" value="모든 회원 보기"
onclick="location.href='memberList.do'"
>
</body>
</html>
memberUpdateForm.jsp
<%@page import="model.Member"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!-- attribute에 있는 아이디 이메일 이름을 꺼내 회원가입폼 비슷한 양식에 -->
<!-- 아이디(수정불가,채워짐), 비번(빈칸), 이름, 이메일(수정가능,채워짐) -->
<%
Member member = (Member) request.getAttribute("member");
%>
<form action="memberUpdate.do" method="post">
아이디 : <input type="text" name="id" value="<%=member.getId() %>" readonly="readonly"><br>
비 번 : <input type="password" name="pw"><br>
이 름 : <input type="text" name="name"><br>
이메일 : <input type="text" name="email" value="<%=member.getEmail()%>"><br>
<input type="submit" value="수정">
<input type="reset" value="다시">
</form>
</body>
</html>
memberList.jsp
<%@page import="model.Member"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
List<Member> memberList = (List<Member>) request.getAttribute("memberList");
%>
<table>
<tr>
<th>아이디</th>
<th>이름</th>
<th>이메일</th>
</tr>
<%
for(Member m : memberList)
{
%>
<tr>
<td><%=m.getId()%></td>
<td><%=m.getName()%></td>
<td><%=m.getEmail()%></td>
<tr>
<%
}
%>
</table>
</body>
</html>
'Programming > JSP&Servlet' 카테고리의 다른 글
2016.5.20 (0) | 2016.05.20 |
---|---|
2016.5.18 (0) | 2016.05.18 |
2016.05.11 (0) | 2016.05.11 |
2016.5.10 (0) | 2016.05.10 |
2016.5.3 (0) | 2016.05.03 |