基于Struts Spring Hibernate的web配置开发.docx

上传人:b****8 文档编号:11456375 上传时间:2023-03-01 格式:DOCX 页数:16 大小:1.02MB
下载 相关 举报
基于Struts Spring Hibernate的web配置开发.docx_第1页
第1页 / 共16页
基于Struts Spring Hibernate的web配置开发.docx_第2页
第2页 / 共16页
基于Struts Spring Hibernate的web配置开发.docx_第3页
第3页 / 共16页
基于Struts Spring Hibernate的web配置开发.docx_第4页
第4页 / 共16页
基于Struts Spring Hibernate的web配置开发.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

基于Struts Spring Hibernate的web配置开发.docx

《基于Struts Spring Hibernate的web配置开发.docx》由会员分享,可在线阅读,更多相关《基于Struts Spring Hibernate的web配置开发.docx(16页珍藏版)》请在冰豆网上搜索。

基于Struts Spring Hibernate的web配置开发.docx

基于StrutsSpringHibernate的web配置开发

基于Struts,Spring,Hibernate的web配置开发

1引言

通常情况下,一个Web商业系统要求其稳定,扩展性强,可移植性高,并发性强,等等。

这样要求系统设计应该是一个松耦合并且灵活多遍,Java以其跨平台和对网络编程良好支持的特性成为众多基于Web应用的首选,其中Struts、Spring、Hibernate等优秀的开源框架的出现大大提高了软件开发的效率。

三个框架分别在三个不同的方面对软件的松耦合和可移植性提供了支持,如果在适当的条件下整合三个框架将对系统的可维护性和可扩展性有很好的提高。

本文的重点关注于Structs,Spring,Hibernate的集成配置,并且一个Web系统的其他扩展配置,更关注其实用性,如果阅读完本文后,对Structs,Spring,Hibernate的集成框架本身有一个大概的了解即可。

2软件架构

2.1Web应用的体系结构

通常情况下,一个商业系统被划分为4个层次,分别是表示层、业务层、持久层和域模型层。

每一层的功能都是单一的,不建议将某一类型的功能同时放置在两个不同的层次中。

在正常开发中,要确保每一层和其他层是相互隔离的,只能通过实现所定义的各种接口来进行通信。

2.1.1表示层

在Web应用开发中需要关注的一个焦点就是表示层。

很多开发人员都知道Structs的基本功能,但通常他们会将业务逻辑放置的在Structs的Action中,这种做法应用与大型的商业应用中就不合适。

表示层(Structs)所应提供的功能包括:

1、管理用户的请求和相应。

2、提供一个控制器负责调用业务逻辑的处理方法以及其他处理。

3、处理其他层次抛出到StructsAction的异常。

4、组装一个可以被呈现在视图(View)中的模型(Model)。

5、执行表示层校验。

2.1.2业务层

Spring作为一个很小的容器可以很方便的和业务方法联系到一起。

通过依赖注入的基础上实现的。

(非侵入式容器)

业务层应该包括:

1、处理业务逻辑和进行业务判断。

2、事务管理。

(对于Spring来说,其分布式管理简单,强大)

3、通过使用接口和其他层交互。

4、管理业务层对象的依赖性。

5、可以增加表示层和持久层的灵活性,使它们之间不会有交互。

6、实现一个业务的上下文,以便于表示层可以调用业务层的服务。

7、管理持久层的实现。

2.1.3持久层

持久层应该提供的功能:

1、查询相关的信息并保存到Java对象中。

Hibernate是通过面向对象的查询语言——HQL或者通过使用Criteria表达式来实现的。

HQL和SQL非常相似,他们之间的区别在于,HQL使用的是对象和属性来代替SQL语句中的表和列。

2、保存、更新和删除存储在数据库中的信息。

3、象Hibernate这样的高级的ORM框架已经支持了全部的主流数据库,并且它提供了父子关系、事务、继承和多态等功能。

2.1.4域模型层

域模型层包括了真实世界中的业务对象。

例如,定单,产品等。

在Web应用中使用域模型层可以省去开发人员创建和维护数据传输对象(DTO)所带

来的麻烦。

例如:

Hibernate允许将数据库的信息读取到域模型对象中,以便于可以直接呈现在表示层的页面中。

这些对象还可以被更新并且传回持久层,最后更新到数据库中。

3集成配置开发

3.1项目初始化

3.1.1创建一个新的项目

可以使用MyEclipse新建一个Web工程。

例如其名称为:

MyWebProject。

如图:

形成一个基本的目录结构。

目录结构如下:

1、.myeclipse这是一个辅助目录,MyEclipse用来保存关于这个项目的一

些配置信息。

2、Src项目的Java源文件和资源文件的保存目录。

3、WebRootWeb项目的根目录,用于保存页面文件等内容。

4、WebRoot\WEB-INF用于保存Web应用的部署描述文件(web.xml)以及一些其

他的配置文件。

5、WebRoot\WEB-INF\classesJava类编译后的目标路径。

6、WebRoot\WEB-INF\lib项目中用到的辅助类库的保存目录。

该目录结构为MyEclipse生成的标准Web开发目录结构,该结构优点为:

除了Java文件外,所有的文件的位置都与部署后的位置相同。

这样在部署的时候就不需要移动任何文件,只需将Java文件编译到指定的目标目录就可以了。

在使用Tomcat作为Servlet容器开发时,不需要对工程进行发布,只需要在conf文件夹下的server.xml中文件末尾处之前加上如下语句:

其中

1、MyWebProject为工程名称。

(在此处换上你自己的工程名称)

2、D:

/eclipse/workspace/MyWebProject/WebRoot为工程所在的WebRoot目录,注意:

docBase所对应的路径不可有中文,最好也不要有空格。

(在此处换上你自己的工程路径)

3、假定我们是在一个Oracle库下开发。

a)将要使用的数据库的JDBC驱动库复制到lib目录中。

ojdbc14.jar文件

3.1.2集成Structs

3.1.2.1准备工作

图:

Structs—1

图:

Structs—2

1、如图,选中工程,通过MyEclipse的功能菜单,增加Structs的内容。

最终会形成如

下情况。

(对应图:

Structs—3)

1)复制Structs及其所需要的类库到项目的WebRoot\WEG-INF\lib中。

2)生成Structs的标签库。

(以ltd结尾的文件,在WebRoot\WEG-INF目录下)

1)例如:

struts-bean.tld

3)生成默认的资源文件。

(ApplicationResources.properties)

4)改写web.xml文件,将Structs中的信息写入到其中。

2、如果需要Structs的高级版本,需要手工进行设置。

1)在Web部署文件中定义Servlet。

2)复制Structs及其所需要的类库到项目的WebRoot\WEG-INF\lib中。

3)创建最初的Structs配置文件。

3.1.2.2在struts-config.xml中的配置

1、在struts-config.xml文件中,集成为:

1)用Spring的RequestProcessor代替Structs的RequestProcessor。

a)这种设计使Struts动作并不知道它正被Spring管理,并且使您能够利用Sping的动作管理框架的所有优点。

由于您的Struts动作注意不到Spring的存在,所以您不需要重写您的Struts代码就可以使用其他控制反转容器来替换掉Spring。

2)在Structs中注册Spring。

(即:

需要使用Spring的ContextLoaderPlugin为Struts的ActionServlet装载Spring应用程序环境)

图:

Structs—3

3.1.3集成Hibernate

1、将Hibernate所需要的库文件加载其中。

2、关于对Hibernate的配置在Spring的配置文件中实现。

3、Spring集成中,LocalSessionFactoryBean将所有的Hibernate的配置参数都整合到Spring的配置文件。

3.1.4集成Spring

3.1.4.1定义Spring的配置文件。

首先,一个空的Spring文件的基础格式如下:

在这里定义了xml的版本,字符集,编写文件需要遵循的dtd文件格式。

关于DOCYTPE说明:

DOCYTPE声明必须立即出现在此头之后。

这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此文件其余部分内容的语法的DTD(DocumentTypeDefinition,文档类型定义)

为了使我们的工程更有条理,在此处进行Spring的手工配置。

1、新建如下文件夹:

/WebRoot/WEB-INF/xml/config/spring。

准备将Spring的配置文件放在其中,在这里Spring的配置文件名为applicationContext.xml。

2、在这里配置数据源(以Oracle为例)。

3、配置SessionFactory接口。

(目的:

工厂类SessionFactory中取得Session的实例,可以将session看作介于数据连接与事务管理一种中间接口)

4、配置事务管理。

1)配置Hibernate事务管理器。

2)基于命名空间的声明式事务管理是目前推荐的方式,其最大特点是与SpringAOP结合紧密,可以充分利用切点表达式的强大支持,使得管理事务更加灵活。

3)设置事务级别,以及何种方法名会走事务处理。

5、DAO,Service接口的设定,通过Spring的注入关系,将SessionFactory注入到DAO中,将DAO注入到Service中。

3.1.4.2在web.xml配置对Spring的监听

在web.xml配置对Spring的监听(ContextLoaderListener的作用就是启动Web容器

时,自动装配ApplicationContext的配置信息。

3.1.5其他配置的集成

3.1.5.1配置日志

在正式商用系统中,必然要配置日志,这里可采用Log4j来配置。

3.1.5.1.1Log4j的优点:

1、Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等;

2、我们也可以控制每一条日志的输出格式;

3、通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

4、可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

5、进行配置文件的修改后,不需要重新启动服务器,会自动刷新获取配置文件的修改。

6、可以控制Log4j的输出级别,例如在开发阶段使用Debug级别,在系统正式交付使用后,可以将级别调高,这样Debug的信息则不会再输出。

3.1.5.1.2在web.xml中关于Log4j的配置如下所示

ContextLoaderListener:

使用该监听器初始化Log4J日志引擎(Log4jConfigListener会自动完成将Web应用根目录以webAppRootKey上下文参数指定的属性名添加到系统参数中)

3.1.5.2工程启动时需要在程序中进行加载的部分

在工程进行加载时,正常情况下会进行一下初始化配置,例如:

缓存数据加载,初始化参数,指定工程启动语言(如果需要支持国际化),等等……。

这时需要在系统中编程实现,这样可以采取类型如下的方法:

在如上的配置中,指定了Servlet的类,并通过0设置其优先级。

该值表示服务器加载的顺序,0的优先级最高。

3.1.5.3查看Hibernate生成的原生态sql语句

3.1.5.3.1查看Hibernate生成语句

我们在前面的设置中可以设定

true

指定当程序运行时,是否在SQL语句中输出便于调试的注释信息。

当show_sql属性为true时,表示输出注释信息,默认为false。

建议在调试程序时设为true,发布程序之前再改为false。

该属性只有当show_sql属性为true时才有效。

这种方式的一个缺点就是,我们想查看Hibernate生成的sql语句未必是完成的sql语句,并且并非所有的Hibernate生成的sql语句使我们想查看的,而我们想查看特定的生成语句可能会被其他语句所混淆。

并且有可能会影响我们查看我们其他希望输出信息的查看。

3.1.5.3.2查看完成Sql的解决方法

我们可以通过P6spy来解决上述问题。

P6spy是一个JDBCDriver的包装工具,p6spy通过对JDBCDriver的封装以达到对SQL语句的监听和分析,以达到各种目的。

安装P6spy的步骤:

1、下载p6spy的安装包

2、把p6spy的jar包放到Classpath中,如果是WEBApp放在WEBAPP/WEB-INF/lib目录下(例如:

p6spy-1.3.jar)

3、配置方法修改:

(参考如下代码,这里只是对数据源的方式进行了简单的修改)

4、编辑spy.properties文件,把JDBCDriverClassName作为

RealDriverName的值,其它的属性一般不用指定.

(例:

realdriver=oracle.jdbc.driver.OracleDriver)

5、把spy.properties放到合适的目录下,一定要让App能够找着,如果是webapp就放在webapp/WEB-INF/classess/目录下。

(在src中自然就放在了src的根目录下)

6、启动runsqlprofiler.bat后,等待界面出来后,再启动Servlet容器,成功后就可以很方便的查看Hibernate生成的完整sql语句。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1