EmployeeController servlet 생성
doGET, doPost제외 지움
doGET
package webapp.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import webapp.dao.EmployeeDAO;
import webapp.model.Employee;
import webapp.model.EmployeeDAOImple;
import webapp.util.DBConn;
@WebServlet("/EmployeeController")
public class EmployeeController extends HttpServlet {
private static final long serialVersionUID = 1L;
EmployeeDAO employeeDAO = null;
// 생성자
public EmployeeController() {
// 컨트롤러 처음 실행됐을때 한번만 객체 만들면 돼서 생성자에 넣음
employeeDAO = new EmployeeDAOImple();// 객체생성
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
if (action == null) {
action = "LIST";
}
switch (action) {
case "LIST":// action이 LIST면 직원리스트 출력
listEmployee(request, response);
break;
case "EDIT":// action이 EDIT면 직원리스트 수정
getSingleEmployee(request, response);
break;
case "DELETE":// action이 DELETE면 직원리스트 삭제
deleteEmployee(request, response);
break;
default:
listEmployee(request, response);
break;
}
}
//메소드 생성
private void deleteEmployee(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
if (employeeDAO.delete(Integer.parseInt(id))) {
request.setAttribute("NOTIFICATION", "성공적으로 삭제됨!");
}
listEmployee(request, response);// 예외처리 throw추가
}
private void getSingleEmployee(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
Employee emp = employeeDAO.get(Integer.parseInt(id));
request.setAttribute("employee", emp);
// 예외처리 throw추가 , 수정하기 위해서 수정페이지로 forward한다
request.getRequestDispatcher("/views/employee-form.jsp").forward(request, response);
}
private void listEmployee(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<Employee> empList = employeeDAO.get();
request.setAttribute("list", empList);
// 예외처리 throw추가 , 직원목록 페이지로 forward한다.
request.getRequestDispatcher("/views/employee-list.jsp").forward(request, response);
}
doPost 추가
// employee-form 에서 submint하면 넘어옴
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
Employee e = new Employee();
e.setName(request.getParameter("name"));
e.setDepartment(request.getParameter("department"));
e.setDob(request.getParameter("dob"));
// 새로입력 vs 수정=> id가 없으면 수정이다.
if (id.isEmpty() || id == null) {
// id가 없거나 null이면 입력
if (employeeDAO.save(e)) {
request.setAttribute("NOTIFICATION", "직원 입력 성공!");
}
} else {
// update
e.setId(Integer.parseInt(id));
if (employeeDAO.update(e)) {
request.setAttribute("NOTIFICATION", "업데이트 성공!");
}
}
// 직원 목록 화면으로.
listEmployee(request, response);
}
}
WebContent -> views 폴더 생성
-> employee-form 및 employee-list jsp파일 생성
lib -> jstl-1.2추가
web.xml
기본페이지 설정 및 한글필터 추가
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
<display-name>DATABASE</display-name>
<welcome-file-list>
<welcome-file>EmployeeController</welcome-file>
</welcome-file-list>
<!-- 한글설정 필터추가 -->
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 한글설정 END -->
</web-app>
employee-form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
<div class = "container">
<h1>Employee Directory</h1>
<hr/>
<div class = "row">
<div class = "col-md-4">
<form action = "${pageContext.request.contextPath}/EmployeeController" method="POST">
<div class = "form-group">
<input type = "text" class = "form-control" name = "name" placeholder = "Enter Name" value = "${employee.name}"/>
</div>
<div class = "form-group">
<input type = "date" class = "form-control" name = "dob" value = "${employee.dob}"/>
</div>
<div class="form-group">
<input type = "text" class = "form-control" name = "department" placeholder = "Enter Department" value = "${employee.department}"/>
</div>
<input type = "hidden" name = "id" value = "${employee.id}"/>
<button type = "submit" class = "btn btn-primary">Save</button>
</form>
</div>
</div>
<a href = "${pageContext.request.contextPath}/EmployeeController?action=LIST">Back to List</a>
</div>
</body>
</html>
employee-list jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<title>Employee Directory</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
<div class = "container">
<h1>Employee Directory</h1>
<hr/>
<p>${NOTIFICATION}</p>
<p>
<button class = "btn btn-primary" onclick="window.location.href = 'views/employee-form.jsp'">직원 추가</button>
</p>
<table class = "table table-striped table-bordered">
<tr class = "thead-dark">
<th>Name</th>
<th>Department</th>
<th>Date of birth</th>
<th>Actions</th>
</tr>
<c:forEach items="${list}" var="employee">
<tr>
<td>${employee.name}</td>
<td>${employee.department}</td>
<td>${employee.dob}</td>
<td>
<a href = "${pageContext.request.contextPath}/EmployeeController?action=EDIT&id=${employee.id}">Edit</a>
|
<a onclick="return confirm('삭제하겠습니까?')" href = "${pageContext.request.contextPath}/EmployeeController?action=DELETE&id=${employee.id}" >Delete</a>
</td>
</tr>
</c:forEach>
</table>
</div>
</body>
</html>
http://localhost:8080/db/
Deltet 에 커서 가져다 대면 왼쪽하단에
직원 정보 추가 -> 직원 추가
왼쪽 상단 직원 추가 클릭
추가된 직원 정보 MySQL DB확인
직원 정보 수정(update) -> Edit
에서
수정된 직원 정보 MySQL DB확인
직원정보 삭제하기(delete)
삭제된 직원 정보 MySQL DB확인
<정리>
◆employee-form :"${pageContext.request.contextPath}/EmployeeController" method="POST"
-> ${pageContext.request.contextPath}
: context path(기본 url경로)가 변경돼도 그 변경된 주소를 사용한다. 만약 context path가 수정돼도 건들 필요없음.
-> method="POST"
EmployeeController의 doPost로 데이터 전송
직원 객체 생성 후
객체에 이름, 부서명, 생년월일 가져와서 추가한다.
만약 id가 공백이거나 null값이라면 직원 정보를 추가한 다음 "직원 입력 성공!" 메세지 출력
만약 id가 공백이 아니라면 해당 아이디의 직원 정보를 업데이트하고, "업데이트 성공 " 메시지 출력한다.
'DB > MySQL' 카테고리의 다른 글
데이터베이스 (스키마) 한 파일로 묶어 내보내기 export (0) | 2023.09.27 |
---|---|
Simple DB 프로젝트-3 (0) | 2023.09.21 |
Simple DB 프로젝트 (0) | 2023.09.21 |