免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 998 | 回复: 0
打印 上一主题 下一主题

Struts2+Spring2+Hibernate3 web应用示例(六) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-15 17:37 |只看该作者 |倒序浏览

八、       配置Struts2

Struts的配置文件都会在web.xml中注册的。
a)        Struts的配置文件如下:

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>


    constant name="struts.enable.DynamicMethodInvocation" value="false" />

    constant name="struts.devMode" value="true" />

    constant name="struts.i18n.encoding" value="GBK" />   


     Add packages here -->


struts>

Src/struts.xml
b)        struts_book.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 name="products" extends="struts-default">

        default-interceptor-ref name="validation"/-->

          Add actions here -->

        action name="list" class="bookAction" method="list">            

            result>/list.jspresult>

        action>


    action name="delete" class="bookAction" method="delete">            

            result type="redirect">list.action?queryMap=${queryMap}result>

        action>


        action name="*" class="com.sterning.commons.AbstractAction">

            result>/{1}.jspresult>

        action>

        

    action name="edit" class="bookAction" method="load">

            result>/editBook.jspresult>

        action>

      

       action name="save" class="bookAction" method="save">

           interceptor-ref name="params"/>

           interceptor-ref name="validation"/>

            result name="input">/editBook.jspresult>

            result type="redirect">list.action?queryMap=${queryMap}result>

              

        action>

    package>

struts>

  
文件中的,使用了struts2自己的拦截器,拦截器在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。
Struts 2已经提供了丰富多样的,功能齐全的拦截器实现。大家可以到struts2-all-2.0.6.jar或struts2-core-2.0.6.jar包的struts-default.xml查看关于默认的拦截器与拦截器链的配置。
在struts-default.xml中已经配置了大量的拦截器。如果您想要使用这些已有的拦截器,只需要在应用程序struts.xml文件中通过“”将struts-default.xml文件包含进来,并继承其中的struts-default包(package),最后在定义Action时,使用“”引用拦截器或拦截器栈(interceptor stack)。一旦您继承了struts-default包(package),所有Action都会调用拦截器栈 ——defaultStack。当然,在Action配置中加入“”可以覆盖defaultStack。
作为“框架(framework)”,可扩展性是不可或缺的,因为世上没有放之四海而皆准的东西。虽然,Struts 2为我们提供如此丰富的拦截器实现,但是这并不意味我们失去创建自定义拦截器的能力,恰恰相反,在Struts 2自定义拦截器是相当容易的一件事。所有的Struts 2的拦截器都直接或间接实现接口com.opensymphony.xwork2.interceptor.Interceptor。除此之外,大家可能更喜欢继承类com.opensymphony.xwork2.interceptor.AbstractInterceptor。
  
九、       配置Spring

1、Spring的配置文件如下:

xml version="1.0" encoding="UTF-8"?>

DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">



beans>

     dataSource config -->

    bean id ="dataSource" class ="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

        property name="driverClassName" value="com.mysql.jdbc.Driver" />

        property name="url" value="jdbc:mysql://localhost:3306/game" />

        property name="username" value="root" />

        property name="password" value="root"/>

    bean>

   

     SessionFactory -->

    bean id="sessionFactory"

        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">


        property name="dataSource">

            ref bean="dataSource"/>

        property>

        property name="configLocation">

            value>classpath:com\sterning\bean\hibernate\hibernate.cfg.xmlvalue>

        property>        

    bean>

   

     TransactionManager  不过这里暂时没注入-->

    bean id="transactionManager"

        class="org.springframework.orm.hibernate3.HibernateTransactionManager">

        property name="sessionFactory">

            ref local="sessionFactory"/>

        property>

    bean>

   

     DAO -->

    bean id="booksDao" class="com.sterning.books.dao.hibernate.BooksMapDao">

        property name="sessionFactory">

            ref bean="sessionFactory"/>

        property>

    bean>

   

     Services -->

    bean id="booksService" class="com.sterning.books.services.BooksService">

        property name="booksDao">

            ref bean="booksDao"/>

        property>

    bean>

   

    bean id="pagerService" class="com.sterning.commons.PagerService"/>

   

     view -->

    bean id="bookAction" class="com.sterning.books.web.actions.BooksAction" singleton="false">

        property name="booksService">

            ref bean="booksService"/>

        property>

        property name="pagerService">

            ref bean="pagerService"/>

        property>

    bean>  

   

beans>

  WebRoot/WEB-INF/srping-content/applicationContent.xml
2、Struts.properties.xml
本来此文件应该写在struts 配置一节,但主要是考虑这体现了集成spring的配置,所以放在spring的配置这里来讲。

struts.objectFactory = spring  

struts.locale=zh_CN

struts.i18n.encoding = GBK

  
struts.objectFactory:ObjectFactory 实现了 com.opensymphony.xwork2.ObjectFactory接口(spring)。struts.objectFactory=spring,主要是告知Struts 2运行时使用Spring来创建对象(如Action等)。当然,Spring的ContextLoaderListener监听器,会在web.xml文件中编写,负责Spring与Web容器交互。
struts.locale:The default locale for the Struts application。 默认的国际化地区信息。
struts.i18n.encoding:国际化信息内码。
十、       Web.xml配置


xml version="1.0" encoding="GB2312"?>

DOCTYPE web-app

    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

    "http://java.sun.com/dtd/web-app_2_3.dtd">


web-app>

    display-name>图书管理系统display-name>

    context-param>

        param-name>log4jConfigLocationparam-name>

        param-value>/WEB-INF/classes/log4j.propertiesparam-value>

    context-param>

     ContextConfigLocation -->

    context-param>

        param-name>contextConfigLocationparam-name>

        param-value>/WEB-INF/spring-context/applicationContext.xmlparam-value>

      context-param>

   

    filter>

        filter-name>encodingFilterfilter-name>

        filter-class>com.sterning.commons.SetCharacterEncodingFilterfilter-class>

        init-param>

            param-name>encodingparam-name>

            param-value>UTF-8param-value>

        init-param>

        init-param>

            param-name>forceEncodingparam-name>

            param-value>trueparam-value>

        init-param>

    filter>

     filter>

        filter-name>struts2filter-name>

        filter-class>org.apache.struts2.dispatcher.FilterDispatcherfilter-class>

        init-param>

            param-name>configparam-name>

            param-value>struts-default.xml,struts-plugin.xml,struts.xml,struts_books.xmlparam-value>

        init-param>

    filter>   


    filter-mapping>

        filter-name>encodingFilterfilter-name>

        url-pattern>/*url-pattern>

    filter-mapping>

    filter-mapping>

        filter-name>struts2filter-name>

        url-pattern>/*url-pattern>

    filter-mapping>        

   

     Listener contextConfigLocation -->

      listener>

        listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>

      listener>

     Listener log4jConfigLocation -->

      listener>

        listener-class>org.springframework.web.util.Log4jConfigListenerlistener-class>

      listener>



     The Welcome File List -->

    welcome-file-list>

        welcome-file>index.jspwelcome-file>

    welcome-file-list>

web-app>

  
在Struts 2中,配置有少许改变,最明显的是分发器(dispatcher)已由Servlet转为Servlet Filter, 其配置和Servlet一样简单。和Servlet配置一样,Filter配置中定义了Filter的名称(作为引用)和类名。Filter Mapping通过URI和名称匹配来调用相应的Filter。默认情况下,扩展名为“.action”,这是在default.properties文件(在Struts 2 JAR文件里)的“struts.action.extension”属性定义的。
待续.....


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/63390/showart_497167.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP