基于SSH三大框架的员工管理系统——总结
来源:互联网 发布:淘宝最高级别的店铺 编辑:程序博客网 时间:2024/05/10 03:30
基于SSH三大框架的员工管理系统
摘要
本系统为本人学习SSH三大框架时所做的整合实例,系统角色包括普通用户和管理员两种,首页有管理员登录入口链接。系统功能主要包括管理员对用户的基本增、删、改、查和分页显示用户信息等。
系统环境
- 本系统使用eclipse+mysql+jdk1.8+tomcat8进行开发
- 框架使用struts2+hibernate3+spring3
页面展示
- 首页一开始没考虑屏幕分辨率和比例问题以及浏览器的兼容问题,后该用bootstrap简单模板,达到兼容旧版IE浏览器效果,并且为响应式布局,屏幕可任意缩放。
- 注册页面采用angularJS前端框架实现客户端表单验证
- 日期使用jedate.js控件
- 注册成功提示(后台为新注册用户分配三个随机邀请码用于邀请其他用户注册本系统)
- 个人主页使用easyui框架
- 管理员首页(可分页显示用户)
- 添加用户
核心代码解析
1、随机邀请码生成
使用UUID并将其切片,取前八位作为验证码(本算法尚不成熟,在大量使用后可能出现重复)
public static String[] codeMaker() { String[] code = new String[3]; for (int i=0; i<3; i++) { code[i] = UUID.randomUUID().toString().substring(0,8).toUpperCase(); } return code; }
2、登录验证
- action层
public String login() { User existUser = userService.login(user); if (existUser == null) { this.addActionError("用户名或密码错误"); return INPUT; } else { ActionContext.getContext().getSession().put("currUser", existUser); return SUCCESS; } }
- service层
拿到从表单提交并封装到实体的user对象,将其作为参数传递给数据库,调用dao层函数,核对相应用户名和密码是否存在并一致
@Override /** * 业务层登陆的方法 */ public User login(User user) { User existUser = userDao.findByUsernameAndPassword(user); return existUser; }
- dao层
使用hibernate模板方法查询相应对象,若查到则返回对象,用于action层作处理
@SuppressWarnings("unchecked") @Override /** * dao中根据用户名和密码查询用户的方法 */ public User findByUsernameAndPassword(User user) { String hql = "from User where username = ? and password = ?"; List<User> list = this.getHibernateTemplate().find(hql, user.getUsername(), user.getPassword()); if (list.size() > 0) { return list.get(0); } return null; }
- view层
<body> <div id="cc" class="easyui-layout" fit=true style="width:100%;height:100%;"> <div region="west" split="true" title="菜单" style="width:200px;"> <div id="aa" class="easyui-accordion" fit=true> <div title="功能导航" selected="true" style="overflow:auto;padding:10px;"> <div class="tab" style="border: 1px;"> <a href="user_info">个人信息</a> </div> <div class="tab" style="border: 1px;"> <a href="user_invite">已邀请人的信息</a> </div> <div class="tab" style="border: 1px;"> <a href="user_code">邀请码信息</a> </div> </div> </div> </div> <div region="center" title="主界面" style="padding:5px;"> <div id="welcome" class="tab"> <span>欢迎你,${currUser.name }</span> <span> <a href="${ctx }/index.jsp">退出系统</a> </span> </div> <div id="tt" class="easyui-tabs" fit=true style="width:500px;height:250px;"></div> </div> </div></body>
3、分页显示
- action层
public String findAll() { PageBean<User> pageBean = adminService.findAll(currPage); List<User> list = pageBean.getList(); ActionContext.getContext().getValueStack().push(pageBean); ActionContext.getContext().getSession().put("users", list); return "findAll"; }
- 实体层
private int currPage; //当前页 private int pageSize; //每页显示记录数 private int totalCount; //总记录 private int totalPage; //总页数 private List<T> list; //封装实体
- 业务层
// 分页查询所有用户 @Override public PageBean<User> findAll(int currPage) { PageBean<User> pageBean = new PageBean<User>(); // 封装pageBean pageBean.setCurrPage(currPage); // 当前页数 int pageSize = 10; pageBean.setPageSize(pageSize); // 每页记录数 int totalCount = adminDao.findCount(); pageBean.setTotalCount(totalCount); // 总记录数 double tc = totalCount; // 总页数 Double num = Math.ceil(tc / pageSize); pageBean.setTotalPage(num.intValue()); int begin = (currPage - 1) * pageSize; // 每页开始的记录索引 List<User> list = adminDao.findByPage(begin,pageSize); // list用来封装用户集合 pageBean.setList(list); return pageBean; }
- dao层
@SuppressWarnings("unchecked") @Override public List<User> findAll() { String hql = "select * from User where uid != 1"; List<User> list = this.getHibernateTemplate().find(hql); if (list.size() > 0) { return list; } return null; } @SuppressWarnings("unchecked") @Override public int findCount() { String hql = "select count(*) from User"; List<Long> list = this.getHibernateTemplate().find(hql); if(list.size() > 0) { return list.get(0).intValue(); } return 0; } /** * 分页函数 */ @SuppressWarnings("unchecked") @Override public List<User> findByPage(int begin, int pageSize) { DetachedCriteria criteria = DetachedCriteria.forClass(User.class); List<User> list = this.getHibernateTemplate().findByCriteria(criteria, begin, pageSize); return list; }
- view层
<div id="page" align="left" class="font"> <table border="0" cellspacing="0" cellpadding="0" width="500px"> <tr> <td align="left"> <span>第<s:property value="currPage" />/<s:property value="totalPage" />页</span> <span> 总记录数:<s:property value="totalCount" /> 每页显示:<s:property value="pageSize" /> </span> <span> <s:if test="currPage != 1"> <a href="${ctx }/admin_findAll?currPage=1">[首页]</a> <a href="${ctx }/admin_findAll?currPage=<s:property value="currPage-1"/>">[上一页]</a> </s:if> <s:if test="currPage != totalPage"> <a href="${ctx }/admin_findAll?currPage=<s:property value="currPage+1"/>">[下一页]</a> <a href="${ctx }/admin_findAll?currPage=<s:property value="totalPage"/>">[尾页]</a> </s:if> </span> </td> </tr> </table> </div>
0 0
- 基于SSH三大框架的员工管理系统——总结
- 基于SSH的员工管理系统(三)——配置文件
- 基于SSH实现员工管理系统之框架整合篇
- 基于SSH的员工管理系统(一)——包结构
- 基于SSH的员工管理系统(二)——lib详解
- 基于ssh框架的教务管理系统
- 【SSH】:基于Struts2+HIbernate3+Spring3实现员工管理系统之框架整合篇
- (一)基于SSH实现员工管理系统之框架整合篇
- 基于SSH实现员工管理系统之框架整合篇 学习笔记
- 使用SSH三大框架实现一个简单的学生管理系统的登录
- SSH三大框架的整合 (基于xml)
- 基于XML配置的SSH三大框架整合
- 基于JavaEE(SSH)实现员工管理系统案例
- 基于SSH实现员工管理系统登录权限的过滤器与拦截器的综合使用
- 基于三层架构的员工管理系统
- 基于tcp、数据库的员工管理系统
- ssh三大框架:SSH三大框架的作用
- 【SSH】——梳理三大框架
- 【miscellaneous】单播、广播和多播IP地址
- Matlab 2014b调试程序时怎么进行单步运行
- Python3将数据保存为txt文件
- LeetCode413 Arithmetic Slices| 动态规划
- Java数据结构-LinkedList
- 基于SSH三大框架的员工管理系统——总结
- 项目管理规范
- BSOJ 3537 CODEVS1315 洛谷P1077 【noip2012普及】摆花 分配类DP优化 (不要满足于n*m*m)
- 静态库(Static Library)和动态框架(Dynamic Framework)
- Spring定时器
- bzoj4562 [Haoi2016]食物链
- ios 如何生成cpp文件
- Centos6 防火墙设置
- 每分钟有2K用户访问,服务器端处理请求选择用多线程(每个用户一个线程),还是用I/O复用?