javaweb实现登录及对员工的增删改(EMS)

一、项目需求

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即可
目录结构如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39615182/article/details/113919921
今日推荐