반응형

2020/01/17 - [JSP 게시판 만들기] - JSP 게시판 만들기 #8 게시판 메인 페이지 디자인 하기

 

JSP 게시판 만들기 #8 게시판 메인 페이지 디자인 하기

2020/01/17 - [JSP 게시판 만들기] - JSP 게시판 만들기 #7 회원 세션관리 JSP 게시판 만들기 #7 회원 세션관리 2020/01/17 - [JSP 게시판 만들기] - JSP 게시판 만들기 #6 회원가입 기능 구현 JSP 게시판 만들기..

windorsky.tistory.com

이전 글에서는 게시판 페이지를 디자인해 보았습니다.

게시판이 사용될 글들을 저장하고 관리할 수 있도록 게시판 데이터 베이스를 구축해보도록 하겠습니다.

mysql command line clinet를 실행시키고

1. 암호를 친다

2. 우리가 만든 데이터 베이스 BBS를 입력한다 (use BBS;)

3. 게시판 테이블을 만든다

CREATE TABLE BBS(

bbsID INT,

bbsTitle VARCHAR(50),

userID VARCHAR(20),

bbsDate DATETIME,

bbsContent VARCHAR(2048),

bbsAvailable INT,

PRIMARY KEY(bbsID));

 

  다음으로 java src파일로 이동하신 다음에 게시물을 관리한 데이터 베이스에 접근할 수 있는 클래스를 만들어 주어야 합니다.

bbs라는 이름으로 패키지를 만들고 Bbs 하나의 자바 빈즈를 만들어 주겠습니다.

자바 빈즈는 하나의 게시물 정보를 담을 수 있는 틀이라고 할 수 있습니다.

 

 

Bbs.java에는 db와 동일한 변수를 넣어 주시면 됩니다. 

bbsAvailable은 데이터 베이스는 삭제된 글도 저장이 되는데 이것을 숫자 0 과 1로 구분하여

지워진 글인지 아닌지를 확인하기 위해서 사용합니다.

package bbs;

public class Bbs {
	
	public int getBbsID() {
		return bbsID;
	}
	public void setBbsID(int bbsID) {
		this.bbsID = bbsID;
	}
	public String getBbsTitle() {
		return bbsTitle;
	}
	public void setBbsTitle(String bbsTitle) {
		this.bbsTitle = bbsTitle;
	}
	public String getUserID() {
		return userID;
	}
	public void setUserID(String userID) {
		this.userID = userID;
	}
	public String getBbsDate() {
		return bbsDate;
	}
	public void setBbsDate(String bbsDate) {
		this.bbsDate = bbsDate;
	}
	public String getBbsContent() {
		return bbsContent;
	}
	public void setBbsContent(String bbsContent) {
		this.bbsContent = bbsContent;
	}
	public int getBbsAvailable() {
		return bbsAvailable;
	}
	public void setBbsAvailable(int bbsAvailable) {
		this.bbsAvailable = bbsAvailable;
	}
	private int bbsID;
	private String bbsTitle;
	private String userID;
	private String bbsDate;
	private String bbsContent;
	private int bbsAvailable;

	
	
	
}

 

다음 글에서는

글쓰기 기능을 구현해 보도록 하겠습니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

2020/01/17 - [JSP 게시판 만들기] - JSP 게시판 만들기 #7 회원 세션관리

 

JSP 게시판 만들기 #7 회원 세션관리

2020/01/17 - [JSP 게시판 만들기] - JSP 게시판 만들기 #6 회원가입 기능 구현 JSP 게시판 만들기 #6 회원가입 기능 구현 2020/01/17 - [JSP 게시판 만들기] - JSP 게시판 만들기 #5 회원가입 페이지 디자인 JSP..

windorsky.tistory.com

이전 글에 이어서 이번에는 게시판 메인 페이지 디자인을 해보도록 하겠습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" , initial-scale="1">
<link rel="stylesheet" href="css/bootstrap.css">
<title>Rodin login</title>
</head>
<body>
	<!--  로그인이 된 사람은 로그인정보를 담을 수 있도록 만들어 주겠습니다. -->
	<%
		String userID = null;
		if (session.getAttribute("userID") != null) {
			userID = (String) session.getAttribute("userID");
		}
	%>
	<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">
				<span class="icon-bar"></span> <span class="icon-bar"></span> <span
					class="icon-bar"></span>
			</button>
			<a class="navbar-brand" href="main.jsp">Rodin Web Site</a>
		</div>
		<div class="collapse navbar-collapse"
			id="bs-example-navbar-collapse-1">
			<ul class="nav navbar-nav">
				<li><a href="main.jsp">메인</a></li>
				<li><a href="font.jsp">포스터 분석</a></li>
				<li><a href="posterCategory.jsp">포스터 카테고리</a></li>
				<li><a href="analisys.jsp">통계</a></li>
				<li class="active"><a href="bbs.jsp">게시판</a></li>
			</ul>

			<%
				//로그인이 되어 있지 않다면
				if (userID == null) {
			%>
			<ul class="nav navbar-nav navbar-right">
				<li class="dropdown"><a href="#" class="dropdown-toggle"
					role="button" aria-haspopup="true" data-toggle="dropdown"
					aria-expanded="false">접속하기<span class="caret"></span></a>
					<ul class="dropdown-menu">
						<li><a href="login.jsp">로그인</a></li>
						<li><a href="join.jsp">회원가입</a></li>
					</ul></li>
			</ul>
			<%
				} else {
			%>
			<ul class="nav navbar-nav navbar-right">
				<li class="dropdown"><a href="#" class="dropdown-toggle"
					role="button" aria-haspopup="true" data-toggle="dropdown"
					aria-expanded="false">회원관리<span class="caret"></span></a>
					<ul class="dropdown-menu">
						<li><a href="logoutAction.jsp">로그아웃</a></li>
					</ul></li>
			</ul>
			<%
				}
			%>

		</div>
	</nav>
	
	<div class="container">
		<div class="row">
			<!--  홀수와 짝수로 색상이 변경됨 -->
			<table class="table table-striped" style="text-align: center; border: 1px solid #dddddd">
				<!-- thead : 테이블의 제목부분 각각의 속성들을 알려주는 역할을 합니다. -->
				<thead>
					<tr> 
						<th style="background-color: #eeeeee; text-align: center;">번호</th>
						<th style="background-color: #eeeeee; text-align: center;">제목</th>
						<th style="background-color: #eeeeee; text-align: center;">작성자</th>
						<th style="background-color: #eeeeee; text-align: center;">작성일</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td>번호예시</td>
						<td>제목 예시 전우치</td>
						<td>작성자 예시 홍길동</td>
						<td>2017-05-04</td>
					</tr>
				</tbody>
			</table>	
			<a href="write.jsp" class="btn btn-primary pull-right">글쓰기</a>
		</div>
	</div>

		<script src="https://code.jquery.com/jquery-1.11.3.js"
			integrity="sha256-IGWuzKD7mwVnNY01LtXxq3L84Tm/RJtNCYBfXZw3Je0="
			crossorigin="anonymous"></script>
		<script
			src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
			integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
			crossorigin="anonymous"></script>
</body>
</html>

우선 main.jsp 파일을 복사해서 WEB-INF에 붙여넣고 파일이름은 bbs.jsp로 바꾸어주겠습니다.

그 후 

main에 있던 class="active"를 아래의 li 에 넣어줍니다. 이건 현재의 페이지를 알려주는 기능을 합니다.

  이제 아래쪽으로 내려가서 코딩을 해보겠습니다.

 

실행해서 게시판으로 가면 아래와 같은 화면이 나오게 됩니다. 

아직은 write.jsp 를 구현하지 않았기 때문에 나오지 않습니다.

다음 글에서는 게시판 데이터 베이스를 구축해보도록 하겠습니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

2020/01/17 - [JSP 게시판 만들기] - JSP 게시판 만들기 #6 회원가입 기능 구현

 

JSP 게시판 만들기 #6 회원가입 기능 구현

2020/01/17 - [JSP 게시판 만들기] - JSP 게시판 만들기 #5 회원가입 페이지 디자인 JSP 게시판 만들기 #5 회원가입 페이지 디자인 2020/01/16 - [JSP 게시판 만들기] - JSP 게시판 만들기 #4 로그인 기능 구현하..

windorsky.tistory.com

이어서 진행해보겠습니다.

  세션이란 건 현재 접속한 회원에게 할당해주는 고유한 아이디 입니다.

  우리의 웹서버는 한명의 회원을 세션 ID로 구분할 수 있는데 로그인에 성공했을때 세션 ID를 부여해주는 것부터 세션관리가 시작됩니다.

loginAction페이지와 joinAction페이지에 각각 로그인 성공한 회원에게 세션을 부여해 주겠습니다.

loginAction.jsp

<%@ 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>Login page</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>");
	}
	
		UserDAO userDAO = new UserDAO();
		//login.jsp에서 id와 password를 받아옵니다.
		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('database에 오류가 발생하였습니다.')");
			script.println("history.back()");
			script.println("</script>");
		}
	%>
</body>
</html>

joinAction.jsp

<%@ 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 charset="UTF-8">
<title>Login page</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("history.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();
			//login.jsp에서 id와 password를 받아옵니다.
			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{
				session.setAttribute("userID", user.getUserID());
				PrintWriter script = response.getWriter();
				script.println("<script>");
				script.println("location.href='main.jsp'");
				script.println("</script>");
			}
		}
	%>
</body>
</html>

session.setAttribute("userID", user.getUserID());를 넣어 주었습니다.

그렇다면 이런식으로 부여된 세션을 다시 할당해제를 하기 위해서는 어떠한 페이지가 필요할까요?

로그아웃 페이지가 필요합니다.

 

이제 로그아웃 페이지를 만들어 주겠습니다.

WebContent아래에 logoutAction.jsp 파일을 만들어 주겠습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		session.invalidate();
	%>
	<script>
		location.href='main.jsp';
	</script>
</body>
</html>

session을 무효화 해주고 다시 main.jsp로 가도록 만들어 주었습니다.

로그인을 한 회원들은 sessionID를 부여받기 때문에 로그인 여부를 확인할 수 있습니다.

 따라서 로그인한 유저는 회원가입과 로그인 페이지에 들어갈 수 없도록 합니다.

 

userID를 초기화 해주고

  session을 확인해서 userID란 이름으로 세션이 존재하는 회원들은 userID에 해당 세션 아이디 값을 넣어 줄 수 있도록 합니다.

그리고 userID가 있을 경우 이미 로그인이 되었다고 적어줍니다.

이렇게 하여 이미 로그인한 사람은 또 다시 로그인 할 수 없도록 막아줍니다.

이 부분을 복사하여 회원가입 처리 페이지(joinAction.jsp)에도 넣어줍니다. 그러면 회원가입처리 페이지에도 접속 할 수 없도록 막아줍니다.

 

이제 index.jsp 페이지로 넘어가서 main.jsp로 이동할 수 있도록 해줍니다.

 

이제 main.jsp파일을 만들어 봅시다.

login.jsp파일을 복사하여 main.jsp 파일에 붙여주겠습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" , initial-scale="1">
<link rel="stylesheet" href="css/bootstrap.css">
<title>Rodin login</title>
</head>
<body>
	<!--  로그인이 된 사람은 로그인정보를 담을 수 있도록 만들어 주겠습니다. -->
	<%
		String userID = null;
		if (session.getAttribute("userID") != null) {
			userID = (String) session.getAttribute("userID");
		}
	%>
	<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">
				<span class="icon-bar"></span> <span class="icon-bar"></span> <span
					class="icon-bar"></span>
			</button>
			<a class="navbar-brand" href="main.jsp">Rodin Web Site</a>
		</div>
		<div class="collapse navbar-collapse"
			id="bs-example-navbar-collapse-1">
			<ul class="nav navbar-nav">
				<li class="active"><a href="main.jsp">메인</a></li>
				<li><a href="font.jsp">포스터 분석</a></li>
				<li><a href="posterCategory.jsp">포스터 카테고리</a></li>
				<li><a href="analisys.jsp">통계</a></li>
				<li><a href="bbs.jsp">게시판</a></li>
			</ul>

			<%
				//로그인이 되어 있지 않다면
				if (userID == null) {
			%>
			<ul class="nav navbar-nav navbar-right">
				<li class="dropdown"><a href="#" class="dropdown-toggle"
					role="button" aria-haspopup="true" data-toggle="dropdown"
					aria-expanded="false">접속하기<span class="caret"></span></a>
					<ul class="dropdown-menu">
						<li><a href="login.jsp">로그인</a></li>
						<li><a href="join.jsp">회원가입</a></li>
					</ul></li>
			</ul>
			<%
				} else {
			%>
			<ul class="nav navbar-nav navbar-right">
				<li class="dropdown"><a href="#" class="dropdown-toggle"
					role="button" aria-haspopup="true" data-toggle="dropdown"
					aria-expanded="false">회원관리<span class="caret"></span></a>
					<ul class="dropdown-menu">
						<li><a href="logoutAction.jsp">로그아웃</a></li>
					</ul></li>
			</ul>
			<%
				}
			%>

		</div>
	</nav>


		<script src="https://code.jquery.com/jquery-1.11.3.js"
			integrity="sha256-IGWuzKD7mwVnNY01LtXxq3L84Tm/RJtNCYBfXZw3Je0="
			crossorigin="anonymous"></script>
		<script
			src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
			integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
			crossorigin="anonymous"></script>
</body>
</html>

1.위쪽에 스크립트 문장을 실행할 수 있도록 <% page import="java.io.PrintWriter" %>을 넣어줍니다.

2. 로그인이 된 사람은 로그인 정보를 담을 수 있도록 만들어 줍니다.

이제 로그인을 한 사람이라면 userID에 해당 아이디가 담기게 되고 아니라면 null값이 담기게 됩니다.

3. 로그인이 되어 있지 않다면 회원가입이나 로그인이 가능하도록 하고

로그인이 되어있다면 로그아웃 하나만 넣어주도록 합니다.

 

4. 아래의 내용부분은 삭제하도록 하겠습니다.

이제 실행해 보도록 하겠습니다.

 

로그인을 하지 않은 상태

 

회원가입이나 로그인을 한 상태

 

오늘은 여기까짓!

그럼 다음글에서 찾아뵙겠습니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

 

당신에게 출력된 에러가 맞나요?

이것은 당신이 사용하겠다고 선택한 데이터 베이스가 없다는 것입니다.

 

당신이 사용할 데이터 베이스 목록들을 볼까요?

show databases;

 

  그럼 선택을 하고 사용해 봅시다.

use bbs;

select * from user;

정상적으로 작동 합니다.

 

반응형

'2020 > IT Q_A' 카테고리의 다른 글

2020 정보처리기사 정보  (0) 2020.01.22
BootStrap 추천 사이트  (0) 2020.01.21
eclipse mysql 연동  (0) 2020.01.16
MySQL DOWNLOAD / INSTALL  (0) 2020.01.16
location.href / location.replace 의 기능과 차이점  (0) 2020.01.16
블로그 이미지

꽃꽂이하는개발자

,
반응형

2020/01/17 - [JSP 게시판 만들기] - JSP 게시판 만들기 #5 회원가입 페이지 디자인

 

JSP 게시판 만들기 #5 회원가입 페이지 디자인

2020/01/16 - [JSP 게시판 만들기] - JSP 게시판 만들기 #4 로그인 기능 구현하기 JSP 게시판 만들기 #4 로그인 기능 구현하기 2020/01/16 - [JSP 게시판 만들기] - JSP 게시판 만들기 #3 회원 데이터베이스 구축..

windorsky.tistory.com

이전 글에는 회원가입 폼을 만들어 보았습니다. 이번에는 회원가입 기능을 구현해 보겠습니다.

우선 DAO에서 하나의 클래스를 코딩하겠습니다.

package user;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class UserDAO {
	
	//Connection 데이터 베이스 접근하게 해주는 하나의 객체
	private Connection conn;
	private PreparedStatement pstmt;
	//하나의 정보를 담을 수 있는 하나의 객체
	private ResultSet rs;
	
	//ctrl +shift + o 를 눌러 외부 라이브러리를 넣어줍니다
	
	//생성자를 만들어줍니다.
	public UserDAO() {
		try {
			//localhost:3306은 우리 컴퓨터에 설치된 mysql 서버 자체를 의미하고 bbs는 우리가 만든 테이블 이름입니다.
			//String dbURL = "jdbc:mysql://localhost:3306/BBS";
			String dbURL = "jdbc:mysql://localhost:3306/BBS?serverTimezone=UTC";
			String dbID ="root";
			String dbPassword ="root";
			Class.forName("com.mysql.jdbc.Driver");
			conn=DriverManager.getConnection(dbURL, dbID, dbPassword);
		}catch(Exception e) {
			e.printStackTrace();
		}
		
	}
	public int login(String userID, String userPassword) {
		//실제로 db에 입력할 sql문
		String SQL = "SELECT userPassword FROM USER WHERE 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; // 데이터베이스 오류를 의미합니다.
	}
	
	// 회원가입 기능 구현
	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; //데이터베이스 오류
	}
}

UserDao.jsp에서 아래의 기능만 추가해 주었습니다.

이전에 만들었던 join.jsp파일에는 회원가입 화면이 있습니다.

거기서 우리가 action="joinAction.jsp"로 보내기 때문에

다음으로 joinAction.jsp 클래스를 만들어 줍니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width", initial-scale="1">
<link rel="stylesheet" href="css/bootstrap.css">
<title>Rodin login</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">
			<span class="icon-bar"></span>
			<span class="icon-bar"></span>
			<span class="icon-bar"></span>
			</button>
			<a class="navbar-brand" href="main.jsp">Rodin Web Site</a>
		</div>
		<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
			<ul class="nav navbar-nav">
				<li><a href="main.jsp">메인</a></li>
				<li><a href="font.jsp">포스터 분석</a></li>
				<li><a href="posterCategory.jsp">포스터 카테고리</a></li>
				<li><a href="analisys.jsp">통계</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"	role="button" aria-haspopup="true" data-toggle="dropdown" 
					aria-expanded="false">접속하기<span class="caret"></span></a>
					<ul class="dropdown-menu">
						<li class="active"><a href="login.jsp">로그인</a></li>
						<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="joinAction.jsp">
					<h3 style="text-align: center;">회원가입 화면</h3>
					<div class="form-group">
						<input type="text" class="form-control" placeholder="아이디" name="userID" maxlength="20">
					</div>
					<div class="form-group">
						<input type="password" class="form-control" placeholder="비밀번호" name="userPassword" maxlength="20">
					</div>
					<div class="form-group">
						<input type="text" class="form-control" placeholder="이름" name="userName" maxlength="20">
					</div>
					
					<div class="form-group">
						<input type="email" class="form-control" placeholder="이메일" name="userEmail" maxlength="20">
					</div>
					<div class="form-group" style="text-align: center;">
						<div class="btn-group" data-toggle="buttons">
							<label class="btn btn-primary activate">
								<input type="radio" name="userGender" autocomplete="off" value="남자" checked>남자
							</label>
							<label class="btn btn-primary activate">
								<input type="radio" name="userGender" autocomplete="off" value="여자" checked>여자
							</label>
						</div>
					</div>
					<input type="submit" class="btn btn-primary form-control" value="회원가입">
				</form>
		</div>
	</div>

<script
  src="https://code.jquery.com/jquery-1.11.3.js"
  integrity="sha256-IGWuzKD7mwVnNY01LtXxq3L84Tm/RJtNCYBfXZw3Je0="
  crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</body>
</html>

추가 수정된 사항

  우리가 만들어 놓은 항목에서 하나라도 입력이 되지 않으면 alert('모두 입력이 되었는지 확인해주세요')라는 창이 뜨게 되고, 모두 입력이 되었다면 login.jsp에서 id와 password를 받아옵니다.

  userDAO클래스의 join 함수에 받아온 user값을 넣고 반환값이 -1이면 데이터베이스에서 userID는 유일값이기 때문에 중복이 될수 없습니다. 그렇기 때문에 아이디가 이미 존재한다고 출력되게 하고 그렇지 않다면 main.jsp로 가도록 했습니다.

실행해서 회원가입이 되면

이러한 창이 뜨게 되는데 이 화면은 우리가 main.jsp를 아직 만들지 않았기 때문입니다.^^

정상적으로 작동하고 있는거에요!!

그럼 다음 글에서 뵙겠습니다. 빠잇.

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

2020/01/16 - [JSP 게시판 만들기] - JSP 게시판 만들기 #4 로그인 기능 구현하기

 

JSP 게시판 만들기 #4 로그인 기능 구현하기

2020/01/16 - [JSP 게시판 만들기] - JSP 게시판 만들기 #3 회원 데이터베이스 구축 이어서 진행하겠습니다. 이번에는 UserDAO를 만들어 주겠습니다 DAO 는 데이터베이스 접근 객체로 회원 정보를 불러오거나 입..

windorsky.tistory.com

이전 편에서는 로그인 기능까지 구현했습니다.

이번에는 회원가입 폼을 구현하겠습니다.

join.jsp는 회원가입 폼을 디자인 할거에요.

이런 화면을 만들어 보도록 하겠습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width", initial-scale="1">
<link rel="stylesheet" href="css/bootstrap.css">
<title>Rodin login</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">
			<span class="icon-bar"></span>
			<span class="icon-bar"></span>
			<span class="icon-bar"></span>
			</button>
			<a class="navbar-brand" href="main.jsp">Rodin Web Site</a>
		</div>
		<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
			<ul class="nav navbar-nav">
				<li><a href="main.jsp">메인</a></li>
				<li><a href="font.jsp">포스터 분석</a></li>
				<li><a href="posterCategory.jsp">포스터 카테고리</a></li>
				<li><a href="analisys.jsp">통계</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"	role="button" aria-haspopup="true" data-toggle="dropdown" 
					aria-expanded="false">접속하기<span class="caret"></span></a>
					<ul class="dropdown-menu">
						<li class="active"><a href="login.jsp">로그인</a></li>
						<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="joinAction.jsp">
					<h3 style="text-align: center;">회원가입 화면</h3>
					<div class="form-group">
						<input type="text" class="form-control" placeholder="아이디" name="userID" maxlength="20">
					</div>
					<div class="form-group">
						<input type="password" class="form-control" placeholder="비밀번호" name="userPassword" maxlength="20">
					</div>
					<div class="form-group">
						<input type="text" class="form-control" placeholder="이름" name="userName" maxlength="20">
					</div>
					
					<div class="form-group">
						<input type="email" class="form-control" placeholder="이메일" name="userEmail" maxlength="20">
					</div>
					<div class="form-group" style="text-align: center;">
						<div class="btn-group" data-toggle="buttons">
							<label class="btn btn-primary activate">
								<input type="radio" name="userGender" autocomplete="off" value="남자" checked>남자
							</label>
							<label class="btn btn-primary activate">
								<input type="radio" name="userGender" autocomplete="off" value="여자" checked>여자
							</label>
						</div>
					</div>
					<input type="submit" class="btn btn-primary form-control" value="회원가입">
				</form>
		</div>
	</div>

<script
  src="https://code.jquery.com/jquery-1.11.3.js"
  integrity="sha256-IGWuzKD7mwVnNY01LtXxq3L84Tm/RJtNCYBfXZw3Je0="
  crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</body>
</html>

login.jsp에서 회원가입을 누르면 join.jsp로 이동하는 링크를 걸어주었죠

login.jsp

여기까지 로그인 폼을 만들어 보았습니다. 

다음 글에서는 회원가입 기능을 구현해 보도록 하겠습니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

2020/01/16 - [JSP 게시판 만들기] - JSP 게시판 만들기 #3 회원 데이터베이스 구축

 

이어서 진행하겠습니다.

이번에는 UserDAO를 만들어 주겠습니다

DAO 는 데이터베이스 접근 객체로 회원 정보를 불러오거나 입력할때 사용됩니다.

package user;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class UserDAO {
	
	//Connection 데이터 베이스 접근하게 해주는 하나의 객체
	private Connection conn;
	private PreparedStatement pstmt;
	//하나의 정보를 담을 수 있는 하나의 객체
	private ResultSet rs;
	
	//ctrl +shift + o 를 눌러 외부 라이브러리를 넣어줍니다
	
	//생성자를 만들어줍니다.
	public UserDAO() { //실제로 mysql에 접속할 수 있도록 도와줌
		try {
			//localhost:3306은 우리 컴퓨터에 설치된 mysql 서버 자체를 의미하고 bbs는 우리가 만든 테이블 이름입니다.
			String dbURL = "jdbc:mysql://localhost:3306/BBS?serverTimezone=UTC";
			String dbID ="root"; //db 계정
			String dbPassword ="root"; //db 비밀번호
			
            //driver는 mysql에 접속할 수 있도록 도와주는 하나의 라이브러리 매개체
            Class.forName("com.mysql.jdbc.Driver"); 
            
			conn=DriverManager.getConnection(dbURL, dbID, dbPassword);
		}catch(Exception e) {
			e.printStackTrace(); //오류가 무엇인지 출력
		}
		
	}
    // 실제로 로그인을 시도하는 함수
	public int login(String userID, String userPassword) { // 아이디와 비밀번호를 받아옴
		//실제로 db에 입력할 sql문
		String SQL = "SELECT userPassword FROM USER WHERE 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; // 데이터베이스 오류를 의미합니다.
	}
}

 여기까지 오셨으면 loginAction.jsp 를 만들어 주겠습니다.

<%@ 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>Login page</title>
</head>
<body>
	<%
		UserDAO userDAO = new UserDAO();
		int result = userDAO.login(user.getUserID(), user.getUserPassword());
		if(result == 1){
			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("alter('비밀번호가 틀립니다.')");
			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('database에 오류가 발생하였습니다.')");
			script.println("history.back()");
			script.println("</script>");
		}
	%>
</body>
</html>

 

mysql에 접속하기 위해서 driver를 프로젝트에 추가해주어야 합니다.

mysql jdbc driver을 구글에 검색해서

다운로드 하고 압축을 풀어준 뒤

이 파일을

WEB-INF/lib/ 복사해서 넣어줍니다.

 

이제 실행을 해보겠습니다.

DB에서 회원관리 구축할때 홍길동 한명 넣어 준거 기억 나시나요?

전 gildong//1234 로 회원가입을 했습니다.

아직 main.jsp는 구현을 못했기 때문에 정상적으로 출력되는 걸 알 수 있습니다.

하지만 비밀번호 가 틀렸을경우 비밀번호가 틀렸다고 나오고

db오류일 경우 db오류라고 뜨게 되고

아이디가 없을 경우 아이디가 없다고 뜨게 됩니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,

eclipse mysql 연동

2020/IT Q_A 2020. 1. 16. 21:41
반응형

mysql에 접속하기 위해서 driver를 프로젝트에 추가해주어야 합니다.

mysql jdbc driver을 구글에 검색해서

다운로드 하고 압축을 풀어준 뒤

WEB-INF/lib/ 복사해서 넣어줍니다.

반응형

'2020 > IT Q_A' 카테고리의 다른 글

BootStrap 추천 사이트  (0) 2020.01.21
ERROR 1406 (3D000): No database selected  (0) 2020.01.17
MySQL DOWNLOAD / INSTALL  (0) 2020.01.16
location.href / location.replace 의 기능과 차이점  (0) 2020.01.16
jquery 버전 확인  (0) 2020.01.16
블로그 이미지

꽃꽂이하는개발자

,