이전 포스팅에서 회원가입 예제와 이에 따른 유효성 검사를 해 보았습니다.이제 회원가입 폼에서 해야할 마지막 과제! 입력한 아이디가 이미 있는지 없는지 JSP 아이디 중복 체크에 대해서 알아보겠습니다.
일단 회원가입 예제에다가 해도 되지만 별도로 진행해 보겠습니다.
프로젝트 구조
일단 프로젝트 구조는 위아 같은데요.
여기에 아래의 소스코드를 통해 기능 구현을 해보겠습니다.
checkDAO.java
package check; import myBatisSetting.SqlMapConfig; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; public class checkDAO { SqlSessionFactory sessionf = SqlMapConfig.getSqlMapInstance(); SqlSession sqlsession; public checkDAO() { sqlsession = sessionf.openSession(true); } public String selectid(String param) { String result = sqlsession.selectOne("selectid",param); return result; } }
IdCheckController.java
package check; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class IdCheckController extends HttpServlet{ @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("UTF-8"); checkDAO dao = new checkDAO(); String jungbokid = dao.selectid(req.getParameter("id")); //db에 값이 있는지 확인 있으면 id가 없으면 null 리턴 if(jungbokid==null){ jungbokid=""; //해당 아이디가 없으면 공백으로 처리 } req.setAttribute("jungbokid", jungbokid); req.setAttribute("id", req.getParameter("id")); RequestDispatcher dis = req.getRequestDispatcher("CheckID.jsp"); dis.forward(req, resp); } }
Emp.xml
<select id="selectid" parameterType="String" resultType="String"> select id from guest where id = #{param} </select>
CheckID.jsp
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript"> function jungbok(){ if(document.check.id.value==""){ //id값이 없을 경우 alert("아이디를 입력하세요"); //메세지 경고창을 띄운 후 document.addjoin.id.focus(); // id 텍스트박스에 커서를 위치 exit; } document.check.submit(); } </script> </head> <body> <% String id = request.getParameter("id"); if(id==null){ id =""; }%> <!-- 초기 id 필드의 값이 null이며 값이 null이면 id 값을 공백으로 전환 --> <% String jungbokid = (String)request.getAttribute("jungbokid");%> <!-- 초기 구동시 jungbokid는 null --> <% String result; %> <% if(jungbokid==""){ result= id+"는 사용하셔도 됩니다."; }else if(jungbokid==null && id==""){ result=""; //초기 구동시 jungbokid:null, id=""이므로 상태는 ""임 }else{ result= id+"는 이미 있습니다."; //중복 확인시 입력한 아이디와 db 결과의 리턴값이 같은 경우 } %> <form action="checkid" name="check" method="post"> 아이디<input type="text" name="id" id="id" value='<%=id%>'> <input type="button" value="중복검사" onclick="jungbok()" ><br> <%=result %> <!-- 아이디가 중복인지 아닌지 상태 --> </form> </body>
소스 구동 결과
일단 DB에 임의의 값 하나를 입력합니다.
위의 프로젝트를 구동하면 위와 같은 화면이 나오는데요.
이미 DB에 저장되 있는 값을 입력해 보겠습니다.
중복검사를 해보니 이미 1의 값은 DB에 있어 위와 같은 결과가 나왔습니다.
구동이 안되시는 분들은 프로젝트 파일을 받아서 적용해 보시기 바랍니다.
위의 jsp 아이디 중복 체크 기능은 ajax로 구동할 경우 기능상으로 더 좋은데요.
다음 시간에는 ajax를 이용한 중복체크 기능을 알아보도록 하겠습니다.
Di Maria 11
I would like this!!!