员工管理-登陆及增删改查功能的实现
来源:互联网 发布:充电宝排行知乎 编辑:程序博客网 时间:2024/05/01 20:02
- 问题
为员工管理系统添加注册和登陆功能,注册时需要进行用户名是否存在的判断,如果存在则出现提示。登陆成功即可对员工信息进行增删改查操作。
- 步骤
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>更新员工信息</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>
补充:
运行环境:
系统:win 7 32bit
IDE:MyEclipse 10
数据库:Mysql 5.6
能让上面的程序跑起来重要的两点:
1、使用JDBC连接Mysql 需要驱动包,
mysql-connector-java-5.1.7-bin.jar
mysql-connector-java-5.1.7-bin.jar
2、需要配置web.xml文件,如下:
<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>ActionServlet</servlet-name> <servlet-class>web.ActionServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ActionServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list></web-app>
0 0
- 员工管理-登陆及增删改查功能的实现
- Java实现AD 部门和员工的增删改查
- SpringMVC实现员工信息的增删改查
- jsp&servlet的登陆界面以及增删改查功能的实现
- struts2-spring-hibernate实现员工的增删查功能
- java建立顺序表及增删改查功能实现
- java创建单链表及增删改查功能实现
- 关于短信模板管理简单的增删改查的功能实现
- 使用三层架构实现简单的MVC登陆操作!并实现基本的增删改查功能!!
- mongodb的使用方法,增删改查功能的实现
- 员工案例增删改查
- 第二周:利用上周所学做个员工管理的增删改查(基本的)
- 流程总结:实现增删改查一组功能的步骤
- SSH实现简单增删改查的功能实例
- JavaScript之实现基本的增删改查功能
- 使用Servlet实现增删改查的功能
- 如何有效实现应用系统的增删改查功能
- fmdb实现sqlite数据库的增删改查功能(上)
- linux下编译log4cpp的方法
- 输入输出操作例子(1)
- zoj 1516 Uncle Tom's Inherited Land(二分匹配·链式前向星)
- 线性表之单链表 图解和代码实现
- 安卓Drawable改变大小
- 员工管理-登陆及增删改查功能的实现
- 内表行数统计方法
- 图片验证码
- 一只“小笨鸟”的大神之路
- 中文参数传递乱码问题
- Python学习笔记_字符串类型内建方法
- Android OkHttp完全解析 是时候来了解OkHttp了
- mysql判断一个字符串是否包含某子串【转】
- C#中的线程(一)入门