超级简陋看着贼low的后台人员管理系统

功能点

  • 整体页面效果无要求,做出以下功能即可

  • 登录&登出(10分)

    • 使用管理员登录

    • 登录成功跳转首页,展示所有员工信息

    • 右上角展示登录后的管理员真实姓名

    • 登录失败,跳转登录页面重新登录,并给出红色错误提示

    • 点击右上角退出按钮直接跳转登录页面

  • 主页分页展现全部员工信息(10分)

    • ==除基本信息外要展示员工对应的部门名称==

    • 分页展示,每页展示3条数据

    • 第一页和最后一页要做处理,不能出现逻辑bug

  • 模糊搜索(10分)

    • 上方设置搜索框和搜索按钮

    • 模糊搜索只能根据用户名搜索

  • 前端页面(10分)

    • 主页设置框架标签,以下添加页面,更新页面应该在主页嵌套展现

  • 添加员工(10分)

    • 员工信息列表上方,设置添加按钮

    • 点击添加按钮,跳转添加页面

    • 页面填写员工的基本信息,==部门信息需要以下拉框展示,且下拉框中部门信息是从后台查询得出,而不是固定写死==

    • 执行添加,重新发请求查询最新员工信息

  • 更新员工信息(10分)

    • 点击员工信息后的更新按钮,跳转更新页面并回显数据

    • 注意回显时,==回显部门名称要是员工所在的部门名称==

    • 输入完信息后,执行更新,跳转至首页展现最新员工信息

  • 删除员工信息(10分)

    • 点击删除按钮,弹出确认框,单击取消不删除

    • 单击删除,删除员工信息,并展示最新的员工数据

  • 代码规范(10分)

    • 包结构

    • 类名

    • 请求路径

    • 注释

这个是员工Dao存方法

package com.pst.dao;

import com.pst.entity.Emp;
import com.pst.utlis.BaseDao;

import java.util.List;

public class EmpDao extends BaseDao {
    public List<Emp> selectAllEmp (Object[] objs){
        String sql = "select * from emp limit ?,?";
        List<Emp> query = super.query(sql, objs, Emp.class);
        return query;
    }
    //添加数据到数据库
    public int addEmp(Object[] objs){
        String sql = "insert into emp (name,age,sex,salary,department) values(?,?,?,?,?)";
        return super.update(sql,objs);
    }
    //删除数据
    public int delEmp(Object[] objs){
        String sql = "delete from emp where id = ?";
        return super.update(sql,objs);
    }
    //查询一条数据的方法
    public List<Emp> findServletOne (Object[] objs){
        String sql = "select * from emp where id = ?";
        List<Emp> query = super.query(sql, objs, Emp.class);
        return query;
    }
    //修改一条数据
    public int updataEmp(Object[] objs){
        String sql = "update emp set name=?,age=?,sex=?,salary=?,department=? where id = ?";
        return super.update(sql,objs);
    }
    public int selectAllSize(){
        String sql = "select count(*) from emp";
        int i = super.querySize(sql);
        return i;
    }
    public List<Emp> selectName(Object[] objs){
        String sql = "select * from emp where name like concat('%',?,'%')";
        List<Emp> query = super.query(sql, objs,Emp.class);
        return query;
    }
}

这个是管理员的Dao

package com.pst.dao;

import com.pst.entity.EmpManager;
import com.pst.utlis.BaseDao;

import java.util.List;

public class EmpManagerDao extends BaseDao {
    public List<EmpManager> selectManager(Object[] objs){
        String sql = "select * from emp_manager where name=? and password = ?";
        List<EmpManager> query = super.query(sql, objs, EmpManager.class);
        return  query;
    }
}

这个是员工实体类

package com.pst.entity;

public class Emp {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
    private Double salary;
    private String department;

    public Emp() {
    }

    public Emp(Integer id, String name, Integer age, String sex, Double salary, String department) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.salary = salary;
        this.department = department;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Double getSalary() {
        return salary;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }
}

这个是管理员实体类

package com.pst.entity;

public class EmpManager {
    private Integer id;
    private String name;
    private String password;

    public EmpManager() {
    }

    public EmpManager(Integer id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "EmpManager{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

这个是添加员工的Servlet

package com.pst.servlet;

import com.pst.dao.EmpDao;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "AddEmpServlet", value = "/AddEmpServlet")
public class AddEmpServlet extends HttpServlet {
    EmpDao empDao = new EmpDao();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        String sex = request.getParameter("sex");
        String salary = request.getParameter("salary");
        String department = request.getParameter("department");
        Object[] objs = {name,age,sex,salary,department};
        int i = empDao.addEmp(objs);
        System.out.println(i);
        if (i == 1){
            response.sendRedirect("IndexServlet");
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

这个删除员工的Servlet

package com.pst.servlet;

import com.pst.dao.EmpDao;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "DeleteServlet", value = "/DeleteServlet")
public class DeletServlet extends HttpServlet {
    EmpDao empDao = new EmpDao();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String id = request.getParameter("id");
        System.out.println(id);
        Object[] objs = {id};
        //连接
        int i = empDao.delEmp(objs);
        if (i==1){
            response.sendRedirect("IndexServlet");
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

这个是登录的 Servlet

package com.pst.servlet;

import com.pst.dao.EmpManagerDao;
import com.pst.entity.EmpManager;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

@WebServlet(name = "LoginServlet", value = "/LoginServlet")
public class LoginServlet extends HttpServlet {
    EmpManagerDao empManagerDao = new EmpManagerDao();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
        Object[] objs = {name,pwd};
        List<EmpManager> empManagers = empManagerDao.selectManager(objs);
        System.out.println(empManagers);
        if (empManagers!=null){
            EmpManager empManager = empManagers.get(0);
            HttpSession session = request.getSession();
            session.setMaxInactiveInterval(60*60);
            session.setAttribute("name",empManager.getName());
            response.sendRedirect("IndexServlet");
        }else {
            PrintWriter writer = response.getWriter();
            writer.println("<script style='color:red'>alert('用户名或者密码错误');window.location.href='login.html'</script>");
        }

    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

这个是管理员登出Servlet

package com.pst.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "LogoutServlet", value = "/LogoutServlet")
public class LogoutServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        if (session!= null){
            session.invalidate();
        }
        response.sendRedirect("login.html");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

这个是搜索框模糊查询的Servlet

package com.pst.servlet;

import com.pst.dao.EmpDao;
import com.pst.entity.Emp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

@WebServlet(name = "sou suo", value = "/sou suo")
public class sousuo extends HttpServlet {
    EmpDao empDao = new EmpDao();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        String name = request.getParameter("name");
        System.out.println(name);
        Object[] objs = {name};
        List<Emp> emps = empDao.selectName(objs);
            PrintWriter writer = response.getWriter();


            writer.print("<table border='4px' bordercolor='pink' width='700px' height='400'>");
            writer.print("<tr>");
            writer.print("<th>编号</th>");
            writer.print("<th>姓名</th>");
            writer.print("<th>年龄</th>");
            writer.print("<th>性别</th>");
            writer.print("<th>薪资</th>");
            writer.print("<th>部门</th>");
            writer.print("</tr>");
            for (Emp emp : emps) {
                writer.print("<tr align='center'>");
                writer.print("<td>"+emp.getId()+"</td>");
                writer.print("<td>"+emp.getName()+"</td>");
                writer.print("<td>"+emp.getAge()+"</td>");
                writer.print("<td>"+emp.getSex()+"</td>");
                writer.print("<td>"+emp.getSalary()+"</td>");
                writer.print("<td>"+emp.getDepartment()+"</td>");
                writer.print("</tr>");
            }
            writer.print("</table>");
            writer.print("</div>");

    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

这个是更改员工 更新数据库的 两个Servlet

package com.pst.servlet;

import com.pst.dao.EmpDao;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "UpdateServlet", value = "/UpdateServlet")
public class UpdateServlet extends HttpServlet {
    EmpDao empDao = new EmpDao();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String id = request.getParameter("id");
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        String sex = request.getParameter("sex");
        String salary = request.getParameter("salary");
        String department = request.getParameter("department");
        Object[] objs = {name,age,sex,salary,department};
        int i = empDao.updataEmp(objs);
        if (i == 1){
            response.sendRedirect("IndexServlet");
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
package com.pst.servlet;

import com.pst.dao.EmpDao;
import com.pst.entity.Emp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

@WebServlet(name = "UpdateShowServlet", value = "/UpdateShowServlet")
public class UpdateShowServlet extends HttpServlet {
    EmpDao empDao = new EmpDao();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        String id = request.getParameter("id");
        Object[] objs = {id};
        List<Emp> emps = empDao.findServletOne(objs);
        if (emps != null){
            Emp emp = emps.get(0);
            PrintWriter writer = response.getWriter();

            writer.print("<div align='center'>");

            writer.print("<form action='UpdateServlet?id="+emp.getId()+"' method='post'>");
            writer.print("姓名:<input type='text' name='name' value='"+emp.getName()+"'><br>");
            writer.print("年龄:<input type='text' name='age' value='"+emp.getAge()+"'><br>");
            writer.print("性别:<input type='text' name='sex' value='"+emp.getSex()+"'><br>");
            writer.print("薪资:<input type='text' name='salary' value='"+emp.getSalary()+"'><br>");
            writer.print("部门:<input type='text' name='department' value='"+emp.getDepartment()+"'><br>");
            writer.print("<input type='submit' value='修改'>");
            writer.print("</form>");
            writer.print("</div>");
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

以上是主要代码 下面是需要配置的BaseDao 和JdbcUtil

package com.pst.utlis;

import org.apache.commons.beanutils.BeanUtils;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 只有两个方法:
 *  1.增删改
 *  2.查
 */
public class BaseDao {

    /**
     * 增删改
     * @param sql   需要传入sql语句
     * @param parameters   对sql的?进行赋值
     * @return  受影响的行数
     */
    // String sql = "insert into work (name, age, info) values(?, ?,?)";
    // Object[] objs = {"煮鸡蛋", 34, "cxdshjn"};
    //baseDao.update(sql, objs);
    public int update (String sql, Object[] parameters) {
        //1.获取数据路的连接的对象  从另外一个工具类中去获取的
        Connection connection = JdbcUtil.getConnection();
        //2.获取预处理的搬运工对象去预处理sql语句
        PreparedStatement preparedStatement = null;
        try {
            preparedStatement = connection.prepareStatement(sql);
            //3.现在对sql语句参数进行赋值, 你知道有几个参数吗因为参数不确定
            //获取参数的个数  靠参数元数据
            int parameterCount = preparedStatement.getParameterMetaData().getParameterCount();
            //System.out.println(parameterCount);
            //4.循环进行赋值
            // String sql = "insert into work (name, age, info) values(?, ?,?)";
            // Object[] objs = {"供电", 12, "23u"};  3
            if (parameters != null && parameters.length == parameterCount) {
                //才让你赋值
                for (int i = 1; i <= parameterCount; i++) {
                    //i = 1`   setObject(1, "供电")
                    //i=2  setObject(2, 12)
                    //i=3  setObject(3, "23u")
                    preparedStatement.setObject(i, parameters[i - 1]);
                }
            }
            //5.执行sql语句
            int i = preparedStatement.executeUpdate();
            return i;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtil.close(preparedStatement, connection);
        }
        return 0;
    }
    //查询的方法 咱们需要关注什么?查询的数据是要赋值给一个实体类对象

    /**
     *
     * @param sql
     * @param parameters
     * @param cls  查询出来的数据赋值给一个对象
     * @param <T>
     * @return
     */
    //super.query("select name,age from emp where id = ?", null, Emp.class)
    public <T> List<T> query (String sql, Object[] parameters, Class<T> cls) {
        //1.连接数据库的对象 获取
        Connection connection = JdbcUtil.getConnection();
        //2.获取预处理的搬运工对象

        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            preparedStatement = connection.prepareStatement(sql);
            //3.获取参数的个数
            int parameterCount = preparedStatement.getParameterMetaData().getParameterCount();
            //4.对?进行赋值
            if(parameters != null && parameters.length == parameterCount) {
                for (int i = 1; i <= parameterCount; i++) {
                    preparedStatement.setObject(i, parameters[i - 1]);
                }
            }
            //5.执行sql语句
          resultSet = preparedStatement.executeQuery();
            //6.创建一个空的集合
            List<T> list = new ArrayList<>();
            //7.获取结果集元数据,通过元数据获取字段的个数和字段的名字
            ResultSetMetaData metaData = resultSet.getMetaData();
            //8.通过元数据的对象获取字段的个数
            /**
             * id  name  age  info      《=
             * 1  狗蛋    12   大数据   《=
             * 2  嘻嘻  18  撒娇年休假
             * 3  大黄  89  水性凝胶剂
             */
            int columnCount = metaData.getColumnCount();

            /**
             * resultSet.next()
             *      第一条数据 :
             *          内层for循环
             *              i=1 1<4  id  getObject("id")   1 i++
             *               i=2 2<4  name  getObject("name") 狗蛋 i++
             *               i=3 3<4  age...
             *    resultSet.next()
             *          第二条数据:
             *              内层for循环
             *              *              i=1 1<4  id  getObject("id")   2 i++
             *              *               i=2 2<4  name  getObject("name") 嘻嘻 i++
             *              *               i=3 3<4  age..
             */
            //9.遍历数据
            while (resultSet.next()) {//往下遍历每一行的数据的
                //10.通过Class对象获取所对应的类对象
                //Work.class->Work work = new Work()
                //Person.calss->person person = new Person();
                T t = cls.getConstructor(null).newInstance(null);

                for (int i = 1; i <= columnCount; i++) {//获取字段的
                    //11.获取列(字段)的名字
                    String columnName = metaData.getColumnName(i);
                    //System.out.println(columnName);
                    //12.通过字段获取值
                    Object value = resultSet.getObject(columnName);
                    System.out.println(value);
                    //13.获取数据库重点额数据之后,将数据赋值一个对象,得有类啊
                    //BeanUtils.setProperty(对象, 属性, 值)
                    BeanUtils.setProperty(t, columnName, value);
                }
                //14.每次while循环一次 存到集合中
                list.add(t);
            }
            return list.size() != 0 ? list : null;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //15.关闭资源
            JdbcUtil.close(resultSet, preparedStatement, connection);
        }
        return null;

    }
    //获取数据总条数
    //select count(*) from emp
    public int querySize(String sql) {
        //1.获取了连接对象
        Connection connection = JdbcUtil.getConnection();
        //2.预处理搬运工对象
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
           preparedStatement = connection.prepareStatement(sql);
           resultSet = preparedStatement.executeQuery();
            //count(*)
            //39
            while (resultSet.next()) {
                int anInt = resultSet.getInt("count(*)");
                return anInt;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtil.close(resultSet, preparedStatement, connection);
        }
        return 0;
    }

}

这个是JdbcUtil

package com.pst.utlis;



import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;

/**
 * 1.获取Connection对象
 * 2.关闭资源
 */
public class JdbcUtil {
    private static DataSource dataSource = null;
    static {
        try {
        //只要JdbcUtil类加载了,就会执行静态代码块中的代码
        //读取配置文件中的信息:properties文件
        //Properties类表示一组持久的属性。 Properties可以保存到流中或从流中加载。
        // 属性列表中的每个键及其对应的值都是一个字符串。
            Properties properties = new Properties();
            //https://blog.csdn.net/m0_45263525/article/details/127187980
            //getResourceAsStream()是获取资源的输入流。类加载器默认是从classPath路径加载资源。
            //classPath目录:web项目运行时,IDE编译器会把src下的一些资源文件移至WEB-INF/classes,classes目录就是classPath目录。该目录放的一般是web项目运行时的class文件、资源文件(xml,properties等)。
            properties.load(JdbcUtil.class.getClassLoader().getResourceAsStream("druid.properties"));
            dataSource = DruidDataSourceFactory.createDataSource(properties);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static Connection getConnection () {
        Connection connection = null;
        try {
            connection = dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return  connection;
    }

    //关闭资源
    //增删改  需要关闭两个   查 关闭三个
    public static void close (Connection connection) {
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public static void close (Statement statement, Connection connection) {
        try {
            statement.close();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
    public static void close (ResultSet resultSet, Statement statement, Connection connection) {
        try {
            resultSet.close();
            statement.close();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}

这个是德鲁伊连接

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/java2304?useSSL=false
username=root
password=123456

initialSize=10
maxActive=10
maxWait=4000

好的下面是html

这个是后台表

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div align="center">
    <form action="AddEmpServlet" method="post">
        姓名:<input type="text" name="name"><br>
        年龄:<input type="text" name="age"><br>
        性别:<input type="text" name="sex"><br>
        薪资:<input type="text" name="salary"><br>
        <select name="department">
            <option value="部门1">部门1</option>
            <option value="部门2">部门2</option>
            <option value="部门3">部门3</option>
            <option value="部门4">部门4</option>
            <option value="部门5">部门5</option>
        </select><br/><br/><br/><br/>
        <input type="submit" value="提交">
    </form>
</div>

</body>
</html>a.org 

这个是登录

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div align="center" >
        <form action="LoginServlet" method="post">
            账号<input type="text" name="name"><br>
            密码<input type="password" name="pwd"><br>
            <input type="submit" value="登录">
        </form>
    </div>
</body>
</html>

写的太潦草 也很low  仅够参考 兄弟萌

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值