`
sarin
  • 浏览: 1748028 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
E3b14d1f-4cc5-37dd-b820-b6af951740bc
Spring数据库访问系列...
浏览量:172820
C2083dc5-6474-39e2-993e-263652d27795
Android学习笔记
浏览量:366550
5f40a095-b33c-3e8e-8891-606fcf3b8d27
iBatis开发详解
浏览量:188306
B272a31d-e7bd-3eff-8cc4-c0624ee75fee
Objective-C学习...
浏览量:98742
社区版块
存档分类
最新评论

一种Java Web应用开发框架的构建(基于Struts2+Spring+FreeMarker)之一

阅读更多

企业级Java应用在框架的基础上构建可以大幅缩短开发周期,模块化分工,层次分明人员目的性强,所以当前流行Struts/Struts2SpringHibernate/IBatis框架的整合,他们在一起能很好完成一个完整的工作流程,对于中小型应用,只需经过框架整合,基础封装即可满足开发要求。

本人接触框架2年时间,对Strtus2Spring有所了解,应用较多,基于二者构建的开发框架历经中小项目考验,安全而稳定,现在介绍一种框架的构建的方式。为什么不用Hibernate是基于快速开发的考虑,HibernateOR映射的设置和数据库访问都需要经过专业的设计,不如直接操纵SQL语句直观,也不利于SQL语句优化,那么利用SpringJdbcTemplate就能满足需求,而且SQL语句的后期维护也是非常方便的。在开发成员水平不很一致时提供了很大的伸缩空间。

开发工具是Eclipse3.5.1(包含WTP)+Tomcat6.0.20

项目目录结构:
  
   
src目录装java源文件;resources目录装XML和属性配置文件;二者的编译路径都指向WEB-INF/classes下,只要二者下的包结构相同,那么类和配置文件就可以在同一个目录下,这样的配置就是为了java文件和配置文件的编辑时分离而发布时结合,方便直观。

lib目录是放置第三方类库,比如JUnit等,项目开发中还需要servlet-api,也应该放到这里,因为Tomcat本身已经支持servlet,只是编码时没有这个类库,所以他不是发布必须的,而是编码时要用的,也可以打入第三方类库中。

Webapp目录的作用这里不解释了,如果不清楚的话,您不用继续往下看了。本文不适合您来阅读。

Webapp目录结构如下:

common目录放置基本FreeMarker配置文件和抽取的基础宏

components放置前端需要应用的组件,比如dTreefckEditor等资源

css目录放置项目所需的样式表文件

images目录放置项目所需的图片资源文件

js目录放置项目中的JavaScript文件

manage目录是供测试使用的后台管理目录

WEB-INF/lib是项目运行所需的类库文件

struts-tags.tld单独放置此处是为了在FreeMakrer中使用Struts2的标签库

web.xml的作用就不解释了

index.html是项目的入口文件,包含一个转向的地址

login_view.ftl是项目的主页文件,是经过转向得到的,因为Struts2不能再直接访问FreeMarker的物理文件了,就必须跳转一下,当然这个掉转动作里可以安排一些操作。

src目录结构如下:
 

项目本身的ftl解析不直接使用FreeMaker提供的解析器,而是手工设置的一个。Json组件也是手工设置的。就有了org开头的包

Pi包下就是项目的应用包和核心包。

app/action下是Struts2Action文件,负责流程控制

app/service下是抽象出的service,可以根据个人习惯进行代码书写,这里放置的是SQL语句和直接SQL语句的方法。

应用包的层次不是很多,完全可以满足中小应用的需求,当然您也可以根据自身的需要进行改造。这里仅基于最简单的方式。

core/bean下是Bean的管理器,它负责从Spring上下文中按照名称返回所需的bean

core/common下是一些通用的配置,比如登录拦截器,异常拦截器,基础ActionService定义等。

core/util下是自定义的工具类了。没什么多说的。

Constants.java是放置系统所需的一些常量配置。

resources目录结构如下:

 

这些都是见名知意的配置,等到后面再详细解释。

    整个项目的结构就说完了,后续将从web.xml入手,开始逐一解释这套开发框架。

    同时欢迎大家给出宝贵意见和经验。所有内容均为本人原创手写,谢绝转载,谢谢!

    (未完待续)

  • 大小: 18.1 KB
  • 大小: 3.6 KB
  • 大小: 9 KB
  • 大小: 11.4 KB
5
3
分享到:
评论
6 楼 fengzigogo 2016-05-20  
您好,有这个项目架构的源码下载地址吗?
5 楼 haige18 2010-11-05  
sarin 写道
haige18 写道
sarin 写道
haige18 写道
您好,请问一下你用spring jdbc 怎么实现的事务处理,谢谢!

对service层方法进行拦截处理

这个我知道,我想问题下,用spring管理service时,怎么配置上事务的,是parent属性吗?最近,没怎么弄懂这个,谢谢!

	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
	</bean>

	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="get*" read-only="true" />
			<tx:method name="find*" read-only="true" />
			<tx:method name="add*" rollback-for="Exception" />
			<tx:method name="insert*" rollback-for="Exception" />
			<tx:method name="save*" rollback-for="Exception" />
			<tx:method name="addOrUpdate*" rollback-for="Exception" />
			<tx:method name="del*" rollback-for="Exception" />
			<tx:method name="delete*" rollback-for="Exception" />
			<tx:method name="update*" rollback-for="Exception" />
		</tx:attributes>
	</tx:advice>

	<aop:config proxy-target-class="true">
		<aop:pointcut id="serviceMethod"
			expression="execution(* xxx.xxx.service.*Service.*(..))" />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" />
	</aop:config>

	
<bean id="baseService" class="xxx.xxx.common.CommonBaseService">
		<property name="jdbcTemplate" ref="jdbcTemplate" />
	</bean>
	<bean id="userService" class="xxx.xxx.service.UserService" parent="baseService" />

和NEO有些许不同,这都无所谓。就是IOC和AOP的应用。


用这种tx标签配置的方式成功实现了事务的管理,谢谢!NEO里面那种方式,我测试了一下,没成功,不知道是我配置有问题还是怎么的!
4 楼 sarin 2010-11-05  
haige18 写道
sarin 写道
haige18 写道
您好,请问一下你用spring jdbc 怎么实现的事务处理,谢谢!

对service层方法进行拦截处理

这个我知道,我想问题下,用spring管理service时,怎么配置上事务的,是parent属性吗?最近,没怎么弄懂这个,谢谢!

	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
	</bean>

	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="get*" read-only="true" />
			<tx:method name="find*" read-only="true" />
			<tx:method name="add*" rollback-for="Exception" />
			<tx:method name="insert*" rollback-for="Exception" />
			<tx:method name="save*" rollback-for="Exception" />
			<tx:method name="addOrUpdate*" rollback-for="Exception" />
			<tx:method name="del*" rollback-for="Exception" />
			<tx:method name="delete*" rollback-for="Exception" />
			<tx:method name="update*" rollback-for="Exception" />
		</tx:attributes>
	</tx:advice>

	<aop:config proxy-target-class="true">
		<aop:pointcut id="serviceMethod"
			expression="execution(* xxx.xxx.service.*Service.*(..))" />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" />
	</aop:config>

	
<bean id="baseService" class="xxx.xxx.common.CommonBaseService">
		<property name="jdbcTemplate" ref="jdbcTemplate" />
	</bean>
	<bean id="userService" class="xxx.xxx.service.UserService" parent="baseService" />

和NEO有些许不同,这都无所谓。就是IOC和AOP的应用。
3 楼 haige18 2010-11-05  
sarin 写道
haige18 写道
您好,请问一下你用spring jdbc 怎么实现的事务处理,谢谢!

对service层方法进行拦截处理

这个我知道,我想问题下,用spring管理service时,怎么配置上事务的,是parent属性吗?最近,没怎么弄懂这个,谢谢!
2 楼 sarin 2010-11-05  
haige18 写道
您好,请问一下你用spring jdbc 怎么实现的事务处理,谢谢!

对service层方法进行拦截处理
1 楼 haige18 2010-11-05  
您好,请问一下你用spring jdbc 怎么实现的事务处理,谢谢!

相关推荐

    Struts2 in action中文版

    8.1.1 页面上:如何使用自定义结果组件构建Struts 2 Ajax应用程序 171 8.1.2 实现JSON结果类型 173 8.2 常用的结果类型 180 8.2.1 RequestDispatcher,也叫做dispatcher 180 8.2.2 ServletRedirectResult,也叫做...

    java开源包11

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包6

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包4

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包2

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包9

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包5

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包101

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包8

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包10

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    Spring in Action(第二版 中文高清版).part2

    第16章 集成其他Web框架 16.1 协同使用Spring和Struts 16.1.1 向Struts注册Spring插件 16.1.2 编写知晓Spring的Struts动作 16.1.3 委托Spring配置的动作 16.1.4 关于Struts 2 16.2 协同使用Spring和WebWork 2...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java开源包1

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包3

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    Spring in Action(第二版 中文高清版).part1

    第16章 集成其他Web框架 16.1 协同使用Spring和Struts 16.1.1 向Struts注册Spring插件 16.1.2 编写知晓Spring的Struts动作 16.1.3 委托Spring配置的动作 16.1.4 关于Struts 2 16.2 协同使用Spring和WebWork 2...

    java开源包7

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    Java资源包01

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    Spring in Action(第2版)中文版

    第16章集成其他web框架 16.1协同使用spring和struts 16.1.1向struts注册spring插件 16.1.2编写知晓spring的struts动作 16.1.3委托spring配置的动作 16.1.4关于struts2 16.2协同使用spring和webwork2/struts2 ...

Global site tag (gtag.js) - Google Analytics