員工管理系統 ,實現增刪改查!


學完了servlet、數據庫、以及之前的jsp。我們可以 做一個管理系統,將知識綜合起來運用!

一、創建數據庫,表名 easyui。

二、實現增刪改查。

1.新建web項目,導入所需要的4個包 

 

2.包的分層  工具包將之前的復制過來就好了。

dao部分  創建  接口和 實現類。實現類在dao包下新建包impl。

package com.aaa.dao;

import com.aaa.entity.Employee;

import java.util.List;
import java.util.Map;

public interface IDengDAO {
    boolean goDeng(String username,String password);
    //查詢所有員工
    List<Map<String,Object>> getAll();
    //添加員工的方法
    boolean add(Employee emp);
    //刪除員工的方法
    boolean delete(int id);
    //修改員工的方法
    boolean update(Employee emp);
    //根據id 獲取員工
    Map<String ,Object>getEmp(int id);

}

impl部分

package com.aaa.dao.Impl;

import com.aaa.dao.IDengDAO;
import com.aaa.entity.Employee;
import com.aaa.util.DBUtil;

import java.util.List;
import java.util.Map;

public class DengDAOImpl implements IDengDAO {
    @Override
    public boolean goDeng(String username, String password) {
        String sql="select * from login where username=? and password=?";
        List<Map<String, Object>> list = DBUtil.executeQuery(sql, username, password);
        return list.size()>0;
    }

    @Override
    public List<Map<String, Object>> getAll() {
        String sql = "select e.id,e.name,e.telephone,e.hiredate,e.state,d.name dname,r.name rname from employee e INNER JOIN department  d on e.deptID = d.id INNER JOIN role r on e.roleID = r.id";

        return DBUtil.executeQuery(sql);
    }

    @Override
    public boolean add(Employee emp) {
        String sql = "insert into employee (name,telephone,deptID,roleID,state) values (?,?,?,?,?)";
        return DBUtil.executeUpdate(sql,emp.getName(),emp.getTelephone(),emp.getDeptID(),emp.getRoleID(),emp.getState());
    }

    @Override
    public boolean delete(int id) {
        String sql = "delete from employee where id = ?";
        return DBUtil.executeUpdate(sql, id);
    }

    @Override
    public boolean update(Employee emp) {
        String sql = "update employee set name = ? , telephone = ? , deptID=?  , roleID=? ,state = ? where id = ?";
        return DBUtil.executeUpdate(sql,emp.getName(),emp.getTelephone(),emp.getDeptID(),emp.getRoleID(),emp.getState(),emp.getId());
    }

    @Override
    public Map<String, Object> getEmp(int id) {
        String sql = "select * from employee where id = ?";
        List<Map<String, Object>> list = DBUtil.executeQuery(sql, id);

        if(list.size()>0){
            return  list.get(0);
        }

        return null;
    }
}

entity實體類部分

package com.aaa.entity;

public class Employee {
    private  int id;
    private  String name;
    private  String telephone;
    private  int deptID;
    private  int roleID;
    private  int state;

    public Employee() {

    }

    public Employee(int id, String name, String telephone, int deptID, int roleID, int state) {
        this.id = id;
        this.name = name;
        this.telephone = telephone;
        this.deptID = deptID;
        this.roleID = roleID;
        this.state = state;
    }

    public Employee(String name, String telephone, int deptID, int roleID, int state) {
        this.name = name;
        this.telephone = telephone;
        this.deptID = deptID;
        this.roleID = roleID;
        this.state = state;
    }

    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 String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public int getDeptID() {
        return deptID;
    }

    public void setDeptID(int deptID) {
        this.deptID = deptID;
    }

    public int getRoleID() {
        return roleID;
    }

    public void setRoleID(int roleID) {
        this.roleID = roleID;
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", telephone='" + telephone + '\'' +
                ", deptID=" + deptID +
                ", roleID=" + roleID +
                ", state=" + state +
                '}';
    }
}

3.創建登錄界面index.jsp,在web目下。並創建LoginServlet  進行業務操作。

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/4/18
  Time: 20:06
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <%-- 此時  這里僅僅只是登錄界面  不通過servlet  用戶直接在瀏覽器中訪問index.jsp --%>
    <title>用戶登錄界面</title>
      <style>
        fieldset{width: 300px;margin: 100px auto;}
      </style>
  </head>
  <body>
    <fieldset>
      <legend>用戶登錄</legend>

      <%--密碼錯誤 通過 error 關鍵字  獲得 錯誤提示信息--%>
      <div style="color: red">${error}</div>

      <%--提交的地址  是我們所寫的loginServlet 注意路徑格式--%>
      <form action="/zxf/deng" method="post">
        <div>
          姓名:<input type="type" name="username"/>
        </div>
        <div>
          密碼:&nbsp;&nbsp;<input type="password" name="password"/>
        </div>
        <button >登錄</button>
      </form>
    </fieldset>
  </body>
</html>
package com.aaa.servelt;

import com.aaa.dao.IDengDAO;
import com.aaa.dao.Impl.DengDAOImpl;

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("/deng")  //虛擬路徑    form表單的提交地址 /zxf/deng
public class LoginServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        //1.獲取  我們在登錄界面  輸入的密碼和用戶名
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        //2.調用dao方法進行驗證
        IDengDAO dao=new DengDAOImpl();
        boolean goDeng = dao.goDeng(username, password);
        //3.判斷密碼 是否正確
        if (goDeng){
          //4.正確 重定向 到main.jsp頁面
          resp.sendRedirect("/zxf/main.jsp");
        }else
            {
            //5.錯誤  共享數據 請求轉發到 index.jsp
            req.setAttribute("error","賬號密碼錯誤,請重試!");
            req.getRequestDispatcher("/index.jsp").forward(req,resp);
        }


    }
}

登錄不成功  會提示錯誤。登陸成功,就跳轉到main.jsp部分

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/4/18
  Time: 20:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>員工數據庫系統</title>
    <style>
        ul,iframe{
            float: left;
        }
        ul{
            width: 15%;
        }
        iframe{
            width: 80%;
        }
    </style>
</head>
<body>
    <h1>歡迎來到員工管理系統</h1>
    <div>
        <ul>
            <li><a href="/zxf/emp" target="show">員工管理</a></li>
            <li><a href="/zxf/add.jsp" target="show">添加員工</a></li>
        </ul>
        <iframe name="show" height="800px"></iframe>
    </div>
</body>
</html>

點擊員工管理,跳轉到

package com.aaa.servelt;

import com.aaa.dao.IDengDAO;
import com.aaa.dao.Impl.DengDAOImpl;

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;
import java.util.Map;

@WebServlet("/emp")  //main.jsp 的員工管理  跳轉到這
public class EmpServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //獲取所有數據
        IDengDAO dao=new DengDAOImpl();
        List<Map<String, Object>> list = dao.getAll();
        //共享數據
        req.setAttribute("list",list);
        //請求轉發
        req.getRequestDispatcher("/emp.jsp").forward(req,resp);
    }
}

轉發到 emp.jsp

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/4/19
  Time: 16:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<table border="1" cellspacing="0" width="95%" align="center">
    <tr>
        <th>員工編號</th>
        <th>員工姓名</th>
        <th>員工手機號</th>
        <th>入職時間</th>
        <th>員工部門</th>
        <th>員工角色</th>
        <th>員工狀態</th>
        <th>員工操作</th>
    </tr>
    <c:forEach var="emp" items="${list}">
        <tr>
            <th>${emp.id}</th>
            <th>${emp.name}</th>
            <th>${emp.telephone}</th>
            <th>${emp.hiredate}</th>
            <th>${emp.dname}</th>
            <th>${emp.rname}</th>
            <th>${emp.state==1?"在職":"離職"}</th>
            <th>
                <%-- 修改和刪除 有各自要跳轉的servlet頁面--%>
                <a href="/zxf/delete?id=${emp.id}">刪除</a>
                <a href="/zxf/toUpdate?id=${emp.id}">修改</a>
            </th>
        </tr>
    </c:forEach>

</table>
</body>
</html>

點節刪除  跳轉到DeleteEmpServlet

package com.aaa.servelt;

import com.aaa.dao.IDengDAO;
import com.aaa.dao.Impl.DengDAOImpl;

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("/delete") 
public class DeleteEmpServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       //獲取請求參數
        String id = req.getParameter("id");
        //調用dao  根據id刪除員工。
        IDengDAO dao=new DengDAOImpl();
        boolean delete = dao.delete(Integer.parseInt(id));
        //重定向到  emp
        resp.sendRedirect("/zxf/emp");
    }
}

點擊修改員工 ,跳轉到ToUpdateServlet

package com.aaa.servelt;

import com.aaa.dao.IDengDAO;
import com.aaa.dao.Impl.DengDAOImpl;

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.Map;

@WebServlet("/toUpdate")
/*
    修改 用戶點擊修改按鈕請求到servlet
    先要獲取 要修改的員工信息 共享給jsp 請求轉發過去  展示給用戶看

 */
public class ToUpdate extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       //獲取參數
        String id = req.getParameter("id");
        //根據ID獲取員工信息
        IDengDAO dao=new DengDAOImpl();
        Map<String, Object> emp= dao.getEmp(Integer.parseInt(id));
        //共享員工信息
        req.setAttribute("emp",emp);
        //請求轉發
        req.getRequestDispatcher("/update.jsp").forward(req,resp);
    }
}

他會請求轉發到 update.jsp

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/4/18
  Time: 9:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>修改</title>
    <style type="text/css">
        fieldset{width: 300px;margin: 100px auto;}
    </style>
</head>
<body>
<fieldset id="">
    <legend>修改員工</legend>
    <form action="/zxf/update" method="post">
        <input  type="hidden"   name="id" value="${emp.id}"   />
        <div>
            員工姓名: <input name="name" value="${emp.name}" />
        </div>
        <div>
            員工手機: <input name="telephone" value="${emp.telephone}" />
        </div>

        <div>
            員工部門:
            <select name="deptID" id="deptID" >
                <option value="1"   ${emp.deptID==1?"selected":""}     >總經辦</option>
                <option value="2"   ${emp.deptID==2?"selected":""}     >人事部</option>
                <option value="3"   ${emp.deptID==3?"selected":""}     >業務部</option>
            </select>
        </div>
        <div>
            員工角色:
            <select name="roleID" id="roleID" >
                <option value="1" id="r1">超級管理員</option>
                <option value="2" id="r2">員工管理員</option>
                <option value="3" id="r3">業務管理員</option>
            </select>


        </div>
        <div>
            員工狀態:
            <select name="state" >
                <option value="0" id="s0">離職</option>
                <option value="1" id="s1">在職</option>
            </select>
        </div>

        <button>修改</button>
    </form>

</fieldset>
<script>
    // 當前表單的表單元素 夠不夠
    // 讓 角色下拉框中的   1 2 3
    document.getElementById("r"+${emp.roleID}).selected = "selected";
    document.getElementById("s"+${emp.state}).selected = "selected";
</script>

</body>
</html>

這里的jsp頁面會跳轉到UpdateServlet

package com.aaa.servelt;

import com.aaa.dao.IDengDAO;
import com.aaa.dao.Impl.DengDAOImpl;
import com.aaa.entity.Employee;

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("/update")
public class UpdateEmpServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //獲取請求參數  處理請求亂碼
        req.setCharacterEncoding("UTF-8");
        req.setCharacterEncoding("UTF-8");
        // 1 獲取請求參數
        String name = req.getParameter("name");
        String telephone = req.getParameter("telephone");
        String deptID = req.getParameter("deptID");
        String roleID = req.getParameter("roleID");
        String state = req.getParameter("state");
        String id = req.getParameter("id");

        Employee employee = new Employee(Integer.parseInt(id), name, telephone, Integer.parseInt(deptID), Integer.parseInt(roleID), Integer.parseInt(state));
        //2 通過dao將數據添加到數據庫中
        IDengDAO dao=new DengDAOImpl();
        boolean update = dao.update(employee);
        //3 重定向到/emp
        resp.sendRedirect("/zxf/emp");
    }
}

他又回到了emp  就是EmpServlet。

到此 刪除和修改的功能完成。

回到 man.jsp 點擊添加 員工。他會跳轉到 add.jsp 頁面

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/4/17
  Time: 11:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <style type="text/css">
        fieldset{width: 300px;margin: 100px auto;}
    </style>
</head>
<body>

<fieldset id="">
    <legend>添加員工</legend>
    <%-- 跳轉到 /zxf/addEmp 這個servlet--%>
    <form action="/zxf/addEmp" method="post">
        <div>
            員工姓名: <input name="name" />
        </div>
        <div>
            員工手機: <input name="telephone" />
        </div>
        <div>
            員工部門:
            <select name="deptID">
                <option value="1">總經辦</option>
                <option value="2">人事部</option>
                <option value="3">業務部</option>
            </select>
        </div>
        <div>
            員工角色:
            <select name="roleID">
                <option value="1">超級管理員</option>
                <option value="2">員工管理員</option>
                <option value="3">業務管理員</option>
            </select>
        </div>
        <div>
            員工狀態:
            <select name="state">
                <option value="0">離職</option>
                <option value="1">在職</option>
            </select>
        </div>

        <button>添加</button>
    </form>

</fieldset>



</body>
</html>

這里的jsp 會跳轉到AddServlet

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/addEmp")
public class AddEmpServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //處理1.請求亂碼---->瀏覽器發給 servlet  亂碼
        //    2.響應亂碼----->servlet 回傳給瀏覽器之后亂碼  不用處理 為啥? 因為我們將其交給了 jsp  來解決!
        req.setCharacterEncoding("utf-8");
        // 1 獲取請求參數
        String name = req.getParameter("name");
        String telephone = req.getParameter("telephone");
        String deptID = req.getParameter("deptID");
        String roleID = req.getParameter("roleID");
        String state = req.getParameter("state");

        Employee employee = new Employee(name,telephone,Integer.parseInt(deptID),Integer.parseInt(roleID),Integer.parseInt(state));
        // 2 調用dao 將數據添加到數據庫中
        IDengDAO dao=new DengDAOImpl();
        dao.add(employee);
        // 3 回傳信息 成功/失敗
        req.setAttribute("msg","添加成功");
        // 4 請求轉發到 add.jsp
        req.getRequestDispatcher("/add.jsp").forward(req,resp);

    }
}

這里會將數據 傳送給add.jsp。

好了,添加員工完成!  增刪改查實現,舒服。

 

三、總結。

  1.jsp是用來展示數據的

  2.servlet 是用來進行業務操作的  請求轉發和重定向。

  3.bug雖然痛苦,但自己解決 的時候,也很開心。-------菜鳥的心得!

 

四,展示所有的文件目錄

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM