您的位置:首页 > 编程语言 > Java开发

基于Struts2.3.x+Spring3.2.x+Hibernate4.2.x+EasyUI1.3.4+Maven架构的示例程序

2015-11-08 10:04 537 查看
原文:基于Struts2.3.x+Spring3.2.x+Hibernate4.2.x+EasyUI1.3.4+Maven架构的示例程序

源代码下载地址:http://www.zuidaima.com/share/1675482798951424.htm
某种程度上来讲这又是一个适合小白学习的程序,但是作为学习easyui来讲,这是一个很好的项目来的。

官方给出的该系统功能,诸位可以进行参考:

SSHE示例项目是一个由Eclipse Kepler创建,Struts2.3.x+Spring3.2.x+Hibernate4.2.x+CXF2.7.x+EasyUI1.3.4+Maven架构的示例程序 

当前示例演示了包括:权限控制、超大附件文件上传、EasyUI基本组件使用等等功能,具体请自行看本示例演示功能 

SSHE框架环境需求:JAVA环境:JDK7+;数据库环境:oracle10g+/sqlserver2000+/mysql5+;WEB容器环境:jetty6+/tomcat6+;编译环境:maven:3.x+

 

这个项目也是有配套视频的,因为我没有全部看完,而且离看视频的日子也有点远了,很难概诉视频中的内容,有兴趣的朋友可以戳这里:http://pan.baidu.com/share/link?shareid=178909&uk=1526873401,这个网盘里分享了easyui的入门视频(主要就是介绍api的内容,但是配合着代码一起讲,可以学到很多的,对于入门来讲很有用),还有项目整合的视频,对于入门的我们这些小白来讲真心赞,里面涉及到项目完成的小细节,没有举例说明哈,喜欢的可以自己去看看...

倘若觉得网盘分享使你风中凌乱的话,你也可以戳这里:http://bbs.jeasyuicn.com/read-htm-tid-181.html,里面介绍了每个视频大概的课程内容,您可以有针对性的看。还有最重要的,你想先看看这个项目的效果而还不想在自己跑起来的话,这也是可以的哦...那么请戳这里:http://sshe.jeasyuicn.com/index.jsp,这个我分享项目的在线演示。而戳这里:http://sypro.jeasyuicn.com/,你可以看看其他的一些项目的在线演示。

 

1、首先是项目在eclipse中的工程截图(上次也是牛哥哥帮我弄上去滴...真心对不起...)



2、接着要让项目跑起来(我在代码分享里包含一份该项目如何在机子上如何部署起来的文档,推荐看,里面甚至教导如何装jdk、mysql等等,很详细!)

请注意,我们install的时候千万不能skip掉测试,因为这个项目没有原始的sql文件,因为它是项目一开始部署的时候就将数据写入到数据库中的。









注:下面的图圈错了,应该是iniServiceImpl.java文件。。。









好啦,废话讲了一大堆,没有重点的家伙,呵呵..

项目访问地址:http://localhost:9999/sshe/index.jsp

超级管理员和密码:孙宇 123456(当然小伙伴们可以任意修改,这是原作者的名字)

我这里只介绍在maven的jetty插件的访问方式,tomcat就不讲了,就留着有需要小伙伴们自己去捣腾啦....



3、项目具体运行截图

注:因为我下面的内容是根据我自己整理的文档顺序来展示的,可能会很凌乱,还会参杂着或无厘头或神经质的表述,亲们完全可以只看截图,或者到到在线演示网站运行。还有因为我是宇宙超级无敌小白,总结的可能有错误,牛人看了有错误请指点,无以为报,请受小的一拜!!

第一个记录:项目整体有的没的乱看一遍

1、关于openSessionInView的设置:

    <param-name>singleSession</param-name>-------------①

    <param-value>true</param-value>--------------------②

①对于OpenSessionInView的配置中,singleSession应该设置为true,表示一个request只能打开一个 session,如果设置为false的话,session可以被打开多个,这时在update、delete的时候会出现打开多个session的异常。

②但是当设置为true的时候,系统的性能会因为用户的网络状况受到影响,当request在生成页面完成后,session才会被释放,所以如果用户的网络状况比较差,那么连接池中的链接会迟迟不被回收,造成内存增加,系统性能受损。但是如果不用这种方法的话,lazy模式有体现不出它的优点

 

2、druid数据源小教程
http://blog.csdn.net/yunnysunny/article/details/8657095

3、javamelody监控小教程
http://blog.csdn.net/lk_blog/article/details/13760999

4、spring.xml这家伙干了啥工作呢

   a、加载properties文件,主要是数据库连接文件

   b、扫描包(组件)sy.dao,sy.service

5、spring-druid.xml文件

6、定时执行任务spring-tasks.xml

<!-- 每天晚上23点59分59秒修复一下数据库,修复白天大家测试后造成的数据错乱 -->

7、spring-ehcache.xml

<!-- 开启spring缓存 -->

8、配置spring缓存ehcache.xml

9、cxf:spring-cxf.xml(这个我没研究)

10、检测dao、service的执行情况spring-javamelody.xml

11、struts2的配置:struts.xml

注:上面的内容本来有个人的一些小注释,思前想后还是不贴出来了,这毕竟不是教程嘛,而且我很怕误导了亲爱的小伙伴...

第二个记录:不能错过的工具类

这个项目里面分装了很多很不错的工具类,这可是我们这些小白白们不能错过的呢(仅仅是代表个人的意见,与本台无关...nono,应该是最代码官方无关...)



这个HqlFilter约定好了这个系统的sql写法,具体怎么写,或者项目出现非同一般的sql语句具体表示什么,您看完这个文件就很清楚了(文件里面注释的很详细了)

第三个记录:项目之初运行

index.jsp (没有登录) -> login.jsp (include)-> inc.jsp

a、login.jsp



在这里你可以选择不同的方式进行登陆:

用户输入模式:(看上图)

自动补全模式:







数据表格模式:



b、注册页面



c、north.jsp       欢迎信息显示

  north.jsp       菜单栏



north.jsp       菜单栏   更换皮肤



north.jsp       菜单栏   控制面板      修改密码







north.jsp       菜单栏   控制面板      我的信息





north.jsp       菜单栏   注销       锁定窗口





d、main.jsp tab  刷新、关闭





里面涉及到一些个人认为比较重要的知识点(不怕死的就看)

点1:Hibernate.initialize(Object proxy)):强制延迟加载

其中的proxy是持久对象的关联对象属性,比如A实体,你要把A的关联实体B也检出,则要写Hibernate.initialize(a.b)。

点2:本系统如何使用MethodFilterInterceptor进行拦截

在struts.xml的设置:
<!-- 权限拦截器 -->
<interceptor name="securityInterceptor" class="sy.interceptor.base.SecurityInterceptor" />
<interceptor-stack name="securityStack">
<interceptor-ref name="sessionStack"></interceptor-ref>
<interceptor-ref name="securityInterceptor">
<!-- doNotNeedSessionAndSecurity_ 开头的和doNotNeedSecurity_ 开头的方法不拦截 -->
<param name="excludeMethods">doNotNeedSecurity_*,doNotNeedSessionAndSecurity_*
</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>

【方法过滤拦截器的使用】

1、默认的情况下,拦截器会拦截Action中的所有的方法,这里不包括setter或getter方法

2、这时就可以使用方法过滤拦截器来拦截指定的方法,这是一种更加细化的拦截器的配置方式

3、它可以细化到拦截具体的某个方法。而不是拦截某个Action,因为拦截Action是一种粗粒度的实现方式

4、使用includeMethods指明拦截器所要拦截的方法。使用excludeMethods指明拦截器不再拦截的方法

5、这里excludeMethods和includeMethods是在MethodFilterInterceptor类中定义的成员变量

6、而且只要includeMethods进来的方法就一定会被拦截,而不管是否已经把它excludeMethods在外了

7、也就是说includeMethods的优先级要高于excludeMethods 

第四个记录:资源管理



























这里面涉及挺重要的一个方法,还是忍不住提一下:

/**
* SyresourceServiceImpl 由于新添加的资源,当前用户的角色或者机构并没有访问此资源的权限,
* 所以这个地方重写save方法,将新添加的资源放到用户的第一个角色里面
* 或者第一个机构里面
*/
@Override
public void saveResource(Syresource syresource, String userId) {
1、首先将资源信息保存到数据库中
save(syresource);
2、获取用户信息
Syuser user = userDao.getById(Syuser.class, userId);
3、用户所包含的的角色
Set<Syrole> roles = user.getSyroles();
// 如果用户有角色,就将新资源放到用户的第一个角色里面
if (roles != null && !roles.isEmpty()) {
List<Syrole> l = new ArrayList<Syrole>();
l.addAll(roles);
//对角色信息进行排序
Collections.sort(l, new Comparator<Syrole>() {
@Override
public int compare(Syrole o1, Syrole o2) {
if (o1.getCreatedatetime().getTime() > o2.getCreatedatetime().getTime())
{
return 1;
}
if (o1.getCreatedatetime().getTime() < o2.getCreatedatetime().getTime())
{
return -1;
}
return 0;
}
});
4、获取用户中的一个角色,往里面加入新增资源
l.get(0).getSyresources().add(syresource);
} else {// 如果用户没有角色
Set<Syorganization> organizations = user.getSyorganizations();
// 如果用户没有角色,但是有机构,那就将新资源放到第一个机构里面
if (organizations != null && !organizations.isEmpty()) {
List<Syorganization> l = new ArrayList<Syorganization>();
l.addAll(organizations);
Collections.sort(l, new Comparator<Syorganization>() {
@Override
public int compare(Syorganization o1, Syorganization o2) {
if (o1.getCreatedatetime().getTime() >
o2.getCreatedatetime().getTime()) {
return 1;
}
if (o1.getCreatedatetime().getTime() <
o2.getCreatedatetime().getTime()) {
return -1;
}
return 0;
}
});
5、获取用户中的一个机构,往里面加入新增资源
l.get(0).getSyresources().add(syresource);
}
}
}

第五个记录:角色管理





































第六个记录:用户管理













一些可能被忽略的重要点:

easyui将很多东西封装的很好了,我们只需要调用。像我这个小白常常面对完善的api而不能灵活运用的一个原因就是忽略了一些比较底层的原因,如:easyui是如何帮我们实现分页的呢?

我们将返回的信息(json格式),使用工具看到





所以项目中设置easyui专用模型,能更好的调用





第七个记录:机构管理









第八个记录:系统监控







总结:弄了很久终于弄好了....诸位看的时候可能会觉得很乱....请包涵。这个项目学习过程中个人弄成了几个文档,有需要的同学可以私下找我。项目部署不成功也可以私信我,我看到一定回只怕不及时,但是找牛哥才是最可靠的哈....

这里就不放我女神镇楼了,想扯淡几句:

在群里听到有可爱的同伴觉得枯燥无味的时会去喝酒打发时间,我觉得经常宅着和长期对着电脑或熬夜对身体非常不好的(我个人就是),像喝酒这种能免就免吧(哎..我还从来没喝过酒..)。

我以前觉得有时间看些人文书倒不如看些技术类的书籍更实在些,但现在又觉得这样功利的活着倒不如以前傻傻读着卡夫卡更快乐,但是那时岂不是因为什么都不懂,没有追求所以纯粹的像张白纸。只是,当我现在明白自己要的是什么,却是一样的迷茫,为自己的蠢笨无知而恐惧,为即将要踏上职业生涯而忧郁,为自己的软弱找各种各样的接口。

有时看些人文书籍对于迷途中的我,换个更柔和的角度看待此时此景的种种扰心的问题,不再那么孤独而没有安全感,下面是近期偶遇到的挺好玩的书,有兴趣的小伙伴的可以看看

《爱德华的奇妙之旅》:因看脑残剧发现的书,算是童话书,但是大人看可能会有另一番风味吧,主题是:教人学会去爱,人生旅程之中,少了爱,是否是一个完整的结局呢?至少我觉得我和我父母之间的爱是我目前活下去的源动力。

《美丽新世界》:娱乐至死的探讨式小说,说到达某个年代,物质文明高度发展之后的社会,那个社会看似美丽的背后省去多少那些人性最深层的东西,某种程度上也是和爱相关。我个人觉得看完《黑镜》第一季第二集再看这本书,会有挺大的触动。

《我的豪华劏(tang)fang生活》:一个蚁族如何在这个社会苦中作乐,努力的活着。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息