Welcome to the BBOGAK

Nice to see you here

LET's GET it Dev. Knowledge

나만의 미니프로젝트/JSP게시판 웹사이트

JSP 게시판 만들기 NO.4 회원 가입/ 세션 처리

IT뽀각 2019. 12. 7. 17:21
반응형

이전글 

->2019/12/07 - [나만의 미니프로젝트/JSP게시판 웹사이트] - JSP 게시판 만들기 NO.3 로그인 처리(oracle)

 

JSP 게시판 만들기 NO.3 로그인 처리(oracle)

1. 로그인 기능 구현 UserDAO에서 DAO는 데이터베이스 접근 객체의 약자 회원 데이터 베이스에 회원 정보를 불러오거나 입력하고자 할떄 사용 UserDAO.java package user; import java.sql.Connection; import jav..

s205203.tistory.com

1. UserDAO.java 에 join 추가

 public int join(User user) {
		 String SQL = "INSERT INTO USER1 VALUES (?,?,?,?,?)";
		 try {
			 pstmt = conn.prepareStatement(SQL);
			 pstmt.setString(1, user.getUserID());
			 pstmt.setString(2, user.getUserPassword());
			 pstmt.setString(3, user.getUserName());
			 pstmt.setString(4, user.getUserGender());
			 pstmt.setString(5, user.getUserEmail());
			 return pstmt.executeUpdate();
		 }catch(Exception e) {
			 e.printStackTrace();
		 }
		 return -1;//DB오류
	 }

2. joinAction.jsp 생성

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="user.UserDAO"%><!-- userdao의클래스를 가져옴 -->
<%@ page import="java.io.PrintWriter"%><!-- 자바 클래스 사용 -->
<%
	request.setCharacterEncoding("UTF-8");
%>
<!-- 한명의 회원정보를 담는 user클래스를 자바 빈즈로 사용 / scope:페이지 현재의 페이지에서만 사용 -->
<jsp:useBean id="user" class="user.User" scope="page" />
<jsp:setProperty name="user" property="userID" />
<jsp:setProperty name="user" property="userPassword" />
<jsp:setProperty name="user" property="userName" />
<jsp:setProperty name="user" property="userGender" />
<jsp:setProperty name="user" property="userEmail" />

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp 게시판 웹사이트</title>
</head>
<body>
	<%
		//로긴된 회원들은 페이지에 접속할수 없도록
		String userID = null;
		if (session.getAttribute("userID") != null) {
			userID = (String) session.getAttribute("userID");

		}
		if (userID != null) {
			PrintWriter script = response.getWriter();
			script.println("<script>");
			script.println("alert('이미 로그인 되어있습니다.')");
			script.println("location.href='main.jsp'");
			script.println("</script>");
		}
	////
		if (user.getUserID() == null || user.getUserPassword() == null || user.getUserName() == null
				|| user.getUserGender() == null || user.getUserEmail() == null) {
			PrintWriter script = response.getWriter();
			script.println("<script>");
			script.println("alert('입력이 안 된 사항이 있습니다.')");
			script.println("history.back()");
			script.println("<script>");
		} else {
			UserDAO userDAO = new UserDAO(); //인스턴스 생성
			int result = userDAO.join(user);

			if (result == -1) { // 아이디가 기본키 중복되면 오류
				PrintWriter script = response.getWriter();
				script.println("<script>");
				script.println("alert('이미 존재하는 아이디 입니다.')");
				script.println("history.back()");
				script.println("</script>");
			} //가입 성공
			else {
				PrintWriter script = response.getWriter();
				script.println("<script>");
				script.println("location.href = 'main.jsp'");
				script.println("</script>");
			}
		}
	%>
</body>
</html>

회원가입 테스트

성공! 잘작동한다..

(사실은 이부분에서 오류가 나서 전전긍긍하였다 ..ㅠ)

쿼리문 : SELECT * FROM USER1;

 

3. 접속 회원 세션 관리

현재 접속한 회원에 할당해주는 고유 아이디(세션)를

부여해주는 것 으로 부터 세션관리가 시작된다.

로그인을 성공한 회원에게 세션을 부여해준다.

 

 

loginAction.jsp에 로그인 성공시(result == 1)

 

session.setAttribute("userID", user.getUserID()); 

 

세션값으로 getUserID, 해당회원의 아이디값을 준다.

 

logoutAction.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jsp 게시판 웹사이트</title>
</head>
<body>
	<%
		session.invalidate();//접속한 회원의 세션을 빼앗음
	%>
	<script>
		location.href = 'main.jsp';
	</script>

</body>
</html>

joinAction.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="user.UserDAO"%><!-- userdao의클래스를 가져옴 -->
<%@ page import="java.io.PrintWriter"%><!-- 자바 클래스 사용 -->
<%
	request.setCharacterEncoding("UTF-8");
%>
<!-- 한명의 회원정보를 담는 user클래스를 자바 빈즈로 사용 / scope:페이지 현재의 페이지에서만 사용 -->
<jsp:useBean id="user" class="user.User" scope="page" />
<jsp:setProperty name="user" property="userID" />
<jsp:setProperty name="user" property="userPassword" />
<jsp:setProperty name="user" property="userName" />
<jsp:setProperty name="user" property="userGender" />
<jsp:setProperty name="user" property="userEmail" />

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp 게시판 웹사이트</title>
</head>
<body>
	<%
		//로긴된 회원들은 페이지에 접속할수 없도록
		String userID = null;
		if (session.getAttribute("userID") != null) {
			userID = (String) session.getAttribute("userID");

		}
		if (userID != null) {
			PrintWriter script = response.getWriter();
			script.println("<script>");
			script.println("alert('이미 로그인 되어있습니다.')");
			script.println("location.href='main.jsp'");
			script.println("</script>");
		}
	////
		if (user.getUserID() == null || user.getUserPassword() == null || user.getUserName() == null
				|| user.getUserGender() == null || user.getUserEmail() == null) {
			PrintWriter script = response.getWriter();
			script.println("<script>");
			script.println("alert('입력이 안 된 사항이 있습니다.')");
			script.println("history.back()");
			script.println("<script>");
		} else {
			UserDAO userDAO = new UserDAO(); //인스턴스 생성
			int result = userDAO.join(user);

			if (result == -1) { // 아이디가 기본키 중복되면 오류
				PrintWriter script = response.getWriter();
				script.println("<script>");
				script.println("alert('이미 존재하는 아이디 입니다.')");
				script.println("history.back()");
				script.println("</script>");
			} //가입 성공
			else {
				PrintWriter script = response.getWriter();
				script.println("<script>");
				script.println("location.href = 'main.jsp'");
				script.println("</script>");
			}
		}
	%>
</body>
</html>

 

테스트!

 

반응형