From 8b3ff7935d38dcd5921c29a7aae66de718279207 Mon Sep 17 00:00:00 2001 From: kim Date: Wed, 20 Jan 2021 15:37:38 +0900 Subject: [PATCH] jsp blog : ajax - id check --- .../java/com/example/jspblog/config/DB.java | 11 +++++++ .../example/jspblog/domain/user/UserDao.java | 24 ++++++++++++++ .../example/jspblog/service/UserService.java | 11 ++----- .../example/jspblog/web/UserController.java | 12 +++++++ jspblog/src/main/webapp/test/ajaxtest.jsp | 6 ++-- jspblog/src/main/webapp/user/joinForm.jsp | 32 ++++++++++++++++++- 6 files changed, 85 insertions(+), 11 deletions(-) diff --git a/jspblog/src/main/java/com/example/jspblog/config/DB.java b/jspblog/src/main/java/com/example/jspblog/config/DB.java index 1ad29a22..859efd77 100644 --- a/jspblog/src/main/java/com/example/jspblog/config/DB.java +++ b/jspblog/src/main/java/com/example/jspblog/config/DB.java @@ -5,6 +5,7 @@ import javax.naming.InitialContext; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; +import java.sql.ResultSet; public class DB { @@ -30,4 +31,14 @@ public class DB { 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(); + } + } } diff --git a/jspblog/src/main/java/com/example/jspblog/domain/user/UserDao.java b/jspblog/src/main/java/com/example/jspblog/domain/user/UserDao.java index 344f119f..79de8273 100644 --- a/jspblog/src/main/java/com/example/jspblog/domain/user/UserDao.java +++ b/jspblog/src/main/java/com/example/jspblog/domain/user/UserDao.java @@ -5,6 +5,7 @@ import com.example.jspblog.domain.user.dto.JoinReqDto; import java.sql.Connection; import java.sql.PreparedStatement; +import java.sql.ResultSet; public class UserDao { @@ -42,4 +43,27 @@ public class UserDao { 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; + } } diff --git a/jspblog/src/main/java/com/example/jspblog/service/UserService.java b/jspblog/src/main/java/com/example/jspblog/service/UserService.java index d0ebf2f3..97d272d3 100644 --- a/jspblog/src/main/java/com/example/jspblog/service/UserService.java +++ b/jspblog/src/main/java/com/example/jspblog/service/UserService.java @@ -1,15 +1,11 @@ package com.example.jspblog.service; -import com.example.jspblog.config.DB; import com.example.jspblog.domain.user.User; import com.example.jspblog.domain.user.UserDao; import com.example.jspblog.domain.user.dto.JoinReqDto; import com.example.jspblog.domain.user.dto.LoginReqDto; import com.example.jspblog.domain.user.dto.UpdateReqDto; -import java.sql.Connection; -import java.sql.PreparedStatement; - public class UserService { private final UserDao userDao; @@ -18,8 +14,7 @@ public class UserService { } public int 회원가입(JoinReqDto dto) { - int result = userDao.save(dto); - return result; + return userDao.save(dto); } public User 로그인(LoginReqDto dto) { @@ -30,7 +25,7 @@ public class UserService { return -1; } - public int 아이디중복체크(String username) { - return -1; + public int 유저네임중복체크(String username) { + return userDao.findByUsername(username); } } diff --git a/jspblog/src/main/java/com/example/jspblog/web/UserController.java b/jspblog/src/main/java/com/example/jspblog/web/UserController.java index f90f9c48..9f26dae8 100644 --- a/jspblog/src/main/java/com/example/jspblog/web/UserController.java +++ b/jspblog/src/main/java/com/example/jspblog/web/UserController.java @@ -10,7 +10,9 @@ import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.BufferedReader; import java.io.IOException; +import java.io.PrintWriter; @WebServlet("/user") public class UserController extends HttpServlet { @@ -54,6 +56,16 @@ public class UserController extends HttpServlet { } else { 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"); + } } } } diff --git a/jspblog/src/main/webapp/test/ajaxtest.jsp b/jspblog/src/main/webapp/test/ajaxtest.jsp index ceecd32f..3f80629e 100644 --- a/jspblog/src/main/webapp/test/ajaxtest.jsp +++ b/jspblog/src/main/webapp/test/ajaxtest.jsp @@ -12,7 +12,6 @@ // const xhttp = new XMLHttpRequest(); // xhttp.onreadystatechange = function() { // if (this.readyState === 4 && this.status === 200) { - // // document.getElementById("demo").innerHTML = this.responseText; // const box = document.querySelector("#box"); // if (this.responseText === 'OK'){ // box.innerHTML = "아이디 중복" @@ -28,7 +27,10 @@ // 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' ? "아이디 중복" : "아이디 사용 가능"; + }); } diff --git a/jspblog/src/main/webapp/user/joinForm.jsp b/jspblog/src/main/webapp/user/joinForm.jsp index bca8433e..5ddbc483 100644 --- a/jspblog/src/main/webapp/user/joinForm.jsp +++ b/jspblog/src/main/webapp/user/joinForm.jsp @@ -3,7 +3,10 @@ <%@ include file="../layout/header.jsp"%>
-
+ +
+ +
@@ -30,6 +33,33 @@