JSP/연습
회원가입 만들기(수업시간 평가)
SEOKIHOUSE
2023. 7. 2. 22:26
bandicam 2023-07-02 22-24-55-762.mp4
1.82MB
회원가입 쿼리.txt
0.00MB
eval_app13.zip
2.73MB
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
window.onload = function() {
let inputname = document.querySelector("input[name=name]");
let inputid = document.querySelector("input[name=id]");
let inputpw = document.querySelector("input[name=pw]");
let inputtel = document.querySelector("input[name=tel]");
let inputaddr = document.querySelector("input[name=addr]");
let storeFirstId ="";
let storeFirstTel ="";
const idbtn = document.querySelector("#idbtn");
idbtn.addEventListener("click", function() {
const xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if(xhttp.readyState ===4 && xhttp.status ===200) {
const getMsg = this.responseText;
let checkIdDiv = document.querySelector("#checkId");
if(getMsg == "false") {
checkIdDiv.innerHTML ="중복된아이디입니다";
checkIdDiv.style.color ="red";
}else {
checkIdDiv.innerHTML ="사용가능한 아이디입니다";
checkIdDiv.style.color ="green";
storeFirstId = inputid.value;
}
}
}
xhttp.open("POST", "check", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
const data = "id="+inputid.value;
xhttp.send(data);
})
const telbtn = document.querySelector("#telbtn");
telbtn.addEventListener("click", function() {
const xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if(xhttp.readyState ===4 && xhttp.status ===200) {
const getMsgs = this.responseText;
let checkTelDiv = document.querySelector("#checkTelDiv");
if(getMsgs == "false") {
checkTelDiv.innerHTML ="중복된번호입니다";
checkTelDiv.style.color ="red";
}else {
checkTelDiv.innerHTML ="사용가능한 번호입니다";
checkTelDiv.style.color ="green";
storeFirstTel =inputtel.value;
}
}
}
xhttp.open("POST", "check", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
const data = "tel="+inputtel.value;
xhttp.send(data);
})
const subbtn = document.querySelector("#subbtn");
subbtn.addEventListener("click", function(event) {
event.preventDefault();
if(inputname.value.trim() =="") {
alert("이름을 입력하세요");
inputname.focus();
return;
}
if(inputid.value.trim() =="") {
alert("아이디를 입력하세요");
inputid.focus();
return;
}
if(inputpw.value.trim() =="") {
alert("비밀번호를 입력하세요");
inputpw.focus();
return;
}
if(inputtel.value.trim() =="") {
alert("전화번호를 입력하세요");
inputtel.focus();
return;
}
if(inputaddr.value.trim() =="") {
alert("주소를 입력하세요");
inputaddr.focus();
return;
}
if((storeFirstId != inputid.value) || (storeFirstTel != inputtel.value) ) {
alert("중복되었거나 중복체크를 눌러야합니다");
return;
}
alert("회원가입 완료");
frm.submit();
})
}
</script>
</head>
<body>
<h1>회원가입</h1>
<hr>
<form name="frm" action="check" method="POST">
이름<input type="text" name="name" placeholder="이름을 입력하세요"><br>
아이디<input type="text" name="id" placeholder="아이디를 입력하세요">
<button id="idbtn" type="button">중복확인</button><br>
<div id="checkId"></div>
비밀번호<input type="text" name="pw" placeholder="비밀번호를 입력하세요"><br>
전화번호<input type="text" name="tel" placeholder="전화번호를 입력하세요">
<button id="telbtn" type="button">중복확인</button><br>
<div id="checkTelDiv"></div>
주소<input type="text" name="addr" placeholder="주소를 입력하세요"><br>
<input id="subbtn" type="submit" value="회원가입">
</form>
</body>
</html>
package servlets;
import java.io.IOException;
import java.io.PrintWriter;
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 db.MemberDao;
import service.CheckDupService;
import vo.MemberVo;
@WebServlet("/check")
public class CheckServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String tel = request.getParameter("tel");
String addr = request.getParameter("addr");
CheckDupService cds = new CheckDupService();
int idCount =cds.checkId(id);
int telCount =cds.checkTel(tel);
PrintWriter out = response.getWriter();
if(idCount ==1 || telCount ==1) {
out.print("false");
return;
}
if(name != null && id != null && pw!= null && tel != null && addr != null) {
MemberVo mv = new MemberVo(name, id, pw, tel, addr);
MemberDao md = new MemberDao();
int result = md.insert(mv);
if(result == 1) {
out.print("true");
response.sendRedirect("sucess.jsp");
}
}
}
}
package service;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class CheckDupService {
public Connection conn;
public PreparedStatement stmt;
public ResultSet rs;
public CheckDupService() {
try {
Class.forName("org.mariadb.jdbc.Driver");
String url ="jdbc:mariadb://localhost:3306/green01";
conn = DriverManager.getConnection(url,"root","1234");
}catch(Exception e) {
e.printStackTrace();
}
}
public int checkId(String id) {
String query = "SELECT COUNT(*) FROM tbl_member13 where id=?";
int count =0;
try {
stmt = conn.prepareStatement(query);
stmt.setString(1, id);
rs = stmt.executeQuery();
rs.next();
count = rs.getInt("COUNT(*)");
}catch(Exception e) {
e.printStackTrace();
}
return count;
}
public int checkTel(String tel) {
String query = "SELECT COUNT(*) FROM tbl_member13 where tel=?";
int count =0;
try {
stmt = conn.prepareStatement(query);
stmt.setString(1, tel);
rs = stmt.executeQuery();
rs.next();
count = rs.getInt("COUNT(*)");
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(conn != null)conn.close();
if(stmt != null)stmt.close();
if(rs != null)rs.close();
}catch(Exception e) {
e.printStackTrace();
}
}
return count;
}
}
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import vo.MemberVo;
public class MemberDao {
Connection conn;
public PreparedStatement stmt;
public ResultSet rs;
public MemberDao() {
try {
Class.forName("org.mariadb.jdbc.Driver");
String url ="jdbc:mariadb://localhost:3306/green01";
conn = DriverManager.getConnection(url,"root","1234");
}catch(Exception e) {
e.printStackTrace();
}
}
public int insert(MemberVo mv) {
String query = "INSERT INTO tbl_member13 VALUES (?,?,?,?,?)";
int count =0;
try {
stmt = conn.prepareStatement(query);
stmt.setString(1, mv.getName());
stmt.setString(2, mv.getId());
stmt.setString(3, mv.getPw());
stmt.setString(4, mv.getTel());
stmt.setString(5, mv.getAddr());
count =stmt.executeUpdate();
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(conn != null)conn.close();
if(stmt != null)stmt.close();
if(rs != null)rs.close();
}catch(Exception e) {
e.printStackTrace();
}
}
return count;
}
}
package vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MemberVo {
private String name;
private String id;
private String pw;
private String tel;
private String addr;
}