到这里已经写到第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方法改为以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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));
            }
        }*/    
    }

  原来代码里面注释的部分才是最终的代码,下面的才是应该被注释的,不知道为什么变成以前的版本了。

SpringMVC(12)完结篇 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现的更多相关文章

  1. SpringMVC Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现

    SpringMVC学习系列(12) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现 到这里已经写到第12篇了,前11篇基本上把Spring M ...

  2. SpringMVC学习系列(12) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现

    到这里已经写到第12篇了,前11篇基本上把Spring MVC主要的内容都讲了,现在就直接上一个项目吧,希望能对有需要的朋友有一些帮助. 一.首先看一下项目结构: InfrastructureProj ...

  3. SpringMVC学习(12):基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现

    到这里已经写到第12篇了,前11篇基本上把Spring MVC主要的内容都讲了,现在就直接上一个项目吧,希望能对有需要的朋友有一些帮助. 一.首先看一下项目结构: InfrastructureProj ...

  4. 【maven + hibernate(注解) +spring +springMVC】 使用maven搭建项目

    研究,百度,查资料+好友帮助,使用MyEcplise2015工具,通过maven搭建hibernate+springMVC+spring的项目,数据库采用MySql5.5 不过使用的版本会在项目搭建过 ...

  5. 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:0.概述

    欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 序言 帖主和队友仿制了一个简单版的微信,其中,队友是用Unity3D做前段,帖主用Java的Mina.Hiberna ...

  6. Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点

    Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...

  7. 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:7.项目介绍之架构(1)

    欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 前言 <迷你微信>服务器端是使用Java语言,Mina框架编写的,一个良好的架构关系到后期迭代的方便程度 ...

  8. 转: 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端

    from: http://ybak.iteye.com/blog/1853335 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端 游戏服 ...

  9. 基于Spring + Spring MVC + Mybatis 高性能web构建

    基于Spring + Spring MVC + Mybatis 高性能web构建 一直想写这篇文章,前段时间 痴迷于JavaScript.NodeJs.AngularJs,做了大量的研究,对前后端交互 ...

随机推荐

  1. linux 创建网桥

    由于最近项目需验证个问题,需求是要创建一个虚拟机网桥,在使用ifconfig命令查看时让docker0网桥不在第一个显示,因此,我们创建一个虚拟网桥让它排在第一位置 项目使用Centos7系统,因此使 ...

  2. Spring AOP 用法浅谈(Day_18)

    当你这一天没有在进步,那你就是在退步! [简述] Aspect Oriented Programming :面向切面编程 所谓面向切面编程,是一种通过预编译和运行期动态代理的方式实现在不修改源代码的情 ...

  3. 小程序webview涉及的支付能力、选用绑定多商户支付

    小程序webview涉及的支付能力.选用绑定多商户支付 webview承接页面涉及的支付能力: 仅支持小程序本身支付能力,不支持承接页面内的原支付功能(譬如,webview中嵌入了h5官方商城,经过配 ...

  4. 源码篇:Flutter Provider的另一面(万字图文+插件)

    前言 阅读此文的彦祖,亦菲们,附送一枚Provider模板代码生成插件! 我为啥要写这个插件呢? 此事说来话短,我这不准备写解析Provider源码的文章,肯定要写这框架的使用样例啊,然后再哔哔源码呀 ...

  5. java中的NIO和IO到底是什么区别?20个问题告诉你答案

    摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...

  6. GraphX编程指南

    GraphX编程指南 概述 入门 属性图 属性图示例 图算子 算子摘要列表 属性算子 结构化算子 Join算子 最近邻聚集 汇总消息(a​​ggregateMessages) Map Reduce三元 ...

  7. Spring如何使用三级缓存解决循环依赖

    Spring如何使用三级缓存解决循环依赖 首先来了解一下什么是循环依赖 @Component public class A { @Autowired B b; } @Component public ...

  8. 用 Flutter 和 Firebase 轻松构建 Web 应用

    作者 / Very Good Ventures Team 我们 (Very Good Ventures 团队) 与 Google 合作,在今年的 Google I/O 大会上推出了 照相亭互动体验 ( ...

  9. windows10环境下gcc环境变量的配置

    1.首先打开控制面板-系统和安全-系统-高级系统设置,打开环境变量 2.在用户变量里找到Path,点击编辑,点击新建,找到Qt的tools安装目录并将目录复制进去保存,我的目录是C:\Qt\Qt5.9 ...

  10. 基于Android平台的图书管理系统的制作(1)

    在学习了郭神的第一行代码前半段之后,想通过一次实践来完成对已学知识的巩固.于是码下了这个图书管理系统客户端. IDE Android studio,语言 JAVA.XML: 在刚开始设计的时候对于这个 ...