반응형
1. 로그인 기능 구현
UserDAO에서 DAO는 데이터베이스 접근 객체의 약자
회원 데이터 베이스에 회원 정보를 불러오거나 입력하고자 할떄 사용
UserDAO.java
package user;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDAO {
//dao:데이터베이스 접근 객체의 약자로
//실질적으로 db에서 회원정보 불러오거나 db에 회원정보를 넣을때
private Connection conn; //connection db에 접근하게 해주는 객체
private PreparedStatement pstmt;
private ResultSet rs;
//Oracle에 접속 해주는 부분
public UserDAO() {//생성자 실행될때마다 자동으로 db연결이 이루어질수 있도록함
try {
String driverName = "oracle.jdbc.driver.OracleDriver";
String dbURL = "jdbc:oracle:thin:@localhost:1521:xe";
String dbID = "admin";
String dbPassword = "iu9252";
Class.forName(driverName);
conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
System.out.println("DB에 연결 되었습니다.\n");
}catch(ClassNotFoundException e) {
System.out.println("DB 드라이버 로딩 실패 :" +e.toString());
}catch(SQLException sqle) {
System.out.println("DB 접속실패 :"+sqle.toString());
}catch(Exception e) {
System.out.println("Unkonwn error");
e.printStackTrace();
}
}
public int login(String userID, String userPassword) {
String SQL = "SELECT userPassword FROM USER1 WHERE userID = ?";
try {
//pstmt: prepared statement 정해진 sql문장을 db에 삽입하는 형식으로 인스턴스가져옴
pstmt = conn.prepareStatement(SQL);
//sql인젝션 같은 해킹기법을 방해하는것 pstmt를 이용해 하나의 문장을 미리 준비해서 (물음표사용)
//물음표에 해당하는 내용을 유저 아이디로, 매개변수로 이용 1)존재하는지 2)비번 무엇인지
pstmt.setString(1, userID);
//rs:result set에 결과보관
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"%><!-- 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="EUC-KR">
<meta name="viewport" content="width=device-width" initial-scale="1">
<!-- 스타일시트 참조 -->
<link rel="stylesheet" href="css/bootstrap.min.css">
<title>jsp 게시판 웹사이트</title>
</head>
<body>
<%
UserDAO userDAO = new UserDAO();//인스턴트 생성
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) {//DB오류
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('데이터베이스 오류가 발생했습니다.');");
script.println("history.back()");
script.println("</script>");
}
%>
</body>
</html>
2. 자바(이클립스) - 오라클 JDBC 연결 / 연동 환경설정
->
2019/12/07 - [프로그램언어 뽀각/└Oracle] - 자바(이클립스) - 오라클 JDBC 연결 / 연동 환경설정
참고한 게시판에선 MySQL을 쓰고있어서 이부분에서 바꿔찾는다고 좀힘들었다 ..
그래도 오류를 찾고 고치는것 자체가 나자신을 성장시키는 행동이라고 생각했다 !
3. 회원가입 화면 구현
join.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">
<!-- 뷰포트 -->
<meta name="viewport" content="width=device-width" initial-scale="1">
<!-- 스타일시트 참조 -->
<link rel="stylesheet" href="css/bootstrap.min.css">
<title>jsp 게시판 웹사이트</title>
</head>
<body>
<!-- 네비게이션 -->
<nav class="navbar navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed"
data-toggle="collaspe" data-target="#bs-example-navbar-collapse-1"
aria-expaned="fale">
<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 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="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>
<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;">
<!-- 로그인 정보를 숨기면서 전송post -->
<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" style="text-align: center;">
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active"> <input
type="radio" name="userGender" autocomplete="off" value="남자"
checked>남자
</label> <label class="btn btn-primary"> <input type="radio"
name="userGender" autocomplete="off" value="여자">여자
</label>
</div>
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="이메일"
name="userEmail" maxlength="50">
</div>
<input type="submit" class="btn btn-primary form-control"
value="회원가입">
</form>
</div>
</div>
</div>
<!-- 애니매이션 담당 JQUERY -->
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="js/bootstrap.js"></script>
</body>
</html>
join.jsp 화면 디자인
반응형
'나만의 미니프로젝트 > JSP게시판 웹사이트' 카테고리의 다른 글
JSP 게시판 만들기 NO.6 글 등록 기능 (0) | 2019.12.07 |
---|---|
JSP 게시판 만들기 NO.5 메인 화면/ 게시판 DB생성 (0) | 2019.12.07 |
JSP 게시판 만들기 NO.4 회원 가입/ 세션 처리 (0) | 2019.12.07 |
JSP 게시판 만들기 NO.2 디자인,로그인,회원DB (0) | 2019.12.07 |
JSP 게시판 만들기 NO.1 JSP 개발 환경 구축 하기 (0) | 2019.12.03 |