Struts2+Spring2+Hibernate3 web应用示例(六)

配置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.jsp </ result >
        
</ 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}.jsp </ result >
        
</ action >
        
    
< action  name ="edit"  class ="bookAction"  method ="load" >
            
< result > /editBook.jsp </ result >
        
</ action >
       
       
< action  name ="save"  class ="bookAction"  method ="save" >
           
< interceptor-ref  name ="params" />
           
< interceptor-ref  name ="validation" />
            
< result  name ="input" > /editBook.jsp </ result >
            
< result  type ="redirect" > list.action?queryMap=${queryMap} </ result >
              
        
</ action >
    
</ package >
</ struts >

 

文件中的<interceptor-ref name="params"/>,使用了struts2自己的拦截器,拦截器在AOPAspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。

Struts 2已经提供了丰富多样的,功能齐全的拦截器实现。大家可以到struts2-all-2.0.6.jarstruts2-core-2.0.6.jar包的struts-default.xml查看关于默认的拦截器与拦截器链的配置。

struts-default.xml中已经配置了大量的拦截器。如果您想要使用这些已有的拦截器,只需要在应用程序struts.xml文件中通过“<include file="struts-default.xml" />”struts-default.xml文件包含进来,并继承其中的struts-default包(package),最后在定义Action时,使用“<interceptor-ref name="xx" />”引用拦截器或拦截器栈(interceptor stack)。一旦您继承了struts-default包(package),所有Action都会调用拦截器栈 ——defaultStack。当然,在Action配置中加入“<interceptor-ref name="xx" />”可以覆盖defaultStack

作为框架(framework,可扩展性是不可或缺的,因为世上没有放之四海而皆准的东西。虽然,Struts 2为我们提供如此丰富的拦截器实现,但是这并不意味我们失去创建自定义拦截器的能力,恰恰相反,在Struts 2自定义拦截器是相当容易的一件事。所有的Struts 2的拦截器都直接或间接实现接口com.opensymphony.xwork2.interceptor.Interceptor。除此之外,大家可能更喜欢继承类com.opensymphony.xwork2.interceptor.AbstractInterceptor


 

九、       配置Spring

 

1Spring的配置文件如下:

<? 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.xml </ value >
        
</ 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

2Struts.properties.xml

本来此文件应该写在struts 配置一节,但主要是考虑这体现了集成spring的配置,所以放在spring的配置这里来讲。

struts.objectFactory = spring  
struts.locale=zh_CN
struts.i18n.encoding = GBK
 

struts.objectFactoryObjectFactory 实现了 com.opensymphony.xwork2.ObjectFactory接口(spring)。struts.objectFactory=spring,主要是告知Struts 2运行时使用Spring来创建对象(如Action等)。当然,SpringContextLoaderListener监听器,会在web.xml文件中编写,负责SpringWeb容器交互。

struts.localeThe 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 > log4jConfigLocation </ param-name >
        
< param-value > /WEB-INF/classes/log4j.properties </ param-value >
    
</ context-param >
    
<!--  ContextConfigLocation  -->
    
< context-param >
        
< param-name > contextConfigLocation </ param-name >
        
< param-value > /WEB-INF/spring-context/applicationContext.xml </ param-value >
      
</ context-param >
    
    
< filter >
        
< filter-name > encodingFilter </ filter-name >
        
< filter-class > com.sterning.commons.SetCharacterEncodingFilter </ 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 >
     
< filter >
        
< filter-name > struts2 </ filter-name >
        
< filter-class > org.apache.struts2.dispatcher.FilterDispatcher </ filter-class >
        
< init-param >
            
< param-name > config </ param-name >
            
< param-value > struts-default.xml,struts-plugin.xml,struts.xml,struts_books.xml </ param-value >
        
</ init-param >
    
</ filter >     

    
< filter-mapping >
        
< filter-name > encodingFilter </ filter-name >
        
< url-pattern > /* </ url-pattern >
    
</ filter-mapping >
    
< filter-mapping >
        
< filter-name > struts2 </ filter-name >
        
< url-pattern > /* </ url-pattern >
    
</ filter-mapping >         
    
    
<!--  Listener contextConfigLocation  -->
      
< listener >
        
< listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >
      
</ listener >
    
<!--  Listener log4jConfigLocation  -->
      
< listener >
        
< listener-class > org.springframework.web.util.Log4jConfigListener </ listener-class >
      
</ listener >
 
    
<!--  The Welcome File List  -->
    
< welcome-file-list >
        
< welcome-file > index.jsp </ welcome-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”属性定义的。

待续..... 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值