반응형
# MVC07_01~02 Ajax 기능을 이용한 아이디 중복체크
## MVC07 프로젝트 계획
- Ajax 적용
- 파일 업로드 & 다운로드
## MVC07 프로젝트 생성
- 기존에 작업한 MVC06 바탕으로 작업 진행
- MVC06 WAR file 다운로드 후 이클립스 실행 > Project Explorer 빈 공간 우 클릭 > Import > WAR file > 다운로드 받은 WAR file 찾고, Web project이름을 MVC07로 변경 후 Finish.
## Context 등록
- Servers 탭 > 톰캣 우 클릭 > Add and Remove 클릭 후 Available에 있는 MVC07을 선택 후 Add 클릭하여 Configured로 이동 후 Finish.
## Ajax (Asynchronous Javascript And Xml)
- Jquery에서 제공해주는 $.ajax() 를 이용, 클라이언트와 서버간의 통신 시 비동기 전송으로 데이터를 주고 받는 방법
- 페이지 이동 없이 데이터 처리 가능
## 아이디 중복확인 기능 작업
- 회원 가입 시 화면 이동 없이 중복확인 버튼을 클릭하여 중복여부 확인
1. memberRegister.jsp
- 아이디 중복확인 버튼 추가.
- 중복확인 버튼 클릭에 따른 스크립트 구현.
// 아이디 중복체크 버튼 클릭 시 실행
function doubleCheck() {
if ( $("#id").val()=='' ) {
alert("아이디를 입력하세요.");
$("#id").focus();
return;
}
var id = $("#id").val();
$.ajax({
url : "<c:url value='/memberDbcheck.do'/>", // 서버 경로(요청 url)
type : "POST", // GET, POST
data : {"id" : id}, // 서버 요청 시 넘기는 값
success : dbCheck, // callback 함수
error : function() { // 실패 시.
alert("error");
}
});
}
// 아이디 중복체크 ajax 성공 시 실행.
function dbCheck(data) {
if ( data != "null" ) {
alert("중복된 아이디 입니다.");
$("#id").focus();
} else {
alert("사용 가능한 아이디 입니다.");
$("#id").focus();
}
}
2. HandlerMapping
package kr.bit.frontcontroller;
import java.util.HashMap;
import kr.bit.controller.Controller;
import kr.bit.controller.*;
public class HandlerMapping {
private HashMap<String, Controller> mappings;
public HandlerMapping() {
mappings=new HashMap<String, Controller>();
mappings.put("/memberList.do", new MemberListController());
mappings.put("/memberInsert.do", new MemberInsertController());
mappings.put("/memberRegister.do", new MemberRegisterController());
mappings.put("/memberContent.do", new MemberContentController());
mappings.put("/memberUpdate.do", new MemberUpdateController());
mappings.put("/memberDelete.do", new MemberDeleteController());
mappings.put("/memberLogin.do", new MemberLoginController());
mappings.put("/memberLogout.do", new MemberLogoutController());
mappings.put("/memberDbcheck.do", new MemberDbcheckController());
}
public Controller getController(String key) { // key=>/memberList.do
return mappings.get(key);
}
}
3. MemberDbcheckController 생성
- 프로젝트 > src > kr.bit.controller > class 클릭 후 MemberDbcheckController 이름으로 생성
package kr.bit.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.bit.model.MemberDAO;
public class MemberDbcheckController implements Controller {
@Override
public String requestHandler(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// $.ajax(); 에서 온 요청 처리.
String id = request.getParameter("id"); // {"id" : id}
MemberDAO dao = new MemberDAO();
String dbDouble = dao.memberDbcheck(id);
response.getWriter().print(dbDouble);
return null;
}
}
4. MemberDAO
- 중복 확인 관련 메서드 추가.
// 아이디 중복 확인
public String memberDbcheck(String id) {
SqlSession session = sqlSessionFactory.openSession();
String dbId = session.selectOne("memberDbcheck", id);
String idDouble = "NO";
if ( dbId != null ) {
idDouble = "YES";
}
session.close();
return idDouble; // YES(중복), NO(중복아님)
}
5. MemberMapper
<!-- 아이디 중복확인 -->
<select id="memberDbcheck" parameterType="memberVO" resultType="String">
SELECT id
FROM member
WHERE id = #{id}
</select>
반응형
'인프런 강의 학습 > MVC 프레임워크_나프2탄' 카테고리의 다른 글
인프런 나프_2탄 12일차 : MVC07_04~06 Ajax와 JSON 데이터 처리 (0) | 2021.06.27 |
---|---|
인프런 나프_2탄 11일차 : MVC07_03 Ajax 기술 (0) | 2021.06.27 |
인프런 나프_2탄 9일차 : MVC06_08 마무리 (0) | 2021.06.26 |
인프런 나프_2탄 8일차 : MVC06_08 회원 로그인 후 상세보기 페이지 (0) | 2021.06.26 |
인프런 나프_2탄 7일차 : MVC06_06~07 회원 로그인 화면처리, 로그인에 따른 버튼 활성화, 로그아웃 (0) | 2021.06.26 |