Jsp 회원 가입 | Jsp Ajax 회원가입 기능 구현하기 1강 – 프로젝트 소개 및 회원가입 화면 디자인 상위 172개 답변

당신은 주제를 찾고 있습니까 “jsp 회원 가입 – JSP Ajax 회원가입 기능 구현하기 1강 – 프로젝트 소개 및 회원가입 화면 디자인“? 다음 카테고리의 웹사이트 https://you.tfvp.org 에서 귀하의 모든 질문에 답변해 드립니다: https://you.tfvp.org/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 동빈나 이(가) 작성한 기사에는 조회수 16,311회 및 좋아요 79개 개의 좋아요가 있습니다.

jsp 회원 가입 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 JSP Ajax 회원가입 기능 구현하기 1강 – 프로젝트 소개 및 회원가입 화면 디자인 – jsp 회원 가입 주제에 대한 세부정보를 참조하세요

JSP Ajax 회원가입 기능 구현하기 1강 – 프로젝트 소개 및 회원가입 화면 디자인 강의 동영상입니다. 이번 강좌에서는 아이디 중복 체크가 포함된 회원가입 기능을 구현합니다. 이번 시간에는 회원가입 화면 디자인까지 작업하는 시간을 가집니다.

jsp 회원 가입 주제에 대한 자세한 내용은 여기를 참조하세요.

Day53 – [JSP]회원가입 페이지 만들기 – 일상 – Tistory

그러면, 회원가입을 하고, 이 회원가입한 아이디와 비밀번호를 데이터베이스에 insert(추가) 하면 되겠죠? 회원가입이 완료되면, 로그인을 하는데, 로그인 …

+ 더 읽기

Source: rsorry.tistory.com

Date Published: 1/22/2022

View: 1454

JSP – 회원가입 기능 구현하기 – velog

회원가입에 대한 폼을 디자인하고 만들어놓았으니 이제 기능을 구현해보자. 우선, UserDAO.java 를 업데이트 해야한다. UserDAO 는 실제로 DB에 접근 …

+ 여기에 보기

Source: velog.io

Date Published: 6/4/2022

View: 6635

[JSP개발] 회원가입 화면 – 세상의 모든 기록

[JSP개발] 회원가입 화면 · 1. 개요. member 폴더 아래에 pro와 view라는 폴더를 생성하였다. 각각 화면과 처리를 담당하는 JSP를 나누기 위해서이다. · 2. 소스 코드.

+ 자세한 내용은 여기를 클릭하십시오

Source: all-record.tistory.com

Date Published: 10/18/2021

View: 5455

JSP게시판 만들기 [5] – 회원가입/로그인 화면 구성 및 기능 구현

2. 회원가입 화면 구성. 유저 정보관련 jsp파일은 “member”폴더에서 작업을 진행했습니다. <%@ page language="java" contentType="text/html; ...

+ 여기에 보기

Source: group11.tistory.com

Date Published: 12/23/2021

View: 3557

[JSP 게시판 만들기] 6강 회원가입 기능 구현하기 – ee2ee2

이번 시간에는 회원가입 페이지를 통해 데이터가 전달 및 저장되는 기능을 구현해 본다. UserDAO.java. 지난 시간 UserDAO.java 파일은 데이터베이스 …

+ 여기에 자세히 보기

Source: ee2ee2.tistory.com

Date Published: 1/12/2021

View: 6747

JSP 게시판 제작[3] – 회원가입 – 오늘코딩

On this page · 1) User 테이블 만들기 · 2) 회원가입 화면 (폼) 만들기. – join.jsp · 3) User 클래스 생성. – uesr.java · 4) UserDAO 클래스 생성. – …

+ 여기에 보기

Source: gwang920.github.io

Date Published: 6/5/2022

View: 327

[jsp]회원가입, 로그인 기능 구현 – 윤브는 개발중

OracleDB를 사용. SqlDeveloper로 memberT테이블을 만들어 놓고 아래 코드 작성. MemberBean.java. package magic.member; import java.sql.

+ 여기를 클릭

Source: yoon-ve.tistory.com

Date Published: 10/20/2021

View: 3910

[JSP] JSP 게시판 만들기 6강 회원가입 기능 구현하기

유튜브 동빈나님 JSP 게시판 강좌 따라하기 6강 회원가입 기능 구현하기 한 명의 회원정보를 입력하는 회원가입 폼에서 아이디, 비밀번호, 이름, …

+ 여기를 클릭

Source: happy-inside.tistory.com

Date Published: 10/9/2021

View: 3019

JSP – 미니 프로젝트(4. 회원가입) – 저장하는개발자

전까지는 로그인/로그아웃 기능을 작동되도록하였다. 이번에는 회원가입을 진행해보도록하겠습니다. 우선 화면단부터구성. 이번 회원가입에는 주소API …

+ 여기에 더 보기

Source: memory-develo.tistory.com

Date Published: 1/18/2021

View: 6467

[JSP] 회원가입, 로그인 만들어 보기 – Roel Downey

전체 코드는 올려두지 않았습니다. – 회원가입, 로그인을 만들어 보기 요구 사항 정리 – [ 로그인 ] : 1. 사용자에게 이메일과 패스워드를 입력 …

+ 여기에 표시

Source: roeldowney.tistory.com

Date Published: 6/10/2022

View: 512

주제와 관련된 이미지 jsp 회원 가입

주제와 관련된 더 많은 사진을 참조하십시오 JSP Ajax 회원가입 기능 구현하기 1강 – 프로젝트 소개 및 회원가입 화면 디자인. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

JSP Ajax 회원가입 기능 구현하기 1강 - 프로젝트 소개 및 회원가입 화면 디자인
JSP Ajax 회원가입 기능 구현하기 1강 – 프로젝트 소개 및 회원가입 화면 디자인

주제에 대한 기사 평가 jsp 회원 가입

  • Author: 동빈나
  • Views: 조회수 16,311회
  • Likes: 좋아요 79개
  • Date Published: 2017. 6. 2.
  • Video Url link: https://www.youtube.com/watch?v=XxeLEMC5jzA

이번에는 JSP 에서 JDBC를 이용하고, 회원가입 하는 페이지를 만들어 봅시다

회원가입 페이지 만들기

회원가입 페이지를 만들기 전에, 한번 생각을 해봅시다. 어떠한 흐름을 가져야 하는지….

먼저, 어떤 페이지가 있다면, 로그인 화면이 있겠고, 로그인 할 아이디를 먼저 만들기 위해서 회원가입을 누르겠죠?

그러면, 회원가입을 하고, 이 회원가입한 아이디와 비밀번호를 데이터베이스에 insert(추가) 하면 되겠죠?

회원가입이 완료되면, 로그인을 하는데, 로그인 할 때는 데이터베이스에 저장된 id를 가져와서 pw와 비교를 하고 로그인이 되겠죠?

이러한 흐름을 생각해서 간단한 회원가입 페이지를 만들어 봅시다.

회원가입 할 때, 필요한 정보를

양식에 만들어 주면 됩니다.

파일명 : join.jsp

회원가입

아이디:
비밀번호:
이름:
전화번호:
남자 여자

form에 들어있는 name은, 데이터베이스에 존재하는 테이블의 속성(Attribute)과 같아야 합니다.

그래서, 데이터베이스에서 계정과, 데이터베이스를 만들어 줄 겁니다.

저는 oracle 18c를 사용하고, sql developer를 사용하고 있기 때문에, PDB 계정에서, JSP 계정을 만들고, 권한을 주고,

JSP 계정에 접속해서, 테이블을 만들어 줄거에요

PDB 계정

JSP 계정

이제 다시, 이클립스로 돌아와서….. 위와 같이 만든 회원가입 화면에서, 데이터를 입력하고 가입을 누르면 해당 정보를 데이터베이스에 연결해서 insert 해줄 건데요, 연결할 때는 JDBC 를 이용할 겁니다.

JDBC를 사용하기 위해서, 프로젝트 내의 lib 폴더 안에, ojdbc8.jar 파일을 넣어 줍시다.

저는 oracle 18c 버전을 사용하기 때문에, ojdbc8.jar 파일인데, 사용하고 있는 버전에 따라 넣어주면 됩니다.

※ 다운로드 및 사용법은 아래의 글을 참조해 주세요. 아래 글에서는 ojdbc8.jar 를 외부 라이브러리 참조로 했지만, JSP 환경에서는 프로젝트 내에 .jar 파일만 넣어주면 됩니다.

rsorry.tistory.com/162?category=945498

이렇게, ojdbc8.jar 를 추가했다면, 바로 사용을 해주면 됩니다.

파일명 : join_ok.jsp

join_ok.jsp 에서는, join.jsp 의

태그에 데이터를 데이터베이스의 MEMBERS 테이블에 insert 해줄 거에요

<%@page import="java.sql.DriverManager"%> <%@page import="java.sql.PreparedStatement"%> <%@page import="java.sql.Connection"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String id = request.getParameter("id"); String pw = request.getParameter("pw"); String name = request.getParameter("name"); String phone1 = request.getParameter("phone1"); String phone2 = request.getParameter("phone2"); String phone3 = request.getParameter("phone3"); String gender = request.getParameter("gender"); // 1.변수선언 String url = "jdbc:oracle:thin:@you.tfvp.org:1521/XEPDB1"; String uid = "JSP"; String upw = "JSP"; Connection conn = null; PreparedStatement pstmt = null; String sql = "insert into members values(?, ?, ?, ?, ?, ?, ?)"; try{ // 1. 드라이버 로드 Class.forName("oracle.jdbc.driver.OracleDriver"); // 2. conn 생성 conn = DriverManager.getConnection(url, uid, upw); // 3. pstmt 생성 pstmt = conn.prepareStatement(sql); pstmt.setString(1, id); pstmt.setString(2, pw); pstmt.setString(3, name); pstmt.setString(4, phone1); pstmt.setString(5, phone2); pstmt.setString(6, phone3); pstmt.setString(7, gender); // 4. sql문 실행 int result = pstmt.executeUpdate(); if(result == 1){ // 성공 response.sendRedirect("join_succes.jsp"); } else{ // 실패 response.sendRedirect("join_fail.jsp"); } } catch(Exception e){ e.printStackTrace(); } finally{ try{ if(conn != null) conn.close(); if(pstmt != null) pstmt.close(); } catch(Exception e){ e.printStackTrace(); } } %>

insert가 성공적으로 된다면, 회원가입에 성공했다는 거겠죠? join_succes.jsp 로 이동을 해서, 회원가입에 성공했다는 걸 알려줍시다. 그리고, 회원가입에 성공했다면, 로그인 화면으로 가는 링크를 걸어 주면 좋겠죠?

파일명 : join_succes.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here

회원가입을 축하합니다

로그인하기

insert가 실패한다면, 회원가입에 실패했다는 거니까, join_fail.jsp 로 이동을 해서, 회원가입에 실패했다는 걸 알려줍시다.

그리고, 다시 회원가입 화면으로 가는 링크를 걸어 줍시다.

파일명 : join_fail.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here

회원가입에 실패했습니다

다시 가입하기

회원가입 페이지 만드는 걸 간단하게 알아 보았는데요,

위의 코드를 작성하기 위해서는 java, oracle, html, jsp 에 대해서 알고 있어야 하겠죠?

고생하셨습니다.

다음 글로 이어집니다.

http://rsorry.tistory.com/188

JSP – 회원가입 기능 구현하기

회원가입 기능 구현

현재, 디자인을 먼저하고 기능을 구현하는 식으로 작업을 진행하는 중이다. 회원가입에 대한 폼을 디자인하고 만들어놓았으니 이제 기능을 구현해보자.

우선, UserDAO.java 를 업데이트 해야한다. UserDAO class는 실제로 DB에 접근해서 어떤 데이터를 가져오거나 저장하는 역할을 수행하는 데이터 접근 객체이기 때문이다.

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 ; }

preparedStatement(pstmt) 에 실제로 SQL문의 INSERT를 통해 DB에 값을 추가하도록 하고, setString으로 사용자의 속성을 각각 넣어줌으로써 하나의 User 에 대한 회원가입 기능을 구현할 수 있다.

위와 같이 join class는 회원가입을 통해 만들어지는 하나의 인스턴스가 되는 것이다.

joinAction class 생성

회원가입 기능 구현의 다음 스테이지는 joinAction class 구현이다. 우리가 회원가입 페이지에서 회원가입 버튼을 눌렀을 때, 이동하는 페이지는 joinAction 이다.

지금까지는 이를 구현하지 않아서 404 Not Found 오류가 발생했지만 이제 구현해보자.

WebContent 디렉토리에 joinAction.jsp 파일을 생성하고, loginAction.jsp 의 내용을 복사 & 붙여넣기한다. 전체적인 틀은 loginAction.jsp 과 비슷하지만 디테일한 부분에서 추가 혹은 수정되어야할 부분들이 있기 때문이다.

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 http - equiv = "Content-Type" content = "text/html; charset=UTF-8" > < title > JSP 게시판 웹 사이트 < / title > < / head > < body > < % if ( user . getUserID ( ) == null || user . getUserPassword ( ) == null || user . getUserName ( ) == null || user . getUserGender ( ) == null || user . getUserEmail ( ) == null ) { PrintWriter script = response . getWriter ( ) ; script . println ( "” ) ; } else { UserDAO userDAO = new UserDAO ( ) ; int result = userDAO . join ( user ) ; if ( result == – 1 ) { PrintWriter script = response . getWriter ( ) ; script . println ( “” ) ; } else { PrintWriter script = response . getWriter ( ) ; script . println ( “” ) ; } } % > < / body > < / html >

< 코드 설명 >

user class의 멤버함수 중 회원가입에 필요한 Name , Gender , Email 값이 없었다. 따라서 이들을 가져와 jsp에 등록한다. 회원가입 폼을 통해 user class에서 값을 가져올 때, UserId , UserPassword , UserName , UserGender , UserEmail 중 하나라도 값을 입력하지 않으면 입력이 안된 사항이 있다고 경고창을 띄우고 다시 회원가입 창으로 돌아가게끔 로직을 설계한다. 값을 입력했을 때, 이미 존재하는 아이디인 경우 경고창을 띄 홤우고 다시 돌아간다.

위 로직을 통해 우리는 회원가입을 할 때, 중복값 혹은 NULL 값에 대해 모든 예외를 처리할 수 있다. 만약 제대로 회원가입이 성공할 경우 main 화면으로 돌아갈 것이다.

우리가 구현한 회원가입 기능이 잘 동작하는지 실제로 테스트해보자. login.jsp 를 실행시키고 회원가입 화면을 띄운다.

회원 예시로

ID : 1111,

Password : 1234,

Name : 김철수,

Gender : 남자

Email : [email protected]

회원 정보를 입력했고, 회원가입을 진행했다.

main.jsp 를 아직 구현하지 않았기 때문에 정상적으로 회원가입이 완료되면 위와 같은 404 status 를 출력하는게 맞다. 그렇다면, MySQL을 통해 우리가 입력한 회원정보가 잘 들어갔는지 확인하자.

우리가 입력한 대로 회원 정보가 DB에 정확히 등록된 모습이다.

세상의 모든 기록 :: [JSP개발] 회원가입 화면

1. 개요

member 폴더 아래에 pro와 view라는 폴더를 생성하였다. 각각 화면과 처리를 담당하는 JSP를 나누기 위해서이다.

2. 소스 코드

■ JoinForm,jsp

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 <% @ page language = "java" contentType = "text/html; charset=EUC-KR" pageEncoding = "EUC-KR" %> < html > < head > < title >회원가입 화면 < style > #wrap { width : 530px ; margin-left : auto ; margin-right : auto ; text-align : center ; } table { border : 3px solid skyblue } td { border : 1px solid skyblue } #title { background-color : skyblue } < body > < div id = "wrap" > < br >< br > < b >< font size = "6" color = "gray" >회원가입 < br >< br >< br > < form > < table > < tr > < td id = "title" >아이디 < td > < input type = "text" name = "id" maxlength = "20" > < input type = "button" value = "중복확인" > < tr > < td id = "title" >비밀번호 < td > < input type = "password" name = "password" maxlength = "15" > < tr > < td id = "title" >비밀번호 확인 < td > < input type = "password" name = "password" maxlength = "15" > < tr > < td id = "title" >이름 < td > < input type = "text" name = "name" maxlength = "40" > < tr > < td id = "title" >성별 < td > < input type = "radio" name = "gender" value = "남" checked >남 < input type = "radio" name = "gender" value = "여" checked >여 < tr > < td id = "title" >생일 < td > < input type = "text" name = "birth_yy" maxlength = "4" placeholder = "년(4자)" size = "6" > < select name = "birth_mm" > < option value = "" >월 < option value = "01" >1 < option value = "02" >2 < option value = "03" >3 < option value = "04" >4 < option value = "05" >5 < option value = "06" >6 < option value = "07" >7 < option value = "08" >8 < option value = "09" >9 < option value = "10" >10 < option value = "11" >11 < option value = "12" >12 < input type = "text" name = "birth_dd" maxlength = "2" placeholder = "일" size = "4" > < tr > < td id = "title" >이메일 < td > < input type = "text" name = "email_1" maxlength = "30" >@ < select name = "email_2" > < option >naver.com < option >daum.net < option >gmail.com < option >nate.com < tr > < td id = "title" >휴대전화 < td > < input type = "text" name = "phone" / > < tr > < td id = "title" >주소 < td > < input type = "text" size = "50" name = "address" / > < br > < input type = "submit" value = "가입" / > < input type = "button" value = "취소" > Colored by Color Scripter cs

3. 실행 결과

JSP게시판 만들기 [5] – 회원가입/로그인 화면 구성 및 기능 구현

728×90

이번 시간에는 회원가입/로그인 화면을 구성하고 로그인 기능을 구현해 보도록 하겠습니다.

1. 유저정보 데이터베이스 만들기

CREATE TABLE user ( userID varchar(20) not null, userPassword varchar(20), userName varchar(20), userGender varchar(1), userDate date, primary key (userID) );

Mysql command창에서 BBS 데이터 베이스에 접속 후 “user”라는 테이블을 만들어 줍니다.

user에는 회원가입에 필요한 정보들로 구성을 했습니다.

2. 회원가입 화면 구성

유저 정보관련 jsp파일은 “member”폴더에서 작업을 진행했습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Jo’s

회원 가입

아이디

비밀번호

이름

생년월일

성별

남자 여자

join.jsp

@charset “UTF-8”; /* 기본 설정: 페이지 전체 */ * { margin: 0; padding: 0; } .join_container { display: block; margin: 50px auto; text-align: center; } .join_container h2 { font-size: 50px; margin-bottom: 50px; } .join_container h3 { font-size: 25px; } .joinID, .joinPassword, .joinName, .joinDate, .joinGender { margin-top: 20px; margin-bottom: 30px; } .input { padding: 5px; width: 300px; line-height: 30px; font-size: 20px; border: none; border-bottom: solid 1px rgba(0, 0, 0, 1); } .bt_join { font-size: 20px; padding: 5px; background-color: rgba(255, 255, 255, 1); border: none; border: solid 1px rgba(0, 0, 0, 1); cursor: pointer; }

style_join.css

3. 로그인 화면 구성

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Jo’s

login.jsp

@charset “UTF-8”; /* 기본 설정: 페이지 전체 */ * { margin: 0; padding: 0; } .login_containers { display: block; margin: 100px auto; text-align: center; } .login_containers h2 { font-size: 50px; margin-bottom: 80px; } .login_containers h3 { font-size: 25px; } .loginID, .loginPassword { margin-top: 20px; margin-bottom: 30px; } .input { padding: 5px; width: 300px; line-height: 30px; font-size: 20px; border: none; border-bottom: solid 1px rgba(0, 0, 0, 1); } .bt_login { font-size: 20px; padding: 5px; background-color: rgba(255, 255, 255, 1); border: none; border: solid 1px rgba(0, 0, 0, 1); cursor: pointer; }

style_login.css

4. 데이터베이스 연동 클래스 작성

데이터베이스 접속에 앞써 데이터베이스에 접속할 수 있는 자바 패키지를 만들어 주어야 합니다.

java resources -> src -> 우클릭 -> new -> package를 순서로 클릭합니다.

이름을 user로 입력하고 Finish를 눌러 java 패키지를 만들어 줍니다.

이제 패키지에 클래스를 추가해 봅시다.

user -> 우클릭 -> new -> class 순으로 눌러줍니다.

클래스 이름을 “UserDAO.java”라 정해주고 Finish를 눌러 클래스를 만들어 줍니다.

package user; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; public class UserDAO { private String userID; private String userPassword; private String userName; private String userGender; private String userDate; private Connection con; private ResultSet rs; public UserDAO() { try { String dbURL = “jdbc:mysql://localhost:3306/BBS?characterEncoding=UTF-8&serverTimezone=UTC”; String dbID = “root”; String dbPassword = “PASSWORD”; Class.forName(“com.mysql.jdbc.Driver”); con = DriverManager.getConnection(dbURL, dbID, dbPassword); } catch (Exception e) { e.printStackTrace(); } } // 로그인 /* * -2: 아이디없음 * -1: 서버오류 * 0: 비밀번호 틀림 * 1: 성공 */ public int login(String userID, String userPassword) { try { PreparedStatement pst = con.prepareStatement(“SELECT userPassword FROM user WHERE userID = ?”); pst.setString(1, userID); rs = pst.executeQuery(); if (rs.next()) { return rs.getString(1).equals(userPassword) ? 1 : 0; } else { return -2; } } catch (Exception e) { e.printStackTrace(); return -1; } } // 중복여부 확인 public boolean ID_Check(String userID) { try { PreparedStatement pst = con.prepareStatement(“SELECT * FROM user WHERE userID = ?”); pst.setString(1, userID); rs = pst.executeQuery(); if (rs.next()) { return false; } else { return true; } } catch (Exception e) { e.printStackTrace(); } return false; } // 회원가입 /* * -1: 서버오류 * 0: 이미 존재하는 아이디 * 1: 성공 */ public int join(UserDAO userDAO) { if(!ID_Check(userDAO.getUserID())) return 0; try { PreparedStatement pst = con.prepareStatement(“INSERT INTO user VALUES (?,?,?,?,?)”); pst.setString(1, userDAO.getUserID()); pst.setString(2, userDAO.getUserPassword()); pst.setString(3, userDAO.getUserName()); pst.setString(4, userDAO.getUserGender()); pst.setString(5, userDAO.getUserDate()); return pst.executeUpdate(); } catch (Exception e) { e.printStackTrace(); return -1; } } // 유저 데이터 가져오기 public UserDAO getUser(String userID) { try { PreparedStatement pst = con.prepareStatement(“SELECT * FROM user WHERE userID = ?”); pst.setString(1, userID); rs = pst.executeQuery(); if (rs.next()) { UserDAO userDAO = new UserDAO(); userDAO.setUserID(rs.getString(1)); userDAO.setUserPassword(rs.getString(2)); userDAO.setUserName(rs.getString(3)); userDAO.setUserGender(rs.getString(4)); userDAO.setUserDate(rs.getString(5)); return userDAO; } } catch (Exception e) { e.printStackTrace(); } return null; } 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 getUserDate() { return userDate; } public void setUserDate(String userDate) { this.userDate = userDate; } }

UserDAO.java

private String userID; private String userPassword; private String userName; private String userGender; private String userDate;

데이터베이스 user테이블의 열과 같게 선언해주어야됩니다.

userID 같은 경우는 varchar(20)으로 만들어주었기 때문에 String형으로 선언을 해주어야 되며

만약 int로 만들어주면 int형으로 선언을 해주어야 됩니다.

public UserDAO() { try { String dbURL = “jdbc:mysql://localhost:3306/BBS?characterEncoding=UTF-8&serverTimezone=UTC”; String dbID = “root”; String dbPassword = “PASSWORD”; Class.forName(“com.mysql.jdbc.Driver”); con = DriverManager.getConnection(dbURL, dbID, dbPassword); } catch (Exception e) { e.printStackTrace(); } }

dbID는 제 블로그를 보면서 mysql을 설치하셨다면 “root”로 설정해주시면 됩니다.

dbPassword는 mysql 설치 시 입력했던 비밀번호를 입력해주시면 됩니다.

public int login(String userID, String userPassword) { try { PreparedStatement pst = con.prepareStatement(“SELECT userPassword FROM user WHERE userID = ?”); pst.setString(1, userID); rs = pst.executeQuery(); if (rs.next()) { return rs.getString(1).equals(userPassword) ? 1 : 0; } else { return -2; } } catch (Exception e) { e.printStackTrace(); return -1; } }

아이디와 비밀번호를 이용하여 로그인을 하는 함수입니다.

1 : 로그인 성공

0 : 로그인 실패

-1 : 서버 오류

-2 : 아이디 없음

public boolean ID_Check(String userID) { try { PreparedStatement pst = con.prepareStatement(“SELECT * FROM user WHERE userID = ?”); pst.setString(1, userID); rs = pst.executeQuery(); if (rs.next()) { return false; } else { return true; } } catch (Exception e) { e.printStackTrace(); } return false; }

회원가입을 할 때 이미 아이디가 존재하는지 확인하는 함수입니다.

public int join(UserDAO userDAO) { if(!ID_Check(userDAO.getUserID())) return 0; try { PreparedStatement pst = con.prepareStatement(“INSERT INTO user VALUES (?,?,?,?,?)”); pst.setString(1, userDAO.getUserID()); pst.setString(2, userDAO.getUserPassword()); pst.setString(3, userDAO.getUserName()); pst.setString(4, userDAO.getUserGender()); pst.setString(5, userDAO.getUserDate()); return pst.executeUpdate(); } catch (Exception e) { e.printStackTrace(); return -1; } }

회원가입을 하는 함수입니다.

public UserDAO getUser(String userID) { try { PreparedStatement pst = con.prepareStatement(“SELECT * FROM user WHERE userID = ?”); pst.setString(1, userID); rs = pst.executeQuery(); if (rs.next()) { UserDAO userDAO = new UserDAO(); userDAO.setUserID(rs.getString(1)); userDAO.setUserPassword(rs.getString(2)); userDAO.setUserName(rs.getString(3)); userDAO.setUserGender(rs.getString(4)); userDAO.setUserDate(rs.getString(5)); return userDAO; } } catch (Exception e) { e.printStackTrace(); } return null; }

유저의 정보를 얻을 수 있는 함수입니다.

5. 데이터베이스 연동

https://dev.mysql.com/downloads/connector/j/

mysql에 접속을 하려면 jdbc driver를 다운을 받아야 합니다.

위 사이트에 접속하거나 구글에 “mysql jdbc driver”을 검색하면 접속할 수 있습니다.

Platform Independent로 설정을 해놓고 다운로드하여줍니다.

다운로드한 압축파일을 풀어주면 폴더 안에 “mysql-connector-java-8.0.16.jar” 파일이 있는데

이 파일을 WWW – WEB-INF – lib폴더 안에 복사하여 넣어줍니다.

프로젝트 -> 우클릭 -> properties를 눌러줍니다.

Java Bulid Path -> Libraries -> Add JARs.. 를 눌러줍니다.

이전에 복사했던 jar파일을 찾아줍니다.

jar파일이 추가가 되었으면 “Apply and Close”를 눌러줍니다.

6. 회원가입/로그인 Action파일 생성

이제 마지막으로 실질적으로 회원가입/로그인은 해주는 jsp파일을 생성해보겠습니다.

“join.jsp”나 “login.jsp”에서 “form”태그를 보면 각각 join_Action.jsp, login_Action.jsp로 데이터가 전송되는 것을 볼 수 있습니다.

6-1. join_Action.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"); %> Jo’s <% String userID = request.getParameter("userID"); String userPassword = request.getParameter("userPassword"); String userName = request.getParameter("userName"); String userGender = request.getParameter("userGender"); String userDate = request.getParameter("userDate"); // -1: 서버 오류 / 0: 이미존재하는 아이디 / 1: 성공 if(userID == null || userPassword == null || userName == null || userGender == null || userDate == null) { PrintWriter script = response.getWriter(); script.println("“); } else { UserDAO userDAO = new UserDAO(); userDAO.setUserID(userID); userDAO.setUserPassword(userPassword); userDAO.setUserName(userName); userDAO.setUserGender(userGender); userDAO.setUserDate(userDate); int result = userDAO.join(userDAO); if(result == -1) { PrintWriter script = response.getWriter(); script.println(““); } else if(result == 0) { PrintWriter script = response.getWriter(); script.println(““); } else { PrintWriter script = response.getWriter(); script.println(““); } } %>

join_Action.jsp

String userID = request.getParameter(“userID”); String userPassword = request.getParameter(“userPassword”); String userName = request.getParameter(“userName”); String userGender = request.getParameter(“userGender”); String userDate = request.getParameter(“userDate”);

form태그로 전송한 값을 받아옵니다.

if(userID == null || userPassword == null || userName == null || userGender == null || userDate == null) { PrintWriter script = response.getWriter(); script.println(““); }

전송받을 값 중 빈칸이 있는지 확인하는 과정입니다.

만약 스페이스처럼 빈칸을 필터링하고 싶으면 이 부분을 수정하시면 됩니다.

6-2. login_Action.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"); %> Jo’s <% String userID = request.getParameter("userID"); String userPassword = request.getParameter("userPassword"); UserDAO userDAO = new UserDAO(); int result = userDAO.login(userID, userPassword); if(result == 1) { session.setAttribute("userID", userID); PrintWriter script = response.getWriter(); script.println("“); } else if(result == 0) { PrintWriter script = response.getWriter(); script.println(““); } else if(result == -2) { PrintWriter script = response.getWriter(); script.println(““); } else if(result == -1) { PrintWriter script = response.getWriter(); script.println(““); } %>

login_Action.jsp

String userID = request.getParameter(“userID”); String userPassword = request.getParameter(“userPassword”);

form태그로 전송한 값을 받아옵니다.

if(result == 1) { session.setAttribute(“userID”, userID); PrintWriter script = response.getWriter(); script.println(““); }

로그인에 성공을 하면 session을 이용하여 로그인을 한 아이디를 넣어줍니다.

7. 로그인 테스트

회원가입 창에서 새로운 아이디를 등록을 하면 mysql command창에서 정상적으로 데이터베이스에 저장이 되었다는 것을 확인할 수 있습니다.

[JSP 게시판 만들기] 6강 회원가입 기능 구현하기

반응형

참고 유튜브

이번 시간에는 회원가입 페이지를 통해 데이터가 전달 및 저장되는 기능을 구현 해 본다.

UserDAO.java

지난 시간 UserDAO.java 파일은 데이터베이스에 직접 접근하여 데이터 조회 및 수정을 진행하는 트랜잭션 객체라고 설명하였다.

UserDAO.java 파일에 회원가입 기능인 join() 메소드를 추가 작성한다.

////// 생략 ////// public int join(User user) { String SQL =”INSERT INTO USER VALUES (?, ?, ?, ?, ?)”; try { pstat = conn.prepareStatement(SQL); pstat.setString(1, user.getUserID()); pstat.setString(2, user.getUserPW()); pstat.setString(3, user.getUserName()); pstat.setString(4, user.getUserGender()); pstat.setString(5, user.getUserEmail()); //INSERT문의 경우, 성공일 경우 0 이상의 숫자가 반환됨. return pstat.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } return -1; //데이터 베이스 오류일 때 }

JoinAction.jsp

회원가입 페이지에서 회원가입 버튼을 누르면 JoinAction.jsp로 이동하도록 설정하였다.

해당 페이지는 join.jsp에서 입력한 데이터들을 받아와 USER에 세팅하고 join 메소드를 호출한다.

이후, join 메소드의 결과 값을 통해 성공/실패를 사용자에게 보여주는 역할을 한다.

<%@ 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 게시판 웹 사이트 <% if(USER.getUserID() == null || USER.getUserPW() == null || USER.getUserName() == null || USER.getUserGender() == null || USER.getUserEmail() == null) { PrintWriter script = response.getWriter(); script.println("“); } else { UserDAO userDao = new UserDAO(); int result = userDao.join(USER); if(result >= 0){ PrintWriter script = response.getWriter(); script.println(““); } else if(result == -1){ PrintWriter script = response.getWriter(); script.println(““); } } %>

결과 확인

회원가입 화면

회원가입 진행

로그인 성공!

(main.jsp 페이지는 아직 구현 전이므로 아래와 같이 뜨는게 맞다)

회원 가입 전 USER 테이블 회원 가입 후 USER 테이블

테이블을 통해 데이터가 정상적으로 삽입되었음을 확인할 수 있다.

이미 존재하는 아이디로 회원가입할 때,

회원가입이 안됨을 확인 할 수 있다! 테이블에도 데이터 추가가 안됨을 볼 수 있다.

다음은 “접속한 회원 세션 관리하기”를 진행해 보겠다!

설명이 필요한 부분은 언제든 말씀해주세요!

728×90

JSP 게시판 제작[3] – 회원가입

<%@ page language= "java" contentType= "text/html; charset=UTF-8" pageEncoding= "UTF-8" %> JSP 게시판 웹 사이트

회원가입 화면

[jsp]회원가입, 로그인 기능 구현

OracleDB를 사용

SqlDeveloper로 memberT테이블을 만들어 놓고 아래 코드 작성

MemberBean.java

package magic.member; import java.sql.Timestamp; public class MemberBean { private String mem_uid; private String mem_pwd; private String pwd_check; private String mem_name; private String mem_email; private Timestamp mem_regdate; private String mem_addr; public String getPwd_check() { return pwd_check; } public void setPwd_check(String pwd_check) { this.pwd_check = pwd_check; } public String getMem_uid() { return mem_uid; } public void setMem_uid(String mem_uid) { this.mem_uid = mem_uid; } public String getMem_pwd() { return mem_pwd; } public void setMem_pwd(String mem_pwd) { this.mem_pwd = mem_pwd; } public String getMem_name() { return mem_name; } public void setMem_name(String mem_name) { this.mem_name = mem_name; } public String getMem_email() { return mem_email; } public void setMem_email(String mem_email) { this.mem_email = mem_email; } public Timestamp getMem_regdate() { return mem_regdate; } public void setMem_regdate(Timestamp mem_regdate) { this.mem_regdate = mem_regdate; } public String getMem_addr() { return mem_addr; } public void setMem_addr(String mem_addr) { this.mem_addr = mem_addr; } }

MemberBeanDB.java

package magic.member; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; import myUtil.HanConv; public class MemberDBBean { private static MemberDBBean instance = new MemberDBBean(); // 참조변수 instance를 객체로 받아서 사용함 // 싱글턴패턴 public static MemberDBBean getInstance() { return instance; } public Connection getConnection() throws Exception { Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/oracle"); return ds.getConnection(); // 재사용을 위해 만들어 놓음 } // insert쿼리 실행 데이터를집어넣음 public int insertMember(MemberBean member) throws Exception { String insertQuery = "insert into memberT values(?,?,?,?,?,?)"; int re = -1; try { Connection con = getConnection(); PreparedStatement ps = con.prepareStatement(insertQuery); ps.setString(1, member.getMem_uid()); ps.setString(2, member.getMem_pwd()); ps.setString(3, HanConv.toKor(member.getMem_name())); ps.setString(4, member.getMem_email()); ps.setTimestamp(5, member.getMem_regdate()); ps.setString(6, HanConv.toKor(member.getMem_addr())); ps.executeUpdate(); re = 1; ps.close(); con.close(); System.out.println("추가성공"); } catch (Exception e) { e.printStackTrace(); System.out.println("추가실패"); } return re; } // ID 중복확인 public int ConfirmID(String id) throws Exception { int re = -1; String selectQuery = "select mem_uid from memberT where mem_uid=?"; try { Connection con = getConnection(); // 컨넥션 정보를 받음 PreparedStatement ps = con.prepareStatement(selectQuery); ps.setString(1, id); ResultSet rs = ps.executeQuery(); if (rs.next()) { re = 1; // 중복 될 경우 } else { re = -1; // 중복 안 될 경우 } rs.close(); ps.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } return re; } // 로그인 할때 아이디가 존재하는지 안하는지 확인 여부 메소드 public int userCheck(String id, String pwd) throws Exception { int re = -1; String sql = "select mem_pwd from memberT where mem_uid=?"; try { Connection con = getConnection(); PreparedStatement ps = con.prepareStatement(sql); ps.setString(1, id); ResultSet rs = ps.executeQuery(); if (rs.next()) { // 아이디가 일치하는 로우가 존재 String db_mem_pwd = rs.getString("mem_pwd"); if (db_mem_pwd.equals(pwd)) { // 비밀번호 일치 re = 1; } else { // 비밀번호 불일치 re = 0; } } else { // 아이디가 존재하지 않음 re = -1; } con.close(); ps.close(); rs.close(); } catch (Exception e) { e.printStackTrace(); } return re; } // 아이디가 일치하는 멤버의 정보를 얻어오는 메소드 public MemberBean getMember(String id) throws Exception { String sql = "select * from memberT where mem_uid=?"; MemberBean member = null; try { Connection con = getConnection(); PreparedStatement ps = con.prepareStatement(sql); ps.setString(1, id); ResultSet rs = ps.executeQuery(); if (rs.next()) { member = new MemberBean(); member.setMem_uid(rs.getString("mem_uid")); member.setMem_pwd(rs.getString("mem_pwd")); member.setMem_name(rs.getString("mem_name")); member.setMem_email(rs.getString("mem_email")); member.setMem_regdate(rs.getTimestamp("mem_regdate")); member.setMem_addr(rs.getString("mem_addr")); } con.close(); ps.close(); rs.close(); } catch (Exception e) { e.printStackTrace(); } return member; } // 회원정보 수정 메서드 public int updateMember(MemberBean member) throws Exception { Connection con = null; PreparedStatement pstmt = null; String sql = "update memberT set mem_pwd=?, mem_email=?, mem_addr=?"; sql += "where mem_uid=?"; int re = -1; try { con = getConnection(); pstmt = con.prepareStatement(sql); pstmt.setString(1, member.getMem_pwd()); pstmt.setString(2, member.getMem_email()); pstmt.setString(3, HanConv.toKor(member.getMem_addr())); pstmt.setString(4, member.getMem_uid()); re = pstmt.executeUpdate(); } catch (Exception e) { System.out.println(e.getMessage()); } pstmt.close(); con.close(); return re; } }

login.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> Insert title here

사용자 ID
비밀번호

loginOK.jsp

<%@page import="magic.member.MemberDBBean"%> <%@page import="magic.member.MemberBean"%> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <% String id = request.getParameter("mem_uid"); String pwd = request.getParameter("mem_pwd"); MemberDBBean manager = MemberDBBean.getInstance(); int check = manager.userCheck(id, pwd); MemberBean mb = manager.getMember(id); if(mb == null) { out.print("“); } else { String name = mb.getMem_name(); if(check == 1) { session.setAttribute(“uid”, id); session.setAttribute(“name”, name); session.setAttribute(“Member”, “yes”); // 임의로 회원일 경우 yes값을 준다 response.sendRedirect(“main.jsp”); } else if(check == 0) { out.print(““); out.print(““); } /* else { //실제로 검사는 안하지만 case로 처리함 out.print(““); out.print(““); } */ } %>

logOut.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <% session.invalidate(); response.sendRedirect("login.jsp"); %>

register.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> Insert title here

회원 가입 신청

‘*’ 표시 항목은 필수 입력 항목입니다.

User ID *
암호 *
암호 확인 *
이 름 *
E-mail *
주 소 *

registerOk.jsp

<%@page import="magic.member.MemberDBBean"%> <%@page import="magic.member.MemberBean"%> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <% String id = request.getParameter("mem_uid"); String pwd = request.getParameter("mem_pwd"); MemberDBBean manager = MemberDBBean.getInstance(); int check = manager.userCheck(id, pwd); MemberBean mb = manager.getMember(id); if(mb == null) { out.print("“); } else { String name = mb.getMem_name(); if(check == 1) { session.setAttribute(“uid”, id); session.setAttribute(“name”, name); session.setAttribute(“Member”, “yes”); // 임의로 회원일 경우 yes값을 준다 response.sendRedirect(“main.jsp”); } else if(check == 0) { out.print(““); out.print(““); } /* else { //실제로 검사는 안하지만 case로 처리함 out.print(““); out.print(““); } */ } %>

main.jsp(로그인 했을 때 뜨는 화면)

<%@page import="myUtil.HanConv"%> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <% if(session.getAttribute("Member") == null) { %> <% } %> <% String uid = (String)session.getAttribute("uid"); String name = (String)session.getAttribute("name"); %> Insert title here

안녕하세요. <%= name%> (<%= uid %>)님

memberUpdate.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <% String uid = (String)session.getAttribute("uid"); String name = (String)session.getAttribute("name"); %> Insert title here

회원 정보 수정

‘*’ 표시 항목은 필수 입력 항목입니다.

User ID <%= uid %>
암호 *
암호 확인 *
이 름 <%= name %>
E-mail *
주 소

memberUpdateOk.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <%@ page import="magic.member.*"%> Insert title here <% String uid = (String)session.getAttribute("uid"); mb.setMem_uid(uid); MemberDBBean manager = MemberDBBean.getInstance(); int re = manager.updateMember(mb); if (re == 1) { %> <% } else { // 수정이 실패 되는 경우는 여러대에서 해당 테이블에 접속할때 오류가 나는 여러가지 경우에 발생한다. %> <% } %>

script.js

function check_ok(){ //if(document.reg_frm.mem_uid.value == “”){} if(document.reg_frm.mem_uid.value.length == 0){ alert(“아이디를 써주세요.”); reg_frm.mem_uid.focus(); } else if(document.reg_frm.mem_uid.value.length < 4){ alert("아이디는 4글자 이상이어야 합니다."); reg_frm.mem_uid.focus(); } else if(document.reg_frm.mem_pwd.value.length == 0){ alert("패스워드는 반드시 입력해야 합니다."); reg_frm.mem_pwd.focus(); } else if(document.reg_frm.mem_pwd.value != document.reg_frm.pwd_check.value){ alert("패스워드가 일치하지 않습니다."); reg_frm.pwd_check.focus(); } else if(document.reg_frm.mem_name.value.length == 0){ alert("이름을 써주세요."); reg_frm.mem_name.focus(); } else if(document.reg_frm.mem_email.value.length == 0){ alert("Email을 써주세요."); reg_frm.mem_email.focus(); } document.reg_frm.submit(); } function update_check_ok() { if(document.update_form.mem_pwd.value.length == 0){ alert("패스워드는 반드시 입력해야 합니다."); update_form.mem_pwd.focus(); return; } if(document.update_form.mem_pwd.value != document.update_form.pwd_check.value){ alert("패스워드가 일치하지 않습니다."); update_form.pwd_check.focus(); return; } if(document.update_form.mem_email.value.length == 0){ alert("Email을 써주세요."); update_form.mem_email.focus(); return; } document.update_form.submit(); } 모르는게 있으시면 질문남겨놓으시면 답변해드리겠습니다^^

[JSP] JSP 게시판 만들기 6강 회원가입 기능 구현하기

반응형

유튜브 동빈나님 JSP 게시판 강좌 따라하기 6강

회원가입 기능 구현하기

한 명의 회원정보를 입력하는 회원가입 폼에서 아이디, 비밀번호, 이름, 성별, 이메일을 입력해서 회원가입 버튼을 누르면 실제로 데이터베이스에 회원정보가 전송되는 과정입니다.

# join 메소드

‘UserDAO’ 클래스에서 회원가입 기능을 담당하는 ‘join’ 메소드를 추가합니다

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; }

public int join(User user) – ‘User’ 클래스 인스턴스를 생성하여 한 명의 회원정보를 담는다 insert into user values(?, ?, ?, ?, ?); ‘user’ 테이블에 데이터를 입력하는 쿼리문 pstmt = conn.prepareStatement(sql); ‘sql’ 쿼리문을 대기시킨다 pstmt.setString(1, user.getUserID()); ‘1’번째 물음표에 실제 사용자가 입력한 ‘UserID’를 셋팅 pstmt.executeUpdate(); 실제 DB에서 ‘insert’를 정상적으로 입력하면 ‘Query 1 OK’ 라고 뜨는데 그 숫자를 받아온다. 따라서 정상적으로 데이터가 입력되었다면 반드시 1 이상의 숫자가 리턴될 것이다.

# ‘joinAction.jsp’

‘loginAction.jsp’ 페이지에서는 로그인 시 필요한 아이디와 비밀번호만 받아오면 됐었지만, ‘joinAction.jsp’ 페이지에서는 회원가입 페이지에서 받아오는 데이터를 다 받아와야 하기 때문에 회원 정보 요소를 모두 추가합니다.

<%@page import="java.io.PrintWriter"%> <%@page import="user.UserDAO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("utf-8"); %> JSP 게시판 웹 사이트 <% if(user.getUserID() == null || user.getUserPassword() == null || user.getUserName() == null || user.getUserGender() == null || user.getUserEmail() == null){ PrintWriter script = response.getWriter(); script.println("“); }else{ UserDAO userDAO = new UserDAO(); int result = userDAO.join(user); if(result == -1){ PrintWriter script = response.getWriter(); script.println(““); }else { PrintWriter script = response.getWriter(); script.println(““); } } %>

실제 사용자가 입력한 회원 정보 중에서 데이터가 하나라도 누락된 것이 있으면 ‘입력이 안 된 사항이 있다’ 라고 알림창을 띄워주고 다시 이전 화면으로 돌아가는 로직을 추가합니다.

만약 입력이 다 되었더라도, 아이디가 중복이 되면 다시 이전 페이지로 돌아가게 로직을 하나 추가합니다. 우리가 테이블을 작성할 때 ‘UserID’는 ‘primarykey’로 설정했었기 때문에 중복되지 않는 하나만 존재할 수 있는 고유키가 됩니다. 실제 사용자가 입력한 정보가 이미 존재하는 아이디를 입력했더라면 DB에 회원정보가 정상적으로 입력이 되지 않아 ‘-1’이 반환될 것입니다.

모든 정보가 올바르게 입력 되었다면 ‘1’ 이상이 반환될 것이고 ‘회원가입 성공’ 이라는 알림창이 뜨며 ‘main.jsp’ 페이지로 이동할 것입니다.(아직까지 ‘main.jsp’ 페이지는 작성하지 않았으니 ‘404에러’ 가 뜰 것입니다)

# 회원가입 기능 테스트

[index.jsp 페이지 실행] – [접속하기] – [회원가입]

항목에 맞게 데이터 입력 후 ‘회원가입’ 버튼 누르기

데이터가 올바르게 입력되었을 때 설정한 알림창이 떴습니다

실제로 데이터가 ‘MariaDB’ 에 입력이 되었는지 확인해보겠습니다

방금 회원정보를 입력한 데이터가 실제로 DB 안에 저장된 것을 확인할 수 있습니다

happy-inside.tistory.com/category/%EC%BD%94%EB%94%A9/JSP%20%EA%B2%8C%EC%8B%9C%ED%8C%90

자기계발하는 개발자

‘인생최적화’

반응형

미니 프로젝트(4. 회원가입)

전까지는 로그인/로그아웃 기능을 작동되도록하였다.

이번에는 회원가입을 진행해보도록하겠습니다.

우선 화면단부터구성

이번 회원가입에는 주소API 사용예정입니다.

다른 카카오API도 있는데 사용하기 쉬우니깐 편한거쓰면될거같다.

https://www.poesis.org/postcodify/

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 회원가입

<%@ include file="/WEB-INF/views/common/header.jsp" %>

* 비밀번호

* 비밀번호 확인

* 이름

연락처

이메일

우편번호

도로명주소

상세주소

관심분야

사용방법은 위의 페이지에서 적용예제보면 사용방법이있다.

우선 페이지에서 회원가입 버튼을 누르게되면

/memberJoin 으로 이동하게된다.

<%@page import="member.model.vo.Member"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% Member userLogin = (Member) request.getSession().getAttribute("userLogin"); // System.out.println(userLogin); %> Insert title here <% session.removeAttribute("msg"); } %>

MemberJoinServlet.java

package member.controller; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import member.model.vo.Member; import member.service.MemberService; @WebServlet(“/memberJoin”) public class MemberJoinServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 회원가입 페이지로 이동 request.getRequestDispatcher(“/WEB-INF/views/member/memberJoinForm.jsp”).forward(request, response); } }

회원가입 페이지로 이동하게된다.

가입하기를 누르게되면

post방식으로 /memberJoin 으로 요청하게된다.

입력값을 반환받아 Member 객체에 저장후

Service -> DAO 로 값을 넘겨줘야한다.

package member.controller; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import member.model.vo.Member; import member.service.MemberService; @WebServlet(“/memberJoin”) public class MemberJoinServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 회원가입 페이지로 이동 request.getRequestDispatcher(“/WEB-INF/views/member/memberJoinForm.jsp”).forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(“utf-8”); // 입력값 받아오기 String userId = request.getParameter(“userId”); String userPwd = request.getParameter(“userPwd”); String userName = request.getParameter(“userName”); String phone = request.getParameter(“phone”); String email = request.getParameter(“email”); String[] addressArr = request.getParameterValues(“address”); String[] interestArr = request.getParameterValues(“interest”); String address = “”; String interest = “”; // 주소값 하나의 문자열로 합치기 if(addressArr != null) { address = String.join(“,”, addressArr); } // 취미 하나의 문자열로 합치기 if(interestArr != null) { interest = String.join(“,”, interestArr); } // 받아온 값 Member 객체 저장 Member member = new Member(userId, userPwd, userName, phone, email, address, interest); // System.out.println(member); // 서비스로 값 전달 int result = new MemberService().memberJoin(member); if(result > 0) { request.getSession().setAttribute(“msg”, “회원가입에 성공하셨습니다. 로그인을 진행해주세요.”); response.sendRedirect(request.getContextPath()); } } }

MemberService

커넥션을 연결하고

insert의 작업은 int형으로 반환하기 때문에 result에 저장한다.

만약 저장에 성공했을시 commit하고

저장에 실패했다면 rollback 작업을 한다.

package member.service; import static common.JDBCTemplate.*; import java.sql.Connection; import member.model.dao.MemberDAO; import member.model.vo.Member; public class MemberService { // 1. 로그인 public Member loginMember(String id, String pwd) { Connection conn = getConnection(); Member loginUser = new MemberDAO().loginMember(conn, id, pwd); return loginUser; } // 회원가입 public int memberJoin(Member member) { Connection conn = getConnection(); int result = new MemberDAO().memberJoin(conn, member); if(result > 0) { commit(conn); }else { rollback(conn); } close(conn); return result; } }

MemberDAO

회원가입메소드를 확인하자

package member.model.dao; import java.io.FileInputStream; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; import member.model.vo.Member; import static common.JDBCTemplate.close; public class MemberDAO { Properties prop = new Properties(); public MemberDAO() { String fileName = MemberDAO.class.getResource(“/sql/member/member-query.xml”).getPath(); try { prop.loadFromXML(new FileInputStream(fileName)); } catch (IOException e) { e.printStackTrace(); } } // 1. 로그인 기능 public Member loginMember(Connection conn, String id, String pwd) { PreparedStatement pstmt = null; ResultSet rs = null; Member member = null; String sql = prop.getProperty(“loginMember”); // System.out.println(sql); try { pstmt = conn.prepareStatement(sql); pstmt.setString(1, id); pstmt.setString(2, pwd); rs = pstmt.executeQuery(); if(rs.next()) { member = new Member( rs.getInt(“USER_NO”), rs.getString(“USER_ID”), rs.getString(“USER_PWD”), rs.getString(“USER_NAME”), rs.getString(“PHONE”), rs.getString(“EMAIL”), rs.getString(“ADDRESS”), rs.getString(“INTEREST”), rs.getDate(“ENROLL_DATE”), rs.getDate(“MODIFY_DATE”), rs.getString(“STATUS”) ); // System.out.println(member); } } catch (SQLException e) { e.printStackTrace(); } finally { close(rs); close(pstmt); } return member; } // 2. 회원가입 public int memberJoin(Connection conn, Member member) { int result = 0; PreparedStatement pstmt = null; String sql = prop.getProperty(“memberJoin”); // System.out.println(sql); try { pstmt = conn.prepareStatement(sql); pstmt.setString(1, member.getUserId()); pstmt.setString(2, member.getUserPwd()); pstmt.setString(3, member.getUserName()); pstmt.setString(4, member.getPhone()); pstmt.setString(5, member.getEmail()); pstmt.setString(6, member.getAddress()); pstmt.setString(7, member.getInterest()); result = pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { close(pstmt); } return result; } }

이런식으로 대부분의 로직이 활용되는것같다.

회원가입을 진행해보자.

의 정보를 입력하고 가입해보자

알림창 뜨면서 메인페이지로 이동되었다.

오류메세지 없나 확인해보고

데이터베이스 확인해보자.

방금 입력한 정보가 저장되어있는것을 확인할수 있다.

생각보다 간단해보이지만 ..중간중간 오류가좀발생하였다..

재미있습니다 ..

[JSP] 회원가입, 로그인 만들어 보기

728×90

반응형

전체 코드는 올려두지 않았습니다.

– 회원가입, 로그인을 만들어 보기

요구 사항 정리

– [ 로그인 ] : 1. 사용자에게 이메일과 패스워드를 입력 받는다.

– [ 로그인 ] : 2. 성공 시 메인 페이지로 넘어간다.

– [ 로그인 ] : 3. 실패 시 로그인 페이지에 남겨두고, 사용자에게 일치하지 않음을 알려준다.

– [ 회원가입 ] : 1. 사용자에게 입력을 받는다. (이름,닉네임,이메일,패스워드,나이,성별)

– [ 회원가입 ] : 2. 이메일은 중복체크를 꼭 한다.

– [ 회원가입 ] : 3. 비밀번호는 최소 4자 이상 적도록 한다.

– [ 회원가입 ] : 4. 회원 가입 버튼을 누르기 전에 약관에 동의를 만든다.

– [ 회원가입 ] : 5. 성공 시 로그인 페이지로 간다.

– [ 회원가입 ] : 6. 실패시 사용자에게 문제가 있다고 알려주고 다시 회원 가입을 하도록 한다.

큰 설계

세부 구현 설계

– 로그인 –

1. login.jsp 파일을 만들고 입력 폼을 만든다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> login

form에서 입력한 데이터가 post방식으로 http://localhost8080/프로젝트이름/index 로 날아간다.

2. loginController를 만든다. 역할은 데이터베이스에 저장한 값과 일치하는지 확인을 한다.

@WebServlet(“/index”) public class loginController extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { User user = null; int result = 0; UserService service = new UserService(); try { result = service.login(request.getParameter(“email”),request.getParameter(“pw”)); if( result == 1) { user = service.getUser(request.getParameter(“email”)); } } catch (SQLException e) { e.printStackTrace(); } if(result == 1) { // 로그인 성공시 request.setAttribute(“user”, user); request.getRequestDispatcher(“index.html”).forward(request, response); }else { // 로그인 실패시 request.getRequestDispatcher(“login.jsp”).forward(request, response); } } }

login.jsp에서 입력한 데이터가 post 방식으로 넘어오면 service.login 함수에 사용자가 입력한 이메일과 비밀번호를 전달해 준다. 그리고 그 결과를 돌려받는다. 1이면 성공이라서 사용자 데이터를 가져와서 index.html로 보내준다.

3. UserService.java 코드를 살펴 보자. 이 부분은 데이터베이스를 담당한다.

public class UserService { private Connection conn; private PreparedStatement pstmt; private ResultSet rs; public UserService() { try { DriverManager.deregisterDriver(new com.mysql.cj.jdbc.Driver()); String dbURL = “jdbc:mysql://호스트 이름 또는 IP 주소:포트번호/데이터베이스?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC”; // String dbID = “사용자이름”; String dbPassword = “비밀번호”; Class.forName(“com.mysql.cj.jdbc.Driver”); conn = DriverManager.getConnection(dbURL, dbID, dbPassword); } catch (Exception e) { e.printStackTrace(); } } public User getUser() throws SQLException { String sql = “select * from User where email=?”; pstmt = conn.prepareStatement(sql); pstmt.setString(1, userEmail); rs = pstmt.executeQuery(); User user = null; if (rs.next()) { user = new User(rs.getInt(“id”), rs.getString(“email”), rs.getString(“pw”), rs.getString(“name”), rs.getString(“nickname”), rs.getInt(“age”), rs.getString(“gender”), rs.getString(“regDate”), rs.getString(“grade”)); } return user; } public int login(String userEmail, String userPassword) { String SQL = “select pw from User where email=?”; try { pstmt = conn.prepareStatement(SQL); pstmt.setString(1, userEmail); rs = pstmt.executeQuery(); if (rs.next()) { if (rs.getString(1).equals(userPassword)) { System.out.println(“로그인 성공”); return 1; } } System.out.println(“로그인 실패”); return -1; } catch (Exception e) { e.printStackTrace(); } return -2; } }

new로 객체를 생성하면 데이터베이스 연결을 한다. -> loginController 에서 함수를 호출하면 해당 함수 내부에 sql 이 실행되어서 결과를 반환한다.

– 회원 가입 –

1. login.jsp 파일을 만들고 입력 폼을 만든다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> login

form에서 입력한 데이터가 post방식으로 http://localhost8080/프로젝트이름/reg 로 날아간다.

2. RegController를 만든다. 역할은 데이터베이스에 값을 저장한다.

@WebServlet(“/reg”) public class RegController extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(“UTF-8”); response.setContentType(“UTF-8”); User user = new User(); user.setEmail(request.getParameter(“email”)); user.setName(request.getParameter(“name”)); user.setPw(request.getParameter(“pw”)); user.setNickname(request.getParameter(“nickname”)); user.setAge(Integer.parseInt(request.getParameter(“age”))); user.setGender(request.getParameter(“gender”)); UserService service = new UserService(); int result = 0; try { result = service.insertUser(user); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } if(result == -1) { request.getRequestDispatcher(“login.jsp”).forward(request, response); }else { request.getRequestDispatcher(“index.jsp”).forward(request, response); } } }

login.jsp에서 입력한 데이터가 post 방식으로 넘어오면 service.insertUser() 함수에 사용자가 정보를 전달 해 준다. 그리고 그 결과를 돌려받는다. -1이면 오류이고, 그외는 성공이여서 index.jsp 페이지를 보여준다.

3. UserService.java 코드를 살펴 보자. 이 부분은 데이터베이스를 담당한다.

public class UserService { …. …. // 로그인 코드와 동일하고 아래만 추가 public int insertUser(User user) throws ClassNotFoundException, SQLException { String sql = “INSERT INTO User (email,name,pw,nickname,age,gender,grade) VALUES(?,?,?,?,?,?,?)”; try { pstmt = conn.prepareStatement(sql); pstmt.setString(1, user.getEmail()); pstmt.setString(2, user.getName()); pstmt.setString(3, user.getPw()); pstmt.setString(4, user.getNickname()); pstmt.setInt(5, user.getAge()); pstmt.setString(6, user.getGender()); pstmt.setString(7, user.getGrade()); return pstmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } return -1; // DB 오류 } }

RegController에서 함수를 호출하면 해당 함수 내부에 sql 이 실행되어서 결과를 반환한다.

구현 하면서 문제 점 , 아쉬운 점

아래 요구 사항은 구현하지 못하였다. 계속 수정하고 있다.

– [ 회원가입 ] : 2. 이메일은 중복체크를 꼭 한다.

이메일 중복체크는 버튼을 만들어서 구현을 해야하는데, 기능은 구현하였으나 css , 디자인에 버튼을 넣지 못하여서 적용하지 못하였다.

– [ 회원가입 ] : 3. 비밀번호는 최소 4자 이상 적도록 한다.

이 부분은 어떻게 검사를 해야하는지 고민을 하고 있다.

– [ 회원가입 ] : 4. 회원 가입 버튼을 누르기 전에 약관에 동의를 만든다.

약관 동의가 체크가 되어있는지 확인하는 방법을 고민 하고 있다.

– [ 회원가입 ] : 6. 실패시 사용자에게 문제가 있다고 알려주고 다시 회원 가입을 하도록 한다.

자바스크립트의 기능인 alert를 띄워서 알려줘야할까? 라는 고민을 하다가 해당 부분은 자바스크립트라서 구현하지 않음

728×90

반응형

키워드에 대한 정보 jsp 회원 가입

다음은 Bing에서 jsp 회원 가입 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 JSP Ajax 회원가입 기능 구현하기 1강 – 프로젝트 소개 및 회원가입 화면 디자인

  • JSP
  • JSPAjax
  • ajax
  • JSP강좌
  • JSP강의
  • JSP회원가입
  • JSP중복체크
  • JSP아이디중복체크

JSP #Ajax #회원가입 #기능 #구현하기 #1강 #- #프로젝트 #소개 #및 #회원가입 #화면 #디자인


YouTube에서 jsp 회원 가입 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 JSP Ajax 회원가입 기능 구현하기 1강 – 프로젝트 소개 및 회원가입 화면 디자인 | jsp 회원 가입, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment