public boolean check_id(String userid) {
String sql = "SELECT count(*) FROM TBL_MEMBER WHERE USEID = ?";
boolean result = false;
try {
conn=DBconnection.getConnection();
pstm =conn.prepareStatement(sql);
pstm.setString(1, userid);
rs = pstm.executeQuery();
if(rs.next()) {
if(rs.getInt(1)==1) {
result = true;
}
}
}catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
DB를 연결하고 PreparedStatement를 실행하여 결과 집합(ResultSet)을 얻는다.
if(rs.next())의 경우는 rs.getInt(1)==1인 경우에 true, 그렇지 않은 경우 false를 반환하게 한다.
<%@page import="com.codingbox.web.dto.TblMemberDTO"%>
<%@page import="com.codingbox.web.dao.TblMemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String userid = request.getParameter("userid");
//
//TblMemberDAO에서 DB조회 후(check_Id(userid)),checkId->boolean
//해당 아이디로 가입이 가능하면 OUT.PRINT("OK")
//그렇지 않다면 out.print("not-ok")
TblMemberDAO mdao = new TblMemberDAO();
mdao.check_id(userid);
if(!mdao.check_id(userid)){
//회원가입 가능한 상태
out.print("ok");
}else{
//회원가입 불가능한 상태
out.print("not ok");
}
%>
userid로 값을 받아오고, mdao객체를 생성해준다. 회원가입이 가능하다면 ok,아니라면 not ok 출력
///아이디 중복체크
function checkId(userid){
//alert(userid);
if(userid == ""){
alert("아이디를 입력해주세요");
return false;
}else{
//ajax통신
let xhr = new XMLHttpRequest();
xhr.open("GET",
"idcheck.jsp?userid="+userid,true);
xhr.send();
xhr.onreadystatechange = function(){
// 응답, 성공
if( xhr.readyState == XMLHttpRequest.DONE &&
xhr.status == 200){
if(xhr.responseText.trim() == "ok"){
//ok
document.getElementById("text").innerHTML
="사용할 수 있는 아이디 입니다."
}else{
//not ok
document.getElementById("text").innerHTML
="사용할 수 없는 아이디 입니다."
}
}
}
}
}
ajax통신을 이용한다. 그렇기 때문에 기존에 했던 코드와 달리 submit도 붙지 않은 것.
ajax이기에 비동기식으로 동작한다. 서버에서 받은 응답은 xhr.responseText에 저장되고, xhr.readyState == XMLHttpRequest.DONE &&
xhr.status == 200일 경우 사용할 수 있는 아이디, 그렇지 않은 경우 사용불가한 아이디이다.
<%@ 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>
</head>
<body>
<!-- session에 있는 값을 비워
loginpage로 이동 -> loginview.jsp
-->
<%
//session.invalidate(); //세션에 있는 모든 값 삭제
session.removeAttribute("session_id");//session에 정의된 특정 값만 삭제
response.sendRedirect("loginview.jsp");
%>
</body>
</html>