Practice

JSP로 반응형 게시판 만들기!!! [1/9] 로그인 페이지, 회원 DB 구축

Juun 2022. 4. 27. 22:12
반응형

안녕하세요 준입니다!!

어제 JSP와 JQUERY로 게시판을 만들어봤는데요

2022.04.26 - [Practice] - JSP와 Jquery로 게시판 만들어 보기

 

JSP와 Jquery로 게시판 만들어 보기

오늘은 수업시간에 배운 JSP와Jquery를 통해 게시판을 만들어볼께요! 요즘에는 이런 방식이 아니라 스프링을 통해서 만드는데 1990년대 2000년대 까지 이 방식으로 많이 만들었다고 해요. 현업에 가

puenti.tistory.com

만들면서 많이 부족하다는 생각이 들더라구요!!

그래서 오늘은 조금 더 욕심 내서 만들고 싶어서 다시 한 번 만들어봤어요!!

 

먼저 로그인 페이지부터 만들어봅니다!!

중간중간에 주석처리하면서 설명을 해놨어요!!

 

부트스트랩이란걸 이용해서 반응형 웹을 만들어봤어요!!

<%@ 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">
<meta name = "viewport" content="width=device-width", initial-scale="1"> 
<!-- 부트스트랩은 컴퓨터, 모바일 어떤걸로 접속하더라도 해상도에 맞게 디자인을 보여주는 템플릿. 그래서 반응형 웹에 사용되는 메타 태그를 적어준다 -->
<link rel="stylesheet" href="css/bootstrap.css"> <!-- 디자인을 담당하는 css 참조 완료 -->
<title>JSP 게시판 웹사이트</title>
</head>
<body>
	<nav class="navbar navbar-default">
		<div class = "navbar-header">
			<button type = "button" class="navbar-toggle collapsed"
					data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"
					aria-expanded="false">
					<!-- 아이콘바 3개 -->
					<span class="icon-bar"></span>
					<span class="icon-bar"></span>
					<span class="icon-bar"></span>			
			</button>
			<a class = "navbar-brand" href="main.jsp">JSP 웹 사이트</a>
		</div>
		
		<div data-toggle="collapse" id = "bs-example-navbar-collapse-1">
			<ul class = "nav navbar-nav">
				<li><a href="main.sjp">메인</a></li>
				<li><a href="bbs.jsp">게시판</a></li>
			</ul>
						
			<ul class ="nav navbar-nav navbar-right">
				<li class = "dropdown">
					<a href="#" class = "dropdown-toggle"
						data-toggle="dropdown" role="button" aria-haspopup="true"
						aria-expanded="false">접속하기<span class="caret"></span></a>
					<ul class="dropdown-menu">
						<li class="active"><a href = "login.jsp">로그인</a></li> <!-- active는  현재 선택이 되었음 -->
						<li><a href = "join.jsp">회원가입</a></li>
					</ul>
				</li>
			</ul>
		</div>
	</nav>
	
	<div class="container">
		<div class = "col-lg-4"></div>
		<div class = "col-lg-4">
			<div class="jumbotron" style="padding-top:20px;">
				<form method="post" action="loginAction.jsp"> <!-- post 정보를 숨기는 메서드 -->
					<h3 syle = "text-align :center;">로그인 화면</h3> <!-- loginAction 페이지로 로그인 정보를 보내주겠다 -->
					<div class="form-group">
						<input type="text" class="form-control" placeholder="아이디" name="userID" maxlength = "20">
					</div>
					
					<div class="form-group">
						<input type="text" class="form-control" placeholder="비밀번호" name="userPassword" maxlength = "20"> 
					</div> 
					<input type = "submit" class = "btn btn-primary form-control" value="로그인">
					<!-- 로그인을 누르면 loginAction 페이지로 이동 -->
			</div> 
		</div>
		<div class="col-lg-4"></div>
	</div>
	
	<!-- 네비게이션 구동, 하나의 웹사이트에서 전반적인 구성을 보여주는 역할 -->
		<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
		<!-- 제이쿼리를 가져오기 -->
		<script src="js/bootstrap.js"></script>
		<!-- 부트스트랩에서 기본적으로 참조 -->
</body>
</html>

접속하기를 누르면 드롭다운도 되요!

화면이 줄어도 맞춰서 화면을 보여줘요!!

 

이제는 회원 정보를 관리하는 데이터베이스를 구축해볼게요

데이터베이스는 MySQL로 구축할거예요!

 

mysql> USE BBS;
Database changed
mysql> CREATE TABLE USER(
    -> userID VARCHAR(20),
    -> userPassword VARCHAR(20),
    -> userName VARCHAR(20),
    -> userGender VARCHAR(20),
    -> userEmail VARCHAR(50),
    -> PRIMARY KEY (userID)
    -> );

테이블이 잘만들어졌네요!

이제 값을 넣도록 할게요!

mysql> INSERT INTO USER VALUES('dongwon', '1234', '강동원', '남자', 'dongwon@naver.com');'

잘 들어갔네요ㅎㅎ

 

이제 JSP 서버에서 사용할 수 있게 Java Beans를 만들어줄께요!

package user;

public class User {
	private String userID;
	private String userPassword;
	private String userName;
	private String userGender;
	private String userEmail;
	
	public String getUserID() {
		return userID;
	}
	public void setUserID(String userID) {
		this.userID = userID;
	}
	public String getUserPassword() {
		return userPassword;
	}
	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserGender() {
		return userGender;
	}
	public void setUserGender(String userGender) {
		this.userGender = userGender;
	}
	public String getUserEmail() {
		return userEmail;
	}
	public void setUserEmail(String userEmail) {
		this.userEmail = userEmail;
	}
	
}

이제는 데이터베이스에서 회원정보를 불러오거나 넣을 수 있게 하는 DAO (데이터베이스 접근 객체)를 만들어볼께요!

로그인 기능이라고 생각하면 되요!!

// 로그인 기능에 대한 구현
	public int login(String userID, String userPassword) {
		// SQL에 넣을 명령어 적어주기
		String SQL = "SELECT userPassword FROM USER WHERE userID = ?"; // ? 안에는 입력받은 userID가 들어간다
		try {
			pstmt = conn.prepareStatement(SQL);
			pstmt.setString(1, userID);
			rs = pstmt.executeQuery();
			if (rs.next()) {
				if(rs.getString(1).equals(userPassword)) 
					return 1; // 로그인 성공
				
				else
					return 0; // 비밀번호 불일치
			}
			return -1; // 아이디가 없음
		} catch(Exception e) {
			e.printStackTrace();
		}
		return -2; // 데이터베이스 오류
	}

그리고 다음엔 이 함수를 받아줄 로그인 페이지를 만들어줄께요!!!

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "user.UserDAO" %>    <!--우리가 만든 클래스를 사용해주기 위해-->
<%@ page import = "java.io.PrintWriter" %>  <!-- JS 문장을 작성하기 위해 -->
<% request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean id = "user" class="user.User" scope="page" />
<jsp:setProperty name="user" property="userID" /> <!-- 로그인페이지에서 넘겨준 userID를 받음 -->
<jsp:setProperty name="user" property="userPassword" />
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset = UTF-8">
<meta name = "viewport" content="width=device-width", initial-scale="1"> 
<!-- 부트스트랩은 컴퓨터, 모바일 어떤걸로 접속하더라도 해상도에 맞게 디자인을 보여주는 템플릿. 그래서 반응형 웹에 사용되는 메타 태그를 적어준다 -->
<link rel="stylesheet" href="css/bootstrap.css"> <!-- 디자인을 담당하는 css 참조 완료 -->
<title>JSP 게시판 웹사이트</title>
</head>
<body>
	<%
		UserDAO userDAO = new UserDAO();
		int result = userDAO.login(user.getUserID(), user.getUserPassword());
		/* 로그인 페이지에서 각각 입력된 값이 넘어와서 login()에 넣어줘서 실행하게 된다
			-2 ~ 1까지의 값이 result 값에 담기게 된다
		*/
		if (result == 1){
			PrintWriter script = response.getWriter();
			script.println("<script>");
			script.println("location.href = 'main.jsp'"); // 로그인이 성공하면 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>

이렇게 하고 buidpath에서 mysql과 jdbc를 연결시켜주는 드라이버를 WEB-INF/lib에 넣어주고 실행시켜봤다

회원 정보가 없는 값을 넣어주니 로그인이 안되고 다시 로그인 화면으로 돌아왔다

그럼 이번에는 아까 넣어준 회원정보를 넣어볼게요~

아이디가 없을때!

아이디는 맞는데 비밀번호가 틀렸을때

 

아이디랑 비밀번호가 같을때!!

아직 로그인 성공한 화면을 안만들어서 화면이 저렇게 나와요!

의도한데로 잘 작동하는걸 볼 수 있습니다!!

 

이번 포스팅은 이까지 하고 

다음 포스팅에서 계속 하도록 할께요!!

반응형