/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)基于和命名空间的声明式事务管理是目前推荐的方式,其最大特点是与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语句。