一、项目需求
1、实现管理员登录功能,并应用权限验证
2、对员工进行增删改查
3、查询员工使用分页查询,并提供首页、上一页、下一页、尾页
注:该小项目没用css去美化,仅仅实现对应功能
下面看下最后的结果
(1)管理员登录
我这里管理员账号:yx,密码:123456,点击登录
(2)登录后进入员工信息显示页面,可以分页查找,也可以删除和修改
(3)点击删除
(4)点击修改
(5)点击添加员工
二、项目开发
相关视频教程:https://www.bilibili.com/video/BV1gC4y1p7z2?p=674
这6个jar包我都上传,地址如下:
https://download.csdn.net/download/weixin_39615182/15406742
1、创建EMS项目,导入jar包到WEB-INF中的lib目录下,再添加为库,并创建database.properties,这是为了将数据连接的变量封装出来,以便换一个环境,直接修改,如不是mysql,变成oracle,驱动则可以直接更改为driver = com.oracle
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mytable?useUnicode=true&characterEncoding=utf8
username = root
password = root
#初始化连接
initialSize = 10
#最大连接数量
maxActive = 30
#最小空闲连接
minIdle = 5
#超时等待时间,以毫秒为例
maxWait = 5000
2、sqllog软件中创建表,emp和empManager,并插入信息
CREATE TABLE emp(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL,
salary DOUBLE NOT NULL,
age INT NOT NULL
)CHARSET=utf8;
INSERT INTO emp(NAME,salary,age) VALUES('tom1',3000,24);
INSERT INTO emp(NAME,salary,age) VALUES('jack2',4000,34);
INSERT INTO emp(NAME,salary,age) VALUES('marry3',5000,44);
INSERT INTO emp(NAME,salary,age) VALUES('tom4',3000,24);
INSERT INTO emp(NAME,salary,age) VALUES('jack5',4000,34);
INSERT INTO emp(NAME,salary,age) VALUES('marry6',5000,44);
INSERT INTO emp(NAME,salary,age) VALUES('tom7',3000,24);
INSERT INTO emp(NAME,salary,age) VALUES('jack8',4000,34);
INSERT INTO emp(NAME,salary,age) VALUES('marry9',5000,44);
INSERT INTO emp(NAME,salary,age) VALUES('tom10',3000,24);
INSERT INTO emp(NAME,salary,age) VALUES('jack11',4000,34);
INSERT INTO emp(NAME,salary,age) VALUES('marry12',5000,44);
INSERT INTO emp(NAME,salary,age) VALUES('tom13',3000,24);
INSERT INTO emp(NAME,salary,age) VALUES('jack14',4000,34);
INSERT INTO emp(NAME,salary,age) VALUES('marry15',5000,44);
INSERT INTO emp(NAME,salary,age) VALUES('tom16',3000,24);
INSERT INTO emp(NAME,salary,age) VALUES('jack17',4000,34);
INSERT INTO emp(NAME,salary,age) VALUES('marry18',5000,44);
CREATE TABLE empManager(
username VARCHAR(20) NOT NULL,
PASSWORD VARCHAR(20) NOT NULL
)CHARSET=utf8;
INSERT INTO empmanager(username,PASSWORD) VALUES('yx','123456');
3、新建utils包,并写第一个数据连接相关的工具类DBUtils.java
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DBUtils {
private static DruidDataSource ds;
private static final ThreadLocal<Connection> THREAD_LOCAL = new ThreadLocal<>();
static {
Properties properties = new Properties();
InputStream inputStream = DBUtils.class.getResourceAsStream("/database.properties");
try {
properties.load(inputStream);
ds = (DruidDataSource)DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection connection = THREAD_LOCAL.get();
try {
if (connection == null){
connection = ds.getConnection();
THREAD_LOCAL.set(connection);
}
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
//开启事务
public static void begin(){
Connection connection = null;
try {
connection = getConnection();
connection.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
}
}
//提交事务
public static void commit() {
Connection connection = null;
try {
connection = getConnection();
connection.commit();
} catch (SQLException e) {
e.printStackTrace();
}finally {
closeAll(connection,null,null);
}
}
//回滚事务
public static void rollback(){
Connection connection = null;
try {
connection = getConnection();
connection.rollback();
} catch (SQLException e) {
e.printStackTrace();
}finally {
closeAll(connection,null,null);
}
}
public static void closeAll(Connection connection, Statement statement, ResultSet resultSet){
try {
if (statement != null){
statement.close();
}
if (resultSet != null){
resultSet.close();
}
if (connection != null){
connection.close();
THREAD_LOCAL.remove();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
接着在entity包下写实体类
Emp.java
public class Emp {
private int id;
private String name;
private double salary;
private int age;
public Emp() {
}
public Emp(int id, String name, double salary, int age) {
this.id = id;
this.name = name;
this.salary = salary;
this.age = age;
}
public Emp(String name, double salary, int age) {
this.name = name;
this.salary = salary;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
EmpManager.java
public class EmpManager {
private String username;
private String password;
public EmpManager() {
}
public EmpManager(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Page.java
public class Page {
private Integer pageIndex;//页码
private Integer pageSize;//页大小,即每页显示多少行数据
private Integer totalCounts;//数据总条数
private Integer totalPages;//总页数
private Integer startRows;//每页的起始行
public Page(Integer pageIndex) {
this(pageIndex,5);
}
public Page(Integer pageIndex, Integer pageSize) {
this.pageIndex = pageIndex;
this.pageSize = pageSize;
setStartRows((pageIndex - 1) * pageSize);
}
public Integer getPageIndex() {
return pageIndex;
}
public void setPageIndex(Integer pageIndex) {
this.pageIndex = pageIndex;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalCounts() {
return totalCounts;
}
public void setTotalCounts(Integer totalCounts) {
this.totalCounts = totalCounts;
setTotalPages(this.totalCounts % this.pageSize == 0 ? this.totalCounts / this.pageSize : this.totalCounts / this.pageSize + 1);
}
public Integer getTotalPages() {
return totalPages;
}
public void setTotalPages(Integer totalPages) {
this.totalPages = totalPages;
}
public Integer getStartRows() {
return startRows;
}
public void setStartRows(Integer startRows) {
this.startRows = startRows;
}
}
实体类写完就写管理员登录功能
依次从dao、service、servlet三个包顺序实现
EmpManagerDao.java,这是一个接口
import com.yx.ems.entity.EmpManager;
public interface EmpManagerDao {
public EmpManager select(String username);
}
其实现类EmpManagerDaoImpl.java
import com.yx.ems.dao.EmpManagerDao;
import com.yx.ems.entity.EmpManager;
import com.yx.ems.utils.DBUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import java.sql.SQLException;
public class EmpManagerDaoImpl implements EmpManagerDao {
private QueryRunner queryRunner = new QueryRunner();
@Override
public EmpManager select(String username) {
try {
EmpManager empManager = queryRunner.query(DBUtils.getConnection(),"select * from empManager where username = ?;",new BeanHandler<EmpManager>(EmpManager.class),username);
return empManager;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
EmpManagerService.java接口
import com.yx.ems.entity.EmpManager;
public interface EmpManagerService {
public EmpManager login(String username,String password);
}
其实现类
import com.yx.ems.dao.EmpManagerDao;
import com.yx.ems.dao.impl.EmpManagerDaoImpl;
import com.yx.ems.entity.EmpManager;
import com.yx.ems.service.EmpManagerService;
import com.yx.ems.utils.DBUtils;
public class EmpManagerServiceImpl implements EmpManagerService {
private EmpManagerDao empManagerDao = new EmpManagerDaoImpl();
@Override
public EmpManager login(String username, String password) {
EmpManager empManager = null;
try {
DBUtils.begin();
EmpManager temp = empManagerDao.select(username);
if (temp != null){
if (temp.getPassword().equals(password)){
empManager = temp;
}
}
DBUtils.commit();
} catch (Exception e) {
DBUtils.rollback();
e.printStackTrace();
}
return empManager;
}
}
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/manager/empManagerLogin" method="post">
<table>
<tr>
<td>账号:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td>验证码:</td>
<td><input type="text" name="inputVCode"></td>
<td><img src="${pageContext.request.contextPath}/createCode"></td>
</tr>
</table>
<input type="submit" value="登录">
</form>
</body>
</html>
验证码需要调用ValidateCode.jar生成,需要一个控制器创建验证码
createValidateCodeController.java
import cn.dsna.util.images.ValidateCode;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet(name = "createValidateCodeController",value = "/createCode")
public class createValidateCodeController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ValidateCode validateCode = new ValidateCode(200,30,4,20);
String codes = validateCode.getCode();
HttpSession session = request.getSession();
session.setAttribute("codes",codes);
validateCode.write(response.getOutputStream());
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
管理员登录控制器EmpManagerLoginController.java
import com.yx.ems.entity.EmpManager;
import com.yx.ems.service.EmpManagerService;
import com.yx.ems.service.impl.EmpManagerServiceImpl;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet(name = "EmpManagerLoginController",value = "/manager/empManagerLogin")
public class EmpManagerLoginController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、收参
String username = request.getParameter("username");
String password = request.getParameter("password");
//2、登录判断,成功即跳转
EmpManagerService empManagerService = new EmpManagerServiceImpl();
EmpManager empManager = empManagerService.login(username,password);
if (empManager != null){
HttpSession session = request.getSession();
session.setAttribute("empManager",empManager);
response.sendRedirect(request.getContextPath() + "/manager/safe/showAllEmp");
}else {
response.sendRedirect(request.getContextPath() + "/login.jsp");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
showEmpList.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2021-2-21 0021
Time: 22:23
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>显示页面</title>
</head>
<body>
<table border="1">
<tr>
<td>编号</td>
<td>姓名</td>
<td>薪水</td>
<td>年龄</td>
<td colspan="2">操作</td>
</tr>
<c:forEach items="${emps}" var="emp">
<tr>
<td>${emp.id}</td>
<td>${emp.name}</td>
<td>${emp.salary}</td>
<td>${emp.age}</td>
<td><a href="<c:url context='${pageContext.request.contextPath}' value='/manager/safe/deleteEmp?id=${emp.id}'></c:url>">删除</a></td>
<td><a href="<c:url context='${pageContext.request.contextPath}' value='/manager/safe/showEmp?id=${emp.id}'></c:url>">修改</a></td>
</tr>
</c:forEach>
<tr>
<td colspan="6" align="center">
<a href="<c:url context='${pageContext.request.contextPath}' value='/manager/safe/showAllEmp?pageIndex=1'></c:url>">首页</a>
<c:if test="${page.pageIndex > 1}">
<a href="<c:url context='${pageContext.request.contextPath}' value='/manager/safe/showAllEmp?pageIndex=${page.pageIndex - 1}'></c:url>">上一页</a>
</c:if>
<c:if test="${page.pageIndex == 1}">
<a>上一页</a>
</c:if>
<c:if test="${page.pageIndex < page.totalPages}">
<a href="<c:url context='${pageContext.request.contextPath}' value='/manager/safe/showAllEmp?pageIndex=${page.pageIndex + 1}'></c:url>">下一页</a>
</c:if>
<c:if test="${page.pageIndex == page.totalPages}">
<a>下一页</a>
</c:if>
<a href="<c:url context='${pageContext.request.contextPath}' value='/manager/safe/showAllEmp?pageIndex=${page.totalPages}'></c:url>">尾页</a>
</td>
</tr>
<tr>
<td colspan="6" align="center">
<input type="submit" value="添加员工" onclick="location='${pageContext.request.contextPath}/addEmp.jsp'">
</td>
</tr>
</table>
</body>
</html>
显示员工信息控制器 showAllEmpController.java
import com.yx.ems.entity.Emp;
import com.yx.ems.entity.Page;
import com.yx.ems.service.EmpService;
import com.yx.ems.service.impl.EmpServiceImpl;
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 java.io.IOException;
import java.util.List;
@WebServlet(name = "showAllEmpController",value = "/manager/safe/showAllEmp")
public class showAllEmpController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String pageIndex = request.getParameter("pageIndex");
if (pageIndex == null){
pageIndex = "1";//默认初始为1,即第一页,后面点击上一页/下一页变化
}
Page page = new Page(Integer.valueOf(pageIndex));
EmpService empService = new EmpServiceImpl();
List<Emp> emps = empService.showAllEmpByPage(page);
request.setAttribute("emps",emps);
request.setAttribute("page",page);
request.getRequestDispatcher("/showEmpList.jsp").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
以上就实现了管理员登录后,员工信息显示部分
接下来实现删除,修改功能
首先从与数据库交互的dao开始写
EmpDao.java接口
import com.yx.ems.entity.Emp;
import com.yx.ems.entity.Page;
import java.util.List;
public interface EmpDao {
public List<Emp> selectAll(Page page);//因为要分页用limit,所以传page,以便获取pageIndex和pageSize
public long selectCount();
public int delete(int id);
public Emp select(int id);
public int update(Emp emp);
public int insert(Emp emp);
}
其实现类EmpDaoImpl.java
import com.yx.ems.dao.EmpDao;
import com.yx.ems.entity.Emp;
import com.yx.ems.entity.Page;
import com.yx.ems.utils.DBUtils;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import java.sql.SQLException;
import java.util.List;
public class EmpDaoImpl implements EmpDao {
private QueryRunner queryRunner = new QueryRunner();
@Override
public List<Emp> selectAll(Page page) {
try {
List<Emp> emps = queryRunner.query(DBUtils.getConnection(),"select * from emp limit ?,?;",new BeanListHandler<Emp>(Emp.class),page.getStartRows(),page.getPageSize());
return emps;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
public long selectCount() {
try {
long count = queryRunner.query(DBUtils.getConnection(),"select count(*) from emp;",new ScalarHandler<>());
return count;
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
@Override
public int delete(int id) {
int result = 0;
try {
result = queryRunner.update(DBUtils.getConnection(),"delete from emp where id = ?;",id);
return result;
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
@Override
public Emp select(int id) {
try{
Emp emp = queryRunner.query(DBUtils.getConnection(),"select * from emp where id = ?;",new BeanHandler<Emp>(Emp.class),id);
return emp;
}catch (SQLException e){
e.printStackTrace();
}
return null;
}
@Override
public int update(Emp emp) {
int result = 0;
try{
result = queryRunner.update(DBUtils.getConnection(),"update emp set name = ?,salary = ?,age = ? where id = ?;",emp.getName(),emp.getSalary(),emp.getAge(),emp.getId());
}catch (SQLException e){
e.printStackTrace();
}
return result;
}
@Override
public int insert(Emp emp) {
int result = 0;
try {
result = queryRunner.update(DBUtils.getConnection(),"insert into emp(name,salary,age) values(?,?,?);",emp.getName(),emp.getSalary(),emp.getAge());
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
service层
EmpService.java
import com.yx.ems.entity.Emp;
import com.yx.ems.entity.Page;
import java.util.List;
public interface EmpService {
public List<Emp> showAllEmpByPage(Page page);
public int deleteEmp(int id);
public Emp selectEmpById(int id);
public int modifyEmp(Emp emp);
public int addEmp(Emp emp);
}
EmpService.java接口
import com.yx.ems.entity.Emp;
import com.yx.ems.entity.Page;
import java.util.List;
public interface EmpService {
public List<Emp> showAllEmpByPage(Page page);
public int deleteEmp(int id);
public Emp selectEmpById(int id);
public int modifyEmp(Emp emp);
public int addEmp(Emp emp);
}
其实现类EmpServiceImpl.java
import com.yx.ems.dao.EmpDao;
import com.yx.ems.dao.impl.EmpDaoImpl;
import com.yx.ems.entity.Emp;
import com.yx.ems.entity.Page;
import com.yx.ems.service.EmpService;
import com.yx.ems.utils.DBUtils;
import java.util.List;
public class EmpServiceImpl implements EmpService {
EmpDao empDao = new EmpDaoImpl();
@Override
public List<Emp> showAllEmpByPage(Page page) {
List<Emp> emps = null;
try {
DBUtils.begin();
long count = empDao.selectCount();
page.setTotalCounts((int)count);//先设置总数,才能算出总页数
emps = empDao.selectAll(page);
DBUtils.commit();
} catch (Exception e) {
DBUtils.rollback();
e.printStackTrace();
}
return emps;
}
@Override
public int deleteEmp(int id) {
int result = 0;
try{
DBUtils.begin();
result = empDao.delete(id);
DBUtils.commit();
}catch (Exception e){
DBUtils.rollback();
e.printStackTrace();
}
return result;
}
@Override
public Emp selectEmpById(int id) {
Emp emp = null;
try {
DBUtils.begin();
emp = empDao.select(id);
DBUtils.commit();
} catch (Exception e) {
DBUtils.rollback();
e.printStackTrace();
}
return emp;
}
@Override
public int modifyEmp(Emp emp) {
int result = 0;
try {
DBUtils.begin();
empDao.update(emp);
DBUtils.commit();
} catch (Exception e) {
DBUtils.rollback();
e.printStackTrace();
}
return result;
}
@Override
public int addEmp(Emp emp) {
int result = 0;
try {
DBUtils.begin();
result = empDao.insert(emp);
DBUtils.commit();
} catch (Exception e) {
DBUtils.rollback();
e.printStackTrace();
}
return result;
}
}
删除控制器DeleteEmpController.java
import com.yx.ems.service.EmpService;
import com.yx.ems.service.impl.EmpServiceImpl;
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 java.io.IOException;
@WebServlet(name = "DeleteEmpController",value = "/manager/safe/deleteEmp")
public class DeleteEmpController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Integer id = Integer.valueOf(request.getParameter("id"));
EmpService empService = new EmpServiceImpl();
empService.deleteEmp(id);
response.sendRedirect(request.getContextPath() + "/manager/safe/showAllEmp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
修改页面updateEmp.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2021-2-23 0023
Time: 20:47
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>修改员工信息页面</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/manager/safe/updateEmp" method="post">
<h2>修改员工信息</h2>
<table>
<tr>
<td>id:</td>
<td><input type="text" name="id" value="${emp.id}" readonly></td>
</tr>
<tr>
<td>name:</td>
<td><input type="text" name="name" value="${emp.name}"></td>
</tr>
<tr>
<td>salary:</td>
<td><input type="text" name="salary" value="${emp.salary}"></td>
</tr>
<tr>
<td>age:</td>
<td><input type="text" name="age" value="${emp.age}"></td>
</tr>
</table>
<input type="submit" value="修改">
</form>
</body>
</html>
修改控制器
showEmpController.java
UpdateEmpController.java
因为首先要将点击修改的员工信息,显示在修改页面上
showEmpController.java
import com.yx.ems.entity.Emp;
import com.yx.ems.service.EmpService;
import com.yx.ems.service.impl.EmpServiceImpl;
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 java.io.IOException;
@WebServlet(name = "showEmpController",value = "/manager/safe/showEmp")
public class showEmpController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Integer id = Integer.valueOf(request.getParameter("id"));
EmpService empService = new EmpServiceImpl();
Emp emp = empService.selectEmpById(id);
request.setAttribute("emp",emp);
request.getRequestDispatcher("/updateEmp.jsp").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
UpdateEmpController.java
import com.yx.ems.entity.Emp;
import com.yx.ems.service.EmpService;
import com.yx.ems.service.impl.EmpServiceImpl;
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 java.io.IOException;
//修改页面点击修改按钮,则跳转到显示页面
@WebServlet(name = "UpdateEmpController",value = "/manager/safe/updateEmp")
public class UpdateEmpController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Integer id = Integer.valueOf(request.getParameter("id"));
String name = request.getParameter("name");
Double salary = Double.valueOf(request.getParameter("salary"));
Integer age = Integer.valueOf(request.getParameter("age"));
Emp emp = new Emp(id,name,salary,age);
EmpService empService = new EmpServiceImpl();
empService.modifyEmp(emp);
response.sendRedirect(request.getContextPath() + "/manager/safe/showAllEmp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
添加员工addEmp.jsp页面
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2021-2-23 0023
Time: 21:15
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>新增员工</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/manager/safe/addEmp" method="post">
<h2>新增员工信息</h2>
<table>
<tr>
<td>name:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>salary:</td>
<td><input type="text" name="salary"></td>
</tr>
<tr>
<td>age:</td>
<td><input type="text" name="age"></td>
</tr>
</table>
<input type="submit" value="添加">
</form>
</body>
</html>
新增控制器InsertEmpController.java
import com.yx.ems.entity.Emp;
import com.yx.ems.service.EmpService;
import com.yx.ems.service.impl.EmpServiceImpl;
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 java.io.IOException;
@WebServlet(name = "InsertEmpController",value = "/manager/safe/addEmp")
public class InsertEmpController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
Double salary = Double.valueOf(request.getParameter("salary"));
Integer age = Integer.valueOf(request.getParameter("age"));
Emp emp = new Emp(name,salary,age);
EmpService empService = new EmpServiceImpl();
empService.addEmp(emp);
response.sendRedirect(request.getContextPath() + "/manager/safe/showAllEmp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
为防止地址直接写更新恶意进入更新页面或新增页面,需要加一个权限验证过滤器,对manager/safe下的所有文件都进行过滤,满足要求才放行,这样就算直接写新增地址,如果没有登录的话,就会自动跳转登录页面,无法直接通过输入地址进入显示或新增页面
CheckFilter.java
import cn.dsna.util.images.ValidateCode;
import com.sun.deploy.net.HttpResponse;
import com.yx.ems.entity.EmpManager;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebFilter(filterName = "CheckFilter",value = "/manager/safe/*")
public class CheckFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
HttpSession session = request.getSession();
EmpManager empManager = (EmpManager) session.getAttribute("empManager");
if (empManager != null){
chain.doFilter(req, resp);
}else {
response.sendRedirect(request.getContextPath() + "/login.jsp");
}
}
public void init(FilterConfig config) throws ServletException {
}
}
最后为了防止输入中文出现乱码,需要加一个编码过滤器
EncodingFilter.java
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(filterName = "EncodingFilter",value = "/manager/*")
public class EncodingFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
}
}
以上就是所有的实现代码,配置好tomcat环境后,本地再输入login.jsp即可
目录结构如下: