티스토리 뷰

Programming/JSP&Servlet

2016.5.16

짜모 2016. 5. 16. 13:48
반응형

로그인/회원가입/조회


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
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함