- DBCP 방식 사용,
- 액션태그 사용 (useBean, setProperty)
- DTO, DAO 클래스
- 세션
프로그램 구조
Java Resources > src > membeer |
DTO 클래스 | MemberDTO.java | ||
DAO 클래스 | MemberDAO.java | |||
WebContent > member | 회원가입 폼 | memberform.html | member.jsp | |
ID 중복검사 | idcheck.jsp | idcheck1.jsp | ||
로그인 폼 | loginform.jsp | login.jsp | main.jsp | |
수정 폼 | updateform.jsp | update.jsp | ||
삭제 폼 | deleteform.jsp | delete.jsp | ||
로그아웃 | logout.jsp |
1. login.jsp
loginform.html에서 submit 하면 넘어가는 login.jsp 파일을 생성한다.
회원가입의 member.jsp와 마찬가지로 DTO와 DAO를 불러오는 코드를 작성한다.
<jsp:useBean id="member" class="member.MemberDTO"></jsp:useBean>
<jsp:setProperty property="*" name="member"/>
DAO 객체를 생성, 회원인증을 위한 메소드 memberCheck를 불러오는 코드를 작성한다.
이 메소드는 두 가지 경우에 따라 값이 다르게 나타나는데,
회원인증을 성공한 경우와 그렇지 않은 경우이다.
<%
MemberDAO dao = MemberDAO.getInstance();
int result = dao.memberCheck(member); //회원인증 처리
if(result == 1) { //로그인 성공
session.setAttribute("id", member.getId()); // 세션으로 공유 설정
%> <script>
alert("로그인 성공");
location.href = "main.jsp";
</script>
<% } else { //로그인 실패
%>
<script>
alert("로그인 실패");
history.go(-1);
</script>
<% } %>
2. 회원인증 메소드 memberCheck 메소드 작성
public int memberCheck(MemberDTO member) {
int result = 0;
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
con = getConnection();
String sql = "select*from member where id=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, member.getId());
rs = pstmt.executeQuery();
if (rs.next()) { // ID 일치
// ID가 일치하면 비번값을 비교, 일치하면 로그인 성공
if (rs.getString("passwd").equals(member.getPasswd())) {
result = 1 ;
} else {
result = -1;
}
} else { // ID 불일치
result = -2;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (pstmt != null) try { pstmt.close();} catch (Exception e) {}
if (con != null) try { con.close();} catch (Exception e) {}
if (rs != null) try { con.close();} catch (Exception e) {}
}
return result;
}
맞는 비번을 넣었을 경우와 틀린 비번을 넣었을 경우 두 가지를 모두 테스트 해보았고,
정상 작동된다.
3. main.jsp
세션 유무에 따라 main.jsp에 출력될 내용이 다르다.
1) 로그인 성공 시 회원정보 수정, 로그아웃
2) 로그인 실패 시 회원가입, 로그인
main.jsp 파일을 생성하여 세션 값을 구해온다.
String 객체를 생성해 세션 값을 저장하고,
if 조건문으로 세션값을 구해왔을 때, 구해오지 못해 String 객체가 null 값인 경우로 나눠 작성한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = (String) session.getAttribute("id");
if(id != null) { // 세션이 있는 경우
%> <%= id %>님 환영합니다! ^0^ <br><br><br>
<a href="updateform.jsp">정보수정</a><br>
<a href="logout.jsp">로그아웃</a><br>
<a href="deleteform.jsp">회원탈퇴</a><br>
<% } else { // 세션이 없는 경우
%>
<a href="memberform.html">회원가입</a><br>
<a href="loginform.html">로그인</a>
<% } %>
4. logout.jsp
로그아웃을 한다는 것은 공유하여 연결했던 세션이 끊어진다는 것을 의미한다.
즉, 세션 객체를 삭제하면 된다.
로그아웃 버튼을 누르면 경고창이 실행되며 로그아웃 메시지가 보이고 로그인 화면으로 돌아간다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
session.invalidate(); //세션 삭제
%>
<script>
alert("로그아웃");
location.href="loginform.html"
</script>
'JSP > model 1' 카테고리의 다른 글
게시판 생성 (4) - 글 수정, 삭제 (0) | 2022.09.07 |
---|---|
게시판 생성 (3) - 상세 페이지 (0) | 2022.09.07 |
게시판 생성 (2) - 글 작성, 게시판 목록 (0) | 2022.09.05 |
게시판 생성 (1) - 환경설정 (0) | 2022.09.05 |
회원 관리 (1) - 회원가입 (0) | 2022.09.01 |