JavaWeb 人员管理系统 | 您所在的位置:网站首页 › 基于web的企业员工管理系统设计 › JavaWeb 人员管理系统 |
JavaWeb 人员管理系统
1 需求:用户信息的增删改查功能
技术选型:Servlet+Jsp+Mysql+JDBCTempleat+Druid+BeanUtils+Tomcat
效果图展示
创建两张表 一张管理员表 以及 一张用户表 -- 创建数据库 Day18 CREATE DATABASE day18; USE day18; -- 管理员表 CREATE TABLE manager( username VARCHAR(32) PRIMARY KEY, PASSWORD VARCHAR(32) ); INSERT INTO manager (username,PASSWORD) VALUES('zhangsan','123'); INSERT INTO manager(username,PASSWORD)VALUES('lisi',123); SELECT * FROM manager; -- 用户表 CREATE TABLE USER( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(32) NOT NULL, gender VARCHAR(32), age INT, address VARCHAR(32), qq VARCHAR(32), email VARCHAR(32) ); -- 添加人员信息 INSERT INTO USER(id,NAME,gender,age,address,qq,email) VALUES(1,'张三','男',21,'北京','123','[email protected]'); INSERT INTO USER(id,NAME,gender,age,address,qq,email) VALUES(NULL,'李四','女',20,'上海','456','[email protected]'); SELECT * FROM USER;创建一个新的Module 创建manager 和 user 表的Bean对象 //manager package cn.tll.domain; public class Manager { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "Manager{" + "username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }user package cn.tll.domain; public class User { private int id; private String name; private String gender; private int age; private String address; private String qq; private String email; 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 getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getQq() { return qq; } public void setQq(String qq) { this.qq = qq; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", gender='" + gender + '\'' + ", age=" + age + ", address='" + address + '\'' + ", qq='" + qq + '\'' + ", email='" + email + '\'' + '}'; } }PageBean package cn.tll.domain; import java.util.List; //添加一个泛型 public class PageBean { private int totalCount; //总记录数 private int totalPage; //总页码数 private List list; //每页的数据 private int currentPage; //当前页码 private int rows; //每页显示的记录数 public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public List getList() { return list; } public void setList(List list) { this.list = list; } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public int getRows() { return rows; } public void setRows(int rows) { this.rows = rows; } @Override public String toString() { return "PageBean{" + "totalCount=" + totalCount + ", totalPage=" + totalPage + ", list=" + list + ", currentPage=" + currentPage + ", rows=" + rows + '}'; } } 添加配置文件 druid.properties driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql:///day18 username=root password=root # 初始化连接数量 initialSize=5 # 最大连接数 maxActive=10 # 最大等待时间 maxWait=3000 创建JDBC工具类 ,使用Druid连接池 package cn.tll.util; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; /** * JDBC工具类 使用Druid数据库连接池 */ public class JDBCUtils { private static DataSource ds; //使用静态代码块 好处不需要实例化就可以调用 static { try { //1.加载配置文件 Properties pro = new Properties(); //2.使用ClassLoder加载配置文件,获取字节输入流 InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"); pro.load(is); //初始化连接池对象 ds = DruidDataSourceFactory.createDataSource(pro); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } /** *获取数据库连接池对象 */ public static DataSource getDataSource(){ return ds; } /** * 获取连接Connection对象 */ public static Connection getConnection() throws SQLException { return ds.getConnection(); } } 使用mvc架构设计 创建service 与 dao文件夹目录 UserDao 代码 package cn.tll.dao; import cn.tll.domain.Manager; import cn.tll.domain.User; import java.util.List; import java.util.Map; public interface UserDao { List findAll(); Manager findByUsernameAndPassword(String username, String password); void addUser(User user); void delUser(int id); User findUser(String id); void updateUser(User user); int findByPageTotal(Map contition); List findByPage(int start, int rows, Map contition); } ServiceUserService 接口类 package cn.tll.service; import cn.tll.domain.Manager; import cn.tll.domain.PageBean; import cn.tll.domain.User; import java.util.List; import java.util.Map; public interface UserService { /** * 查询所有用户信息 * @return */ List findAll(); Manager login(Manager manager); void addUser(User user); void delUser(String id); User findUser(String id); void updateUser(User user); PageBean findUserByPage(String currentPage, String rows, Map contition); void delSelect(String[] uids); }UserServiceImpl方法实现类 package cn.tll.service.impl; import cn.tll.dao.UserDao; import cn.tll.dao.impl.UserDaoimpl; import cn.tll.domain.Manager; import cn.tll.domain.PageBean; import cn.tll.domain.User; import cn.tll.service.UserService; import java.util.List; import java.util.Map; public class UserServiceImpl implements UserService { //创建UserDao对象 private UserDao dao = new UserDaoimpl(); @Override public List findAll() { //调用dao完成查询 return dao.findAll(); } /** * 查询管理员表中是否有相应的数据 登录验证 * @param manager * @return */ @Override public Manager login(Manager manager) { return dao.findByUsernameAndPassword(manager.getUsername(),manager.getPassword()); } /** * 添加用户信息 * @param user */ @Override public void addUser(User user) { dao.addUser(user); } /** * 删除用户 * @param id */ @Override public void delUser(String id) { dao.delUser(Integer.parseInt(id)); } //通过id 查询整个user对象 @Override public User findUser(String id) { return dao.findUser(id); } //更新用户信息 @Override public void updateUser(User user) { dao.updateUser(user); } @Override public PageBean findUserByPage(String _currentPage, String _rows, Map contition) { int currentPage = Integer.parseInt(_currentPage); int rows = Integer.parseInt(_rows); //健壮性判断 if (currentPage //遍历 一个一个删除 if (uids != null&&uids.length>0){ for (String uid : uids) { //调用dao删除 dao.delUser(Integer.parseInt(uid)); } } } }测试方法类 package cn.tll.test; import cn.tll.domain.Manager; import cn.tll.service.UserService; import cn.tll.service.impl.UserServiceImpl; import org.junit.Test; public class TestAnli { @Test public void loginTest(){ Manager manager = new Manager(); manager.setUsername("zhangsan"); manager.setPassword("123"); UserService service = new UserServiceImpl(); Manager login = service.login(manager); System.out.println(login); } } ServletAddServlet 添加用户信息类 package cn.tll.web.servlet; import cn.tll.domain.User; import cn.tll.service.UserService; import cn.tll.service.impl.UserServiceImpl; import org.apache.commons.beanutils.BeanUtils; 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.lang.reflect.InvocationTargetException; import java.util.Map; @WebServlet("/addServlet") public class AddServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.设置编码 request.setCharacterEncoding("utf-8"); //2.获取添加的信息 并且封装成user对象 Map map = request.getParameterMap(); User user = new User(); try { BeanUtils.populate(user,map); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } //3.创建UserService对象 UserService service = new UserServiceImpl(); service.addUser(user); //4.添加成功后重定向到 response.sendRedirect(request.getContextPath()+"/findUserByPageServlet"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }ChecckedCodeServlet 二维码更新类 package cn.tll.web.servlet; import javax.imageio.ImageIO; 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.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; /** * 验证码 */ @WebServlet("/checkCodeServlet") public class CheckCodeServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { //服务器通知浏览器不要缓存 response.setHeader("pragma","no-cache"); response.setHeader("cache-control","no-cache"); response.setHeader("expires","0"); //在内存中创建一个长80,宽30的图片,默认黑色背景 //参数一:长 //参数二:宽 //参数三:颜色 int width = 80; int height = 30; BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //获取画笔 Graphics g = image.getGraphics(); //设置画笔颜色为灰色 g.setColor(Color.GRAY); //填充图片 g.fillRect(0,0, width,height); //产生4个随机验证码,12Ey String checkCode = getCheckCode(); //将验证码放入HttpSession中 request.getSession().setAttribute("CHECKCODE_SERVER",checkCode); //设置画笔颜色为黄色 g.setColor(Color.YELLOW); //设置字体的小大 g.setFont(new Font("黑体",Font.BOLD,24)); //向图片上写入验证码 g.drawString(checkCode,15,25); //将内存中的图片输出到浏览器 //参数一:图片对象 //参数二:图片的格式,如PNG,JPG,GIF //参数三:图片输出到哪里去 ImageIO.write(image,"PNG",response.getOutputStream()); } /** * 产生4位随机字符串 */ private String getCheckCode() { String base = "0123456789ABCDEFGabcdefg"; int size = base.length(); Random r = new Random(); StringBuffer sb = new StringBuffer(); for(int i=1;i this.doGet(request,response); } }DelSelectServlet 多选 删除人员信息 package cn.tll.web.servlet; import cn.tll.service.UserService; import cn.tll.service.impl.UserServiceImpl; 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("/DelSelectServlet") public class DelSelectServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.设置编码 request.setCharacterEncoding("utf-8"); //2.获取参数 String[] uids = request.getParameterValues("uid"); //3.调用Uservice 删除 UserService service = new UserServiceImpl(); service.delSelect(uids); //4.跳转到findUserByPage response.sendRedirect(request.getContextPath()+"/findUserByPageServlet"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }DelUserServlet package cn.tll.web.servlet; import cn.tll.service.UserService; import cn.tll.service.impl.UserServiceImpl; 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("/delUserServlet") public class DelUserServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.设置编码 request.setCharacterEncoding("utf-8"); //2.获取要删除的id String id = request.getParameter("id"); //3.调用Uservice UserService service = new UserServiceImpl(); service.delUser(id); //4.重转发到UserListServlet response.sendRedirect(request.getContextPath()+"/findUserByPageServlet"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }FindUserByPage 分页查询用户信息 package cn.tll.web.servlet; import cn.tll.domain.PageBean; import cn.tll.domain.User; import cn.tll.service.UserService; import cn.tll.service.impl.UserServiceImpl; 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("/findUserByPageServlet") public class FindUserByPageServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.设置编码 request.setCharacterEncoding("utf-8"); //2.获取参数 String currentPage = request.getParameter("currentPage"); //当前页码数 String rows = request.getParameter("rows"); //每页显示条数 //默认页码数为1 显示条数为5 if (currentPage == null ||"".equals(currentPage)){ currentPage = "1"; } if (rows == null || "".equals(rows)){ rows = "5"; } //获取查询参数 Map contition = request.getParameterMap(); //条用Uservice 分页查询 UserService service = new UserServiceImpl(); PageBean pb = service.findUserByPage(currentPage,rows,contition); //将pb存储到request中 request.setAttribute("pb",pb); //查询条件存储到request中 查询完后查询信息显示到查询框中 request.setAttribute("contition",contition); //转发到list.jsp中 request.getRequestDispatcher("/list.jsp").forward(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }LoginServlet 登录 package cn.tll.web.servlet; import cn.tll.domain.Manager; import cn.tll.service.UserService; import cn.tll.service.impl.UserServiceImpl; import org.apache.commons.beanutils.BeanUtils; 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 javax.servlet.http.HttpSession; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.Map; @WebServlet("/loginServlet") public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.设置编码格式 request.setCharacterEncoding("utf-8"); //2.获取数据 //2.1获取用户填写验证码 String verifycode = request.getParameter("verifycode"); //3.获取CheckCodeServlet存储的验证码 HttpSession session = request.getSession(); String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER"); //获取完成后 确保验证码一次性 session.removeAttribute("CHECKCODE_SERVER"); //判断验证码是否一致 if (!checkcode_server.equalsIgnoreCase(verifycode)){ //验证码错误 //提示信息 request.setAttribute("login_msg","验证码错误"); //跳转到登录界面 request.getRequestDispatcher("/login.jsp").forward(request,response); return; } //使用BeanUtils封装User对象 Map map = request.getParameterMap(); Manager manager = new Manager(); try { BeanUtils.populate(manager,map); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } //调用Uservice查询 UserService service = new UserServiceImpl(); Manager loginUser = service.login(manager); //判断是否登录成功 if (loginUser!=null){ //管理员登录成功 //将用户存入session session.setAttribute("loginSucc",loginUser); //重定向 经过一次重定向后,request内的对象将无法使用,request中存放的变量全部失效 //必须是绝对路径 response.sendRedirect(request.getContextPath()+"/index.jsp"); }else { //登录失败 存储错误信息 request.setAttribute("login_msg","用户名或密码错误"); //转发到登录界面 转发 可以是相对路径也可以是绝对路径 request.getRequestDispatcher("/login.jsp").forward(request,response); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }FindUserservlet 根据id 查询 id对应的user所有信息 (用于更新信息时将原信息存放到更新表中) package cn.tll.web.servlet; import cn.tll.domain.User; import cn.tll.service.UserService; import cn.tll.service.impl.UserServiceImpl; 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("/findUserServlet") public class FindUserServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.设置编码 request.setCharacterEncoding("utf-8"); //2.获取id参数 String id = request.getParameter("id"); //3.调用Uservice UserService service = new UserServiceImpl(); User user = service.findUser(id); //4.储存到request中 request.setAttribute("user",user); //5.转发到update.jsp request.getRequestDispatcher("/update.jsp").forward(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }UpdateUserservlet 更新信息 package cn.tll.web.servlet; import cn.tll.domain.User; import cn.tll.service.UserService; import cn.tll.service.impl.UserServiceImpl; import org.apache.commons.beanutils.BeanUtils; 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.lang.reflect.InvocationTargetException; import java.util.Map; @WebServlet("/updateUserServlet") public class UpdateUserServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.设置编码 request.setCharacterEncoding("utf-8"); //2.获取更新数据 并封装 Map map = request.getParameterMap(); User user = new User(); try { BeanUtils.populate(user,map); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } //3.使用service 更新 UserService service = new UserServiceImpl(); service.updateUser(user); //4.重定向到UserListServlet response.sendRedirect(request.getContextPath()+"/findUserByPageServlet"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } } 交互界面 jsplogin,jsp 登录界面 管理员登录 //切换验证码 function refreshCode() { //获取验证码图像对象 var vcode = document.getElementById("vcode"); //设置其src属性,加上时间撮 获取虚拟目录 vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time ="+new Date().getTime(); } 管理员登录 用户名: 密码: 验证码: × ${login_msg}index.jsp 登录成功跳转的界面 首页 ${loginSucc.username},欢迎你 查询所有用户信息list.jsp 查询界面 用户信息管理系统 td, th { text-align: center; } function deleteUser(id) { //用户安全提示 if(confirm("你确定要删除么?")){ //访问路径 location.href = "${pageContext.request.contextPath}/delUserServlet?id="+id; } } window.onload = function (){ //给删除选中按钮添加点击事件 document.getElementById("delSelected").onclick = function (){ if (confirm("你确定要删除选中条目么?")){ var falg = false; //判断是否有选中条目 var Cbs = document.getElementsByName("uid"); for (var i = 0; i //有一个条目选中了 falg = true; break; } } if (falg){ //表单提交 document.getElementById("form").submit(); } } } //获取第一个复选框 document.getElementById("firstCb").onclick = function (){ //获取下面所有的id var cbs = document.getElementsByName("uid"); //遍历 for (var i = 0; i s.count} ${user.name} ${user.gender} ${user.age} ${user.address} ${user.qq} ${user.email} 修改; 删除 « ${i} ${i} » 共${pb.totalCount}条记录,共${pb.totalPage}页add.jsp 添加用户信息界面 添加用户 添加联系人页面 姓名: 性别: 男 女 年龄: 籍贯: 广东 广西 湖南 QQ: Email:update.jsp 更新信息界面 修改用户 修改联系人 姓名: 性别: 男 女 男 女 年龄: 籍贯: 广东 广西 湖南 广东 广西 湖南 广东 广西 湖南 QQ: Email: 最后添加一个权限 (Filter)过滤器 package cn.tll.web.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import java.io.IOException; @WebFilter("/*") public class LoginFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { //强制转换req ==>request HttpServletRequest request = (HttpServletRequest) req; //获取URI URI短一点 URL长一点 String uri = request.getRequestURI(); //注意判断是否包含登录界面 js css 二维码验证 资源 if (uri.contains("/login.jsp")||uri.contains("/loginServlet")||uri.contains("/css/")||uri.contains("/js/")||uri.contains("/fonts/")||uri.contains("/checkCodeServlet")){ chain.doFilter(req, resp); }else { //不包含 需要判断用户是否登录 //从session中获取user Object loginSucc = request.getSession().getAttribute("loginSucc"); if (loginSucc!=null){ //已经登录过 chain.doFilter(req, resp); }else { //没有登录 存储信息到login_msg 并且跳转到登录界面 request.setAttribute("login_msg","你还未登录,请登录"); request.getRequestDispatcher("/login.jsp").forward(req,resp); } } } public void init(FilterConfig config) throws ServletException { } public void destroy() { } } 文件源码下载百度云下载地址 提取码:2ak8 技术小白 有任何问题欢迎指点 |
CopyRight 2018-2019 实验室设备网 版权所有 |