2024-12-17

====================================== main.jsp ======================================
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<hr width="30%" color="gray">
<h3>EMP 테이블 메인 페이지</h3>
<hr width="30%" color="gray">
<br> <br>
<a href="<%=request.getContextPath()%>/select">[전체 사원 목록]</a>
</div>
</body>
</html>
====================================== SelectAllServlet.java ======================================
package 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 model.EmpDAO;
import model.EmpDTO;
@WebServlet("/select")
public class SelectAllServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public SelectAllServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 요청 : 전체 사원 목록을 화면에 보여달라고 요청.
// 응답 : DB의 EMP 테이블에 있는 전체 사원 목록을 view page 로 이동시키는 비지니스 로직.
// 1단계 : DAO 클래스 싱글턴 방식으로 객체 생성 작업 진행
EmpDAO dao = EmpDAO.getInstance();
// 2단계 : DB에서 EMP 테이블 전체 사원 목록 조회하는 메서드 호출
List<EmpDTO> empList = dao.getEmpList();
// 3단계 : 페이지 이동 시 정보(데이터)를 넘겨 주어야 함
request.setAttribute("List", empList);
// 4단계 : 이동할 페이지 경로 설정 및 페이지 이동
request.getRequestDispatcher("views/emp_list.jsp").forward(request, response);
}
}
====================================== emp_list.jsp ======================================
<%@page import="model.EmpDTO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List<EmpDTO> list = (List<EmpDTO>)request.getAttribute("List");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<hr width="30%" color="maroon">
<h3>EMP 테이블 전체 사원 리스트 페이지</h3>
<hr width="30%" color="maroon">
<br> <br>
<table border="1" width="400">
<tr>
<td colspan="4" align="center">
전체 사원 수 : <%= list.size() %>
</td>
</tr>
<tr>
<th>사원 No.</th> <th>사원명</th> <th>부서 No.</th> <th>입사일자</th>
</tr>
<%
if (list.size() != 0) {
for (int i = 0; i < list.size(); i++) {
EmpDTO dto = list.get(i);
%>
<tr>
<td><%= dto.getEmpno() %></td>
<td>
<a href="<%= request.getContextPath() %>/content?no=<%= dto.getEmpno() %>">
<%= dto.getEname() %></a>
</td>
<td><%= dto.getDeptno() %></td>
<td><%= dto.getHiredate().substring(0, 10) %></td>
</tr>
<% } // for문 end
} else {
// 전체 사원 목록이 없는 경우.
%>
<tr>
<td colspan="4" align="center">
<h3>전체 사원 목록이 없습니다...</h3>
</td>
</tr>
<% }
%>
</table>
<br> <br>
<input type="button" value="사원등록"
onclick="location.href='insert'">
</div>
</body>
</html>
====================================== ContentServlet.java ======================================
package controller;
import java.io.IOException;
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 model.EmpDAO;
import model.EmpDTO;
@WebServlet("/content")
public class ContentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ContentServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// get 방식으로 넘어온 사원번호에 해당하는 사원의 정보를 view page 로 이동시키는 비지니스 로직
int emp_no = Integer.parseInt(request.getParameter("no").trim());
EmpDAO dao = EmpDAO.getInstance();
EmpDTO content = dao.contentEmp(emp_no);
request.setAttribute("Cont", content);
request.getRequestDispatcher("views/emp_content.jsp").forward(request, response);
}
}
====================================== emp_content.jsp ======================================
<%@page import="model.EmpDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
EmpDTO cont = (EmpDTO)request.getAttribute("Cont");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<hr width="30%" color="red">
<h3>EMP 테이블 사원 상세 정보 페이지</h3>
<hr width="30%" color="red">
<br> <br>
<table border="1" width="400">
<%
if (cont == null) {
// 회원 정보가 없는 경우
%> <tr colspan="2" align="center">
<td>
<h3>조회된 회원의 정보가 없습니다...</h3>
</td>
</tr>
<% } else {
// 회원 정보가 있는 경우
%>
<tr>
<th>사원 No.</th>
<td><%=cont.getEmpno() %></td>
</tr>
<tr>
<th>사원 이름</th>
<td><%=cont.getEname() %></td>
</tr>
<tr>
<th>담당 업무</th>
<td><%=cont.getJob() %></td>
</tr>
<tr>
<th>관리자 No.</th>
<td><%= cont.getMgr() %></td>
</tr>
<tr>
<th>사원 급여</th>
<td><%=cont.getSal() %></td>
</tr>
<tr>
<th>사원 보너스</th>
<td><%=cont.getComm() %></td>
</tr>
<tr>
<th>부서 번호</th>
<td><%=cont.getDeptno() %></td>
</tr>
<tr>
<th>입사일</th>
<td><%=cont.getHiredate() %></td>
</tr>
<%}
%>
</table>
<br>
<input type="button" value="사원수정"
onclick="location.href='update?no=<%=cont.getEmpno()%>'">
<input type="button" value="사원삭제"
onclick="if (confirm('정말로 사원을 삭제하시겠습니까?')) {
location.href='delete?no=<%=cont.getEmpno()%>'
} else {return;}">
<input type="button" value="사원목록"
onclick="location.href='select'">
</div>
</body>
</html>
====================================== UpdateServlet.java ======================================
package 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 model.DeptDTO;
import model.EmpDAO;
import model.EmpDTO;
@WebServlet("/update")
public class UpdateServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public UpdateServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// get 방식으로 넘어온 사원 번호에 해당하는 사원의 정보를 DB에서 조회하여
// view page(수정 폼 페이지)로 이동시키는 비지니스 로직
int emp_no = Integer.parseInt(request.getParameter("no"));
EmpDAO dao = EmpDAO.getInstance();
// 1. EMP 테이블에서 담당업무 리스트를 조회하여 보자.
List<String> jobList = dao.getJobList();
// 2. EMP 테이블에서 관리자 사원 리스트를 조회하여 보자.
List<EmpDTO> mrgList = dao.getMgrList();
// 3. DEPT 테이블에서 부서번호 전체 리스트를 조회하여 보자.
List<DeptDTO> deptList = dao.getDeptList();
// 4. 사원번호에 해당하는 사원의 상세 정보를 조회하여 보자.
EmpDTO content = dao.contentEmp(emp_no);
// 모든 정보를 view page(수정 폼 페이지)로 이동 시키자
request.setAttribute("jList", jobList);
request.setAttribute("mList", mrgList);
request.setAttribute("dList", deptList);
request.setAttribute("Cont", content);
// 이동 경로 설정 및 이동 진행
request.getRequestDispatcher("views/emp_modify.jsp").forward(request, response);
}
}
====================================== emp_modify.jsp ======================================
<%@page import="model.DeptDTO"%>
<%@page import="model.EmpDTO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List<String> jList = (List<String>)request.getAttribute("jList");
List<EmpDTO> mList = (List<EmpDTO>)request.getAttribute("mList");
List<DeptDTO> dList = (List<DeptDTO>)request.getAttribute("dList");
EmpDTO cont = (EmpDTO)request.getAttribute("Cont");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<hr width="30%" color="blue">
<h3> EMP 테이블 사원 정보 수정 폼 페이지</h3>
<hr width="30%" color="blue">
<br> <br>
<form method="post" action="<%= request.getContextPath() %>/modify_ok">
<table border="1" width="350">
<%
if (cont != null) {
%>
<tr>
<th>사원 No.</th>
<td><input type="text" name="num"
readonly value="<%= cont.getEmpno() %>"></td>
</tr>
<tr>
<th>사원 이름</th>
<td><input type="text" name="name"
readonly value="<%= cont.getEname() %>"></td>
</tr>
<tr>
<th>담당 업무</th>
<td>
<select name="job">
<%
if (jList.size() == 0) {
// 데이터가 없는 경우
%>
<option value="">:::담당업무 없음:::</option>
<% } else {
// 데이터가 있는 경우
for (int i = 0; i < jList.size(); i++) {
String str = jList.get(i);
if (str.equals(cont.getJob())) {
%>
<option value="<%= str %>" selected>
<%= str %></option>
<% } else { %>
<option value="<%= str %>"><%= str %></option>
<% }
}
}
%>
</select>
</td>
</tr>
<tr>
<th>관리자 No.</th>
<td>
<select name="mgrNo">
<%
if (mList.size() == 0) {
// 데이터가 없는 경우
%>
<option value="">:::관리자 없음:::</option>
<% } else {
// 데이터가 있는 경우
for (int i = 0; i < mList.size(); i++) {
EmpDTO mgrCont = mList.get(i);
if (mgrCont.getEmpno() == cont.getMgr()) {
%>
<option value="<%= mgrCont.getEmpno() %>" selected>
<%= mgrCont.getEmpno() %> [<%= mgrCont.getEname() %>]
</option>
<% } else { %>
<option value="<%= mgrCont.getEmpno() %>">
<%= mgrCont.getEmpno() %> [<%= mgrCont.getEname() %>]
</option>
<% }
}
}
%>
</select>
</td>
</tr>
<tr>
<th>급여</th>
<td><input type="text" name="sal"
value="<%= cont.getSal() %>"></td>
</tr>
<tr>
<th>보너스</th>
<td><input type="text" name="comm"
value="<%= cont.getComm() %>"></td>
</tr>
<tr>
<th>부서 No.</th>
<td>
<select name="deptNo">
<%
if (dList.size() == 0) {
// 데이터가 없는 경우
%>
<option value="">:::부서번호 없음:::</option>
<% } else {
// 데이터가 있는 경우
for (int i = 0; i < dList.size(); i++) {
DeptDTO dCont = dList.get(i);
if (dCont.getDeptno() == cont.getDeptno()) {
%>
<option value="<%= dCont.getDeptno() %>" selected>
<%= dCont.getDname() %> [<%= dCont.getDeptno() %>]</option>
<% } else { %>
<option value="<%= dCont.getDeptno() %>">
<%= dCont.getDname() %> [<%= dCont.getDeptno() %>]</option>
<% }
}
}
%>
</select>
</td>
</tr>
<% } %>
<tr>
<td colspan="2" align="center">
<input type="submit" value="사원수정">
<input type="reset" value="다시작성">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
====================================== UpdateOkServlet.java ======================================
package controller;
import java.io.IOException;
import java.io.PrintWriter;
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 model.EmpDAO;
import model.EmpDTO;
@WebServlet("/modify_ok")
public class UpdateOkServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public UpdateOkServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 사원 수정 폼 페이지에서 넘어온 데이터들을 DB에 넘겨 주어서 사원 정보를 수정시키는 비지니스 로직.
// 요청과 응답 시 한글 깨짐 방지 설정 작업
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
// 1단계 : 수정 폼 페이지에서 넘어온 데이터들을 받아 주어야 한다.
int emp_no = Integer.parseInt(request.getParameter("num").trim());
String emp_name = request.getParameter("name").trim();
String emp_job = request.getParameter("job").trim();
int emp_mgr = Integer.parseInt(request.getParameter("mgrNo").trim());
int emp_sal = Integer.parseInt(request.getParameter("sal").trim());
int emp_comm = Integer.parseInt(request.getParameter("comm").trim());
int emp_deptno = Integer.parseInt(request.getParameter("deptNo").trim());
// 2단계 : DB에 전송 전에 넘어온 데이터들을 DTO 객체의 멤버변수에 저장을 해야 한다.
EmpDTO dto = new EmpDTO();
dto.setEmpno(emp_no);
dto.setEname(emp_name);
dto.setJob(emp_job);
dto.setMgr(emp_mgr);
dto.setSal(emp_sal);
dto.setComm(emp_comm);
dto.setDeptno(emp_deptno);
// 3단계 : DAO 객체를 생성하여 수정작업을 진행
EmpDAO dao = EmpDAO.getInstance();
int res = dao.updateEmp(dto);
PrintWriter out = response.getWriter();
if (res > 0) {
out.println("<script>");
out.println("alert('사원 정보 수정 성공!!!')");
out.println("location.href='content?no="+dto.getEmpno()+"'");
out.println("</script>");
} else {
out.println("<script>");
out.println("alert('사원 정보 수정 실패~~~')");
out.println("history.back()");
out.println("</script>");
}
}
}
====================================== DeleteServlet.java ======================================
package controller;
import java.io.IOException;
import java.io.PrintWriter;
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 model.EmpDAO;
@WebServlet("/delete")
public class DeleteServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public DeleteServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// get 방식으로 넘어온 사원번호에 해당하는 사원을 DB에서 삭제하는 비지니스 로직.
String emp_no = request.getParameter("no").trim();
EmpDAO dao = EmpDAO.getInstance();
int check = dao.deleteEmp(emp_no);
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
if (check > 0) {
out.println("<script>");
out.println("alert('사원 삭제 성공!!!')");
out.println("location.href='select'");
out.println("</script>");
} else {
out.println("<script>");
out.println("alert('사원 삭제 실패~~~')");
out.println("history.go(-1)");
out.println("</script>");
}
}
}
====================================== InsertServlet.java ======================================
package 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 model.DeptDTO;
import model.EmpDAO;
import model.EmpDTO;
@WebServlet("/insert")
public class InsertServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public InsertServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 사원등록 폼 페이지로 넘어가기 전에 부서번호 리스트를 DB에서 조회하여 사원등록
// 폼 페이지로 해당 리스트를 넘겨 주는 비지니스 로직
EmpDAO dao = EmpDAO.getInstance();
// 1. EMP 테이블에서 담당업무 리스트를 조회하여 보자.
List<String> jobList = dao.getJobList();
// 2. EMP 테이블에서 관리자 사원 리스트를 조회하여 보자.
List<EmpDTO> mrgList = dao.getMgrList();
// 3. DEPT 테이블에서 부서번호 전체 리스트를 조회하여 보자.
List<DeptDTO> deptList = dao.getDeptList();
// 4. 조회된 리스트들을 사원등록 폼 페이지로 이동시켜야 한다.
request.setAttribute("JobList", jobList);
request.setAttribute("MgrList", mrgList);
request.setAttribute("DeptList", deptList);
// 페이지 이동 경로 설정 및 페이지 이동 진행
request.getRequestDispatcher("views/emp_insert.jsp").forward(request, response);
}
}
====================================== emp_insert.jsp ======================================
<%@page import="model.DeptDTO"%>
<%@page import="model.EmpDTO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List<String> jList = (List<String>)request.getAttribute("JobList");
List<EmpDTO> mList = (List<EmpDTO>)request.getAttribute("MgrList");
List<DeptDTO> dList = (List<DeptDTO>)request.getAttribute("DeptList");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<hr width="30%" color="blue">
<h3>EMP 테이블 사원 등록 폼 페이지</h3>
<hr width="30%" color="blue">
<br> <br>
<form method="post" action="<%= request.getContextPath() %>/insert_ok">
<table border="1" width="350">
<tr>
<th>사원 No.</th>
<td><input type="text" name="num"></td>
</tr>
<tr>
<th>사원 이름</th>
<td><input type="text" name="name"></td>
</tr>
<tr>
<th>담당 업무</th>
<td>
<select name="job">
<%
if (jList.size() == 0) {
// 데이터가 없는 경우
%>
<option value="">:::담당업무 없음:::</option>
<% } else {
// 데이터가 있는 경우
%>
<option value="">:::선택하세요:::</option>
<%
for (int i = 0; i < jList.size(); i++) {
String str = jList.get(i);
%>
<option value="<%= str %>"><%= str %></option>
<% }
}
%>
</select>
</td>
</tr>
<tr>
<th>관리자 No.</th>
<td>
<select name="mgrNo">
<%
if (mList.size() == 0) {
// 데이터가 없는 경우
%>
<option value="">:::관리자 없음:::</option>
<% } else {
// 데이터가 있는 경우
%>
<option value="">:::선택하세요:::</option>
<%
for (int i = 0; i < mList.size(); i++) {
EmpDTO dto = mList.get(i);
%>
<option value="<%= dto.getEmpno() %>">
<%= dto.getEname() %> [<%= dto.getEmpno() %>]</option>
<% }
}
%>
</select>
</td>
</tr>
<tr>
<th>급여</th>
<td><input type="text" name="sal"></td>
</tr>
<tr>
<th>보너스</th>
<td><input type="text" name="comm"></td>
</tr>
<tr>
<th>부서 No.</th>
<td>
<select name="deptNo">
<%
if (dList.size() == 0) {
// 데이터가 없는 경우
%>
<option value="">:::담당부서 없음:::</option>
<% } else {
// 데이터가 있는 경우
%>
<option value="">:::선택하세요:::</option>
<%
for (int i = 0; i < dList.size(); i++) {
DeptDTO dto = dList.get(i);
%>
<option value="<%= dto.getDeptno() %>">
<%= dto.getDname() %> [<%= dto.getDeptno() %>]</option>
<% }
}
%>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="사원등록">
<input type="reset" value="다시작성">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
====================================== InsertOkServlet.java ======================================
package controller;
import java.io.IOException;
import java.io.PrintWriter;
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 model.EmpDAO;
import model.EmpDTO;
@WebServlet("/insert_ok")
public class InsertOkServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public InsertOkServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 사원등록 폼 페이지에서 넘어온 데이터들을 EMP 테이블에 저장시키는 비지니스 로직
// 요청과 응답 시에 한글 깨짐 방지 설정 작업
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
// 1단계 : 사원등록 폼 페이지에서 넘어온 데이터들을 받아 주어야 한다.
int emp_no = Integer.parseInt(request.getParameter("num").trim());
String emp_name = request.getParameter("name").trim();
String emp_job = request.getParameter("job").trim();
int emp_mgrNO = Integer.parseInt(request.getParameter("mgrNo").trim());
int emp_sal = Integer.parseInt(request.getParameter("sal").trim());
int emp_comm = Integer.parseInt(request.getParameter("comm").trim());
int emp_deptNo = Integer.parseInt(request.getParameter("deptNo").trim());
// 2단계 : 넘어온 데이터들을 DB에 전송해 주어야 한다. 전송 시 DTO 객체를 이용한다.
EmpDTO dto = new EmpDTO();
dto.setEmpno(emp_no);
dto.setEname(emp_name);
dto.setJob(emp_job);
dto.setMgr(emp_mgrNO);
dto.setSal(emp_sal);
dto.setComm(emp_comm);
dto.setDeptno(emp_deptNo);
// 3단계 : DTO 객체를 DB에 전송해 주면 된다.
EmpDAO dao = EmpDAO.getInstance();
int check = dao.insertEmp(dto);
PrintWriter out = response.getWriter();
if (check > 0) {
out.println("<script>");
out.println("alert('사원 등록 성공!!!')");
out.println("location.href='select'");
out.println("</script>");
} else {
out.println("<script>");
out.println("alert('사원 등록 실패!!!')");
out.println("history.back()");
out.println("</script>");
}
}
}'JSP > 기초 내용 정리' 카테고리의 다른 글
| JSP(EL)_00 (0) | 2024.12.19 |
|---|---|
| JSP(DBCP)_00 (1) | 2024.12.19 |
| JSP(Example)_Member (1) | 2024.12.13 |
| JSP(Session)_01 (0) | 2024.12.12 |
| JSP(Session)_00 (0) | 2024.12.12 |