STUDY/programing

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

NightOwl 2018. 10. 19. 10:27
728x90

이전 글 보기  ☞

2018/10/18 - [ 컴알못/Web] - JSP 기초 : 게시판 만들기 3. 로그인 처리 (mysql)







1. UserDAO.java 에 join 추가





public int join(User user) {

String SQL = "INSERT INTO USER 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 http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>jsp 게시판 웹사이트</title>

</head>

<body>

<%

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>

</body>

</html>


 



회원가입 테스트

아무거나 입력해본다.



SELECT * FROM USER;

 잘 작동하고 있다.

( 실은 겨우 작동 ㅠㅠ )





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>

</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 http-equiv="Content-Type" content="text/html; 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>

</body>

</html>


 



테스트






728x90