基于Struts Spring Hibernate的web配置开发Word文档格式.docx
- 文档编号:7947744
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:16
- 大小:1.02MB
基于Struts Spring Hibernate的web配置开发Word文档格式.docx
《基于Struts Spring Hibernate的web配置开发Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于Struts Spring Hibernate的web配置开发Word文档格式.docx(16页珍藏版)》请在冰点文库上搜索。
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中文件末尾处<
/Host>
之前加上如下语句:
<
Contextpath="
/MyWebProject"
docBase="
D:
/eclipse/workspace/MyWebProject/WebRoot"
/>
其中
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)基于<
tx>
和<
aop>
命名空间的声明式事务管理是目前推荐的方式,其最大特点是与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的类,并通过<
load-on-startup>
0<
/load-on-startup>
设置其优先级。
该值表示服务器加载的顺序,0的优先级最高。
3.1.5.3查看Hibernate生成的原生态sql语句
3.1.5.3.1查看Hibernate生成语句
我们在前面的设置中可以设定
propkey="
hibernate.show_sql"
>
true<
/prop>
指定当程序运行时,是否在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语句。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于Struts Spring Hibernate的web配置开发 基于 Struts Hibernate web 配置 开发