상단에서 입력한 것 처럼 상대경로를 입력해주면 다른 경로에 있으면 접근할 수 없다.
그래서 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 |