您的位置:首页 > 编程语言 > Java开发

spring+hibernate3+struts2整合完整配置

2010-05-25 20:03 323 查看
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-para
b26e
m>

        <!-- 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了,可以运行试试了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息