基于SSH三大框架的员工管理系统——总结
2016-11-02 15:32
435 查看
基于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>
相关文章推荐
- (一)基于SSH实现员工管理系统之框架整合篇
- Winform开发框架之客户关系管理系统(CRM)的开发总结系列2-基于框架的开发过程
- 基于SSH实现员工管理系统之框架整合篇 学习笔记
- 基于SSH实现员工管理系统之框架整合篇
- 【SSH】:基于Struts2+HIbernate3+Spring3实现员工管理系统之框架整合篇
- RDIFramework.NET ━ .NET快速信息化系统开发框架-4.4 员工(职员)管理
- Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示
- 基于Flex和J2EE的信息管理系统基础框架 Pomer
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架- 5.4平台日志、异常管理、生成自动升级配置文件模块
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架-5.2 表字段综合管理模块
- 基于web信息管理系统的权限设计分析和总结
- Winform开发框架之客户关系管理系统(CRM)的开发总结系列4-Tab控件页面的动态加载
- 基于Flex和J2EE的信息管理系统基础框架 Pomer
- Winform开发框架之权限管理系统改进的经验总结(2)-用户选择界面的设计
- 基于GIS的省级高速公路路面管理系统框架研究
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架 - 5.3 数据库连接管理模块
- 基于ROR框架开发的一套跨平台项目管理系统
- 基于配置实现信息管理系统开发基础框架
- 基于RoR项目管理系统 Redmine WinXp 下安装总结
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架- 5.4平台日志、异常管理、生成自动升级配置文件模块