SpringMVC学习(12):基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
到这里已经写到第12篇了,前11篇基本上把Spring MVC主要的内容都讲了,现在就直接上一个项目吧,希望能对有需要的朋友有一些帮助。
一、首先看一下项目结构:

InfrastructureProjects:是抽取出的基础项目,主要封装了一些通用的操作。
SpringMVC3Demo:就是管理系统所在的项目。
WeiXinAPI:是之前做微信管理平台测试时封装一些操作,如果不需要把该项目移除即可。
注:项目的前端UI框架用的是国外的一个基于Bootstrap框架的开发的Demo,如不需要替换为自己熟悉的UI框架即可。
二、实现的功能:
登录:

注册:

首页:

用户管理:

账户绑定:

角色管理:

角色授权:

权限管理:

组织机构管理:

这是权限添加界面:

PS:
1.关于权限配置:权限配置是按正则表达式匹配的,可参见下表是我现在数据库里面的权限配置:

2.在Hibernate配置文件比如Role.hbm.xml中,authorities一对多我这里配的是lazy="false",是因为在用户登录时检查权限肯定要获取对应Role下的所有authorities,所以没必要开lazy加载,但是如果你要添加其它功能是,请根据需求来决定是否开lazy,比如账户—>订单这样的就需要开lazy。关于Hibernate网上有很多资料可供参考,这里推荐一下刘冬大哥写的NHibernate系列文章:http://www.cnblogs.com/GoodHelper/category/214139.html可以作为学习Hibernate的参考。
3.由于OpenSessionInView会有性能上的损失,所以项目没有开OpenSessionInView,而且Hibernate的事务是配置到Service的,所以请在Service层返回数据时准备好所有需要的数据,否则在Controller或View中想调用lazy加载数据会抛出事务已关闭的异常。
4.运行项目时最好用新的chrome或firefox浏览器,Bootstrap3不支持IE8以下浏览器,而且用IE的话要想完全显示出Bootstrap3的效果则至少IE10.
5.由于最近事情比较多,项目的国际化还没来得及添加,可以根据系列(8)所讲的内容自行添加也算做练手(^.^)~~~
6.项目引用的jar包是用的User Library添加进的,在把项目解压到本地时有可能里面的引用的路径和我机器上的不一样,如果包路径不正确请按包在自己机器上的路径进行更改。
代码下载:http://pan.baidu.com/s/1sjwdPLz
总共70多MB,但是别激动,项目没那么大主要是找需要的包时,下载的zip文件解压后会有一堆包文件,很多是没用到的,我没删都放在Dependence文件夹下面了,只是在项目中对需要的包添加了引用。
数据库文件下载:http://pan.baidu.com/s/1i33gczN
PPS:因为这个系统有2个项目,一个是通用的基础项目,一个是网站,当时为了管理包的方便所以用了User Library的方式添加项目中需要的包,前些时间感觉电脑越来越慢了,就把电脑中的虚拟机卸载掉了,只保留的项目的源码,然后有朋友告诉我项目导入后User Library里面内容是空的,之后我把项目导入到我win系统中的eclipse中也发现User Library没有内容(又遇到了一个坑,还是我用的方式不对?)。所以,不知道User Library引用什么包的朋友可以参考第11篇的项目源码,里面引用的包是直接添加到项目里面的,当然第11篇引用的包是少于这个项目的,不过少引用的包根据提示到Dependence文件夹下找到后添加即可,另:Infrastructure Projects中引用的User Library和SpringMVC3 Demo引用的是不同的,需要注意。
PPPS:贴一下一个朋友调试成功项目所引用的包(我机器的开发环境没有了,懒得折腾了,原谅我的懒惰~),给需要的做一个参考:
InfrastructureProjects项目:
/InfrastructureProjects/lib/antlr-2.7.7.jar
/InfrastructureProjects/lib/dom4j-1.6.1.jar
/InfrastructureProjects/lib/hibernate-commons-annotations-4.0.2.Final.jar
/InfrastructureProjects/lib/hibernate-core-4.2.8.Final.jar
/InfrastructureProjects/lib/hibernate-jpa-2.0-api-1.0.1.Final.jar
/InfrastructureProjects/lib/javassist-3.18.1-GA.jar
/InfrastructureProjects/lib/jboss-logging-3.1.0.GA.jar
/InfrastructureProjects/lib/jboss-transaction-api_1.1_spec-1.0.1.Final.jar
/InfrastructureProjects/lib/jstl.jar
/InfrastructureProjects/lib/spring-beans-3.2.5.RELEASE
/InfrastructureProjects/lib/standard.jar
SpringMvc3Demo项目:
antlr-2.7.7.jar
aopalliance-1.0.jar
aspectjrt.jar
aspectjweaver.jar
commons-beanutils-1.8.0.jar
commons-collections-3.2.1.jar
commons-fileupload-1.3.1.jar
commons-io-2.4.jar
commons-lang-2.5.jar
commons-logging-1.1.3.jar
dom4j-1.6.1.jar
ezmorph-1.0.6.jar
hibernate-commons-annotations-4.0.2.Final.jar
hibernate-core-4.2.8.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-validator-4.3.1.Final.jar
hibernate-validator-annotation-processor-4.3.1.Final.jar
jackson-core-asl-1.9.13.jar
jackson-mapper-asl-1.9.13.jar
javassist-3.18.1-GA.jar
jboss-logging-3.1.0.CR2.jar
jboss-logging-3.1.0.GA.jar
jboss-transaction-api_1.1_spec-1.0.1.Final.jar
joda-time-2.3.jar
json-lib-2.4-jdk15.jar
jstl.jar
mysql-connector-java-5.1.10.jar
proxool-0.9.1.jar
proxool-cglib.jar
spring-aop-3.2.5.RELEASE.jar
spring-aop-3.2.5.RELEASE-javadoc.jar
spring-aop-3.2.5.RELEASE-sources.jar
spring-aspects-3.2.5.RELEASE.jar
spring-aspects-3.2.5.RELEASE-javadoc.jar
spring-aspects-3.2.5.RELEASE-sources.jar
spring-beans-3.2.5.RELEASE.jar
spring-beans-3.2.5.RELEASE-javadoc.jar
spring-beans-3.2.5.RELEASE-sources.jar
spring-build-src-3.2.5.RELEASE.jar
spring-context-3.2.5.RELEASE.jar
spring-context-3.2.5.RELEASE-javadoc.jar
spring-context-3.2.5.RELEASE-sources.jar
spring-context-support-3.2.5.RELEASE.jar
spring-context-support-3.2.5.RELEASE-javadoc.jar
spring-context-support-3.2.5.RELEASE-sources.jar
spring-core-3.2.5.RELEASE.jar
spring-core-3.2.5.RELEASE-javadoc.jar
spring-core-3.2.5.RELEASE-sources.jar
spring-expression-3.2.5.RELEASE.jar
spring-expression-3.2.5.RELEASE-javadoc.jar
spring-expression-3.2.5.RELEASE-sources.jar
spring-instrument-3.2.5.RELEASE.jar
spring-instrument-3.2.5.RELEASE-javadoc.jar
spring-instrument-3.2.5.RELEASE-sources.jar
spring-instrument-tomcat-3.2.5.RELEASE.jar
spring-instrument-tomcat-3.2.5.RELEASE-javadoc.jar
spring-instrument-tomcat-3.2.5.RELEASE-sources.jar
spring-jdbc-3.2.5.RELEASE.jar
spring-jdbc-3.2.5.RELEASE-javadoc.jar
spring-jdbc-3.2.5.RELEASE-sources.jar
spring-jms-3.2.5.RELEASE.jar
spring-jms-3.2.5.RELEASE-javadoc.jar
spring-jms-3.2.5.RELEASE-sources.jar
spring-orm-3.2.5.RELEASE.jar
spring-orm-3.2.5.RELEASE-javadoc.jar
spring-orm-3.2.5.RELEASE-sources.jar
spring-oxm-3.2.5.RELEASE.jar
spring-oxm-3.2.5.RELEASE-javadoc.jar
spring-oxm-3.2.5.RELEASE-sources.jar
spring-struts-3.2.5.RELEASE.jar
spring-struts-3.2.5.RELEASE-javadoc.jar
spring-struts-3.2.5.RELEASE-sources.jar
spring-test-3.2.5.RELEASE.jar
spring-test-3.2.5.RELEASE-javadoc.jar
spring-test-3.2.5.RELEASE-sources.jar
spring-tx-3.2.5.RELEASE.jar
spring-tx-3.2.5.RELEASE-javadoc.jar
spring-tx-3.2.5.RELEASE-sources.jar
spring-web-3.2.5.RELEASE.jar
spring-web-3.2.5.RELEASE-javadoc.jar
spring-web-3.2.5.RELEASE-sources.jar
spring-webmvc-3.2.5.RELEASE.jar
spring-webmvc-3.2.5.RELEASE-javadoc.jar
spring-webmvc-3.2.5.RELEASE-sources.jar
spring-webmvc-portlet-3.2.5.RELEASE.jar
spring-webmvc-portlet-3.2.5.RELEASE-javadoc.jar
spring-webmvc-portlet-3.2.5.RELEASE-sources.jar
standard.jar
validation-api-1.0.0.GA.jar
PPPPS:请把InfrastructureProjects项目中ChainEntityDao类中的setLevelCode方法改为以下代码:
protected void setLevelCode(EntityType entity) throws ValidatException {
PKType id=(PKType)super.getSession().save(entity);
if(entity.getParent()==null){
entity.setLevelCode(id.toString());
super.getSession().update(entity);
}
else{
EntityType parentEntity=super.get(entity.getParent().getId());
if(parentEntity==null)
throw new ValidatException("The parent does not exist!");
else{
entity.setLevelCode(parentEntity.getLevelCode()+","+id.toString());
super.getSession().update(entity);
}
}
/*DecimalFormat df = new DecimalFormat( "000" );
EntityType maxLevelCodeEntity;
if(entity.getParent()==null)
maxLevelCodeEntity=getMaxLevelCodeExceCurrentEntity(null, entity.getId());
else
maxLevelCodeEntity=getMaxLevelCodeExceCurrentEntity(entity.getParent().getId(), entity.getId());
if(maxLevelCodeEntity==null){
if(entity.getParent()==null)
entity.setLevelCode(df.format(1));
else
entity.setLevelCode(entity.getParent().getLevelCode()+df.format(1));
}
else{
String maxLevelCodeStr=maxLevelCodeEntity.getLevelCode();
int maxLevelCode=Integer.parseInt(maxLevelCodeStr.substring(maxLevelCodeStr.length()-3, maxLevelCodeStr.length()));
if(maxLevelCode+1>999)
throw new ValidatException("The levelcode exceeds the maximum of 999!");
else{
if(entity.getParent()==null)
entity.setLevelCode(df.format(maxLevelCode+1));
else
entity.setLevelCode(entity.getParent().getLevelCode()+df.format(maxLevelCode+1));
}
}*/
}
http://www.cnblogs.com/liukemng/p/3754269.html
SpringMVC学习(12):基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现的更多相关文章
- SpringMVC Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
SpringMVC学习系列(12) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现 到这里已经写到第12篇了,前11篇基本上把Spring M ...
- SpringMVC学习系列(12) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
到这里已经写到第12篇了,前11篇基本上把Spring MVC主要的内容都讲了,现在就直接上一个项目吧,希望能对有需要的朋友有一些帮助. 一.首先看一下项目结构: InfrastructureProj ...
- SpringMVC(12)完结篇 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
到这里已经写到第12篇了,前11篇基本上把Spring MVC主要的内容都讲了,现在就直接上一个项目吧,希望能对有需要的朋友有一些帮助. 一.首先看一下项目结构: InfrastructureProj ...
- springMVC学习(12)-使用拦截器
一.拦截器配置和测试: 1)定义两个拦截器,(要实现HandlerInterceptor接口) HandlerInterceptor1: package com.cy.interceptor; imp ...
- ExtJS4.2学习(12)基于表格的右键菜单(转)
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-24/181.html --------------- ...
- Spring MVC 学习总结(十)——Spring+Spring MVC+MyBatis框架集成(IntelliJ IDEA SSM集成)
与SSH(Struts/Spring/Hibernate/)一样,Spring+SpringMVC+MyBatis也有一个简称SSM,Spring实现业务对象管理,Spring MVC负责请求的转发和 ...
- Spring,SpringMVC,MyBatis,Hibernate,Servlet的生命周期,jsp有哪些内置对象,Tomcat,Cookie和Session的作用以及区别,oracle,MYSQL等面试题总结
1. 什么是Spring,谈谈你对Spring的理解 Spring是我们JAVA开发人员在搭建后台时选用的一个轻量级的开源框架,Spring框架目前也是功能丰富,十分优秀企业级采用最多的一个框架. S ...
- 基于Spring + Spring MVC + Mybatis 高性能web构建
基于Spring + Spring MVC + Mybatis 高性能web构建 一直想写这篇文章,前段时间 痴迷于JavaScript.NodeJs.AngularJs,做了大量的研究,对前后端交互 ...
- Spring + Spring MVC + Hibernate
Spring + Spring MVC + Hibernate项目开发集成(注解) Posted on 2015-05-09 11:58 沐浴未来的我和你 阅读(307) 评论(0) 编辑 收藏 在自 ...
随机推荐
- centos7 利用mailx发送邮件
当需要服务器定时发送邮件到自己邮箱时,一个邮件服务就很重要了,以下主要是mailx的实现,主要是利用 1.安装mailx 1 yum install mailx -y 2.使用到的配置文件只有一个 ...
- python集合set,交集,并集,差集,对称差集,子集和超集
python集合set,交集,并集,差集,对称差集,子集和超集 x = {1, 2, 3, 4} y = {2, 4, 5, 6} # 交集(取x中与y中相同部分) print(x.intersect ...
- VueJS基础框架代码介绍
参考文档 https://vuejs.bootcss.com/v2/api/ https://router.vuejs.org/zh-cn/essentials/getting-started.htm ...
- python之字符串切分
在工作中,经常遇到字符串切分,尤其是操作linux命令,返回一段文本,如下面这种格式 Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G ...
- SCJP读书之知识点:
1:实例变量和局部变量 实例变量:是在类中进行声明的,可以有public,private等修饰符进行修饰. 局部变量:在方法中进行声明,生命周期就是方法开始,到方法结束.但是可以进行对象的引用来调用. ...
- DOS基础使用专题(强烈推荐)2
DOS下硬件设备的使用与设置 由于电脑的普及和应用的日益深入,为了满足人们的需要,电脑的功能随着它的发展变得越来越强大,硬件设备也越来越多,如从原来的ISA及PCI声卡.调制解调器等到现在的USB硬盘 ...
- LDD快速参考
第二章 快速参考 本节中出现的条目会以它们在文中出现的顺序列出: insmod modprobe rmmod 用来装载模块到正运行的内核和移除模块的用户空间工具: #include <linux ...
- PCB底层打印到热转印纸上 Altium Designer
切记:如果是TopLayer,应该勾选镜像打印(Mirror) 切记:底层Bottom Layer ,不勾选镜像
- Pangu and Stones HihoCoder - 1636 区间DP
Pangu and Stones HihoCoder - 1636 题意 给你\(n\)堆石子,每次只能合成\(x\)堆石子\((x\in[L, R])\),问把所有石子合成一堆的最小花费. 思路 和 ...
- SPOJ - FTOUR2 (点分治+树状数组)
题目:https://vjudge.net/contest/307753#problem/I 题意:有一颗树,上面有白色黑色点,每个点上有一个权值,权值可以为负,现在我要求一条路径,权值和最大,这条路 ...