목표
- Ajax를 통해 수정시 주민번호가 DB데이터의 주민번호와 일치하지 않으면 수정이 진행 불가능하게 설정
 
<script>
 function ajaxRequest2()
   {
      $.post("ajaxssn.action", {ssn2 : $("#ssn2").val(), employeeId : $("#employeeId").val()}, function(data)
      {
        
        
         
         if($("#ssn2").val() != $.trim(data))
             {
              $("#err").html("주민번호가 일치하지 않습니다.");
               $("#err").css("display", "inline");
               return; 
             }
           else
              
              $("#employeeForm").submit();
         
      });
      
      
   }
   </script>
- 이와같이 함수를 선언하고 직원 수정 버튼이 눌렸을때 실행되게 한다. $.trim()을 쓰지않으면 응답된 데이터에 공백에 의해 무조건 다르다고 나올수있다.
 
- 더 좋은방법은 응답된 데이터를 가져오는것이 아닌 Controller에서 가져온데이터를 비교하고 맞다 아니다를 뜻하는 flag값을 가져오는것이 MVC패턴에서 더 옳다
위와 같은 방법은 View에서 데이터 비교처리를 하는것이므로 옳지 않음 
EmployeeDAO.java
- 오라클에서 사용자가 입력한 주민번호 뒷자리를 통해 복호화를 시도하고 그에 따른 결과를 반환하게 하는 메소드 생성
 
@Override
	public String searchSSN(String ssn2,String employeeId) throws SQLException
	{
		Connection conn = dataSource.getConnection();
		
		String result = "";
		
		String sql = "SELECT CRYPTPACK.DECRYPT(SSN2, ?) AS SSN2 FROM EMPLOYEE WHERE EMPLOYEEID = ?";
		
		PreparedStatement pstmt = conn.prepareStatement(sql);
		
		pstmt.setString(1, ssn2);
		pstmt.setString(2, employeeId);
		
		ResultSet rs =  pstmt.executeQuery();
		
		if(rs.next())
		{
			result = rs.getString("SSN2");
		}
		
		rs.close();
		pstmt.close();
		conn.close();
		
		return result;
		
	}
AjaxssnController.java
- 위에서 생성한 EmployeeDAO의 searchSSN 메소드를 통해 복호화 시도 결과를 가져올 Ajax 컨트롤러
 
package com.test.mvc;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class AjaxssnController implements Controller
{
	
	private IEmployeeDAO dao;
	
	
	
	public void setDao(IEmployeeDAO dao)
	{
		this.dao = dao;
	}
	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception
	{
		
		String ssn2 = request.getParameter("ssn2");
		String employeeId = request.getParameter("employeeId");
		String result ="";
		
		
		ModelAndView mav = new ModelAndView();
		
		try
		{
			result = dao.searchSSN(ssn2, employeeId);
			
		   System.out.println(result);
			
			mav.addObject("ssn2", result);
			
		} catch (Exception e)
		{
			
		}
		
		mav.setViewName("Ajaxssn");
		
		return mav;
	}
	
	
}
Ajaxssn.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<% 
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
%>
${ssn2}
EmployeeList.jsp
	<script>
		
		$(".deleteBtn").click(function()
		{
			
			if(confirm("현재 선택한 데이터를 정말 삭제하시겠습니까?"))
				{
				$(location).attr("href","employeedelete.action?employeeId="+$(this).val());
				}
			
		});
		</script>
EmployeeDeleteController.java
public class EmployeeDeleteController implements Controller
{
	private IEmployeeDAO dao;
	
	public void setDao(IEmployeeDAO dao)
	{
		this.dao = dao;
	}
	
	
	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception
	{
		
		
		
		
		
		
		ModelAndView mav = new ModelAndView();
		
		
		
		String employeeId = request.getParameter("employeeId");
		
		try
		{
			dao.remove(employeeId);
			
			mav.setViewName("redirect:employeelist.action");
			
		} catch (Exception e)
		{
			System.out.println(e.toString());
			
		}
		
		
		return mav;
	}
	
	
	
}