1. 로그인 기능 구현
UserDAO에서 DAO는 데이터베이스 접근 객체의 약자
회원 데이터 베이스에 회원 정보를 불러오거나 입력하고자 할떄 사용
UserDAO.java
package user; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class UserDAO { // dao : 데이터베이스 접근 객체의 약자로서 // 실질적으로 db에서 회원정보 불러오거나 db에 회원정보 넣을때 private Connection conn; // connection:db에접근하게 해주는 객체 private PreparedStatement pstmt; private ResultSet rs; // mysql에 접속해 주는 부분 public UserDAO() { // 생성자 실행될때마다 자동으로 db연결이 이루어 질 수 있도록함 try { String dbURL = "jdbc:mysql://localhost:3306/BBS"; // localhost:3306 포트는 컴퓨터설치된 mysql주소 String dbID = "admin"; String dbPassword = "1234"; Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(dbURL, dbID, dbPassword); } catch (Exception e) { e.printStackTrace(); // 오류가 무엇인지 출력 } } // 로그인을 시도하는 함수**** public int login(String userID, String userPassword) { String SQL = "SELECT userPassword FROM USER 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" /> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>jsp 게시판 웹사이트</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("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>"); } //DB오류 else if(result == -2){ PrintWriter script = response.getWriter(); script.println("<script>"); script.println("alert('DB오류가 발생했습니다.')"); script.println("history.back()"); script.println("</script>"); }
%> </body> </body> </html> |
로그인 처리 페이지 완료.
2. Connector/J 다운로드
mysql과 jsp를 연결.
mysql에 접속하기 위한 드라이버를 추가해야한다.
jar파일을 라이브러리에 추가
WebContent - Web-INF - Lib에 추가
빌드패스 지정을 해준다.
실행하여 로그인 테스트를 해보니
DB 연결 Error!!!
동빈나님의 강의에서는 바로 되지만
나는 Timezone 오류발생 ㅠㅠ
mysql 버전이 업그레이드 되면서 생기는 오류인듯 했다.
dbURL 뒤에
?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
을 추가하니 타임존 설정을 해주니
로그인이 제대로 작동한다.
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="collapse" data-target="#bs-example-navbar-collapse-1" aria-expaned="false"> <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> <!-- 부트스트랩 JS --> <script src="js/bootstrap.js"></script> </body> </html>
|
join.jsp 화면 디자인
'STUDY > programing' 카테고리의 다른 글
JSP 기초 : 게시판 만들기 6. 글 등록 기능 (262) | 2018.10.23 |
---|---|
JSP 기초 : 게시판 만들기 5. 게시판 DB 생성 (753) | 2018.10.22 |
JSP 기초 : 게시판 만들기 4. 회원가입 / 세션 처리 (20) | 2018.10.19 |
JSP 기초 : 게시판 만들기 2. 디자인, 로그인, 회원 DB (16) | 2018.10.16 |
JSP 기초 : 게시판 만들기 1. JSP 개발환경 구축하기 (3) | 2018.10.15 |
자바 기초 문제, 소수 구하기 (백준 알고리즘 2581번 문제) (0) | 2018.10.09 |