Spring MVC 3-5(Ajax), 삭제

유동현·2022년 11월 21일
0

스프링MVC

목록 보기
9/13
post-thumbnail

목표

  • Ajax를 통해 수정시 주민번호가 DB데이터의 주민번호와 일치하지 않으면 수정이 진행 불가능하게 설정

EmployeeUpdateForm.jsp

<script>
 function ajaxRequest2()
   {
      $.post("ajaxssn.action", {ssn2 : $("#ssn2").val(), employeeId : $("#employeeId").val()}, function(data)
      {
        // alert(data);
        // alert($("#ssn2").val());
         
         if($("#ssn2").val() != $.trim(data))
             {
              $("#err").html("주민번호가 일치하지 않습니다.");
               $("#err").css("display", "inline");
               return; 
             }
           else
              // 폼 submit 액션 처리 수행
              $("#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)
		{
			// TODO: handle exception
		}
		
		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()
		{
			//alert("수정버튼클릭 : "+$(this).val());
			if(confirm("현재 선택한 데이터를 정말 삭제하시겠습니까?"))
				{
				$(location).attr("href","employeedelete.action?employeeId="+$(this).val());
				}
			
		});
		</script>

EmployeeDeleteController.java

  • 디스패처 서블릿에 등록후
public class EmployeeDeleteController implements Controller
{
	private IEmployeeDAO dao;
	//Controller 인페이스의 handleRequest()메소드 재정의
	public void setDao(IEmployeeDAO dao)
	{
		this.dao = dao;
	}

	
	
	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception
	{
		
		//하는 일은 doGet , doPost 와 같다.
		
		//컨트롤러 내부 액션 처리 코드
		
		
		ModelAndView mav = new ModelAndView();
		
		//이전 페이지(EmployeeList.jsp)로부터 데이터 수신
		//-- employeeId
		String employeeId = request.getParameter("employeeId");
		
		try
		{
			dao.remove(employeeId);
			
			mav.setViewName("redirect:employeelist.action");
			
		} catch (Exception e)
		{
			System.out.println(e.toString());
			// TODO: handle exception
		}
		
		
		return mav;
	}


	
	
	
}

0개의 댓글