이번 게시물에서는 회원가입을 구현해보도록 하겠습니다.
-설계
해당 프로젝트에선 View 즉 jsp파일은 WebContent 안에 WEB-INFO 안에 넣음 으로써 브라우저상에서 직접 접근 하지 못하게 했습니다. 때문에 View 접근은 Controller로 접근해야합니다.
-구현 서블릿
RegisterController-> Login.jsp에서 회원가입 버튼을 누를 시 Register.jsp로 접근 할 수 있도록 하기 위한 컨트롤러
RegisterTryController -> 가입하기 버튼을 눌렀을 시 해당 서블릿으로 이동해 MemberDAO를 통해 입력한 아이디와 비밀번호를 비교해 로그인 성공 여부를 확인합니다.
-기능
RegisterController에서 Register.jsp 접근 전에 DAO로 부터 아이디 목록을 불러와 JSP로 넘겨줘 아이디를 입력했을 떄 해당 아이디가 중복되었으면 사용하지 못하게 한다.
RegisterTryController 각각 입력값들을 받아 들여 DAO로 전송해 INSERT하게 한다.
Register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/css/register.css">
<title>회원가입</title>
</head>
<body>
<form action="/register/try" id="register_form" method="POST">
<div class="content">
<a href=""><img src="/images/main_logo.png" alt="로고자리" id="logo"></a>
<input id = "mid" name="mid" type="text" placeholder="아이디" required onblur="id_check(this.value)">
<input id ="mpassword" name="mpassword" type="password" placeholder="비밀번호" required>
<input id ="rmpassword" type="password" placeholder="비밀번호확인" required onblur="password_check(this.value)">
<input name="mname" type="text" placeholder="이름" required>
<input name="memail" type="email" placeholder="이메일" required>
<input name="mphone" type="tel" placeholder="전화번호" required>
<input type="submit" value = "가입하기">
<input id="id_list" type="hidden" value ="${id_list}">
</div>
</form>
<script src="/js/register.js"></script>
</body>
</html>
Register.css
body {
margin: 0px;
padding: 0px;
background-color: rgb(231, 245, 240);
}
#login_form {
background-color: white;
height: 854px;
width: 700px;
margin: auto;
}
#logo {
margin-bottom: 100px;
height: 200px;
width: 200px;
}
.content {
display: flex;
flex-direction: column;
align-items: center;
}
.content input {
font-weight: bold;
font-size: 20px;
width: 400px;
height: 40px;
margin-bottom: 30px;
}
.sub_btn a {
text-decoration: none;
}
Register.js
let id_list = document.getElementById("id_list").value;
let mid = document.getElementById("mid");
id_list =id_list.replace("[","");
id_list =id_list.replace("]","");
id_list =id_list.replaceAll(" ","");
function id_check(value) {
if(id_list.includes(value)) {
alert("중복 된 값입니다 다시 입력해주세요.");
mid.value ="";
}
}
function password_check(value) {
let mpassword =document.getElementById("mpassword").value;
let rmpassword =document.getElementById("rmpassword");
if(value !== mpassword) {
alert("비밀번호가 다릅니다 다시 입력해주세요");
rmpassword.value="";
}
}
RegisterController.java -Register.jsp를 보여준다.
package register.controller;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
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.MemberDAO;
@WebServlet("/register")
public class RegisterController extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<String> id_list = new ArrayList<String>();
MemberDAO dao = new MemberDAO();
id_list = dao.getmidList();
req.setAttribute("id_list", id_list);
req.getRequestDispatcher("/WEB-INF/view/Register.jsp").forward(req, resp);
}
}
RegisterTryController.java
package register.controller;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
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.MemberDAO;
@WebServlet("/register/try")
public class RegisterTryController extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
String mid = req.getParameter("mid");
String mpassword = req.getParameter("mpassword");
String mname =req.getParameter("mname");
String memail = req.getParameter("memail");
String mphone = req.getParameter("mphone");
MemberDAO dao = new MemberDAO();
dao.Register(mid, mpassword, mname, memail, mphone);
resp.sendRedirect("/login");
}
}
'자바 > JSP기초(이클립스)' 카테고리의 다른 글
JSP 게시판 만들기 No5 (0) | 2021.04.11 |
---|---|
JSP 게시판 만들기 No4 (0) | 2021.04.11 |
JSP 게시판 만들기 No2 (0) | 2021.04.09 |
JSP 게시판 만들기 No1 (0) | 2021.04.08 |
JSP로 게시판 구현하기! (0) | 2021.04.08 |