Spring MVC 실습 3-3(데이터 입력)

유동현·2022년 11월 19일
0

스프링MVC

목록 보기
6/13
post-thumbnail

EmployeeInsertFormController.java

Insert시 필요한 지역(Region),직위(Position),부서(Department)

/*=================================
	#19EmployeeInsertFormController.java
	- 사용자 정의 컨트롤러 클래스
	- 직원 데이터 입력폼 요청에 대한 액션 처리
	- DAO 객체에 대한 의존성 주입(DI)을 위한 준비
	   →DB에 접근해 직위,지역목록을 가져와야...
	   → 인터페이스 자료형 속성 구성.
	   → setter 메소드 정의
==================================*/

package com.test.mvc;

import java.util.ArrayList;

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 EmployeeInsertFormController implements Controller
{
	
	private IEmployeeDAO dao;
	
	public void setDao(IEmployeeDAO dao)
	{
		this.dao = dao;
	}
	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception
	{
		
		//하는 일은 doGet , doPost 와 같다.
		
		//컨트롤러 내부 액션 처리 코드
		ModelAndView mav = new ModelAndView();
		
		ArrayList<Region> regionList = new ArrayList<Region>();
		ArrayList<Department> departmentList = new ArrayList<Department>();
		ArrayList<Position> positionList = new ArrayList<Position>();
		
		try
		{
			regionList = dao.regionList();
			
			departmentList = dao.departmentList();
			
			positionList = dao.positionList();
			
			mav.addObject("regionList", regionList);
			mav.addObject("departmentList", departmentList);
			mav.addObject("positionList", positionList);
			
			mav.setViewName("/WEB-INF/view/EmployeeInsertForm.jsp"); 
		
			
		} catch (Exception e)
		{
			System.out.println(e.toString());
			// TODO: handle exception
		}	
		return mav;
	}
}



→Dispatcher-Servlet수정

<!-- 직원 데이터 입력 폼 Controller 등록 -->
	
	<bean name="/employeeinsertform.action" class="com.test.mvc.EmployeeInsertFormController">
		<property name="dao" ref="employeeDAO"></property>
	</bean>



→Employeelist.jsp 수정

<form action="">
			<input type="button" value="직원 추가" class="btn btn-primary control" onclick="location.href='employeeinsertform.action'">
		</form>




EmployeeInsertForm.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();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="<%=cp %>/css/main.css">
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>

</head>
<body>
<!--------------------------------------------------
    #20. EmployeeList.jsp
   -직원 데이터 입력 폼 페이지
    -관리자가 접근하는 직원 데이터 페이지
---------------------------------------------------->

<div>
	<!-- 메뉴 영역  -->
	<div>
		<c:import url="EmployeeMenu.jsp"></c:import>
	</div>

	<!-- 콘텐츠 영역  -->
	<div id ="content">
		<h1>[직원 관리] > [직원 정보 입력]</h1>
		<hr>
		
		
		<form action="employeeinsert.action" method="post" id="employeeForm">
			<table>
				<tr>
					<th>이름</th>
					<td>
						<input type="text" id="name" name="name" placeholder="이름 입력">
					</td>
				</tr>
				
				<tr>
					<th>주민번호</th>
					<td>
						<input type="text" id="ssn1" name="ssn1" style="width: 100px;">
						-
						<input type="text" id="ssn2" name="ssn2" style="width: 110px;">
						</td>
				</tr>
				
				<tr>
					<th>생년월일</th>
					<td>
						<input type="text" id="birthday" name="birthday" placeholder="생년월일">
					</td>
				</tr>
				
				<tr>
					<th>양/음력</th>
					<td>
						<input type="radio" value="0" name="lunar" id="lunar0" checked="checked">
						<label for="lunar0">양력</label>
						<input type="radio" value="1" name="lunar" id="lunar1">
						<label for="lunar1">음력</label>
					</td>
				</tr>
				
				<tr>
					<th>전화번호</th>
					<td>
						<input type="tel" id="telephone" name="telephone" placeholder="ex) 010-1234-1234">
					</td>
				</tr>
				 <tr>
               <th>지역</th>
               <td>
                  <select name="regionId" id="regionId">
                    <!--  
                     <option value="1">마포</option>
                     <option value="2">서초</option>
                     <option value="3">은평</option> -->
                  
                  <c:forEach var="region" items="${regionList }">
                  <option value = "${region.regionId}">${region.regionName }</option>
                  
                  </c:forEach>
                  
                  </select>
               </td>
            </tr>
            
            <tr>
               <th>부서</th>
               <td>
                  <select name="departmentId" id="departmentId">
                    <!--  <option value="1">독서부</option>
                     <option value="2">바둑부</option>
                     <option value="3">축구부</option> -->
                     
                     <c:forEach var="department" items="${departmentList }">
                     <option value="${department.departmentId }">
                     ${department.departmentName }
                     </option>
                     </c:forEach>
                    
                  </select>
               </td>
            </tr>
            <tr>
               <th>직위</th>
               <td>
                  <select name="positionId" id="positionId">
                    <!--  <option value="1">독서부</option>
                     <option value="2">바둑부</option>
                     <option value="3">축구부</option> -->
                     <c:forEach var="position" items="${positionList }">
                     <option value="${position.positionId }">
                     ${position.positionName }
                     </option>
                     </c:forEach>
                     
                     
                  </select>
               </td>
            </tr>
            
            <tr>
            	<th>기본급</th>
            	<td>
            	<input type="text" id="basicPay" name="basicPay"/>
            	(최소 기본급
            	<span id="minBasicPay" style="color: red; font-weight: bold;">0</span>원)
            	</td>
            </tr>
            
            <tr>
            	<th>수당</th>
            	<td>
            		<input type="text" id="extraPay" name="extraPay" />
            	</td>
            </tr>
            
            <tr>
            	<td colspan="2" align="center">
            	<br><br>
            	
            	<button type="button" class="btn btn-primary" id="submitBtn" style="width: 40%">직원 추가</button>
            	<button type="button" class="btn btn-primary" id="listBtn" style="width: 40%" >직원 리스트</button>
            	<br><br>
            	
            	 <span id="err" style="color: red; font-weight: bold; display: none;">
                  </span>
               </td>
            </tr>
            
         </table>
      </form>
      
      
   </div>   
   <!-- 회사 소개 및 어플리케이션 소개 영역 -->
   <div id="footer">
   </div>

</div>

</body>
</html>




Ajax

  • Ajax를 통해 아래 그림과 같이 직위를 선택하면 DB내 등록되어있는 Position 테이블의 직위별 최소기본급 데이터를 꺼내와 보여준다.

→EmployeeInsertForm.jsp 수정및 입력데이터 검사

⛏️내 코드

<!--내 코드 -->
<script type="text/javascript">
$(function()
{
	
	$("#positionId").change(function()
	{
		//alert("아");
		
		//alert($("#positionId").val());
		
		var positionId = $("#positionId").val();
		
		혹은
		
		var param = "positionId="+$("#positionId").val();
		
		$.ajax(
				{
					type : "POST"
					, url : "ajax.action"
					, data : {positionId:positionId}
					
					, success : function(args)
					{
						$("#minBasicPay").html(args);
						
					}
					, beforeSend:showRequest
					, error : function(e)
					{
						alert(e.responseText);
					} 
					
					
				});
		
		
	});
	
	
});

function showRequest()
{
	return true;
}
</script>



🧐 선생님꺼

<script type="text/javascript">
	
	// $();
	// jquery();
	$(document).ready(function()
	{
		// Ajax 요청 및 응답 처리
		ajaxRequest();
		//-- 지금은 페이지 최초 요청되었을 때만 minBasicPay 뿌려주는 형태
		//   그게 아니라 selectbox 바뀔 때마다 뿌려줘야 한다. (Line 51에 작성)
		
		// 테스트
		//alert("확인");

		// 먼저, 아래에서 ajax요청과 관련된 함수 만들고 오자
		
		// 직위(select)의 선택된 내용이 변경되었을 경우 수행해야 할 코드 처리
		$("#positionId").change(function()
		{	
			// 테스트
			//alert("변경~!!!");
			
			// Ajax 요청 및 응답 처리
			ajaxRequest();
		});
		
		
		// 직원 추가 버튼이 클릭되었을 때 수행해야 할 코드 처리
		$("#submitBtn").click(function()
		{
			// 테스트
			//alert("버튼 클릭~!!!");
			
			// 테스트
			//alert($("#minBasicPay").val());		//--(Ⅹ)
			// └→ 아무것도 안나옴. 이렇게 얻어낼 수 없다.
			//alert($("#minBasicPay").text());		//--(○)
			
			
			// 데이터 검사(누락된 입력값이 있는지 없는지에 대한 여부 확인)
			if ($("#name").val()=="" || $("#ssn1").val()=="" || $("#ssn2").val()==""
					|| $("#birthday").val()=="" || $("#telephone").val()==""
					|| $("#basicPay").val()=="")
			{
				$("#err").html("필수 입력 항목이 누락되었습니다.");
				$("#err").css("display", "inline");
				return;								//-- submit 액션 처리 중단
			}
			
			
			// 최소 기본급에 대한 유효성 검사
			// if (직급별최소기본급 > 사용자가입력한기본급) {return;}
			// $("#minBasicPay").text() > $("#basicPay").val() 그냥 이대로 산술비교 불가
			// 정수형태로 변환해줘야 한다.
			if ( parseInt($("#minBasicPay").text()) > parseInt($("#basicPay").val()) )
			{
				$("#err").html("입력하신 기본급이 최소 기본급보다 작습니다.");
				$("#err").css("display", "inline");
				return;								//-- submit 액션 처리 중단
			}
			
			
			// 폼 submit 액션 처리 수행
			$("#employeeForm").submit();
		
         
		    //직원 리스트 버튼이 클릭되었을 경우 수행할 코드 처리
		    	  //onclick="location.href='employeeinsertform.action'"
		    	  $("#listBtn").click(function()
				{
		    		  location.href="employeeinsertform.action";
					
				});
        
		});
		
	});
	
	
	// ajax요청과 관련된 함수
	function ajaxRequest()
	{	
		//alert("Ajax 요청 및 응답 처리");
	
		// 『$.post()』	/ 『$.get()』
		//-- jQuery 에서 Ajax 를 써야 할 경우 지원해주는 함수
		//   (서버 측에서 요청한 데이터를 받아오는 기능의 함수)
		
		// ※ 이 함수(『$.post()』)의 사용 방법(방식)
		//-- 『$.post(요청주소, 전송데이터, 응답액션처리)』
		//   ·요청주소(url)
		//     → 데이터를 요청할 파일에 대한 정보
		//   ·전송데이터(data)
		//     → 서버 측에 요청하는 과정에서 내가 전달할 파라미터
		//   ·응답액션처리(function)
		//     → 응답을 받을 수 있는 함수
		//        기능 처리
		
		// ※ 참고로... data 는 파라미터의 데이터타입을 그대로 취하게 되므로
		//    html 이든... 문자열이든... 상관이 없다.
		
		$.post("ajax.action", {positionId: $("#positionId").val()}, function(data)
		{
			$("#minBasicPay").html(data);
		});
		//--① ~~.action 이라는 약속은 지켜서 구성해야 한다.
		//  ② 직위의 selectBox 에 선택된 Id를 넘겨주면 된다.
		//  ③ position 넘겨주고 받은거 파라미터로 받는 함수
		//     id가 minBasicPay인 거에 그 값 넣어서 출력되게 해주면 된다.
		
		// 그러면 ajax.action 에 응답하는 뭔가가 있어야 한다.
		// → dispatcher-servlet 건드려야 한다.
		
	}
</script>



→Dispatcher-servlet.xml 에 컨트롤러 등록

<bean name="/ajax.action" class="com.test.mvc.AjaxController">
		<property name="dao" ref="employeeDAO"></property>
	</bean>
	



→AjaxController.java

  • DB의 Position에 접근해서 직위에 맞는 최소기본급 데이터 가져오기

/*=================================
	#22. AjaxController.java
	- 사용자 정의 컨트롤러 클래스
==================================*/
/*
	EmployeeDAO.java 에 만들어놨던 내용 중에
	직위 아이디에 따른 최소 기본급 확인/검색해주는 메소드를 비즈니스 로직삼아서 일함 
	→ getMinBasicpay()
	그 값을 Ajax.jsp 에 두면 된다.
*/

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;


//※ Spring 이 제공하는 『Controller』 인터페이스를 구현함으로써
// 사용자 정의 컨트롤러 클래스를 구성한다.


public class AjaxController 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();
		
		String positionId = request.getParameter("positionId");
		
		System.out.println(positionId);
		
		int minBasicPay = 0;
		
		minBasicPay = dao.getMinBasicPay(positionId);
		
		mav.addObject("minBasicPay", minBasicPay);
		
		mav.setViewName("/WEB-INF/view/Ajax.jsp");
		
		return mav;
	}
}



→Ajax.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();
%>
${minBasicPay}




InsertForm.jsp에서 jquery-ui 사용

  • 생년월일을 입력하지 않고 아래와 같이 jquery-ui에서 제공하는 ui를 사용해서 입력하기

<link rel="stylesheet" type="text/css" href="<%=cp %>/css/jquery-ui.css">
<script type="text/javascript" src="<%=cp%>/js/jquery-ui.js"></script>  

위 두개 추가

<script type="text/javascript">
// jQuery-UI 캘린더를 불러오는 함수 처리(datepicker())
		//-- id가 birthday인 걸 클릭하면 달력 나오게 하고 싶은 거
		$("#birthday").datepicker(
		{
			//-- 여기까지하고 확인해보면 생년월일 클릭하면 달력나오고
			//   날짜 선택하면 달력 사라지고 텍스트박스에 해당 날짜 들어감
			//   날짜 05/01/2022 로 들어가고 있음
			//   jquery-ui.js 의 dateFormat: "mm/dd/yy" 에 구문에 의해서
			// 아래와 같이 해당 속성 이름 쓰고 변경해줄 수 있다~
			
			dateFormat: "yy-mm-dd"
			, changeMonth: true
			, changeYear: true
		});
 </script> 
  • jquery에 이 구문 추가



→완성된 EmployeeInsertForm.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();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="<%=cp %>/css/main.css">
<link rel="stylesheet" type="text/css" href="<%=cp %>/css/jquery-ui.css">
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript" src="<%=cp%>/js/jquery-ui.js"></script>


<script type="text/javascript">
   
// $();
	// jquery();
	$(document).ready(function()
	{
		// Ajax 요청 및 응답 처리
		ajaxRequest();
		//-- 지금은 페이지 최초 요청되었을 때만 minBasicPay 뿌려주는 형태
		//   그게 아니라 selectbox 바뀔 때마다 뿌려줘야 한다. (Line 51에 작성)
		
		// 테스트
		//alert("확인");
		
		// jQuery-UI 캘린더를 불러오는 함수 처리(datepicker())
		//-- id가 birthday인 걸 클릭하면 달력 나오게 하고 싶은 거
		$("#birthday").datepicker(
		{
			//-- 여기까지하고 확인해보면 생년월일 클릭하면 달력나오고
			//   날짜 선택하면 달력 사라지고 텍스트박스에 해당 날짜 들어감
			//   날짜 05/01/2022 로 들어가고 있음
			//   jquery-ui.js 의 dateFormat: "mm/dd/yy" 에 구문에 의해서
			// 아래와 같이 해당 속성 이름 쓰고 변경해줄 수 있다~
			
			dateFormat: "yy-mm-dd"
			, changeMonth: true
			, changeYear: true
		});
		
		
		// 먼저, 아래에서 ajax요청과 관련된 함수 만들고 오자
		
		// 직위(select)의 선택된 내용이 변경되었을 경우 수행해야 할 코드 처리
		$("#positionId").change(function()
		{	
			// 테스트
			//alert("변경~!!!");
			
			// Ajax 요청 및 응답 처리
			ajaxRequest();
		});
		
		
		// 직원 추가 버튼이 클릭되었을 때 수행해야 할 코드 처리
		$("#submitBtn").click(function()
		{
			// 테스트
			//alert("버튼 클릭~!!!");
			
			// 테스트
			//alert($("#minBasicPay").val());		//--(Ⅹ)
			// └→ 아무것도 안나옴. 이렇게 얻어낼 수 없다.
			//alert($("#minBasicPay").text());		//--(○)
			
			
			// 데이터 검사(누락된 입력값이 있는지 없는지에 대한 여부 확인)
			if ($("#name").val()=="" || $("#ssn1").val()=="" || $("#ssn2").val()==""
					|| $("#birthday").val()=="" || $("#telephone").val()==""
					|| $("#basicPay").val()=="")
			{
				$("#err").html("필수 입력 항목이 누락되었습니다.");
				$("#err").css("display", "inline");
				return;								//-- submit 액션 처리 중단
			}
			
			
			// 최소 기본급에 대한 유효성 검사
			// if (직급별최소기본급 > 사용자가입력한기본급) {return;}
			// $("#minBasicPay").text() > $("#basicPay").val() 그냥 이대로 산술비교 불가
			// 정수형태로 변환해줘야 한다.
			if ( parseInt($("#minBasicPay").text()) > parseInt($("#basicPay").val()) )
			{
				$("#err").html("입력하신 기본급이 최소 기본급보다 작습니다.");
				$("#err").css("display", "inline");
				return;								//-- submit 액션 처리 중단
			}
			
		    	  
		    	  
		    	  
		    	  //submit 액션 처리 수행 
		    	  $("#employeeForm").submit();
		    	  
		    	  //직원 리스트 버튼이 클릭되었을 경우 수행할 코드 처리
		    	  //onclick="location.href='employeeinsertform.action'"
		    	  $("#listBtn").click(function()
				{
		    		  location.href="employeeinsertform.action";
					
				});
				
			});
		      
		      
		   });
   
   	
	// ajax요청과 관련된 함수
	function ajaxRequest()
	{	
  //alert("Ajax 요청 및 응답 처리");
	
		// 『$.post()』	/ 『$.get()』
		//-- jQuery 에서 Ajax 를 써야 할 경우 지원해주는 함수
		//   (서버 측에서 요청한 데이터를 받아오는 기능의 함수)
		
		// ※ 이 함수(『$.post()』)의 사용 방법(방식)
		//-- 『$.post(요청주소, 전송데이터, 응답액션처리)』
		//   ·요청주소(url)
		//     → 데이터를 요청할 파일에 대한 정보
		//   ·전송데이터(data)
		//     → 서버 측에 요청하는 과정에서 내가 전달할 파라미터
		//   ·응답액션처리(function)
		//     → 응답을 받을 수 있는 함수
		//        기능 처리
		
		// ※ 참고로... data 는 파라미터의 데이터타입을 그대로 취하게 되므로
		//    html 이든... 문자열이든... 상관이 없다.
		
		$.post("ajax.action", {positionId: $("#positionId").val()}, function(data)
		{
			$("#minBasicPay").html(data);
		});
		//--① ~~.action 이라는 약속은 지켜서 구성해야 한다.
		//  ② 직위의 selectBox 에 선택된 Id를 넘겨주면 된다.
		//  ③ position 넘겨주고 받은거 파라미터로 받는 함수
		//     id가 minBasicPay인 거에 그 값 넣어서 출력되게 해주면 된다.
		
		// 그러면 ajax.action 에 응답하는 뭔가가 있어야 한다.
		// → dispatcher-servlet 건드려야 한다.
</script>

</head>
<body>
<!--------------------------------------------------
    #20. EmployeeList.jsp
   -직원 데이터 입력 폼 페이지
    -관리자가 접근하는 직원 데이터 페이지
---------------------------------------------------->

<div>
	<!-- 메뉴 영역  -->
	<div>
		<c:import url="EmployeeMenu.jsp"></c:import>
	</div>

	<!-- 콘텐츠 영역  -->
	<div id ="content">
		<h1>[직원 관리] > [직원 정보 입력]</h1>
		<hr>
		
		
		<form action="employeeinsert.action" method="post" id="employeeForm">
			<table>
				<tr>
					<th>이름</th>
					<td>
						<input type="text" id="name" name="name" placeholder="이름 입력">
					</td>
				</tr>
				
				<tr>
					<th>주민번호</th>
					<td>
						<input type="text" id="ssn1" name="ssn1" style="width: 100px;">
						-
						<input type="text" id="ssn2" name="ssn2" style="width: 110px;">
						</td>
				</tr>
				
				<tr>
					<th>생년월일</th>
					<td>
						<input type="text" id="birthday" name="birthday" placeholder="생년월일">
					</td>
				</tr>
				
				<tr>
					<th>양/음력</th>
					<td>
						<input type="radio" value="0" name="lunar" id="lunar0" checked="checked">
						<label for="lunar0">양력</label>
						<input type="radio" value="1" name="lunar" id="lunar1">
						<label for="lunar1">음력</label>
					</td>
				</tr>
				
				<tr>
					<th>전화번호</th>
					<td>
						<input type="tel" id="telephone" name="telephone" placeholder="ex) 010-1234-1234">
					</td>
				</tr>
				 <tr>
               <th>지역</th>
               <td>
                  <select name="regionId" id="regionId">
                    <!--  
                     <option value="1">마포</option>
                     <option value="2">서초</option>
                     <option value="3">은평</option> -->
                  
                  <c:forEach var="region" items="${regionList }">
                  <option value = "${region.regionId}">${region.regionName }</option>
                  
                  </c:forEach>
                  
                  </select>
               </td>
            </tr>
            
            <tr>
               <th>부서</th>
               <td>
                  <select name="departmentId" id="departmentId">
                    <!--  <option value="1">독서부</option>
                     <option value="2">바둑부</option>
                     <option value="3">축구부</option> -->
                     
                     <c:forEach var="department" items="${departmentList }">
                     <option value="${department.departmentId }">
                     ${department.departmentName }
                     </option>
                     </c:forEach>
                    
                  </select>
               </td>
            </tr>
            <tr>
               <th>직위</th>
               <td>
                  <select name="positionId" id="positionId">
                    <!--  <option value="1">독서부</option>
                     <option value="2">바둑부</option>
                     <option value="3">축구부</option> -->
                     <c:forEach var="position" items="${positionList }">
                     <option value="${position.positionId }">
                     ${position.positionName }
                     </option>
                     </c:forEach>
                     
                     
                  </select>
               </td>
            </tr>
            
            <tr>
            	<th>기본급</th>
            	<td>
            	<input type="text" id="basicPay" name="basicPay"/>
            	(최소 기본급
            	<span id="minBasicPay" style="color: red; font-weight: bold;">0</span>원)
            	</td>
            </tr>
            
            <tr>
            	<th>수당</th>
            	<td>
            		<input type="text" id="extraPay" name="extraPay" />
            	</td>
            </tr>
            
            <tr>
            	<td colspan="2" align="center">
            	<br><br>
            	
            	<button type="button" class="btn btn-primary" id="submitBtn" style="width: 40%">직원 추가</button>
            	<button type="button" class="btn btn-primary" id="listBtn" style="width: 40%" >직원 리스트</button>
            	<br><br>
            	
            	 <span id="err" style="color: red; font-weight: bold; display: none;">
                  </span>
               </td>
            </tr>
            
         </table>
      </form>
      
      
   </div>   
   <!-- 회사 소개 및 어플리케이션 소개 영역 -->
   <div id="footer">
   </div>

</div>

</body>
</html>




DB에 데이터 입력 처리

  • 데이터를 DB에 입력할 컨트롤러 EmployeeInsertController.java 추가

→Dispatcher-Servlet에 컨트롤러 등록

	<bean name="/employeeinsert.action" class="com.test.mvc.EmployeeInsertController">
		<property name="dao" ref="employeeDAO"></property>
	</bean>



→EmployeeInsertController.java

/*=================================
	#23. EmployeeInsertController.java
	- 사용자 정의 컨트롤러 클래스
	- 직원 데이터 입력 액션 수행 및 해당 액션 처리 이후
	『employeelist.action』을 요청할 수 있도록 안내
	- DAO 객체에 대한 의존성 주입(DI)을 위한 준비.
	→인터페이스 자료형
	→setter 메소드 정의
==================================*/

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;


//※ Spring 이 제공하는 『Controller』 인터페이스를 구현함으로써
// 사용자 정의 컨트롤러 클래스를 구성한다.


public class EmployeeInsertController 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();
		
		Employee employee = new Employee();
		
		employee.setName(request.getParameter("name"));
		employee.setSsn1(request.getParameter("ssn1"));
		employee.setSsn2(request.getParameter("ssn2"));
		employee.setBirthday(request.getParameter("birthday"));
		employee.setLunar(Integer.parseInt(request.getParameter("lunar")));
		employee.setTelephone(request.getParameter("telephone"));
		employee.setRegionId(request.getParameter("regionId"));
		employee.setDepartmentId(request.getParameter("departmentId"));
		employee.setPositionId(request.getParameter("positionId"));
        employee.setBasicPay(Integer.parseInt(request.getParameter("basicPay")));
        employee.setExtraPay(Integer.parseInt(request.getParameter("extraPay")));
		
		int result = dao.employeeAdd(employee);
		
		
		System.out.println(request.getParameter("name"));
		System.out.println(request.getParameter("ssn1"));
		System.out.println(request.getParameter("ssn2"));
		System.out.println(request.getParameter("birthday"));
		System.out.println(Integer.parseInt(request.getParameter("lunar")));
		System.out.println(request.getParameter("telephone"));
		System.out.println(request.getParameter("regionId"));
		System.out.println(request.getParameter("departmentId"));
		System.out.println(request.getParameter("positionId"));
		System.out.println(Integer.parseInt(request.getParameter("basicPay")));
		System.out.println(Integer.parseInt(request.getParameter("extraPay")));
		System.out.println(result);
		

		// check~!!!
		//mav.setViewName("EmployeeList.jsp");
		// 내가 추가해줄테니까 넌 돌아가서 리스트 봐~ 라고 할껀데
		// 위에처럼 view 호출해주면 안된다.
		// 이건 뭐를 가지고 클라이언트 만나는 게 아님
		
		// '내가 갱신했으니까, 클라이언트한테 다시 요청하라고 해' 라고 해야함
		mav.setViewName("redirect:employeelist.action");
		
		return mav;
	}

	
	
}




실습 내용

  • DB에 데이터 입력

0개의 댓글