基于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中的工程截图(上次也是牛哥哥帮我弄上去滴...真心对不起...)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/5ce60e073b3aeff9079a2a9010a1519d.png)
2、接着要让项目跑起来(我在代码分享里包含一份该项目如何在机子上如何部署起来的文档,推荐看,里面甚至教导如何装jdk、mysql等等,很详细!)
请注意,我们install的时候千万不能skip掉测试,因为这个项目没有原始的sql文件,因为它是项目一开始部署的时候就将数据写入到数据库中的。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/b6c98ae0e0a941d0c653b74624082f9d.png)
![](http://static.zuidaima.com/images/14926/201401/20140130232857163.png)
![](http://static.zuidaima.com/images/14926/201401/20140130232939897.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/76e26a3fa74a6ae23dd9ce2f30077991.png)
注:下面的图圈错了,应该是iniServiceImpl.java文件。。。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/bafeb8848604187d557b8ebeb55556b4.png)
![](http://static.zuidaima.com/images/14926/201401/20140130233128052.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/0737995f9424877682a57e32a7b4ca6a.png)
![](http://static.zuidaima.com/images/14926/201401/20140130233312786.png)
好啦,废话讲了一大堆,没有重点的家伙,呵呵..
项目访问地址:http://localhost:9999/sshe/index.jsp
超级管理员和密码:孙宇 123456(当然小伙伴们可以任意修改,这是原作者的名字)
我这里只介绍在maven的jetty插件的访问方式,tomcat就不讲了,就留着有需要小伙伴们自己去捣腾啦....
![](http://static.zuidaima.com/images/14926/201401/20140130233345446.png)
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,应该是最代码官方无关...)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/d57c5bb1e15f65f9b605de7346d424a9.png)
这个HqlFilter约定好了这个系统的sql写法,具体怎么写,或者项目出现非同一般的sql语句具体表示什么,您看完这个文件就很清楚了(文件里面注释的很详细了)
第三个记录:项目之初运行
index.jsp (没有登录) -> login.jsp (include)-> inc.jsp
a、login.jsp
![](http://static.zuidaima.com/images/14926/201401/20140130233543665.png)
在这里你可以选择不同的方式进行登陆:
用户输入模式:(看上图)
自动补全模式:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/bc6d370fe008d942b3d84a5ffa61afc4.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/d845ab6a88a2ea5d126cdbaa4da85579.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/93edbdc2a8b7d2c3eb318f80c043eef6.png)
数据表格模式:
![](http://static.zuidaima.com/images/14926/201401/20140130233729575.png)
b、注册页面
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/9a1c8a139219b6e6a73552d4a043e267.png)
c、north.jsp 欢迎信息显示
north.jsp 菜单栏
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/6fea3a34e076622881b2c011bf1ae6ec.png)
north.jsp 菜单栏 更换皮肤
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/d61b4f62aeeb2d850c172b434a768d36.png)
north.jsp 菜单栏 控制面板 修改密码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/eda3b01b4643cbc21d991a5fe2557bab.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/1659fb12b2ac59e23ed0c1b36b786d00.png)
north.jsp 菜单栏 控制面板 我的信息
![](http://static.zuidaima.com/images/14926/201401/20140130233947360.png)
north.jsp 菜单栏 注销 锁定窗口
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/9f6922640f3deb17d13e81dbc43aadfb.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/262550ca7a27cd0800f2728cd2546567.png)
d、main.jsp tab 刷新、关闭
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/e868102a859d7fd77fe6b99f90265cad.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/23db8fc1890c987210d20638714acafb.png)
里面涉及到一些个人认为比较重要的知识点(不怕死的就看)
点1:Hibernate.initialize(Object proxy)):强制延迟加载
其中的proxy是持久对象的关联对象属性,比如A实体,你要把A的关联实体B也检出,则要写Hibernate.initialize(a.b)。
点2:本系统如何使用MethodFilterInterceptor进行拦截
【方法过滤拦截器的使用】
1、默认的情况下,拦截器会拦截Action中的所有的方法,这里不包括setter或getter方法
2、这时就可以使用方法过滤拦截器来拦截指定的方法,这是一种更加细化的拦截器的配置方式
3、它可以细化到拦截具体的某个方法。而不是拦截某个Action,因为拦截Action是一种粗粒度的实现方式
4、使用includeMethods指明拦截器所要拦截的方法。使用excludeMethods指明拦截器不再拦截的方法
5、这里excludeMethods和includeMethods是在MethodFilterInterceptor类中定义的成员变量
6、而且只要includeMethods进来的方法就一定会被拦截,而不管是否已经把它excludeMethods在外了
7、也就是说includeMethods的优先级要高于excludeMethods
第四个记录:资源管理
![](http://static.zuidaima.com/images/14926/201401/20140130234222911.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234251692.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234310503.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234323412.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234342050.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234401408.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/d1339281e84704e7c214e7892da431a6.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/a55c7b170e8ca1c30b76177e77a13cc1.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234444161.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234504205.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234521337.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234548052.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/063aeeb8425072999e3ef8bdd8488a68.png)
这里面涉及挺重要的一个方法,还是忍不住提一下:
第五个记录:角色管理
![](http://static.zuidaima.com/images/14926/201401/20140130234720035.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234737114.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234749138.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/0a44fc0c7690cded3c1773942d9623a6.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/c3fa77c91c78ce5b3c93719a19395ef4.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234843471.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234857431.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234932179.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/166bf6496bace9bf930564201d5fc18f.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/1459812a225e2b0856134fb9c1010e23.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/7c99ccb637917f5312612034b8518ab5.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/8a4eb9badc50242619eb1b925cb61972.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/a58141bfe4494e2b1c7fa2eaed2069f7.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/5d611f3e2ca678a1c09844b778e73ec0.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/244ec39d23bea34200244815883751e1.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/e389f0829100ae95107c90021540e4b4.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/39d5846a01cc20cf11e9b98b28d28681.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235144217.png)
第六个记录:用户管理
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/dce978bc1d9eb2114ea5e5a783421646.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235259734.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235314134.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235325557.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235350161.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/6dfbbe7002de71bdcc0ee20b842afb3a.png)
一些可能被忽略的重要点:
easyui将很多东西封装的很好了,我们只需要调用。像我这个小白常常面对完善的api而不能灵活运用的一个原因就是忽略了一些比较底层的原因,如:easyui是如何帮我们实现分页的呢?
我们将返回的信息(json格式),使用工具看到
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/19daa7d40f2897bc035686fe69280530.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/46c13df3649b1a95859e6dc86881d44c.png)
所以项目中设置easyui专用模型,能更好的调用
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/8dd824fdf7c776bf31e0b9744d9664f3.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235507163.png)
第七个记录:机构管理
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/fe115b8c9f6247b056a9a13c0b9dca31.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/9d76f9152a3a6174ecd6e091a99247c0.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235559086.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/0a61922e1cd3e816cb0544e4ec8549a7.png)
第八个记录:系统监控
![](http://static.zuidaima.com/images/14926/201401/20140130235638328.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235648180.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235701438.png)
总结:弄了很久终于弄好了....诸位看的时候可能会觉得很乱....请包涵。这个项目学习过程中个人弄成了几个文档,有需要的同学可以私下找我。项目部署不成功也可以私信我,我看到一定回只怕不及时,但是找牛哥才是最可靠的哈....
这里就不放我女神镇楼了,想扯淡几句:
在群里听到有可爱的同伴觉得枯燥无味的时会去喝酒打发时间,我觉得经常宅着和长期对着电脑或熬夜对身体非常不好的(我个人就是),像喝酒这种能免就免吧(哎..我还从来没喝过酒..)。
我以前觉得有时间看些人文书倒不如看些技术类的书籍更实在些,但现在又觉得这样功利的活着倒不如以前傻傻读着卡夫卡更快乐,但是那时岂不是因为什么都不懂,没有追求所以纯粹的像张白纸。只是,当我现在明白自己要的是什么,却是一样的迷茫,为自己的蠢笨无知而恐惧,为即将要踏上职业生涯而忧郁,为自己的软弱找各种各样的接口。
有时看些人文书籍对于迷途中的我,换个更柔和的角度看待此时此景的种种扰心的问题,不再那么孤独而没有安全感,下面是近期偶遇到的挺好玩的书,有兴趣的小伙伴的可以看看
《爱德华的奇妙之旅》:因看脑残剧发现的书,算是童话书,但是大人看可能会有另一番风味吧,主题是:教人学会去爱,人生旅程之中,少了爱,是否是一个完整的结局呢?至少我觉得我和我父母之间的爱是我目前活下去的源动力。
《美丽新世界》:娱乐至死的探讨式小说,说到达某个年代,物质文明高度发展之后的社会,那个社会看似美丽的背后省去多少那些人性最深层的东西,某种程度上也是和爱相关。我个人觉得看完《黑镜》第一季第二集再看这本书,会有挺大的触动。
《我的豪华劏(tang)fang生活》:一个蚁族如何在这个社会苦中作乐,努力的活着。
源代码下载地址: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中的工程截图(上次也是牛哥哥帮我弄上去滴...真心对不起...)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/5ce60e073b3aeff9079a2a9010a1519d.png)
2、接着要让项目跑起来(我在代码分享里包含一份该项目如何在机子上如何部署起来的文档,推荐看,里面甚至教导如何装jdk、mysql等等,很详细!)
请注意,我们install的时候千万不能skip掉测试,因为这个项目没有原始的sql文件,因为它是项目一开始部署的时候就将数据写入到数据库中的。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/b6c98ae0e0a941d0c653b74624082f9d.png)
![](http://static.zuidaima.com/images/14926/201401/20140130232857163.png)
![](http://static.zuidaima.com/images/14926/201401/20140130232939897.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/76e26a3fa74a6ae23dd9ce2f30077991.png)
注:下面的图圈错了,应该是iniServiceImpl.java文件。。。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/bafeb8848604187d557b8ebeb55556b4.png)
![](http://static.zuidaima.com/images/14926/201401/20140130233128052.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/0737995f9424877682a57e32a7b4ca6a.png)
![](http://static.zuidaima.com/images/14926/201401/20140130233312786.png)
好啦,废话讲了一大堆,没有重点的家伙,呵呵..
项目访问地址:http://localhost:9999/sshe/index.jsp
超级管理员和密码:孙宇 123456(当然小伙伴们可以任意修改,这是原作者的名字)
我这里只介绍在maven的jetty插件的访问方式,tomcat就不讲了,就留着有需要小伙伴们自己去捣腾啦....
![](http://static.zuidaima.com/images/14926/201401/20140130233345446.png)
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,应该是最代码官方无关...)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/d57c5bb1e15f65f9b605de7346d424a9.png)
这个HqlFilter约定好了这个系统的sql写法,具体怎么写,或者项目出现非同一般的sql语句具体表示什么,您看完这个文件就很清楚了(文件里面注释的很详细了)
第三个记录:项目之初运行
index.jsp (没有登录) -> login.jsp (include)-> inc.jsp
a、login.jsp
![](http://static.zuidaima.com/images/14926/201401/20140130233543665.png)
在这里你可以选择不同的方式进行登陆:
用户输入模式:(看上图)
自动补全模式:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/bc6d370fe008d942b3d84a5ffa61afc4.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/d845ab6a88a2ea5d126cdbaa4da85579.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/93edbdc2a8b7d2c3eb318f80c043eef6.png)
数据表格模式:
![](http://static.zuidaima.com/images/14926/201401/20140130233729575.png)
b、注册页面
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/9a1c8a139219b6e6a73552d4a043e267.png)
c、north.jsp 欢迎信息显示
north.jsp 菜单栏
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/6fea3a34e076622881b2c011bf1ae6ec.png)
north.jsp 菜单栏 更换皮肤
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/d61b4f62aeeb2d850c172b434a768d36.png)
north.jsp 菜单栏 控制面板 修改密码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/eda3b01b4643cbc21d991a5fe2557bab.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/1659fb12b2ac59e23ed0c1b36b786d00.png)
north.jsp 菜单栏 控制面板 我的信息
![](http://static.zuidaima.com/images/14926/201401/20140130233947360.png)
north.jsp 菜单栏 注销 锁定窗口
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/9f6922640f3deb17d13e81dbc43aadfb.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/262550ca7a27cd0800f2728cd2546567.png)
d、main.jsp tab 刷新、关闭
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/e868102a859d7fd77fe6b99f90265cad.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/23db8fc1890c987210d20638714acafb.png)
里面涉及到一些个人认为比较重要的知识点(不怕死的就看)
点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
第四个记录:资源管理
![](http://static.zuidaima.com/images/14926/201401/20140130234222911.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234251692.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234310503.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234323412.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234342050.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234401408.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/d1339281e84704e7c214e7892da431a6.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/a55c7b170e8ca1c30b76177e77a13cc1.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234444161.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234504205.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234521337.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234548052.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/063aeeb8425072999e3ef8bdd8488a68.png)
这里面涉及挺重要的一个方法,还是忍不住提一下:
/** * 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); } } }
第五个记录:角色管理
![](http://static.zuidaima.com/images/14926/201401/20140130234720035.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234737114.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234749138.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/0a44fc0c7690cded3c1773942d9623a6.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/c3fa77c91c78ce5b3c93719a19395ef4.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234843471.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234857431.png)
![](http://static.zuidaima.com/images/14926/201401/20140130234932179.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/166bf6496bace9bf930564201d5fc18f.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/1459812a225e2b0856134fb9c1010e23.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/7c99ccb637917f5312612034b8518ab5.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/8a4eb9badc50242619eb1b925cb61972.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/a58141bfe4494e2b1c7fa2eaed2069f7.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/5d611f3e2ca678a1c09844b778e73ec0.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/244ec39d23bea34200244815883751e1.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/e389f0829100ae95107c90021540e4b4.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/39d5846a01cc20cf11e9b98b28d28681.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235144217.png)
第六个记录:用户管理
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/dce978bc1d9eb2114ea5e5a783421646.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235259734.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235314134.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235325557.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235350161.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/6dfbbe7002de71bdcc0ee20b842afb3a.png)
一些可能被忽略的重要点:
easyui将很多东西封装的很好了,我们只需要调用。像我这个小白常常面对完善的api而不能灵活运用的一个原因就是忽略了一些比较底层的原因,如:easyui是如何帮我们实现分页的呢?
我们将返回的信息(json格式),使用工具看到
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/19daa7d40f2897bc035686fe69280530.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/46c13df3649b1a95859e6dc86881d44c.png)
所以项目中设置easyui专用模型,能更好的调用
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/8dd824fdf7c776bf31e0b9744d9664f3.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235507163.png)
第七个记录:机构管理
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/fe115b8c9f6247b056a9a13c0b9dca31.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/9d76f9152a3a6174ecd6e091a99247c0.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235559086.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/15/0a61922e1cd3e816cb0544e4ec8549a7.png)
第八个记录:系统监控
![](http://static.zuidaima.com/images/14926/201401/20140130235638328.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235648180.png)
![](http://static.zuidaima.com/images/14926/201401/20140130235701438.png)
总结:弄了很久终于弄好了....诸位看的时候可能会觉得很乱....请包涵。这个项目学习过程中个人弄成了几个文档,有需要的同学可以私下找我。项目部署不成功也可以私信我,我看到一定回只怕不及时,但是找牛哥才是最可靠的哈....
这里就不放我女神镇楼了,想扯淡几句:
在群里听到有可爱的同伴觉得枯燥无味的时会去喝酒打发时间,我觉得经常宅着和长期对着电脑或熬夜对身体非常不好的(我个人就是),像喝酒这种能免就免吧(哎..我还从来没喝过酒..)。
我以前觉得有时间看些人文书倒不如看些技术类的书籍更实在些,但现在又觉得这样功利的活着倒不如以前傻傻读着卡夫卡更快乐,但是那时岂不是因为什么都不懂,没有追求所以纯粹的像张白纸。只是,当我现在明白自己要的是什么,却是一样的迷茫,为自己的蠢笨无知而恐惧,为即将要踏上职业生涯而忧郁,为自己的软弱找各种各样的接口。
有时看些人文书籍对于迷途中的我,换个更柔和的角度看待此时此景的种种扰心的问题,不再那么孤独而没有安全感,下面是近期偶遇到的挺好玩的书,有兴趣的小伙伴的可以看看
《爱德华的奇妙之旅》:因看脑残剧发现的书,算是童话书,但是大人看可能会有另一番风味吧,主题是:教人学会去爱,人生旅程之中,少了爱,是否是一个完整的结局呢?至少我觉得我和我父母之间的爱是我目前活下去的源动力。
《美丽新世界》:娱乐至死的探讨式小说,说到达某个年代,物质文明高度发展之后的社会,那个社会看似美丽的背后省去多少那些人性最深层的东西,某种程度上也是和爱相关。我个人觉得看完《黑镜》第一季第二集再看这本书,会有挺大的触动。
《我的豪华劏(tang)fang生活》:一个蚁族如何在这个社会苦中作乐,努力的活着。
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- easyui------显示隐藏列功能
- JQuery+Strusts1.x无刷新登录
- jQuery寻找n以内完全数的方法
- 推荐10个2014年最佳的jQuery视频插件
- jquery+CSS3实现淘宝移动网页菜单效果
- 采用easyui tree编写简单角色权限代码的方法
- 基于jquery中children()与find()的区别介绍
- 了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
- 在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
- JQuery打造PHP的AJAX表单提交实例
- jquery easyui使用心得
- 初试jQuery EasyUI 使用介绍
- easyui Droppable组件实现放置特效
- jQuery实现的fixedMenu下拉菜单效果代码
- jQuery EasyUI Dialog拖不下来如何解决
- jQuery EasyUI实现右键菜单变灰不可用效果
- 浅谈jQuery构造函数分析