HeroShane的gravatar头像
HeroShane 2014-01-31 00:12:09

基于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中的工程截图(上次也是牛哥哥帮我弄上去滴...真心对不起...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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,应该是最代码官方无关...)

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

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

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

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

a、login.jsp

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

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

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

自动补全模式:

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

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

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

数据表格模式:

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

b、注册页面

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

c、north.jsp       欢迎信息显示

  north.jsp       菜单栏

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

north.jsp       菜单栏   更换皮肤

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

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

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

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

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

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

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

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

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

d、main.jsp tab  刷新、关闭

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

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

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

点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 

第四个记录:资源管理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
	 * 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);
			}
		}
	}

第五个记录:角色管理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第六个记录:用户管理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第七个记录:机构管理

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

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

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

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

第八个记录:系统监控

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

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

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

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

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

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

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

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

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

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

《我的豪华劏(tang)fang生活》:一个蚁族如何在这个社会苦中作乐,努力的活着。

 


最代码官方编辑于2015-1-26 11:59:30


打赏

已有1人打赏

miaojg的gravatar头像

文件名:sshe.zip,文件大小:6892.002K 下载
  • /
      • /sshe
        • /sshe/SSHE示例项目部署说明.pdf
        • /sshe/sshe.zip
最代码最近下载分享源代码列表最近下载
billzw  LV6 2023年8月26日
miaojg  LV3 2021年3月2日
你好啊呐  LV19 2020年9月7日
qinrongbao  LV5 2020年2月24日
诸子初秋  LV8 2020年1月9日
tomjackhys  LV11 2019年6月21日
码码码  LV5 2019年5月7日
angelalek  LV8 2019年4月13日
yncxlk  LV7 2019年4月11日
lxm0515  LV9 2019年1月24日
最代码最近浏览分享源代码列表最近浏览
freekiss  LV4 7月6日
zd850031 2023年9月13日
暂无贡献等级
billzw  LV6 2023年8月26日
LITIANYU084414  LV11 2023年1月1日
二十一画  LV10 2022年6月27日
wanglinddad  LV55 2022年4月15日
zhwang  LV19 2021年12月23日
mac_kobe  LV1 2021年10月29日
1207748096  LV6 2021年5月12日
z282156691  LV2 2021年4月20日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友