员工管理-登陆及增删改查功能的实现
Posted Deen12520
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了员工管理-登陆及增删改查功能的实现相关的知识,希望对你有一定的参考价值。
- 问题
为员工管理系统添加注册和登陆功能,注册时需要进行用户名是否存在的判断,如果存在则出现提示。登陆成功即可对员工信息进行增删改查操作。
- 步骤
Step 1:创建数据库表
新建一个登陆表,t_user表
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
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类
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类
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类
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类
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类
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类
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
<%@ 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
<%@ 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
<%@ 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
<%@ 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
<%@ 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>更新员工信息以上是关于员工管理-登陆及增删改查功能的实现的主要内容,如果未能解决你的问题,请参考以下文章