Eclipse package
(1) org.kh.member.model.vo
package org.kh.member.model.vo;
import java.sql.Date;
public class Member {
private String memberId;
private String memberPw;
private String memberName;
private int age;
private String email;
private String phone;
private Date enrollDate;
public Member() {
super();
// TODO Auto-generated constructor stub
}
public Member(String memberId, String memberPw, String memberName, int age, String email, String phone,
Date enrollDate) {
super();
this.memberId = memberId;
this.memberPw = memberPw;
this.memberName = memberName;
this.age = age;
this.email = email;
this.phone = phone;
this.enrollDate = enrollDate;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getMemberPw() {
return memberPw;
}
public void setMemberPw(String memberPw) {
this.memberPw = memberPw;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Date getEnrollDate() {
return enrollDate;
}
public void setEnrollDate(Date enrollDate) {
this.enrollDate = enrollDate;
}
}
(2) org.kh.member.model.controller
<아이디찾기 controller>
package org.kh.member.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.kh.member.model.service.MemberService;
import org.kh.member.model.vo.Member;
/**
* Servlet implementation class SearchIdServlet
*/
@WebServlet(name = "SearchId", urlPatterns = { "/searchId" })
public class SearchIdServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SearchIdServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.인코딩
request.setCharacterEncoding("utf-8");
//2.변수저장
String memberName = request.getParameter("name");
String email = request.getParameter("email");
String phone = request.getParameter("phone");
//3.비지니스로직
MemberService service = new MemberService();
Member member = service.searchId(memberName,email,phone);
System.out.println("member : " + member);
//4.뷰 처리
if(member != null) {
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/member/searchId.jsp");
request.setAttribute("members", member);
rd.forward(request, response);
}else {
request.setAttribute("msg", "정확한 정보를 입력해 주세요!");
request.setAttribute("loc", "/");
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/common/msg.jsp");
rd.forward(request, response);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
<비밀번호찾기 controller>
package org.kh.member.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.kh.member.model.service.MemberService;
import org.kh.member.model.vo.Member;
/**
* Servlet implementation class SearchPwServlet
*/
@WebServlet(name = "SearchPw", urlPatterns = { "/searchPw" })
public class SearchPwServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SearchPwServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.인코딩
request.setCharacterEncoding("utf-8");
//2.변수저장
String memberId = request.getParameter("userId");
String memberName = request.getParameter("userName");
String email = request.getParameter("userEmail");
//3.비지니스로직
MemberService service = new MemberService();
Member member = service.searchPw(memberId,memberName,email);
//4.뷰 처리
System.out.println("sevlet : " + member);
if(member != null) {
RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/views/member/searchPw.jsp");
request.setAttribute("members", member);
rd.forward(request, response);
}else {
request.setAttribute("msg", "정확한 정보를 입력해 주세요!");
request.setAttribute("loc", "/");
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/common/msg.jsp");
rd.forward(request, response);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
<중복검사 controller>
package org.kh.member.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.kh.member.model.service.MemberService;
import org.kh.member.model.vo.Member;
/**
* Servlet implementation class CheckIdServlet
*/
@WebServlet(name = "CheckId", urlPatterns = { "/checkId" })
public class CheckIdServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CheckIdServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.인코딩
request.setCharacterEncoding("utf-8");
//2.변수저장
String memberId = request.getParameter("checkId"); // 안에 넣는값 "" input name 값!!!!!!
//3.비지니스 로직처리
MemberService service = new MemberService();
Member m = service.selectOne(memberId);
//4. 뷰 처리
if(m==null) {//아이디가 중복되지 않아서 사용 가능한 상황!!
request.setAttribute("result", true);
}else {
request.setAttribute("result", false);
}
request.setAttribute("checkId", memberId); //해당페이지가 이거을 받았을때 검사하는 아이디를 체크해주려고 아이디도 넘겨줌
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/member/checkId.jsp");
rd.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
(3) org.kh.member.model.service
package org.kh.member.model.service;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import org.kh.common.JDBCTemplate;
import org.kh.member.model.dao.MemberDao;
import org.kh.member.model.vo.Member;
public class MemberService {
//아이디 찾기
public Member searchId(String memberName, String email, String phone) {
Connection conn = JDBCTemplate.getConnection();
MemberDao dao = new MemberDao();
Member m = dao.searchId(conn, memberName, email, phone);
JDBCTemplate.close(conn);
System.out.println("m : " + m);
return m;
}
//비밀번호 찾기
public Member searchPw(String memberId, String memberName, String email) {
Connection conn = JDBCTemplate.getConnection();
MemberDao dao = new MemberDao();
Member m = dao.searchPw(conn, memberId, memberName, email);
JDBCTemplate.close(conn);
System.out.println("service : " + m);
return m;
}
//마이 페이지 // 체크아이디
public Member selectOne(String memberId) {
Connection conn = JDBCTemplate.getConnection();
MemberDao dao = new MemberDao();
Member m = dao.selectOne(conn,memberId);
JDBCTemplate.close(conn);
return m;
}
}
(4) org.kh.member.model.dao
package org.kh.member.model.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import org.kh.common.JDBCTemplate;
import org.kh.member.model.vo.Member;
public class MemberDao {
//아이디 찾기(분실시)
public Member searchId(Connection conn, String memberName, String email, String phone) {
PreparedStatement pstmt = null;
ResultSet rset = null;
String query = "select * from member where member_name=? and email=? and phone=?";
Member m = null;
try {
pstmt = conn.prepareStatement(query);
pstmt.setString(1, memberName);
pstmt.setString(2, email);
pstmt.setString(3, phone);
rset = pstmt.executeQuery();
while(rset.next()){
m = new Member();
m.setMemberId(rset.getString("member_id"));
m.setMemberPw(rset.getString("member_pw"));
m.setMemberName(rset.getString("member_name"));
m.setAge(rset.getInt("age"));
m.setEmail(rset.getString("email"));
m.setPhone(rset.getString("phone"));
m.setEnrollDate(rset.getDate("enroll_date"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
JDBCTemplate.close(pstmt);
JDBCTemplate.close(rset);
}
return m;
}
//비밀번호찾기 (분실시)
public Member searchPw(Connection conn, String memberId, String memberName, String email) {
PreparedStatement pstmt = null;
ResultSet rset = null;
String query = "select * from member where member_id=? and member_name=? and email=?";
Member m = null;
try {
pstmt = conn.prepareStatement(query);
pstmt.setString(1, memberId);
pstmt.setString(2, memberName);
pstmt.setString(3, email);
rset = pstmt.executeQuery();
while(rset.next()){
m = new Member();
m.setMemberId(rset.getString("member_id"));
m.setMemberPw(rset.getString("member_pw"));
m.setMemberName(rset.getString("member_name"));
m.setAge(rset.getInt("age"));
m.setEmail(rset.getString("email"));
m.setPhone(rset.getString("phone"));
m.setEnrollDate(rset.getDate("enroll_date"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
JDBCTemplate.close(pstmt);
JDBCTemplate.close(rset);
}
return m;
}
//마이페이지 // 체크아이디
public Member selectOne(Connection conn, String memberId) {
Member m = null;
PreparedStatement pstmt = null;
ResultSet rset = null;
String query = "select * from member where member_id=?";
try {
pstmt = conn.prepareStatement(query);
pstmt.setString(1, memberId);
rset = pstmt.executeQuery();
if (rset.next()) {
m = new Member();
m.setAge(rset.getInt("age"));
m.setEmail(rset.getString("email"));
m.setEnrollDate(rset.getDate("enroll_date"));
m.setMemberId(rset.getString("member_id"));
m.setMemberName(rset.getString("member_name"));
m.setMemberPw(rset.getString("member_pw"));
m.setPhone(rset.getString("phone"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCTemplate.close(rset);
JDBCTemplate.close(pstmt);
}
return m;
}
}
(5)View
<searchId.jsp>(1)
<%@ 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>
<style>
*{
text-align : center;
}
</style>
<%@ include file="/WEB-INF/views/common/header.jsp" %>
<section>
<form name="searchFrm">
<input type="hidden" name="name">
<input type="hidden" name="email">
<input type="hidden" name="phone">
</form>
<div id="div1">
<h3>아이디 찾기</h3>
<table class ="table" style="margin:0 auto;width:700px;">
<tr>
<td><input type="text" name="Name" id="name" class="form-control" placeholder="이름을 입력하세요"></td>
</tr>
<br>
<tr>
<td><input type="text" name="Email" id="email"class="form-control" placeholder="이메일을 입력하세요"></td>
</tr>
<br>
<tr>
<td><input type="text" name="Phone" id="phone" class="form-control" placeholder="전화번호를 입력하세요 (- 제외)"></td>
</tr>
</table>
<button type="button" id="searchBtn" class= "btn btn-outline-info btn sm" onclick="searchId()">검색</button>
</div>
</section>
<script>
function searchId(){
var name = document.getElementById("name").value;
var email = document.getElementById("email").value;
var phone = document.getElementById("phone").value;
if(name == "" && email == "" && phone == ""){
alert("모든 정보를 입력해주세요.");
return;
}
var url = "/searchId"; // 요청 서블릿 url
var title ="searchId"; //윈도우 창 이름
var status = "left=500px, top=100px, width=300px, height=200px, menubar-no, status=no, scrollbar=yes";
var popup = window.open("",title,status); //빈창 오픈
searchFrm.name.value=name;
searchFrm.email.value=email;
searchFrm.phone.value=phone;
searchFrm.target = title;//popup창과 form태그를 연결
//action,method설정 후 form태그 submit
searchFrm.action = url;
searchFrm.method="post";
searchFrm.submit();
}
</script>
</body>
</html>
<searchId.jsp>(2)
<%@page import="org.kh.member.model.vo.Member"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<script type="text/javascript" src="/js/jquery-3.3.1.js"></script>
<link rel="stylesheet" href="/css/bootstrap.css">
<link rel="stylesheet" href="/css/header/style.css">
<link rel="stylesheet" href="/css/header/responsive.css">
<script type="text/javascript" src="/js/bootstrap.js"></script>
<%
request.setCharacterEncoding("utf-8");
Member member = (Member)request.getAttribute("members");
%>
<!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>
<style>
*{
margin : 0 auto;
padding : 0;
}
#button{
margin-left : 70px;
margin-top : 20px;
}
#userName{
color:#1f4e5f;
text-align : center;
font-size:15px;
}
#userId{
text-align : center;
}
</style>
</head>
<body>
<div class="wrap">
<div id="userName">[<%=member.getMemberName()%>]님의 아이디</div><br>
<div id="userId">[<%=member.getMemberId() %>] 입니다.</div>
<button id="button" class="btn btn-outline-info " onclick="location.href='/views/member/login.jsp'">로그인 하러가기</button>
</div>
</body>
</html>
<searchPw.jsp>(1)
<%@ 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>
<style>
*{
text-align : center;
}
</style>
<%@ include file="/WEB-INF/views/common/header.jsp" %>
<section>
<h3>비밀번호 찾기</h3>
<form name="searchFrm">
<input type="hidden" name="userId">
<input type="hidden" name="userName">
<input type="hidden" name="userEmail">
</form>
<table class ="table" style="margin:0 auto;width:700px;">
<tr>
<td><input type="text" id="id" name="id" class="form-control" placeholder="아이디를 입력하세요"></td>
</tr>
<br>
<tr>
<td><input type="text" id="name" name="name" class="form-control" placeholder="이름을 입력하세요"></td>
</tr>
<br>
<tr>
<td><input type="text" id="email" name="email" class="form-control" placeholder="이메일을 입력하세요"></td>
</tr>
</table>
<button type="button" class= "btn btn-outline-info btn sm" onclick="searchPw()">검색</button>
</section>
<script>
function searchPw(){
var id = document.getElementById("id").value;
var name = document.getElementById("name").value;
var email = document.getElementById("email").value;
if(id =="" && name == "" && email ==""){
alert("모든 정보를 입력 해주세요.")
return;
}
var url="/searchPw"; //서블릿 요청
var title="/searchPw";
var status= "left=500px, top=100px, width=300px, height=200px, menubar-no, status=no, scrollbar=yes";
var popup = window.open("",title,status); //빈 창 오픈
searchFrm.userId.value=id;
searchFrm.userName.value=name;
searchFrm.userEmail.value=email;
searchFrm.target = title; //popup창과 form 태그를 연결
//action, method 설정 후 form태그 submit
searchFrm.action = url;
searchFrm.method = "post";
searchFrm.submit();
}
</script>
</body>
</html>
<searchPw.jsp>(2)
<%@page import="org.kh.member.model.vo.Member"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<script type="text/javascript" src="/js/jquery-3.3.1.js"></script>
<link rel="stylesheet" href="/css/bootstrap.css">
<link rel="stylesheet" href="/css/header/style.css">
<link rel="stylesheet" href="/css/header/responsive.css">
<script type="text/javascript" src="/js/bootstrap.js"></script>
<%
Member member = (Member)request.getAttribute("members");
%>
<!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>
<style>
*{
margin : 0 auto;
padding : 0;
}
#button{
margin-left : 70px;
margin-top : 20px;
}
#userName{
color:#1f4e5f;
text-align : center;
font-size:15px;
}
#userId{
text-align : center;
}
</style>
</head>
<body>
<div class="wrap">
<div id="userName">[<%=member.getMemberName()%>]님의 비밀번호</div><br>
<div id="userId">[<%=member.getMemberPw() %>] 입니다.</div>
<button id="button" class="btn btn-outline-info " onclick="location.href='/views/member/login.jsp'">로그인 하러가기</button>
</div>
</body>
</html>
<checkId.jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//결과, id
boolean result = (Boolean)request.getAttribute("result"); // 불린도 보여주려고 사용! String으로 해도 상관없음
String checkId = (String)request.getAttribute("checkId");
%>
<!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>
<style>
#checked-container{
text-align : center;
padding-top : 50px;
}
#checked{
color : red;
font-weight : bold;
}
</style>
</head>
<body>
<div id="checked-container">
<%if(result){ %>
[<span><%=checkId%></span>]는 사용이 가능합니다.
<br><br>
<button type="button" onclick="setMemberId('<%=checkId%>')">닫기</button>
<%}else{ %>
[<span id="checked"><%=checkId %></span>]는 이미 사용중 입니다.
<br><br>
<form action="checkId" method="post">
<input type="text" name="checkId" placeholder="아이디를 입력하세요"><br>
<button type="submit">중복검사</button>
</form>
<%} %>
</div>
<script>
function setMemberId(memberId){
var id = opener.document.getElementById("memberId") //opener를 사용하면 그 뒤에있는 창을 의미함!! 거기에 있는 memberId를 잡아옴
var pw = opener.document.getElementById("memberPw");
id.value=memberId; //부모창 ID input에 값 세팅
pw.focus(); //비빌번호 입력창으로 focus 이동
self.close(); //현재 열린 popup창 종료
}
</script>
</body>
</html>
'이공계전문기술연수 > Servlet | JSP' 카테고리의 다른 글
<이공계기술전문연수> 14. Servlet / JSP MVC2 실습(6) 사진등록(ajax) (0) | 2019.11.21 |
---|---|
<이공계기술전문연수> 13. Servlet / JSP MVC2 실습(5) 공지사항 (0) | 2019.11.21 |
<이공계기술전문연수> 11. Servlet / JSP MVC2 실습(3) 회원정보 수정/회원 탈퇴/마이 페이지 / 회원 전체 관리 / 회원 정보 검색 (0) | 2019.11.20 |
<이공계기술전문연수> 10. Servlet / JSP MVC2 실습(2) 회원가입/로그인/로그아웃 (0) | 2019.11.20 |
<이공계기술전문연수> 9. Servlet / JSP MVC2 실습(1) package / lib (0) | 2019.11.20 |