1. 로그인 처리
<%@page import="java.net.URLEncoder"%>
<%@page import="magic.member.MemberBean"%>
<%@page import="magic.member.MemberDBBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String user_id = request.getParameter("id");
String user_pw = request.getParameter("pw");
MemberDBBean manager = MemberDBBean.getInstance();
MemberBean mb = manager.getMember(user_id);
mb.setMem_uid(user_id);
mb.setMem_pwd(user_pw);
int check = manager.userCheck(user_id, user_pw);
if(mb == null) {
%>
<script>
alert("존재하지 않는 회원입니다.");
history.go(-1); // 이전 페이지로 이동
</script>
<%
} else {
String name = mb.getMem_name();
session.setAttribute("id", user_id);
// 방법 1. 세션에 입력받은 id 저장, 키:id, 키값: 입력받은 id
session.setAttribute("name", name);
session.setAttribute("Member", "yes"); // url 복사해서 사용하지 못하게 생성
// String user_name = URLEncoder.encode(name, "UTF-8");
// 방법 2. url로 정보 넘길 경우 : 이름이 한글이면 url로 넘길때 깨지기 때문에 인코딩
if(check==1){
response.sendRedirect("main.jsp");
} else if(check==0){
%>
<script>
alert("비밀번호가 틀렸습니다.\n다시 한번 확인해주세요.");
history.go(-1);
// sendRedirect로 페이지 이동 시 alert 경고창이 안뜨고 먼저 페이지가 이동됨
</script>
<%
} else {
%>
<script>
alert("아이디가 일치하지 않습니다.\n다시 한번 확인해주세요.");
history.go(-1);
</script>
<%
}
}
%>
- 로그인 페이지에서 넘겨받은 아이디,비밀번호를 MemberBean 객체에 set하고, MemberDBBean 객체를 활용해 userCheck() 메소드 실행
- 아이디가 없으면 존재하지 않는 회원이라는 경고 메시지 출력, 아이디가 있으면 비밀번호를 확인해 로그인하거나 비밀번호가 틀렸다, 아이디는 있지만 비밀번호가 DB상에 있는 아이디와 다를경우 아이디가 일치하지 않다는 메시지 출력
- 넘겨받은 아이디, 이름을 세션에 저장
2. 자바 빈(MemberDBBean) - 아이디 확인 메소드, 회원정보를 조회하는 메소드 추가
public int userCheck(String id, String pw) throws Exception{
String selectQuery = "SELECT mem_pwd FROM memberT WHERE mem_uid = ?";
// 아이디에 맞는 비밀번호 조회
int re = -1;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(selectQuery);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if (rs.next()) {
// 1건만 조회하기 때문에 while문을 사용하지 않고 if문 사용
String db_mem_pwd = rs.getString("mem_pwd");
// 속성값에 조회한 비밀번호 입력
if (db_mem_pwd.equals(pw)) {
re = 1; // 아이디, 비밀번호 일치
} else {
re = 0; // 비밀번호 불일치
}
} else {
re = -1; // 아이디 불일치
}
} catch(SQLException ex){
System.out.print("조회 실패");
ex.printStackTrace();
} finally {
try{
if(rs != null) {
rs.close();
}
if(pstmt != null) {
pstmt.close();
}
if(conn != null) {
conn.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
return re;
}
public MemberBean getMember(String id) throws Exception{
String selectQuery = "SELECT mem_uid, mem_pwd, mem_name, mem_email, mem_regdate, mem_address"
+" FROM memberT WHERE mem_uid = ?";
// 쿼리는 미리 전체를 불러 오고 필요한 column만 보여주는 식으로 하는것이 톰캣을
// 재실행할 필요가 없고 자바 파일을 수정할 필요가 없어서 좋음
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
MemberBean member = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(selectQuery);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if (rs.next()) {
member = new MemberBean();
member.setMem_uid(rs.getString("mem_uid"));
member.setMem_pwd(rs.getString("mem_pwd"));
member.setMem_name(rs.getString("mem_name"));
member.setMem_email(rs.getString("mem_email"));
member.setMem_regdate(rs.getTimestamp("mem_regdate"));
member.setMem_addr(rs.getString("mem_address"));
}
} catch(SQLException ex){
System.out.print("조회 실패");
ex.printStackTrace();
} finally {
try{
if(rs != null) {
rs.close();
}
if(pstmt != null) {
pstmt.close();
}
if(conn != null) {
conn.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
return member;
}
3. 메인
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--
<% request.setCharacterEncoding("UTF-8"); %>
세션에 입력된 값을 받아오기 때문에 안써도 한글 안깨짐
--%>
<%
if(session.getAttribute("Member")==null){
// url 복사해서 사용하면 null이므로 로그인 페이지로 이동
response.sendRedirect("login.jsp");
}
String id = session.getAttribute("id").toString();
String name = session.getAttribute("name").toString();
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1" align="center">
<form method="post" action="logOut.jsp">
<tr>
<td>
안녕하세요. <%= name %>(<%= id %>)님
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="로그아웃" />
<input type="button" value="회원정보변경" onclick="javascript:window.location='memberUpdate.jsp'"/>
</td>
</tr>
</form>
</table>
</body>
</html>
- 세션에 저장된 아이디값과 이름을 불러옴
4. 로그아웃
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
session.invalidate(); // 세션 삭제
response.sendRedirect("login.jsp");
%>
- 세션에 저장된 값들을 삭제
'java,jsp,spring > JSP' 카테고리의 다른 글
JSP 게시판 (0) | 2022.09.06 |
---|---|
JSP 예제 - 사용자 관리(3단계) (0) | 2022.09.03 |
JSP 예제 - 사용자 관리(1단계) (0) | 2022.09.03 |
DBCP 기법 (0) | 2022.08.26 |
JSP JDBC (0) | 2022.08.24 |