1.创建数据库,并且主外键约束
CREATE DATABASE companydb;
USE companydb;
CREATE TABLE department(
dept_no VARCHAR(10) NOT NULL PRIMARY KEY,
dept_name VARCHAR(10) NOT NULL
)
INSERT INTO department
(dept_no
,dept_name
)
VALUES(‘D001’,‘财务部’),
(‘D002’,‘设计部’)
CREATE TABLE employee(
emp_no INT(10) NOT NULL PRIMARY KEY NOT NULL,
emp_name VARCHAR(20) NOT NULL,
emp_idcard VARCHAR(20) NOT NULL,
emp_phone VARCHAR(11),
emp_todate DATE,
dept_no VARCHAR(10) NOT NULL
)
INSERT INTO employee
(emp_no
,emp_name
,emp_idcard
,emp_phone
,emp_todate
,dept_no
)
VALUES(1,‘张三’,‘342159666702589695’,‘12345678998’,‘2018-05-02’,‘D001’),
(2,‘李四’,‘342159666702589695’,‘12345678998’,‘2018-05-02’,‘D002’)
ALTER TABLE employee
ADD CONSTRAINT FK_ID_emp_no FOREIGN KEY(dept_no
) REFERENCES department
(dept_no
);
SELECT * FROM employee INNER JOIN department ON employee.dept_no
=department.dept_no
SELECT NOW()
INSERT INTO employee(emp_name
,emp_idcard
,emp_phone
,emp_todate
,dept_no
) VALUES(‘000’,‘342425199708272424’,‘000’,NOW(),‘D001’);
二。jsp
home.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
部门信息管理
员工信息管理
dept_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" %> </c:forEach>
<tr>
</table>
部门编号 | 部门名称 |
${dept.dept_no} | ${dept.dept_name} |
dept_add.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
部门名称:
emp_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”%>
</c:if>
<form action="">
所属部门: <select name="dept_no" style="width: 160px">
<c:forEach items="${deptList}" var="dept">
<option value="${dept.dept_no}">${dept.dept_name}</option>
</c:forEach>
</select>
</form>
<table width="100%" border="0" style="text-align: center;">
<tr>
<td>编号</td>
<td>姓名</td>
<td>身份证</td>
<td>联系电话</td>
<td>入职时间</td>
<td>所属部门</td>
</tr>
<c:forEach items="${empList}" var="emp">
<tr>
<td>${emp.emp_no}</td>
<td>${emp.emp_name}</td>
<td>${emp.emp_idcard}</td>
<td>${emp.emp_phone}</td>
<td>${emp.emp_todate}</td>
<td>${emp.dept.dept_name}</td>
</tr>
</c:forEach>
</table>
<table width="100%">
<tr>
<td>当前页数:${pageBean.currentPage } 共${ pageBean.totalPage}页</td>
<td><a href="EmployeeListServlet?currentPage=1">第一页</a></td>
<td><a href="EmployeeListServlet?currentPage=${pageBean.currentPage+1 }">下一页</a></td>
<td><a href="EmployeeListServlet?currentPage=${pageBean.currentPage-1 }">上一页</a></td>
</tr>
</table>
emp_add.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
</c:if>
<form action="EmpAddServlet" method="post">
<p>
员工姓名:<input type="text" name="emp_name">
</p>
<p>
身份证号:<input type="text" name="emp_idcard">
</p>
<p>
联系电话:<input type="text" name="emp_phone">
</p>
<p>
所属部门:<select name="dept_no" style="width: 160px">
<c:forEach items="${deptList}" var="dept">
<option value="${dept.dept_no}">${dept.dept_name}</option>
</c:forEach>
</select>
</p>
<p>
<input type="submit" value="添加部门">
</p>
</form>
com.company.dao
DepartmentDaoImpl.java
package com.company.dao;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import com.company.entiy.Department;
public class DepartmentDaoImpl implements DepartmentDao {
@Override
public int insertDept(Department dept) {
String sql="INSERT INTO department VALUES( ?,?)";
QueryRunner qr=new QueryRunner(MyDBUtils.ds);
int n=0;
try {
n=qr.update(sql, dept.getDept_no(),dept.getDept_name());
} catch (Exception e) {
System.out.println("DepartmentDaoImpl:insertDept()Error!");
e.printStackTrace();
}
return n;
}
@Override
public List<Department> selectAllDept() {
String sql ="select * from department";
QueryRunner qr=new QueryRunner(MyDBUtils.ds);
try {
return qr.query(sql,new BeanListHandler<Department>(Department.class));
} catch (Exception e) {
System.out.println("DepartmentDaoImpl:selectAllDept()Error!");
e.printStackTrace();
}
return null;
}
public String selectMaxDeptNo(){
String sql ="SELECT MAX(dept_no) as maxdeptno FROM department";
QueryRunner qr =new QueryRunner(MyDBUtils.ds);
try {
return qr.query(sql, new ScalarHandler<String>("maxdeptno") );
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
EmployeeeDaoImpl.java
package com.company.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.company.entiy.Department;
import com.company.entiy.Employee;
import com.company.entiy.PageBean;
public class EmployeeeDaoImpl implements EmployeeDao {
@Override
public int insertEmployee(Employee emp) {
String sql = "INSERT INTO employee(`emp_name`,`emp_idcard`,`emp_phone`,`emp_todate`,`dept_no`) VALUES(?,?,?,NOW(),?)";
QueryRunner qr = new QueryRunner(MyDBUtils.ds);
try {
return qr.update(sql, emp.getEmp_name(), emp.getEmp_idcard(),
emp.getEmp_phone(), emp.getDept_no());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
@Override
public List<Employee> selectAllEmployee(String... params) {
String sql = "SELECT * FROM employee " + " INNER JOIN department "
+ " ON employee.`dept_no`=department.`dept_no`";
return this.selectEmp(sql);
}
@Override
public List<Employee> selectAllEmployee(PageBean pageBean) {
String sql = "SELECT * FROM employee " + " INNER JOIN department "
+ " ON employee.`dept_no`=department.`dept_no` limit ?,?";
QueryRunner runner = new QueryRunner(MyDBUtils.ds);
if (pageBean.getCurrentPage() == 0) {
pageBean.setCurrentPage(1);
}
int startIndex = (pageBean.getCurrentPage() - 1)
* pageBean.getPageRows();
try {
return runner.query(sql, new ResultSetHandler<List<Employee>>() {
@Override
public List<Employee> handle(ResultSet rs) throws SQLException {
List<Employee> list = new ArrayList<Employee>();
while (rs.next()) {
Employee emp = new Employee();
emp.setEmp_no(rs.getInt("emp_no"));
emp.setEmp_name(rs.getString("emp_name"));
emp.setEmp_idcard(rs.getString("emp_idcard"));
emp.setEmp_phone(rs.getString("emp_phone"));
emp.setEmp_todate(rs.getString("emp_todate"));
Department dept = new Department();
dept.setDept_no(rs.getString("dept_no"));
dept.setDept_name(rs.getString("dept_name"));
emp.setDept(dept);
System.out.println(rs.getString("dept_name"));
list.add(emp);
}
return list;
}
}, startIndex, pageBean.getPageRows());
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
public List<Employee> selectEmployeeByDept(Department dept) {
String sql = "SELECT * FROM employee " + " INNER JOIN department "
+ " ON employee.dept_no=department.dept_no"
+ " WHERE employee.dept_no='" + dept.getDept_no() + "'";
return null;
}
@Override
public List<Employee> selectEmployeeByPage(int curPage, int pageSize) {
return null;
}
private List<Employee> selectEmp(String sql) {
try {
QueryRunner qr = new QueryRunner(MyDBUtils.ds);
return qr.query(sql, new ResultSetHandler<List<Employee>>() {
@Override
public List<Employee> handle(ResultSet rs) throws SQLException {
List<Employee> list = new ArrayList<Employee>();
while (rs.next()) {
Employee emp = new Employee();
emp.setEmp_no(rs.getInt("emp_no"));
emp.setEmp_name(rs.getString("emp_name"));
emp.setEmp_idcard(rs.getString("emp_idcard"));
emp.setEmp_phone(rs.getString("emp_phone"));
emp.setEmp_todate(rs.getString("emp_todate"));
Department dept = new Department();
dept.setDept_no(rs.getString("dept_no"));
dept.setDept_name(rs.getString("dept_name"));
emp.setDept(dept);
System.out.println(rs.getString("dept_name"));
list.add(emp);
}
return list;
}
});
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public int selectTotalRows() {
// TODO Auto-generated method stub
return 0;
}
}
DepartmentDao.java
package com.company.dao;
import java.util.List;
import com.company.entiy.Department;
public interface DepartmentDao {
public int insertDept(Department dept);
public List selectAllDept();
public String selectMaxDeptNo();
}
EmployeeDao
package com.company.dao;
import java.util.List;
import com.company.entiy.Department;
import com.company.entiy.Employee;
import com.company.entiy.PageBean;
public interface EmployeeDao {
public List<Employee> selectAllEmployee(String... params);
public List<Employee> selectAllEmployee(PageBean pageBean);
public List<Employee> selectEmployeeByDept(Department dept);
public List<Employee> selectEmployeeByPage(int curPage,int pageSize);
public int selectTotalRows();
public int insertEmployee(Employee emp);
}
com.company.entiy
Department
package com.company.entiy;
import java.util.ArrayList;
import java.util.List;
public class Department {
private String dept_no;
private String dept_name;
private List<Employee> emp_list =new ArrayList<Employee>(); //һ�����Ű���N��Ա��
public List<Employee> getEmp_list() {
return emp_list;
}
public void setEmp_list(List<Employee> emp_list) {
this.emp_list = emp_list;
}
public String getDept_no() {
return dept_no;
}
public void setDept_no(String dept_no) {
this.dept_no = dept_no;
}
public String getDept_name() {
return dept_name;
}
public void setDept_name(String dept_name) {
this.dept_name = dept_name;
}
}
Employee
package com.company.entiy;
public class Employee {
private int emp_no;
private String emp_name;
private String emp_idcard;
private String emp_phone;
private String emp_todate;
private String dept_no;
private Department dept;//
public Department getDept() {
return dept;
}
public void setDept(Department dept) {
this.dept = dept;
}
public int getEmp_no() {
return emp_no;
}
public void setEmp_no(int emp_no) {
this.emp_no = emp_no;
}
public String getEmp_name() {
return emp_name;
}
public void setEmp_name(String emp_name) {
this.emp_name = emp_name;
}
public String getEmp_idcard() {
return emp_idcard;
}
public void setEmp_idcard(String emp_idcard) {
this.emp_idcard = emp_idcard;
}
public String getEmp_phone() {
return emp_phone;
}
public void setEmp_phone(String emp_phone) {
this.emp_phone = emp_phone;
}
public String getEmp_todate() {
return emp_todate;
}
public void setEmp_todate(String emp_todate) {
this.emp_todate = emp_todate;
}
public String getDept_no() {
return dept_no;
}
public void setDept_no(String dept_no) {
this.dept_no = dept_no;
}
}
PageBean
package com.company.entiy;
import java.util.List;
public class PageBean {
int currentPage=1;//当前页码
int pageRows=3;//每页几条数据
int totalRows;//总数据行数
int totalPage;//总页码
List<?> pageData;//当前页数据
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
if (currentPage<=0) {
currentPage=1;
}else if (currentPage>getTotalPage()) {
this.currentPage = totalPage;
}else {
this.currentPage = currentPage;
}
}
public int getPageRows() {
return pageRows;
}
public void setPageRows(int pageRows) {
this.pageRows = pageRows;
}
public int getTotalRows() {
return totalRows;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public int getTotalPage() {
if ((totalRows%pageRows)==0) {
return totalRows/pageRows;
}else {
return (totalRows/pageRows)+1;
}
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public List<?> getPageData() {
return pageData;
}
public void setPageData(List<?> pageData) {
this.pageData = pageData;
}
}
com.company.service
DepartmentService
package com.company.service;
import java.util.List;
import com.company.dao.DepartmentDao;
import com.company.dao.DepartmentDaoImpl;
import com.company.entiy.Department;
public class DepartmentService {
DepartmentDao deptDao =new DepartmentDaoImpl();
public boolean addDept(Department dept){
//
String curDeptNo="D001";
String deptMaxNo= deptDao.selectMaxDeptNo();
if(deptMaxNo!=null){
//D003--"003" ---3+1
//D009--"009" ---9+1
int num =Integer.parseInt(deptMaxNo.substring(1))+1;
//D004 --- D010
curDeptNo="D"+String.format("%03d", num) ; //005 010
}
dept.setDept_no(curDeptNo);
//
int n= deptDao.insertDept(dept);
return n>0;
}
public List<Department> getAllDept(){
return deptDao.selectAllDept();
}
}
EmployeeService
package com.company.service;
import java.util.List;
import com.company.dao.EmployeeDao;
import com.company.dao.EmployeeeDaoImpl;
import com.company.entiy.Employee;
import com.company.entiy.PageBean;
public class EmployeeService {
EmployeeDao empDao =new EmployeeeDaoImpl();
public List<Employee> getAllEmployee(){
return empDao.selectAllEmployee();
}
public List<Employee> getAllEmployee(PageBean pageBean){
return empDao.selectAllEmployee(pageBean);
}
/*
*添加新员工 ,业务层
*
* */
public boolean addEmployee(Employee emp) {
int n= empDao.insertEmployee(emp);
return n>0;
}
}
com.company.servlet
DeptListServlet
package com.company.servlet;
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 com.company.entiy.Department;
import com.company.service.DepartmentService;
/**
-
Servlet implementation class DeptListServlet
*/
@WebServlet("/DeptListServlet")
public class DeptListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;/**
- Default constructor.
*/
public DeptListServlet() {
// TODO Auto-generated constructor stub
}
/**
- @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
-
response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 查询所有的部门
DepartmentService deptService = new DepartmentService();
List detpList = deptService.getAllDept();
System.out.println(“detpList=”+detpList.size());request.getSession().setAttribute("deptList", detpList); String flag = request.getParameter("flag"); System.out.println("DeptListServlet--flag="+flag); if (flag == null) { // 跳转到dept_list.jsp显示 response.sendRedirect("dept_list.jsp"); } else if (flag.equals("1")) { // 跳转到emp_list.jsp显示 response.sendRedirect("emp_list.jsp"); } else if (flag.equals("2")) { // 跳转到emp_add.jsp显示 response.sendRedirect("emp_add.jsp"); }
}
/**
- @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
-
response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {}
- Default constructor.
}
EmployeeListServlet
package com.company.servlet;
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 com.company.entiy.Department;
import com.company.entiy.Employee;
import com.company.entiy.PageBean;
import com.company.service.DepartmentService;
import com.company.service.EmployeeService;
/**
-
Servlet implementation class EmpListServlet
*/
@WebServlet("/EmployeeListServlet")
public class EmployeeListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;public EmployeeListServlet() {
super();
// TODO Auto-generated constructor stub
}protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType(“text/html;charset=utf-8”);
request.setCharacterEncoding(“utf-8”);PageBean pageBean = new PageBean(); pageBean.setTotalRows(new EmployeeService().getAllEmployee().size()); int totalPage = pageBean.getTotalPage(); System.out.println("总页数=" + totalPage); // Session if (request.getParameter("currentPage") != null) { if (request.getParameter("currentPage").equals("0")) { pageBean.setCurrentPage(1); } else { pageBean.setCurrentPage(Integer.valueOf(request .getParameter("currentPage"))); } } else { pageBean.setCurrentPage(1); } EmployeeService empService = new EmployeeService(); List<Employee> empList = empService.getAllEmployee(pageBean); DepartmentService deptService = new DepartmentService(); List<Department> departments = deptService.getAllDept(); // 跳转到list.jsp request.getSession().setAttribute("departments", departments); request.getSession().setAttribute("empList", empList); // 跳转到list.jsp request.getSession().setAttribute("pageBean", pageBean); response.sendRedirect("emp_list.jsp");
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); doGet(request, response);
}
}
DeptAddServlet
package com.company.servlet;
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 org.apache.commons.beanutils.BeanUtils;
import com.company.entiy.Department;
import com.company.service.DepartmentService;
/**
-
Servlet implementation class DeptAddServlet
*/
@WebServlet("/DeptAddServlet")
public class DeptAddServlet extends HttpServlet {
private static final long serialVersionUID = 1L;/**
- @see HttpServlet#HttpServlet()
*/
public DeptAddServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8"); Department deptObj =new Department(); try { BeanUtils.populate(deptObj, request.getParameterMap()); } catch (Exception e) { e.printStackTrace(); } System.out.println(deptObj.getDept_no()); System.out.println(deptObj.getDept_name()); //调用Seerivce的方法 完成 添加的功能 DepartmentService deptService =new DepartmentService(); deptService.addDept(deptObj); response.sendRedirect("DeptListServlet");
}
- @see HttpServlet#HttpServlet()
}
EmpAddServlet
package com.company.servlet;
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 org.apache.commons.beanutils.BeanUtils;
import com.company.entiy.Employee;
import com.company.service.EmployeeService;
/**
-
Servlet implementation class EmpAddServlet
*/
@WebServlet("/EmpAddServlet")
public class EmpAddServlet extends HttpServlet {
private static final long serialVersionUID = 1L;/**
- @see HttpServlet#HttpServlet()
*/
public EmpAddServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
- @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
-
response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}/**
- @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
-
response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding(“utf-8”);
Employee emp = new Employee();
try {
BeanUtils.populate(emp, request.getParameterMap());
} catch (Exception e) {
e.printStackTrace();
}
// 调用业务层相关类的方法,完成员工添加这个功能
EmployeeService empService = new EmployeeService();
empService.addEmployee(emp);
// 添加完成后
// 跳转到员工添加页面
// 或者 跳转到员工列显页面
response.sendRedirect(“EmployeeListServlet”);}
- @see HttpServlet#HttpServlet()
}