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

一种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 怎么实现的事务处理,谢谢!

相关推荐

    web框架PPT——Struts 2+Hibernate+MyBatis+Spring 网站开发案例课堂 书籍附带PPT课件

    在现代的Web应用程序开发中,Java Web框架的组合使用已经成为了一种常见的模式,特别是Struts 2、Hibernate、MyBatis和Spring这四个组件的整合,它们分别在MVC架构的不同层面发挥着关键作用。本课程围绕这个组合展开...

    Struts2+Spring+Hiberate介绍

    Struts2、Spring和Hibernate是Java企业级应用开发中广泛使用的三大开源框架,它们共同组成了所谓的"S2SH"架构。这个架构为开发者提供了一种高效、灵活且强大的解决方案,帮助构建复杂的Web应用程序。 **Struts2** ...

    spring+hibernate+struts2+freemarker SSH2 新闻发布系统

    SSH2是一种常见的Java Web开发框架组合,由Spring、Struts2和Hibernate三个组件构成。这个新闻发布系统是基于SSH2框架实现的一个简单应用实例,旨在展示如何整合这三个强大的框架来构建一个功能完备的Web应用程序。 ...

    struts2+spring练习

    Struts2和Spring是两种非常重要的Java Web开发框架,它们在企业级应用中广泛使用。Struts2提供了MVC(模型-视图-控制器)架构,帮助开发者更好地组织和管理应用程序逻辑,而Spring则是一个全面的后端框架,提供依赖...

    struts2+spring实例程序

    总的来说,Struts2+Spring的组合提供了强大的Web应用开发能力,让开发者能够构建出结构清晰、易于维护的应用程序。同时,通过研究提供的实例,开发者可以更好地掌握这两种框架的使用方法,提升自己的开发技能。

    Struts2、Spring、Freemarker自定义标签

    Struts2是一个基于MVC设计模式的Web应用框架,Spring是一个全面的后端应用程序框架,而Freemarker则是一种模板引擎,用于生成动态HTML、XML等格式的页面。 首先,让我们深入了解Struts2。Struts2的核心是Action类,...

    struts2+hibernate+spring+dwr整合

    Struts2、Hibernate、Spring 和 DWR 是四个在Java Web开发中非常重要的框架,它们各自在不同的领域提供了强大的功能,并且能够通过整合实现更高效、更灵活的应用开发。接下来,我们将详细探讨这些技术以及它们如何...

    Struts2+Spring+EJB框架整合实例

    Struts2、Spring和EJB(Struts2+Spring+EJB,简称SSE)是Java企业级开发中常用的三大框架,它们各自承担着不同的职责,共同构建了一个强大的应用架构。Struts2作为MVC(Model-View-Controller)框架,负责处理用户...

    struts2+spring+hibernate配置

    Struts2、Spring和Hibernate是Java Web开发中的三个重要框架,它们共同构成了经典的MVC(Model-View-Controller)架构。Struts2负责控制层,Spring作为应用上下文和依赖注入容器,而Hibernate则用于对象关系映射,...

    基于Struts2+Spring+Hibernate+MySql的注册登录系统

    总的来说,"基于Struts2+Spring+Hibernate+MySql的注册登录系统"是一个典型的企业级Web应用开发实例,涵盖了从用户交互到数据库操作的完整流程,对于学习和实践Java Web开发有着很高的参考价值。通过深入理解和实践...

    Struts 2+Spring 3+Hibernate框架技术精讲与整合案例_pdf源码前半部分

    2. **Spring 3**:Spring 是一个全面的企业应用框架,包括依赖注入(DI)、面向切面编程(AOP)、数据访问/集成、Web 应用开发等模块。Spring 3 提供了对 JDBC 的简化处理,支持多种ORM框架如 Hibernate,同时Spring...

    struts2+spring+hibernate网上书店系统

    Struts2+Spring+Hibernate网上书店系统是一种基于Java技术的Web应用程序开发框架组合,用于构建高效、可扩展的电子商务平台。这个系统的核心是这三种框架的集成应用,它们分别是: 1. Struts2:作为MVC(Model-View...

    轻量级Java EE企业应用实战——Struts 2+Spring+Hibernate整合开发电子书3

    《轻量级Java EE企业应用实战——Struts 2+Spring+Hibernate整合开发电子书3》是一本专注于Java EE轻量级开发技术的专著,它深入探讨了Struts 2、Spring和Hibernate(SSH)这三大流行开源框架的集成与应用。...

    SSHF备忘之依赖包(struts2+spring2.5+hibernate+freemarker)

    1. **Struts2**:Struts2是基于Apache Jakarta Struts的下一代Web应用框架,它提供了一种更灵活和强大的MVC架构。依赖包包括`struts2-core-2.0.11.jar`和`struts2-spring-plugin-2.0.11.jar`,后者用于将Struts2与...

    struts2.1+spring2.5+hibernate3.3整合之第一步(spring2.5+hibernate3.3)

    首先,Struts2是一个基于MVC设计模式的Web应用框架,它极大地简化了Java Web应用的开发。Struts2.1引入了拦截器(Interceptor)机制,使得业务逻辑和控制逻辑可以更好地分离,提高了代码的可维护性和可扩展性。同时...

    struts2.0+spring2.0+hiberante3+dwr+freemarker整合所需jar包

    Struts2.0、Spring2.0、Hibernate3和DWR以及Freemarker是Java Web开发中的关键组件,它们各自负责不同的职责,并且通过合理的整合,可以构建出强大的企业级应用系统。 Struts2.0是Apache软件基金会下的一个开源MVC...

    Struts+Spring+Hibernate+Freemarker新闻系统

    1. **Struts**: Struts是一个基于MVC设计模式的Java Web框架,主要用于控制应用程序的流程。它通过Action类处理用户的请求,并将结果转发给相应的视图。在本系统中,Struts作为前端控制器,负责接收HTTP请求,调度...

Global site tag (gtag.js) - Google Analytics