본문 바로가기

TIL/Servlet

[Servlet] mvc-2

 

상단에서 입력한 것 처럼 상대경로를 입력해주면 다른 경로에 있으면 접근할 수 없다.

그래서 pageContext.ServletContext.contextPath로 작성해준다.

 

전체 직원 조회용 서블릿 생성

 

service클래스에 메소드 생성

 

dao클래스에 메소드 생성. 전체 조회용이니 넘어가는 파라미터 값이 없다.

 

매퍼 EmployeeDAO에 sql구문 작성

 

먼저 출력문으로 확인해보자.

주소창을 확인해보면 employee/list 서블릿 매핑된 것 잘 확인되고, 출력문에서도 전체 직원이 조회된다.

 

 

화면에 출력할 employeeList.jsp 생성

단, 반복적으로 출력하기 위해 jstl의 core라이브러리가 가지고 있는 foreach기능을 사용한다.

jstl라이브러리는 기존에 추가돼있고, 맨 위에 선언해줘야한다. <%@ taglib~  부분

 

하단에 forEach문 작성

신규 직원 정보 추가

main.jsp

	<h3>EMPLOYEE 테이블에 신규 직원 정보 추가 : /employee/insert (post)</h3>
	<form action="${ pageContext.servletContext.contextPath }/employee/insert" method="post">
		직원명 : <input type="text" name="empName"><br>
		주민등록번호 : <input type="text" name="empNo"><br>
		이메일 : <input type="text" name="email"><br>
		전화번호 : <input type="tel" name="phone"><br>
		부서코드 : 
		<select name="deptCode">
			<option value="D1">인사관리부</option>
			<option value="D2">회계관리부</option>
			<option value="D3">마케팅부</option>
			<option value="D4">국내영업부</option>
			<option value="D5">해외영업1부</option>
			<option value="D6">해외영업2부</option>
			<option value="D7">해외영업3부</option>
			<option value="D8">기술지원부</option>
			<option value="D9">총무부</option>
		</select>
		<br>
		직급 코드 :
		<select name="jobCode">
			<option value="J1">대표</option>
			<option value="J2">부사장</option>
			<option value="J3">부장</option>
			<option value="J4">차장</option>
			<option value="J5">과장</option>
			<option value="J6">대리</option>
			<option value="J7">사원</option>
		</select>	
		<br>
		급여 등급 : 
		<select name="salLevel">
			<option value="S1">S1</option>
			<option value="S2">S2</option>
			<option value="S3">S3</option>
			<option value="S4">S4</option>
			<option value="S5">S5</option>
			<option value="S6">S6</option>
		</select>
		<br>
		급여 : <input type="number" name="salary"><br>
		보너스율 : <input type="text" name="bonus"><br>
		관리자 사번 : <input type="text" name="managerId"><br>
		입사일 : <input type="date" name="hireDate"><br>
		<button type="submit">등록하기</button>
	</form>

/employee/insert 서블릿 작성

@WebServlet("/employee/insert")
public class InsertEmpServlet extends HttpServlet {

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("UTF-8");
		
		String empName = request.getParameter("empName");
		String empNo = request.getParameter("empNo");
		String email = request.getParameter("email");
		String phone = request.getParameter("phone");
		String deptCode = request.getParameter("deptCode");
		String jobCode = request.getParameter("jobCode");
		String salLevel = request.getParameter("salLevel");
		int salary = Integer.parseInt(request.getParameter("salary"));
		double bonus = Double.parseDouble(request.getParameter("bonus"));
		String managerId = request.getParameter("managerId");
		java.sql.Date hireDate = java.sql.Date.valueOf(request.getParameter("hireDate"));
		
		EmployeeDTO emp = new EmployeeDTO();
		emp.setEmpName(empName);
		emp.setEmpNo(empNo);
		emp.setEmail(email);
		emp.setPhone(phone);
		emp.setDeptCode(deptCode);
		emp.setJobCode(jobCode);
		emp.setSalLevel(salLevel);
		emp.setSalary(salary);
		emp.setBonus(bonus);
		emp.setManagerId(managerId);
		emp.setHireDate(hireDate);
		
		System.out.println("insert request emp : " + emp);
		
		EmployeeService empService = new EmployeeService();
		int result = empService.insertEmp(emp);
		
		System.out.println("result : " + result);
		
		String path = "";
		if(result > 0) {
			path = "/WEB-INF/views/common/successPage.jsp";
			request.setAttribute("successCode", "insertEmp");
		} else {
			path = "/WEB/INF/views/common/errorpage.jsp";
			request.setAttribute("message", "신규 직원 등록에 실패하셨습니다.");
		}
		
		request.getRequestDispatcher(path).forward(request, response);
	}

}

 

service클래스 insert메소드 작성

 

DAO클래스

 

매퍼 DAO작성

parameterType은 없어도 무방하다.

	<insert id="insertEmp" parameterType="com.greedy.mvc.employee.model.dto.EmployeeDTO">
				INSERT
		  INTO EMPLOYEE
		(
		  EMP_ID
		, EMP_NAME
		, EMP_NO
		, EMAIL
		, PHONE
		, DEPT_CODE
		, JOB_CODE
		, SAL_LEVEL
		, SALARY
		, BONUS
		, MANAGER_ID
		, HIRE_DATE
		, ENT_DATE
		, ENT_YN
		)
		VALUES
		(
		  SEQ_EMP_ID.NEXTVAL
		, #{ empName }
		, #{ empNo }
		, #{ email }
		, #{ phone }
		, #{ deptCode }
		, #{ jobCode }
		, #{ salLevel }
		, #{ salary }
		, #{ bonus }
		, #{ managerId }
		, #{ hireDate }
		, NULL
		, DEFAULT 
		)
	</insert>

작성해주고 오라클에서 시퀀스 작성도 마저 해준다.

EMP_ID가 300번부터 시작할 수 있도록 옵션도 넣어준다. 

 

마지막으로 service에서 작성해준 successPage.jsp파일도 생성해준다.

 

내가 입력한 값이 오라클에 생성됐다.

 

직원 정보 수정(퇴사)

main.jsp

 

/employee/update 서블릿 생성

@WebServlet("/employee/update")
public class UpdateEmpServlet extends HttpServlet {

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("UTF-8");
		
		String empId = request.getParameter("empId");
		java.sql.Date entDate = java.sql.Date.valueOf(request.getParameter("entDate"));
		
		EmployeeDTO emp = new EmployeeDTO();
		emp.setEmpId(empId);
		emp.setEntDate(entDate);
		
		int result = new EmployeeService().updateEmp(emp);
		
		String path = "";
		if(result > 0) {
			path = "/WEB-INF/views/common/successPage.jsp";
			request.setAttribute("successCode", "updateEmp");
		} else {
			path = "/WEB-INF/views/common/errorPage.jsp";
			request.setAttribute("message", "회원 정보 수정에 실패하였습니다.");
		}
		
		request.getRequestDispatcher(path).forward(request, response);
	}

}

 

service update메소드 생성

 

dao updateEmp 메소드 생성

 

dao매퍼 sql 구문 작성(파라미터 타입 생략)

SuccessPage 작성

'TIL > Servlet' 카테고리의 다른 글

[Servlet] mvc-1  (0) 2022.03.18
[Servlet] forward, redirect, cookie  (0) 2022.03.10
[Servlet] response, exception-handler  (0) 2022.03.07
[Servlet] Parameter(getParameter..)  (0) 2022.03.03
[Servlet] annotation, service method  (0) 2022.03.03