spring+hibernate3+struts2整合完整配置

字体大小: 中小 标准 ->行高大小: 标准
1.新建Web Project,取名为MapgisEgov.Test
 2.Build Path-->Libraries中添加Jars、JRE System Library[jdk]、EAR libraries、Web App libraries、Apache Tomcat
 3.Java EE Module Dependencies中勾选Jars,项目部署时会将Jars集成至WEB-INF/classes文件夹
 4.在WebContent/下新建一个jsp文件NewTest.jsp
 在Java Resources:src包下新建包com.mapgis.test包,在此包下面新建类NewTestAction.java,注意action和jsp命名方式。
 5.在Java Resources:src包下新建配置文件:log4j.properties配置如下:
 log4j.rootCategory=INFO, stdout , R
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.Target=System.out
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
 #
 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.R.File=${webApp.root}/WEB-INF/logs/mapgisegov.log
 log4j.appender.R.layout=org.apache.log4j.PatternLayout
 log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
 log4j.appender.R.Encoding=UTF-8
 #
 log4j.logger.com.opensymphony=ERROR
 log4j.logger.org.springframework=WARN
 log4j.logger.org.apache.commons=ERROR
 log4j.logger.org.apache.struts=WARN
 log4j.logger.org.apache.velocity=FATAL
 #
 log4j.logger.org.hibernate=ERROR
 log4j.logger.org.hibernate.SQL=DEBUG
 log4j.logger.org.hibernate.tool.hbm2ddl=ERROR
 log4j.logger.org.hibernate.type=info
 log4j.logger.org.hibernate.hql=info
 #
 6.配置web.xml文件,详解如下:
 
<?xml version="1.0" encoding="UTF-8"?>
 <web-app id="WebApp_ID" version="2.4"
     xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     <!-- display-name元素提供GUI工具可能会用来标记这个特定的web应用的一个名称 -->
     <display-name>MapgisEgov.Test</display-name>
     <!-- 指定欢迎页面 -->
     <welcome-file-list>
         <welcome-file>NewTest.jsp</welcome-file>
     </welcome-file-list>
 
    <!--
         MVC框架需要 Web应用加载一个核心控制器,对于Struts2框架而言,需要加载FilterDispatcher
         只要Web应用负责加载FilterDispatcher,FilterDispatcher将会加载应用的Struts框架。 因为Struts2
         将核心控制器设计成Filter,而不是一个普通的Servlet。故为了让Web应用加载FIlterDispatcher,
         只需在Web.xml文件中配置FilterDispatcher即可。配置FilterDispatcher的代码如下:
     -->
     <!--
         过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联,
         一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或者多个servlet或JSP页面相关联
     -->
     <!-- 配置Struts2框架的核心Filter -->
     <filter>
         <!-- 配置Struts2核心Filter名字 -->
         <!-- 配置Struts2核心实现类 -->
         <filter-name>struts2</filter-name>
         <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
         <!-- 配置Struts2框架默认加载的Action包结构 -->
         <!--
             <init-param> <param-name>actionPackages</param-name>
             <param-value>org.apache.struts2.showcase.person</param-value>
             </init-param>
         -->
         <!-- 配置Struts2框架配置提供者 -->
         <!--
             <init-param> <param-name>configProviders</param-name>
             <param-value></param-value> </init-param>
         -->
 
    </filter>
     <!--
         正如上面看到的,当配置Struts2的FilterDispatcher类时,可以指定一系列的初始化参数,为
         该Filter配置初始化参数时,其中有3个初始化参数有意义。
         1:config:该参数的值是一个以英文逗号(,)隔开的字符串,每个字符串都是一个XML配置文件的位置。Struts2框架将扫描这些包空间下的Action类
         2:actionPackages:该参数的值也是一个以英文逗号(,)隔开的字符串,每个字符串都是一个包空间,Struts2将扫描这些包空间下的Action类
         3:configProviders:如果用户需要实现自己的ConfigurationProvider类,用户可以提供一个或者多个实现了ConfigurationProvider接口类,
         然后将这些类的类名设置成该属性值,多个类名之间以英文(,)隔开。
         除此之外,还可以在此处配置Struts2常量,每个<init-param>元素配置一个Struts2常量,其中<param-name>元素指定常量name,而<param-value>子元素指定了常量value。
     -->
     <!--
         在web.xml文件中配置了该Filter,还需要配置该Filter拦截的URL。通常,我们让该FIlter拦截所有的用户请求,因此使用通配符来配置该Filter拦截器的URL,
         下面是该Filter拦截URL的配置
     -->
 
    <!-- 配置Filter拦截的URL -->
     <filter-mapping>
         <!-- 配置Struts2的核心FilterDispatcher拦截所有用户请求 -->
         <filter-name>struts2</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>
 
    <!-- 处理中文乱码的过滤器配置-->
     <filter>
         <!-- spring编辑过滤器 -->
         <filter-name>encodingFilter</filter-name>
         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
         <!-- 编码方式 -->
         <init-param>
             <param-name>encoding</param-name>
             <param-value>UTF-8</param-value>
         </init-param>
         <!--
             强制进行编码转换 <init-param> <param-name>forceEncoding</param-name>
             <param-value>true</param-value> </init-param>
         -->
     </filter>
     <!--  过滤器的匹配 URL -->
     <filter-mapping>
         <filter-name>encodingFilter</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>
 

    <!-- 配置监听器 -->
     <!-- WebAppRootListener监听器配置 -->
     <!--
         说明:Spring在org.springframework.web.util 包中提供了几个特殊用途的 Servlet
         监听器,正确的使用它们可以完成一些特殊功能的需求。 比如某些第三方工具支持通过 ${key} 的方式引用系统参数(即可以通过
         System.getProperty() 获取的属性,WebAppRootListener可以将
         web应用根目录添加到系统参数中,对应的属性名可以通过名为“webAppRootKey”的Servlet上下文参数指定,默认为“webapp.root”。下面是具体配置
     -->
 
    <context-param>
         <param-name>webAppRootKey</param-name>
         <param-value>webApp.root</param-value>
     </context-param>
 
    <!-- 负责将Web应用根目录以WebAppRootKey上下文参数指定的属性名添加到系统参数中 -->
 
    <!--
         通过以上对webAppRootKey配置,就可以在程序中通过 System.getProperty("webapp.root") 获取
         Web 应用的根目录了。 过更常见的使用场景是在第三方工具的配置文件中通过${webapp.root} 引用 Web 应用的根目录。
     -->
 
    <!-- Log4jConfigListener监听器配置 -->
     <!--
         说明: 一般情况下,必须将Log4J日志配置文件以log4j.properties为文件名保存在类路径下。
         Log4jConfigListener允许通过log4jConfigLocation
         Servlet上下文显示的指定Log4J配置文件地址,如下所示:
     -->
     <context-param>
         <!--  指定 Log4J 配置文件的地址 -->
         <param-name>log4jConfigLocation</param-name>
         <param-value>classpath:log4j.properties</param-value>
     </context-param>
     <context-param>
         <!-- Log4J日志刷新时间间隔 -->
         <param-name>log4jRefreshInterval</param-name>
         <param-value>6000</param-value>
     </context-param>
     <!-- 使用该监听器初始化Log4J日志引擎 -->
     <listener>
         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
     </listener>
 
    <!-- 这里集成Spring框架 -->
     <context-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>/WEB-INF/applicationContext.xml,classpath*:beanContext-*.xml,classpath*:springContext-*.xml</param-value>
     </context-param>
     <listener>
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>
     <!--
         如果某个会话在一定时间内未被访问,服务器可以抛出它以节省内存,可以通过使用HttpSession的setMaxInactiveInterval
         方法,明确设置单个会话对象的超时值,或者可以利用session-config元素制定缺省超时值,超时值的单位为(分)
     -->
     <!-- SESSION设置 -->
     <session-config>
         <session-timeout>10</session-timeout>
     </session-config>
 
    <!-- error-page元素使得在返回特定HTTP状态代码时,或者特定类型的异常被抛出时,能够制定将要显示的页面 -->
     <!-- 指定错误处理页面 -->
     <error-page>
         <!-- excpetion-type指出在出现某个给定的Java异常但未捕捉到此异常时使用的URL -->
         <exception-type>java.io.IOException</exception-type>
         <location>/common/system_ioerror.jsp</location>
         <!--
             error-code 指出在给定HTTP错误代码时使用的URL <error-code></error-code>
         -->
     </error-page>
 
</web-app>
 7.配置struts.xml文件,将其保存在Java Resources:src包下,配置如下:
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE struts PUBLIC
     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
     "http://struts.apache.org/dtds/struts-2.1.7.dtd">
     <!-- Struts框架核心配置文件就是struts.xml配置文件,该文件主要负责管理Struts2框架业务控制器Action -->
     <!--
         在默认情况下,Struts2框架将自动加载放在WEB-INF/class路径下的struts.xml文件。在大部分应用里,随着应用规模的增加,
         系统Action数量也大量增加,导致struts.xml配置文件很臃肿,为了避免struts.xml文件过于庞大臃肿,提高其可读性,
         我们可以将一个struts.xml配置文件分解成多个配置文件,然后再struts.xml包含其它配置文件
     -->
 
    <!-- 下面是struts2配置文件的根元素 -->
 <struts>
     <!-- 通过include元素导入其它配置文件 -->
     <include file="struts-default.xml"></include>
     <!-- struts-test.xml文件在下面将会讲到-->
     <include file="struts-test.xml"></include>
     <!-- .... -->
     
    <!-- Struts配置文件还应该有一个Struts.properties文件,我们在此处通过配置constant元素,同样可以配置这些属性 -->
     <!-- 设置Struts2应用是否使用开发模式,设置为true则可以在应用出错时显示更多、更友好的错误提示 -->    
    <constant name="struts.devMode" value="true"></constant>
     
    
    <!--
         配置名为com.mapgis.egov.test.glob的包空间,继承struts-default包空间。
         struts-default包空间定义在struts-default.xml(Struts2框架默认配置文件,Struts2框架每次都会自动加载该文件)文件中。-->
     <package name="com.test" extends="struts-default" namespace="/…">
           <!-- 定义默认的拦截器 每个Action都会自动引用,如果Action中引用了其它的拦截器 默认的拦截器将无效 -->
         <default-interceptor-ref name="defaultStack"></default-interceptor-ref>
         
        <!-- 全局results配置 -->
         <global-results>
             <result name="input">/error.jsp</result>
         </global-results>
         <!-- 
    <action name="abc" class="NewTestAction">
             <result name="input">/NewTest.jsp</result>
             <result name="error">/NewTest.jsp</result>
             <result name="success" type="dispatcher">/NewTest.jsp</result>
     </action>
     -->
     </package>
     
</struts>
 下面再看看struts-test.xml文件的配置:
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd" >
 <struts>
     <!-- package提供了将多个Action组织为一个模块的方式
         package的名字必须是唯一的 ,package可以扩展 ,当一个package扩展自另一个package时,
                     该package会在本身配置的基础上加入扩展的package的配置 ,
                    父package必须在子package前配置 
        name:package名称
         extends:继承的父package名称
         abstract:设置package的属性为抽象的 抽象的package不能定义action 值true:false
         namespace:定义package命名空间 该命名空间影响到url的地址,例如此命名空间为/test那么访问是的地址为http://localhost:8080/struts2/test/XX.action
      -->
     <package name="test" extends="struts-default" namespace="/s">
         <action name="*" class="{1}Action">
             <result name="input">/{1}.jsp</result>
             <result name="error">/{1}.jsp</result>
             <result name="success" type="dispatcher">/{1}.jsp</result>
         </action>
     </package>
 </struts>
 使用匹配符可以匹配时,要注意action的起名形式,应为:XXXAction.java,对应jsp页面也应匹配成XXX.jsp形式。
 
最后再配置由spring初始化bean的文件配置springContext-test.xml
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 指定Spring配置文件的DTD信息 -->
 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
     "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
 <!-- Spring配置文件的根元素 -->
 <beans>    
    <!--以下是逻辑接口的bean配置 -->
     <bean id="NewTestAction" class="com.action.test.NewTestAction" >
     </bean>
 </beans>
 ok了,可以运行试试了。

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68243.html

相关