您的位置:首页 > 其它

员工管理-登陆及增删改查功能的实现

2015-08-31 20:02 447 查看
问题

为员工管理系统添加注册和登陆功能,注册时需要进行用户名是否存在的判断,如果存在则出现提示。登陆成功即可对员工信息进行增删改查操作。

步骤

Step 1:创建数据库表

新建一个登陆表,t_user表

[code]CREATE TABLE `t_user` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `pwd` varchar(30) NOT NULL,
  `name` varchar(50) DEFAULT NULL,
  `gender` char(2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;


新建一个员工表t_emp

[code]CREATE TABLE `t_emp` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` varchar(8) NOT NULL,
  `salary` float(8,2) DEFAULT NULL,
  `age` int(2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;


step2: 创建一个实体类entity.User类和一个实体类entity.Employee类

[code]package entity;

public class Employee {
    private int id;
    private String name;
    private float salary;
    private int age;

    @Override
    public String toString(){
        return id+" "+name+" "+salary+" "+age;
    }
    public Employee(){
        super();
    }
    public Employee(int id,String name,float salary,int age){
        super();
        this.id=id;
        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 float getSalary() {
        return salary;
    }
    public void setSalary(float salary) {
        this.salary = salary;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

}


entity.User类

[code]package entity;

public class User {
    private int id;
    private String username;
    private String pwd;
    private String name;
    private String gender;

    @Override
    public String toString(){
        return id+" "+username+" "+pwd+" "+name+" "+gender;
    }
    public User(){
        super();
    }
    public User(int id,String username,String pwd,String name,String gender){
        super();
        this.id=id;
        this.username=username;
        this.pwd=pwd;
        this.name=name;
        this.gender=gender;
    }

    public int getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getName() {
        return name;
    }

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

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}


step3:创建三个dao类

数据库连接类dao.DBUtil类

[code]package dao;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBUtil {
    //新建一个连接
    public static Connection getConnection()throws Exception{
        Connection conn=null;
        try {
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //创建实例
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }

        return conn;
    }
    //关闭数据库连接
    public static void close(Connection conn)throws Exception{
        if(conn!=null){
            try {
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
                throw e;
            }
        }
    }
}


dao.EmployeeDAO类

[code]package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import javax.swing.text.html.HTMLDocument.HTMLReader.ParagraphAction;

import entity.Employee;

public class EmployeeDAO {
    //查询所有员工
    public List<Employee> findAll()throws Exception{
        List<Employee> emps=new ArrayList<Employee>();
        Connection conn=null;
        PreparedStatement stmt=null; // PreparedStatement 实例包含已编译的 SQL 语句
        ResultSet rs=null;
        try {
            conn=DBUtil.getConnection();
            stmt=conn.prepareStatement("select * from t_emp");
            rs=stmt.executeQuery();
            while(rs.next()){
                Employee emp=new Employee(
                        rs.getInt("id"),
                        rs.getString("name"),
                        rs.getFloat("salary"),
                        rs.getInt("age")
                        );
                emps.add(emp);
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }finally{
            DBUtil.close(conn);
        }
        return emps;
    }
    //删除
    public void delete(int id) throws Exception{
        Connection conn=null;
        PreparedStatement stmt=null;
        try {
            conn=DBUtil.getConnection();
            stmt=conn.prepareStatement("delete from t_emp where id=?");
            stmt.setInt(1, id);
            stmt.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }finally{
            DBUtil.close(conn);
        }
    }
    //增加员工信息
    public void save(Employee emp) throws Exception{
        Connection conn=null;
        PreparedStatement stmt=null;
        try {
            conn=DBUtil.getConnection();
            stmt=conn.prepareStatement("insert into t_emp(name,salary,age) " +
                    "values(?,?,?)");
            stmt.setString(1, emp.getName());    //stmt,使用set
            stmt.setFloat(2, emp.getSalary());
            stmt.setInt(3, emp.getAge());
            stmt.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }finally{
            DBUtil.close(conn);
        }
    }
    //根据id查询员工信息
    public Employee findById(int id) throws Exception{
        Employee emp=null;
        Connection conn=null;
        PreparedStatement stmt=null;
        ResultSet rs=null;
        try {
            conn=DBUtil.getConnection();
            stmt=conn.prepareStatement("select * from t_emp where id=?");
            stmt.setInt(1, id);
            rs=stmt.executeQuery();
            while(rs.next()){
                 emp=new Employee(
                        rs.getInt("id"),        //结果集rs,使用get
                        rs.getString("name"),
                        rs.getFloat("salary"),
                        rs.getInt("age")
                        );
            }

        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }finally{
            DBUtil.close(conn);
        }

        return emp;
    }
    //修改
    public void modify(Employee emp)throws Exception{  //对整条记录修改
        Connection conn=null;
        PreparedStatement stmt=null;
        try {
            conn=DBUtil.getConnection();
            stmt=conn.prepareStatement("update t_emp set name=?,salary=?,age=? " +
                    "where id=?");
            stmt.setString(1, emp.getName());
            stmt.setFloat(2, emp.getSalary());
            stmt.setInt(3, emp.getAge());
            System.out.println(emp.getAge());
            stmt.setInt(4, emp.getId());
            stmt.executeUpdate();

        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }finally{
            DBUtil.close(conn);
        }
    }
}


dao.UserDAO类

[code]package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBaseIterators.PrecedingIterator;

import entity.User;

public class UserDAO {
    //按名字查找
    public User findByUserName(String username)throws Exception{
        User user=null;
        Connection conn=null;
        PreparedStatement stmt=null;
        ResultSet rs=null;
        try {
            conn=DBUtil.getConnection();
            stmt=conn.prepareStatement("select * from t_user where username=?");
            stmt.setString(1, username);
            rs=stmt.executeQuery();
            while(rs.next()){  //数据加载进rs
                user=new User(
                        rs.getInt("id"),
                        rs.getString("username"),
                        rs.getString("pwd"),
                        rs.getString("name"),
                        rs.getString("gender")
                        );
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }finally{
            DBUtil.close(conn);
        }
        return user;
    }
    //用户名不存在时保存用户信息(增加用户信息)
    public void save(User user) throws Exception{
        Connection conn=null;
        PreparedStatement stmt=null;
        try {
            conn=DBUtil.getConnection();
            stmt=conn.prepareStatement("insert into t_user(username,pwd,name,gender) " +
                    "values(?,?,?,?)");
            stmt.setString(1, user.getUsername());
            stmt.setString(2, user.getPwd());
            stmt.setString(3, user.getName());
            stmt.setString(4, user.getGender());
            stmt.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }finally{
            DBUtil.close(conn);
        }
    }

}


Step 4:创建一个Web.ActionServlet类

[code]package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.EmployeeDAO;
import dao.UserDAO;
import entity.Employee;
import entity.User;

public class ActionServlet extends HttpServlet {

    public void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        //获取请求资源的路径,截取action动作
        String uri=request.getRequestURI();
        String action=uri.substring(uri.lastIndexOf("/")+1,uri.lastIndexOf("."));
        //创建员工管理操作类
        EmployeeDAO dao=new EmployeeDAO();
        //创建用户操作类
        UserDAO Udao=new UserDAO();
        //判断请求动作种类,分不同种类情况处理
        if(action.equals("list")){ //员工信息列表
            try {
                List<Employee> emps=dao.findAll();
                request.setAttribute("emps", emps); //绑定数据到request
                request.getRequestDispatcher("listEmp.jsp").forward(request, response);//转发
            } catch (Exception e){
                e.printStackTrace();
            }
        }else if(action.equals("add")){
            String name=request.getParameter("name");
            float salary=Float.parseFloat(request.getParameter("salary"));
            int age=Integer.parseInt(request.getParameter("age"));
            Employee emp=new Employee();
            emp.setName(name);
            emp.setSalary(salary);
            emp.setAge(age);
            try {
                dao.save(emp);
                response.sendRedirect("list.do");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }else if(action.equals("delete")){
            int id=Integer.parseInt(request.getParameter("id"));
            try {
                dao.delete(id);
                response.sendRedirect("list.do");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }else if(action.equals("load")){//加载某个员工
            int id=Integer.parseInt(request.getParameter("id"));  //字符串转化为整型
            try {
                Employee emp=dao.findById(id);
                request.setAttribute("emp", emp); //绑定数据到request
                request.getRequestDispatcher("updateEmp.jsp").forward(request, response);//转发
            } catch (Exception e) {
                e.printStackTrace();
            }
        }else if(action.equals("update")){
            int id=Integer.parseInt(request.getParameter("id"));  //字符串转化为整型
            String name=request.getParameter("name");
            float salary=Float.parseFloat(request.getParameter("salary"));
            int age=Integer.parseInt(request.getParameter("age"));
            Employee emp=new Employee();
            emp.setName(name);
            emp.setSalary(salary);
            emp.setAge(age);
            emp.setId(id);
            try {
                dao.modify(emp);
                response.sendRedirect("list.do");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }else if(action.equals("regist")){//注册 。若直接用regit.do访问,会插入很多空值
            String username=request.getParameter("username");
            String name=request.getParameter("name");
            String pwd=request.getParameter("pwd");
            String gender=request.getParameter("gender");
            try {
                User user=Udao.findByUserName(username);
                if(user!=null){
                    request.setAttribute("regis_err", "用户名已存在");
                    request.getRequestDispatcher("regist.jsp").forward(request, response);
                }else{
                    user=new User();
                    user.setUsername(username);
                    user.setName(name);
                    user.setPwd(pwd);
                    user.setGender(gender);
                    Udao.save(user);
                    response.sendRedirect("login.jsp");
                }
            } catch (Exception e) {
                e.printStackTrace();
                throw new ServletException(e);
            }

        }else if(action.equals("login")){ //登陆
            String username=request.getParameter("username");
            String pwd=request.getParameter("pwd");
            try {
                User user=Udao.findByUserName(username);
                //System.out.println(user.getUsername());
                if(user==null||!user.getPwd().equals(pwd)){
                    request.setAttribute("login_err", "用户名不正确或者密码错误");
                    request.getRequestDispatcher("login.jsp").forward(request, response);
                }else{
                    response.sendRedirect("list.do");
                    //out.print("登陆成功");
                }
            } catch (Exception e) {
                e.printStackTrace();
                throw new ServletException(e);
            }
        }

    }

}


Step5: 页面设计

登陆界面login.jsp

[code]<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<HTML>
  <HEAD>
    <TITLE>用户登录</TITLE>
    <!--<LINK href="css/User_Login.css" type=text/css rel=stylesheet>-->
    <META http-equiv=Content-Type content="text/html; charset=UTF-8">
  </HEAD>
  <BODY>
    <form action="login.do" method="post">
        <table>
            <tr>
                <td>用户名:  </td>
                <td><input type="text" name="username"/>
            </tr>
            <tr>
                <td>密 码: </td>
                <td><INPUT type="password" name="pwd"/> </td>
            </tr>
        </table>
        <p><INPUT  type="submit" class="button" value="Submit »" /></p>
   </form>
  </BODY>
</HTML>


注册界面regist.jsp

[code]<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>   
    <title>用户注册</title>

 <META http-equiv=Content-Type content="text/html; charset=UTF-8">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
  <h1>注册</h1>
    <form action="regist.do" method="post">
        <table cellpadding="0" cellspacing="0" border="1">
            <tr>
                <td>用户名: </td>
                <td><input type="text" name="username"/>
                 <%
            String errorMsg=(String)request.getAttribute("regis_err");
           %>
          <span style="color:red;"><%=errorMsg==null?"":errorMsg%></span>
                </td>
            </tr>
            <tr>
                <td>真实姓名: </td>
                <td><input type="text" name="name"/></td>
            </tr>
            <tr>
                <td>密码: </td>
                <td><input type="password" name="pwd"/></td>
            </tr>
            <tr>
                <td>性别: </td>
                <td>
                    男<input type="radio" name="gender" checked="checked" value="m"/>
                    女<input type="radio" name="gender" checked="checked" value="f"/>
                </td>
            </tr>
        </table>
        <p><INPUT  type="submit" class="button" value="Submit »" /></p>
    </form>
  </body>
</html>


信息列表界面listEmp.jsp

[code]<%@ page language="java"  contentType="text/html;charset=UTF-8"  pageEncoding="UTF-8"%>
<%@ page import="java.util.*,entity.*" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <title>员工信息</title>
    <meta http-equiv="content-Type" content="text/html;charset=utf-8">
    <link rel="stylesheet" type="text/css" href="css/styles.css">

  </head>

  <body>
    <table class="imagetable">
        <caption>员工信息</caption>
        <tr>
            <td>编号</td>
            <td>姓名</td>
            <td>薪水</td>
            <td>年龄</td>
        </tr>
        <%

            List<Employee> emps=(List<Employee>)request.getAttribute("emps");
            for(int i=0;i<emps.size();i++){
                Employee emp=emps.get(i); 
                //System.out.println(emp.getId());
         %>
        <tr>
            <td><%=emp.getId()%></td>
            <td><%=emp.getName()%></td>
            <td><%=emp.getSalary()%></td>
            <td><%=emp.getAge()%></td>
            <td><a href="delete.do?id=<%=emp.getId()%>" 
                onclick="return confirm('是否确认删除<%=emp.getName() %>的信息?');">删除</a>
                 
                <a href="load.do?id=<%=emp.getId() %>">修改</a>
            </td>
        </tr>
        <%
        } 
        %>
    </table>
    <p>
        <input type="button" class="button" value="增加员工" onclick="location='addEmp.jsp'"/>
    </p>
  </body>
</html>


增加员工界面addEmp.jsp

[code]<%@ page language="java" import="java.util.*,dao.*,entity.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>修改员工信息</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <meta http-equiv="content-Type" content="text/html;charset=utf-8">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
  <body style="font-size:24px">
    <form action="add.do" method="post"> 
        <fieldset>
            <legend>增加员工</legend>
            姓名:<input name="name"/><br>
            薪水:š<input name="salary"/><br> 
            年龄:<input name="age"/><br>
            <input type="submit" value="增加">
        </fieldset>
    </form>
  </body>
</html>


更新数据界面updateEmp.jsp

[code]<%@ page language="java"  contentType="text/html;charset=UTF-8"  pageEncoding="UTF-8"%>
<%@ page import="java.util.*,entity.*" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <title>修改员工信息</title>
    <meta http-equiv="content-Type" content="text/html;charset=utf-8">
    <link rel="stylesheet" type="text/css" href="css/styles.css">
  </head>
  <body>
    <h1>更新员工信息</h1>

        <%
            Employee emp=(Employee)request.getAttribute("emp");
         %>
         <form action="update.do?id=<%=emp.getId()%>" method="post">
            <table cellpadding="0" cellspacing="0" border="0">
                <tr>
                    <td>编号: </td><td><%=emp.getId() %></td>
                </tr>
                <tr>
                    <td>姓名: </td><td><input name='name' value='<%=emp.getName()%>'/></td>
                </tr>
                <tr>
                    <td>薪水: </td><td><input name='salary' value='<%=emp.getSalary()%>'/></td>
                </tr>
                <tr>
                    <td>年龄: </td><td><input name='age' value='<%=emp.getAge()%>'/></td>
                </tr>
            </table>
          <p>
            <input type="submit" class="button" value="修改" />
         </p>
        </form>

  </body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: