본문 바로가기
수업(국비지원)/JSP

[JSP] MVC MODEL2 방식 - 아이디찾기, 비밀번호 찾기(idForm,pwForm, id, pw)

by byeolsub 2023. 4. 20.

 📌 idForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- /jsp3/src/main/webapp/view/member/idForm.jsp --%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>아이디 찾기</title>
<%-- 
현재 url 정보를 기준으로 상대 경로를 설정해야한다.          
      <http://localhost:8088/jsp3/css/main.css>
      <http://localhost:8088/jsp3/member/idForm>
--%>
<link rel="stylesheet" href="../css/main.css">
</head>
<body>
<h3>아이디 찾기</h3>
<form action="id" method="post">
<table>
<tr><th>이메일</th><td><input type="text" name="email"></td></tr>
<tr><th>전화번호</th><td><input type="text" name="tel"></td></tr>
<tr><td colspan="2"><input type="submit" value="아이디 찾기"></td></tr>
</table>
</form>
</body>
</html>

 

 

📌 SiteMeshFilter.java 추가

sitemesh : 프레임워크. 화면의 공통 부분을 코딩한 jsp 페이지를 설정. 
    1. sitemesh-3.0.1.jar 파일을 /WEB-INF/lib/ 폴더(톰켓에서 쓸 수 있도록 미리 약속되어 있는 폴더)에 복사. 
    2. SiteMeshFilter 클래스 파일 코딩
      - ConfigurableSiteMeshFilter 상속 받음 : sitemesh 설정을 위한 클래스
      - addDecoratorPath : 화면의 공통 부분을 코딩한 jsp 파일 설정  
                           /* : 모든 url 요청. jsp2/model1/member/loginForm.jsp   
      - addExcludedPath("/member/memberimg*") : url이 /member/memberimg로 시작하는 경우 layout.jsp 페이지 적용 안함.                     
    3. layoyt.jsp 코딩       

 

package sitemesh;

import javax.servlet.annotation.WebFilter;
import org.sitemesh.builder.SiteMeshFilterBuilder;
import org.sitemesh.config.ConfigurableSiteMeshFilter;

@WebFilter("/*")
public class SiteMeshFilter extends ConfigurableSiteMeshFilter {
	@Override
	protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
		builder.addDecoratorPath("/*","/layout/layout.jsp")
		.addExcludedPath("/member/memberimg*")
		.addExcludedPath("/member/idForm*")
		.addExcludedPath("/member/pwForm*");
	}
}

 


 

📌 pwForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- /jsp3/src/main/webapp/view/member/pwForm.jsp 
   pw.jsp 구현 : 파라미터값에 해당하는 비밀번호를 db에서 읽기
                화면에 비밀번호 출력.

현재 url 정보를 기준으로 상대 경로를 설정해야한다.          
      <http://localhost:8088/jsp3/css/main.css>
      <http://localhost:8088/jsp3/member/idForm>
--%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>비밀번호 찾기</title>
<link rel="stylesheet" href="../css/main.css">
</head>
<body>
<h3>비밀번호 찾기</h3>
<form action="pw" method="post">
<table>
<tr><th>아이디</th><td><input type="text" name="id"></td></tr>
<tr><th>이메일</th><td><input type="text" name="email"></td></tr>
<tr><th>전화번호</th><td><input type="text" name="tel"></td></tr>
<tr><td colspan="2"><input type="submit" value="비밀번호 찾기"></td></tr>
</table>
</form>
</body>
</html>

 

 

📌 MemberController.java - 내용 추가

@RequestMapping("idForm")
	public String idForm (HttpServletRequest request, HttpServletResponse response) {
		return "/view/member/idForm.jsp";
	}
@RequestMapping("pwForm")
	public String pwForm (HttpServletRequest request, HttpServletResponse response) {
		return "/view/member/pwForm.jsp";
	}

 


📌 MemberController.java - 내용 추가

  • id
1. 파라미터 저장. email, tel
2. db에서 email과 tel을 이용하여 id값을 리턴
   id=MemberDao.idSearch(email,tel)
3. id 값이 존재
   id 값을 화면에 출력
   opener의 id에 값을 저장. 현재 화면 닫기
4. id 값이 없는 경우
   정보에 맞는 id를 찾을 수 없습니다. 메세지 출력후
   idForm로 페이지 이동                                

 

	@RequestMapping("id")
	public String id (HttpServletRequest request, HttpServletResponse response) {
		String email = request.getParameter("email");
		String tel = request.getParameter("tel");
		String id = new MemberDao().idSearch(email, tel);
		if(id == null) {
			request.setAttribute("msg","정보에 맞는 id를 찾을 수 없습니다.");
			request.setAttribute("url","idForm");
			return "/view/alert.jsp";
		}
		request.setAttribute("id",id);
		return "/view/member/id.jsp";
	}

 

  • pw
1.파라미터값(id, email, tel) 저장
2.파라미터값(id, email, tel) 에 해당하는 비밀번호를 db에서 읽기
3.화면에 비밀번호 출력. 

 

@RequestMapping("pw")
	public String pw (HttpServletRequest request, HttpServletResponse response) {
		String id = request.getParameter("id");
		String email = request.getParameter("email");
		String tel = request.getParameter("tel");
		String pass = new MemberDao().pwSearch(id, email, tel);
		if(pass == null) { //맞는 pass가 없을때
			request.setAttribute("msg","정보에 맞는 pass를 찾을 수 없습니다.");
			request.setAttribute("url","pwForm");
			return "/view/alert.jsp";
		} //pass가 존재할 때
    request.setAttribute("pass",pass);
		return "/view/member/pw.jsp";
}

 

 

📌 SiteMeshFilter.java 추가

package sitemesh;

import javax.servlet.annotation.WebFilter;

import org.sitemesh.builder.SiteMeshFilterBuilder;
import org.sitemesh.config.ConfigurableSiteMeshFilter;
/*
  sitemesh : 프레임워크. 화면의 공통 부분을 코딩한 jsp 페이지를 설정. 
   1. sitemesh-3.0.1.jar 파일을 /WEB-INF/lib/ 폴더(톰켓에서 쓸 수 있도록 미리 약속되어 있는 폴더)에 복사. 
   2. SiteMeshFilter 클래스 파일 코딩
      - ConfigurableSiteMeshFilter 상속 받음 : sitemesh 설정을 위한 클래스
      - addDecoratorPath : 화면의 공통 부분을 코딩한 jsp 파일 설정  
                           /* : 모든 url 요청. jsp2/model1/member/loginForm.jsp   
      - addExcludedPath("/member/memberimg*") : url이 /member/memberimg로 시작하는 경우 layout.jsp 페이지 적용 안함.                     
   3. layoyt.jsp 코딩       
*/
@WebFilter("/*")
public class SiteMeshFilter extends ConfigurableSiteMeshFilter {
	@Override
	protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
		builder.addDecoratorPath("/*","/layout/layout.jsp")
		.addExcludedPath("/member/memberimg*")
		.addExcludedPath("/member/idForm*")
		.addExcludedPath("/member/pwForm*")
		.addExcludedPath("/member/id*")
		.addExcludedPath("/member/pw*");
	}
}

 


 

 📌

  • id.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- /jsp3/src/main/webapp/view/member/id.jsp --%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>아이디 찾기</title>
<link rel="stylesheet" href="../css/main.css">
<script type="text/javascript">
function idsend(id) {
	opener.document.f.id.value=id
	self.close()
}
</script>
</head>
<body>
<table>
<tr><th>아이디</th>
<td>${id}</td></tr>
<tr><td colspan="2"><input type="button" value="아이디 전송" onclick="idsend('${id}')"></td></tr>
</table>
</body>
</html>
  • pw.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- /jsp3/src/main/webapp/view/member/pw.jsp --%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>비밀번호 찾기</title>
<link rel="stylesheet" href="../css/main.css">
</head>
<body>
<table>
<tr><th>비밀번호</th>
<td>${pass}</td></tr>
<tr><td colspan="2"><input type="button" value="닫기" onclick="self.close()"></td></tr>
</table>
</body>
</html>