基于Struts2.3.x+Spring3.2.x+Hibernate4.2.x+EasyUI1.3.4+Maven架构的示例程序
某种程度上来讲这又是一个适合小白学习的程序,但是作为学习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生活》:一个蚁族如何在这个社会苦中作乐,努力的活着。
由最代码官方编辑于2015-1-26 11:59:30
猜你喜欢
- ssh整合extjs的项目实例
- ssh简单的整合实例
- Easyui SSH MySQL后台权限管理系统,很适合新生学习
- spring整合hibernate+ehcache实现最简单的入门代码demo实例,对初学者很有帮助
- ssh框架开发整合实现用户简单登陆demo,适合ssh初学者学习
- ssm框架+easyui开发简单demo实例
- SSH网站实例
- java jsp与jquery easyui整合代码下载,有n个demo教程
- springmvc+hibernate+jstl写的完整ssh用户注册,登录demo
- easyUI+zTree简单整合DEMO
- SSH整合开发入门小例子,适合java web开发初学者
- ssh框架(struts1+spring+hibernate)整合实现java网上商城项目源代码