로그인 기능을 구축해보았고 이젠 회원가입 join.jsp를 만들어볼 것이다.

 

 

1. 회원가입페이지 코드 작성

 

 

2. 화면 출력

 

이메일주소 잘못 입력시 메시지 및 표기

다른형태의 표기

 

 

다음은 게시판 데이터베이스 구축을 해 볼 것이다.

데이터베이스 설치 및 회원정보를 담을 수 있는 유저테이블을 구축하고 자바빈스로 유저클래스를 만들어주었다.

 

이제 실제로 로그인 기능을 구현해보려고 한다.

 

1. DAO 클래스를 만들어준다.

*DAO(Database Access Object)

jsp에서 회원 데이터베이스 테이블에 접근할 수 있도록 dao를 만들어주어야 한다.

데이터베이스접근객체의 약자이다.

실질적으로 데이터베이스에서 회원정보를 불러오거나

데이터베이스에 회원데이터베이스를 넣고자할 때에 넣을 때 사용한다.

 

2. java sql.connection 외부라이브러리를 추가 및 mysql 접속하도록 객체생성 한다.

 

사진

 

-Connection은 데이터베이스에 접근할 수 있는 객체를 의미한다.

-해킹기법으로부터 방어하기 위한 코드

-정보를 담을 수 있는 객체

 

3. conn 객체 안에 mysql 접속url, 아이디 비번 담기게 해주는 코드 작성을 한다.

4. 실제로 로그인을 시도하는 하나의 함수를 만든다.

 

-하나의 계정에 대한 로그인 함수를 만든다.

-유저아이디와 비밀번호를 처리할 수 있는 함수를 만든다.

-실제로 데이터베이스에 입력할 명령어를 sql 문장으로 만들어준다.

-try catch문장을 넣어서 예외처리를 할수 있도록 한다.

 예외가 발생한 경우 해당 예외를 return -2(데이터베이스 오류)로 출력할 수 있도록 한다.

 

사진

 

-sql 인젝션 해킹을 방어하기 위해 수단으로서 하나의 문장을 미리준비해서 ?를 넣음으로서

pstmt = conn.preparestatement에 정해진 sql을 문장을 데이터베이스에 삽입하는 형식으로 인스턴스를 가져온다.

pstmt.setstring(1, userID);

 

그 물음표에 해당하는 내용을 USERID를 물음표에 들어가게 한다.

매개변수로 들어오는 USERID를 물음표에 들어갈 수 있게 한다.

데이터베이스에 사용자 아이디를 입력받아서 실제 존재하는지 비밀번호는 무엇인지를 파악하고 가져온다.

 

rs.next(결과를 담는 객체)에 결과가 데이터베이스에 아이디가 없으면 -1

아이디가 있으면 로그인 성공의 return 값인 1에 해당하는 메세지 출력이 된다.

 

 

사진

 

5. loginAction.jsp 페이지를 만든다. (사용자 로그인 처리 페이지를 만든다.)

 

-<%@ page import="user.UserDAO" %>

(작성한UserDAO 클래스를 가져오기 위해서 작성)

 

-<%@ page import="java.io.PrintWriter" %>

(java io에잇는자바스크립트를작성하기위해서작성)

 

-<% request.setCharacterEncoding("UTF-8"); %>

(건너오는데이터를UTF-8로받게하기위해작성)

 

JavaBeans를 활용해서 한명의 회원 정보를 담는 유저라는 클래스를 JavaBeans로 사용한다.

 

<jsp:useBean id="user" class="user.User" scope="page"/>

-> 현재페이지내에서자바beans가사용되도록한다.

 

<jsp:setProperty name="user" property="userID" />

-> 한명의사용자의userID를로그인페이지에서받아서넘겨주는역할

 

<jsp:setProperty name="user" property="userPassword" />

-> 한명의사용자의비번을로그인페이지에서받아서넘겨주는역할

 

*공부를 하다 보니 객체와 인스턴스의 차이가 애매한 것 같아 찾아 보았다.

객체(Object) 및 인스턴스(Instance) 클래스의 타입으로 선언되었을 때 객체라고 부른다

그 객체가 메모리에 넘어가서(할당될때에) 사용될 때 인스턴스라고 부를 수 있다.

객체는 실제적인 실체, 인스턴스는 넘어가서 받아서 사용된다는 연결/관계에 초점을 맞춘다.

객체를 클래스의 인스턴스라고 불리기도 한다.

 

 

6. mysql에 접속하기 위한 드라이버를 프로젝트에 추가 해준다.

msql jdbc driver = mysqljsp를 연결할 수 있는 드라이버

 

 

사진1 다운로드

 

사진2(mysql 커넥터 압축풀기 및 복사하여 붙여넣기)

 

사진3 (mysql 드라이버 정상연결 과정)

 

7. 로그인 시도시 자꾸 -2 데이터베이스 에러가 난다.

아이디와 비번을 다시 맞추어서 작성했는데도 불구하고 데이터베이스에러가 보인다.

 

 

에러내용

Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '????α is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.

 

찾아보니 하기의 것으로 서버 타임존 과 관련된 dbURL을 해주어야 한다고 나옴

타임존이 별도로 지정 되어 있지 않아서 설정을 해주어야 한다고 함.

 

1) JDBC URL의 문자열에 서버타임존 정보를 추가한다.

->String dbURL = "jdbc:mysql://localhost:3306/JSP?serverTimezone=UTC";

나는 첫 번째 방법을 사용했다.

 

2) 서버에서 직접 기본설정을 하기 해준다.

 

[mysqld]

default-time-zone='+8:00'

 

수정내용

 

8.로그인 성공 그리고 각각의 상황에 맞는 메시지가 나온다.

 

사진

사진2

회원데이터베이스 구축을 위해 mysql설치를 한다.

1. MYSQL설치 (다운로드의 커뮤니티서버를 운영체제에 맞는 인스톨러를 설치한다)

 

설치중1

 

설치중2

 

설치중3

 

설치중4

 

2. 회원데이터베이스구축

 

3. 만들어진 회원 데이터를 jsp서버에서 담고 처리할 수 있도록 한다.

-Java Resourcessrcuser라는 이름으로 패키지 만든다.

-user 패키지내에 User라는 이름으로 클래스를 만든다.

-데이터베이스에서 만들었던 이름과 동일하게 만든 클래스내에 코드를 작성한다.

 

=> 각각의 회원 정보들이 자바안에 담길 수 있게 된다.

jsp서버에서 사용할 수 있는 형태로 만들기 위해 getters setters를 선택한다.

 

사진1

사진2

 

*getters setters를 눌러 함수를 만들었다.

한명의 데이터를 다룰 수 있는 데이터베이스 및 자바beans가 완성이 됨

 

하나의 데이터를 관리하고 처리할 수 있는 기법을

jsp에서 구현하는 것을 자바beans라고 한다.

'신입개발자로 취업하기까지 > JSP게시판' 카테고리의 다른 글

6. 회원가입기능 구축  (0) 2020.08.19
5. 로그인 화면  (0) 2020.08.19
4. 로그인 기능 구현하기  (0) 2020.08.19
2. 홈화면 및 로그인 화면 구축  (0) 2020.08.19
20200707 1.환경설정  (0) 2020.07.08

+ Recent posts