목차
1. 회원가입(ID 중복 검사)
2. 로그인
1. 회원가입(ID 중복 검사)
1) 유효성 검사 파일(js 파일)
- 비동기식 방식인 ajax로 ID 중복 검사를 한다.
- 전송 방식은 post 방식으로 설정하고, 확장자를 do로 설정해서 컨트롤러 클래스를 찾아간다.
- 유효성 검사 파일(js 파일) → 컨트롤러 클래스
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
|
$(document).ready(function(){
// ID 중복검사
$("#idcheck").click(function(){
if($("#id").val()==""){
alert("ID를 입력하세요");
$("#id").focus();
return false;
}else{
var id = $("#id").val();
$.ajax({
type:"post",
url:"/model2member/Idcheck.do",
data:{"id":id},
datatype:"text",
success:function(data){
// alert(data);
if(data==1){ // 중복 ID
$("#myid").text("중복ID");
$("#id").val("").focus();
}else{ // 사용 가능한 ID
$("#myid").text("사용 가능한 ID");
$("#passwd").focus();
}
}
});
}
});
|
cs |
2) 컨트롤러 클래스
- Action 인터페이스를 상속받은 Idcheck 클래스로 객체를 생성한다.
- 생성된 객체로 메소드 오버라이딩 된 execute() 메소드를 실행하고, 이때 request와 response 객체를 매개변수로 전달한다.
- 컨트롤러 클래스 → 서비스 클래스(Idcheck.java)
1
2
3
4
5
6
7
8
|
// ID 중복 검사(ajax)
}else if(command.equals("/Idcheck.do")) {
try {
action = new Idcheck();
forward = action.execute(request, response);
}catch(Exception e) {
e.printStackTrace();
}
|
cs |
3) 서비스 클래스
- Id 중복 검사를 하는 서비스 클래스(Idcheck.java)에서는 request.getParameter()로 사용자가 입력한 id 값을 받고, callback 함수로 리턴시키기 위해 out 객체를 이용해서 브라우저에 값을 출력한다. 이때, out 객체는 자바에서 내장 객체가 아니므로 객체 생성 후 사용해야 한다.
- out 객체 생성: PrintWriter out = response.getWriter();
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
32
33
34
35
36
|
package service;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.MemberDAO;
public class Idcheck implements Action {
// 메소드 오버라이딩
@Override
public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
System.out.println("Idcheck");
PrintWriter out = response.getWriter(); // out 객체 생성
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
System.out.println("id:"+id);
MemberDAO dao = MemberDAO.getInstance();
int result = dao.idcheck(id); // ID 중복 검사
System.out.println("result:"+result); // 1 : 중복 ID
// -1 : 사용 가능한 ID
// 브라우저에 출력되는 값이 callback 함수로 리턴된다.
out.println(result);
return null;
}
}
|
cs |
2. 로그인
• 로그인 페이지(loginform.jsp)
1
2
3
4
5
6
7
8
|
<tr>
<td colspan=2 align=center>
<input type="button" value="회원가입"
onClick="location.href='<%=request.getContextPath()%>/MemberForm.do' ">
<input type="submit" value="로그인">
<input type="reset" value="취소">
</td>
</tr>
|
cs |
1) ‘회원가입’ 버튼 클릭
- 로그인 페이지에서 ‘회원가입’ 버튼을 클릭하면 회원가입 페이지로 이동시킨다.
- 이때, DB 연동은 필요없으므로 컨트롤 클래스에서 서비스 클래스로 이동할 필요 없이 바로 뷰(View) 페이지로 출력시킨다.
• 컨트롤러 클래스(MemberController.java)
1
2
3
4
5
6
7
|
// 회원 가입 폼
}else if(command.equals("/MemberForm.do")) {
forward = new ActionForward();
forward.setRedirect(false);
forward.setPath("./member/memberform.jsp");
|
cs |
2) '로그인' 버튼 클릭
-
① 로그인 폼 페이지(loginform.jsp)
1
|
<form method="post" action="<%=request.getContextPath() %>/Login.do">
|
cs |
② 컨트롤러 클래스(MemberController.java)
1
2
3
4
5
6
7
8
9
10
|
// 로그인 (회원 인증)
}else if(command.equals("/Login.do")) {
try {
action = new Login();
forward = action.execute(request, response);
}catch(Exception e) {
e.printStackTrace();
}
|
cs |
③ 서비스 클래스(Login.java)
• 회원 인증 성공: session 객체로 id 값 공유 설정,
ActionForward 객체 생성하고 전송 방식과 path 설정
• 회원 인증 실패: out 객체로 ‘로그인 실패’ 창 띄우고 이전 페이지(로그인 페이지)로 이동
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
package service;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import dao.MemberDAO;
public class Login implements Action {
@Override
public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
System.out.println("Login");
response.setContentType("text/html; charset=utf-8"); // 현재 페이지에 대한 인코딩 설정
request.setCharacterEncoding("utf-8"); // post 방식으로 전송되는 한글 값에 대한 인코딩 설정
HttpSession session = request.getSession(); // session 객체 생성(내장 객체가 아님)
PrintWriter out = response.getWriter(); // out 객체 생성
String id = request.getParameter("id");
String passwd = request.getParameter("passwd");
MemberDAO dao = MemberDAO.getInstance();
int result = dao.memberAuth(id, passwd); // 회원 인증
if(result == 1) System.out.println("회원 인증 성공");
if(result == 1) { // 회원 인증 성공
session.setAttribute("id", id); // 세션 공유 설정
}else { // 회원 인증 실패
out.println("<script>");
out.println("alert('로그인 실패');");
out.println("history.go(-1);");
out.println("</script>");
out.close();
return null; // if ~ else ~ 함수 빠져나감
}
ActionForward forward = new ActionForward();
forward.setRedirect(false);
forward.setPath("./member/main.jsp");
return forward;
}
}
|
cs |
④ 뷰 페이지(main.jsp)
- 로그인(회원 인증) 성공하면 포워딩되는 페이지
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 세션이 있는 경우 -->
<c:if test="${sessionScope.id != null }">
${sessionScope.id}님 환영합니다. <br><br>
<a href="./UpdateMember.do"> 회원 정보 수정 </a> <br><br>
<a href="./Logout.do"> 로그아웃 </a> <br><br>
<a href="./DeleteMember.do"> 회원 탈퇴 </a> <br><br>
</c:if>
<!-- 세션이 없는 경우 -->
<c:if test="${sessionScope.id == null }">
<a href="<%=request.getContextPath()%>/MemberForm.do">회원가입</a> <br><br>
<a href="<%=request.getContextPath()%>/LoginForm.do">로그인</a> <br><br>
</c:if>
|
cs |
'JSP' 카테고리의 다른 글
73일차: Model 2 게시판(1): 글 작성 / 글 목록_ 2021.09.29 (0) | 2021.09.29 |
---|---|
72일차: Model 2 회원 관리(3)_ 2021.09.28 (0) | 2021.09.28 |
70일차: Model 2 회원 관리(1)_ 2021.09.24 (0) | 2021.09.24 |
69일차: JSTL 태그 종류/Model 2 회원관리_ 2021.09.23 (0) | 2021.09.23 |
68일차: 자바 서블릿/표현 언어(EL)/JSTL_ 2021.09.17 (0) | 2021.09.17 |