반응형
대학생을 위한 웹 페이지 제작
사용 언어 : java (jdk 12.0.2), JavaScript, css, html
사용 툴 : Eclipse
데이터베이스 : Mysql
서버 : Tomcat
테스트 브라우저 : Chrome, Edge
파일 : jsp
시스템 구성도
UserDAO.java 파일
public int login(String userID, String userPassword) {
String SQL = "select userPassword, userSalt from user where userID = ?";
try {
pstmt = conn.prepareStatement(SQL); // DB에 sql문 삽입
pstmt.setString(1, userID); // 받아온 userID를 ?에 할당하기
rs = pstmt.executeQuery(); // DB 쿼리 받아올 준비
if (rs.next()) {
System.out.println("로그인에서 rs.getString(1) : "+ rs.getString(1)); // DB에서 받아온 저장된 유저 아이디
System.out.println("입력한 비밀번호 : "+ userPassword); //유저가 입력한 패스워드
System.out.println("저장된 솔트 : "+ rs.getString(2)); // 해당 패스워드와 짝 지어진 salt 값
System.out.println("솔트가 결합되어 만들어진 값 : "+ SHA512(userPassword, rs.getString(2))); // 암호화 된 패스워드
if (rs.getString(1).equals(SHA512(userPassword, rs.getString(2)))) { // 로그인 창에서 입력한 패스워드 암호화와 저장된 패스워드 비교
return 1; // 로그인 성공
} else
return 0; // 비밀번호 오류
}
return -1; // 아이디가 없음
} catch (Exception e) {
e.printStackTrace();
}
return -2; // 데이터베이스 오류
}
return 값의 따른 경우 4가지
return 1 : 사용자가 로그인시 입력한 ID가 DB에 있고, ID의 대한 컬럼의 솔트와 입력한 비밀번호를 활용해 SHA-512 함수로 만들어낸 해시값과 ID를 비교하여 성공시 로그인을 성공시킴
return 0 : 사용자가 로그인시 입력한 ID가 DB에 있지만 입력한 PW가 ID와 일치하지 않음
return -1 :DB에 로그인을 시도한 ID가 없음
return -2 : 데이터 베이스 오류
System.out.println -> 비밀번호 변환 과정 확인 차 넣은 코드입니다. 잘 이해가 가지 않는 분들만 사용하시면 될 것 같아용
기능 처리
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "user.UserDAO" %>
<%@ page import = "java.io.PrintWriter" %>
<% request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean id="user" class= "user.User" scope="page" />
<jsp:setProperty name ="user" property="userID"/>
<jsp:setProperty name ="user" property="userPassword"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 로그인처리 -->
<% // userID에 세션값이 없는 경우
String userID = null;
if(session.getAttribute("userID")!= null){
userID = (String) session.getAttribute("userID");
}
if(userID != null){ // session 을 받아서 로그인이 되어 있는 경우
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('이미 로그인이 되어 있습니다.')");
script.println("location.href = 'main.jsp' ");
script.println("</script>");
}
UserDAO userDAO = new UserDAO();
int result = userDAO.login(user.getUserID(), user.getUserPassword());
if(result == 1){
session.setAttribute("userID", user.getUserID());
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href = 'main.jsp' ");
script.println("</script>");
}else if (result == 0){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('비밀번호가 틀립니다.')");
script.println("history.back()");
script.println("</script>");
}else if (result == -1){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('존재하지 않는 아이디 입니다.')");
script.println("history.back()");
script.println("</script>");
}else if (result == -2){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('데이터베이스 오류가 발생했습니다..')");
script.println("history.back()");
script.println("</script>");
}
%>
</body>
</html>
'JSP 웹 프로젝트' 카테고리의 다른 글
JSP 웹 프로젝트 (6) 작성된 게시판 불러오기 (0) | 2023.01.03 |
---|---|
JSP 웹 프로젝트 (5) 게시판 글 작성 (0) | 2023.01.03 |
JSP 웹 프로젝트 (4) 세션 (0) | 2023.01.03 |
JSP 웹 프로젝트 (2) 회원가입 (0) | 2023.01.03 |
JSP 웹 프로젝트 (1) - 환경세팅 및 UI 구성 (0) | 2023.01.03 |