jsp blog : ajax - id check

This commit is contained in:
kim
2021-01-20 15:37:38 +09:00
parent 94dcf7b936
commit 8b3ff7935d
6 changed files with 85 additions and 11 deletions

View File

@@ -5,6 +5,7 @@ import javax.naming.InitialContext;
import javax.sql.DataSource; import javax.sql.DataSource;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DB { public class DB {
@@ -30,4 +31,14 @@ public class DB {
e.printStackTrace(); e.printStackTrace();
} }
} }
public static void close(Connection conn, PreparedStatement pstmt, ResultSet rs) {
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} }

View File

@@ -5,6 +5,7 @@ import com.example.jspblog.domain.user.dto.JoinReqDto;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class UserDao { public class UserDao {
@@ -42,4 +43,27 @@ public class UserDao {
public void findById() { // 회원정보보기 public void findById() { // 회원정보보기
} }
public int findByUsername(String username) {
String sql = "select * from user where username=?";
Connection conn = DB.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
if (conn != null) {
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
rs = pstmt.executeQuery();
if (rs.next()) {
return 1;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DB.close(conn, pstmt, rs);
}
}
return -1;
}
} }

View File

@@ -1,15 +1,11 @@
package com.example.jspblog.service; package com.example.jspblog.service;
import com.example.jspblog.config.DB;
import com.example.jspblog.domain.user.User; import com.example.jspblog.domain.user.User;
import com.example.jspblog.domain.user.UserDao; import com.example.jspblog.domain.user.UserDao;
import com.example.jspblog.domain.user.dto.JoinReqDto; import com.example.jspblog.domain.user.dto.JoinReqDto;
import com.example.jspblog.domain.user.dto.LoginReqDto; import com.example.jspblog.domain.user.dto.LoginReqDto;
import com.example.jspblog.domain.user.dto.UpdateReqDto; import com.example.jspblog.domain.user.dto.UpdateReqDto;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class UserService { public class UserService {
private final UserDao userDao; private final UserDao userDao;
@@ -18,8 +14,7 @@ public class UserService {
} }
public int 회원가입(JoinReqDto dto) { public int 회원가입(JoinReqDto dto) {
int result = userDao.save(dto); return userDao.save(dto);
return result;
} }
public User 로그인(LoginReqDto dto) { public User 로그인(LoginReqDto dto) {
@@ -30,7 +25,7 @@ public class UserService {
return -1; return -1;
} }
public int 아이디중복체크(String username) { public int 유저네임중복체크(String username) {
return -1; return userDao.findByUsername(username);
} }
} }

View File

@@ -10,7 +10,9 @@ import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/user") @WebServlet("/user")
public class UserController extends HttpServlet { public class UserController extends HttpServlet {
@@ -54,6 +56,16 @@ public class UserController extends HttpServlet {
} else { } else {
Script.back(response, "회원가입실패"); Script.back(response, "회원가입실패");
} }
} else if (cmd.equals("usernameCheck")) {
BufferedReader br = request.getReader();
String username = br.readLine();
int result = userService.유저네임중복체크(username);
PrintWriter out = response.getWriter();
if (result == 1) {
out.print("ok");
} else {
out.print("fail");
}
} }
} }
} }

View File

@@ -12,7 +12,6 @@
// const xhttp = new XMLHttpRequest(); // const xhttp = new XMLHttpRequest();
// xhttp.onreadystatechange = function() { // xhttp.onreadystatechange = function() {
// if (this.readyState === 4 && this.status === 200) { // if (this.readyState === 4 && this.status === 200) {
// // document.getElementById("demo").innerHTML = this.responseText;
// const box = document.querySelector("#box"); // const box = document.querySelector("#box");
// if (this.responseText === 'OK'){ // if (this.responseText === 'OK'){
// box.innerHTML = "아이디 중복" // box.innerHTML = "아이디 중복"
@@ -28,7 +27,10 @@
// alert(data); // alert(data);
// }) // })
fetch("http://localhost:8080/jspblog/ajax").then(v => v.text()).then(v => alert(v)); fetch("http://localhost:8080/jspblog/ajax").then(v => v.text()).then(v => {
const box = document.querySelector("#box");
box.innerHTML = v === 'OK' ? "아이디 중복" : "아이디 사용 가능";
});
} }
</script> </script>
</body> </body>

View File

@@ -3,7 +3,10 @@
<%@ include file="../layout/header.jsp"%> <%@ include file="../layout/header.jsp"%>
<div class="container"> <div class="container">
<form action="${pageContext.request.contextPath}/user?cmd=join" method="post"> <form action="${pageContext.request.contextPath}/user?cmd=join" method="post" onsubmit="return valid()">
<div class="d-flex justify-content-end">
<button type="button" class="btn btn-info" onclick="usernameCheck()">중복체크</button>
</div>
<div class="form-group"> <div class="form-group">
<label for="username">Username:</label> <label for="username">Username:</label>
<input name="username" type="text" class="form-control" placeholder="Enter username" id="username" required> <input name="username" type="text" class="form-control" placeholder="Enter username" id="username" required>
@@ -30,6 +33,33 @@
</form> </form>
</div> </div>
<script> <script>
let isChecking = false;
function valid() {
if (isChecking === false) {
alert("아이디 중복체크를 해주세요");
}
return isChecking;
}
function usernameCheck() {
const username = $("#username").val();
$.ajax({
type: "POST",
url: "/jspblog/user?cmd=usernameCheck",
data: username,
contentType: "text/plain; charset=utf-8",
dataType: "text"
}).done(data => {
if(data === 'ok') {
alert("중복되었습니다.");
isChecking = false;
} else {
alert("사용가능합니다.")
isChecking = true;
}
})
}
function goPopup(){ function goPopup(){
const pop = window.open("/jspblog/user/jusoPopup.jsp","pop","width=570,height=420, scrollbars=yes, resizable=yes"); const pop = window.open("/jspblog/user/jusoPopup.jsp","pop","width=570,height=420, scrollbars=yes, resizable=yes");