본문 바로가기
언어공부/JAVA&SPRING

[JSP 게시판 만들기] 회원가입 기능 구현하기

by hobbiz 2020. 7. 6.
반응형

 

<UserDAO.java 파일 수정(하단에 추가)>

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

 

<코드 설명>

public int join(User user) {

String SQL = "INSERT INTO USER VALUES (?, ?, ?, ?, ?)";

: 한명의 사용자에 대한 속성 5가지를 ?의 형태로 받음

try {

pstmt = conn.prepareStatement(SQL);

pstmt.setNString(1, user.getUserID());

pstmt.setNString(2, user.getUserPassword());

pstmt.setNString(3, user.getUserName());

pstmt.setNString(4, user.getUserGender());

pstmt.setNString(5, user.getUserEmail());

return pstmt.executeUpdate();

: 해당 statement를 실행한 결과를 반환

} catch(Exception e) {

e.printStackTrace();

}

return -1; // 데이터베이스 오류

}

 

 

<joinAction 페이지 생성>

<%@ 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" />
<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>
</html>

: loginAction.jsp 파일을 복사하여 수정함

 

 

<코드설명>

<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" />

: 로그인 액션에서 회원가입에 추가로 필요한 사항들을 추가함

 

 

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) {

: 각각의 항목이 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>

 

 

<DAO: 데이터 접근 객체란?>

컴퓨터 소프트웨어에서 데이터 접근 객체(data access object, DAO)는 일부 종류의 데이터베이스나 기타 퍼시스턴스 매커니즘에 추상 인터페이스를 제공하는 객체이다. 응용 프로그램의 호출들을 퍼시스턴스 계층에 매핑시킴으로써 DAO는 데이터베이스의 상세한 사항을 노출시키지 않고 특정 데이터의 일부 동작을 제공하게 된다. 이러한 분리는 단일 책임 원칙을 지원한다. 도메인 특화 객체 및 자료형(DAO의 퍼블릭 인터페이스) 관점에서 응용 프로그램이 필요로 하는 데이터 접근이 무엇인지를, 어떻게 이러한 요구사항을 특정 DBMS, 데이터 스키마 등을 만족할 수 있는지(DAO의 구현체)와 분리시킨다.

디자인 패턴이 대부분의 프로그래밍 언어, 퍼시스턴스가 필요한 대부분의 소프트웨어, 대부분의 종류의 데이터베이스에 동등하게 적용되지만 전통적으로는 자바 EE 애플리케이션 및 관계형 데이터베이스와 연계된다. (해당 플랫폼에 대해 썬 마이크로시스템즈의 최고의 실천 지침[1] "코어 J2EE 패턴"에 따라 JDBC API를 통해 접근)

 

 

<참고 자료>

https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0_%EC%A0%91%EA%B7%BC_%EA%B0%9D%EC%B2%B4

 

<참고 강의>

youtu.be/v2mmPRLjJGw

 

반응형

댓글