struts2+hibernate+spring(2)

本文介绍如何在Struts2框架中整合Spring,并详细解释struts.xml与example.xml配置文件的具体设置。涵盖包名、命名空间、动态方法调用等关键配置项,以及结合Spring管理Bean的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

struts.xml的配置

struts.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>
 
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
   
    <include file="example.xml"/>
 
    <!-- Add packages here -->
 
</struts>
 
example.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="example" namespace="/example" extends="struts-default">
 
        <action name="HelloWorld" class="helloWorld">
            <result>/example/HelloWorld.jsp</result>
        </action>
 
        <action name="Login_*" method="{1}" class="login">
            <result name="input">/example/Login.jsp</result>
            <result type="redirect-action">Menu</result>
        </action>
       
         <action name="Person_*" method="{1}" class="person" >        
           <result name="show">/example/personShow.jsp</result>
           <result name="update">/example/personUpdate.jsp</result>
           <result name="input">/example/index.html</result>
           <result name="list">/example/personList.jsp</result>
           <result name="add">/example/personAdd.jsp</result>
        </action>
 
        <action name="*" class="exampleSupport">
            <result>/example/{1}.jsp</result>
        </action>
       
      
       
     <!--  <action name="PersonList" class="person" method="list">
        <result name="list">/example/personList.jsp</result>
        <result name="input">/example/index.html</result>
        </action>
        <action name="PersonAdd" class="person" method="add">
        <result name="add">/example/personAdd.jsp</result>
        <result name="input">/example/index.html</result>
        </action>
        <action name="PersonSave" class="person" method="save">
        <result name="list">/example/personList.jsp</result>
        <result name="input">/example/index.html</result>
        </action>
        <action name="PersonShow" class="person" method="show">
        <result name="show">/example/personShow.jsp</result>
        <result name="input">/example/index.html</result>
        </action>
        <action name="PersonUpdate" class="person" method="update">
        <result name="update">/example/personUpdate.jsp</result>
        <result name="input">/example/index.html</result>
        </action>
        <action name="PersonDelete" class="person" method="delete">
        <result name="list">/example/personList.jsp</result>
        <result name="input">/example/index.html</result>
        </action>
        <action name="PersonMerge" class="person" method="merge">
        <result name="list">/example/personList.jsp</result>
        <result name="input">/example/index.html</result>
        </action>  --> 
        <!-- Add actions here -->
    </package>
</struts>

二 相关说明

 

(1) struts2.xml的说明:为了支持多个人协同工作。我们在struts2.xml中利用include包含多个配置文件。你可以为你的团队中的每一个人定义一个 name.xml.同样,如果一个项目是由几个子项目组成的,也可以为每个子项目定义一个 project.xml。在这儿我们包含了一个子项目 example.xml 
 
(2)example.xml的相关说明:
 
首先 <package name="example" namespace="/example" extends="struts-default">
 
    是必需的。name与namespace是必需的 ,name用来标示一个actionmapping,namespace表明该actionmapping下定义的action的域名空间,同时所有以/exmaple 开始的请求都会通过该actionmapping进行调配!
 
(3) class的值的说明。如果仅仅是采用struts2 框架,你必需指明类的合法全名。但是我们结合spring使用。于是你需要指明该class是spring哪一个bean的实例。也就是说class的值与bean的ID匹配。(匹配方式不止一种)
 
 
(4)一般来说 一个action负责对数据库的表CRUD。我对数据库中的一个表person 定义了 list() ,save(),merge() ,update(), show()几个方法。
在配置文件中。每一个action都有一个 可选的method的方法,它允许你指明调用该action的哪一个方法(如果不指明,就是调用excuete() 方法)。
配置文件有两种书写方式:
  a;         
       <action name="Person_*" method="{1}" class="person" >        
           <result name="show">/example/personShow.jsp</result>
           <result name="update">/example/personUpdate.jsp</result>
           <result name="input">/example/index.html</result>
           <result name="list">/example/personList.jsp</result>
           <result name="add">/example/personAdd.jsp</result>
        </action>
 
  action的那么中有 * 通配符。 同时定义 method={1}。我们如果调用
/exmple/Person_list.action 。那么经过匹配会产生两个参数:{Person,list} method ={1},表明采用下标1的参数,也就是list
 
注意: 网上有人推荐使用 Person!list.action,我经过试验无法走通!也许他们是受webwork的影响所致.
 
b:    采用这种方式
       <action name="PersonList" class="person" method="list">
         <result name="list">/example/personList.jsp</result>
         <result name="input">/example/index.html</result>
        </action>
        <action name="PersonAdd" class="person" method="add">
         <result name="add">/example/personAdd.jsp</result>
         <result name="input">/example/index.html</result>
        </action>
        <action name="PersonSave" class="person" method="save">
         <result name="list">/example/personList.jsp</result>
         <result name="input">/example/index.html</result>
        </action>
        <action name="PersonShow" class="person" method="show">
         <result name="show">/example/personShow.jsp</result>
         <result name="input">/example/index.html</result>
        </action>
        <action name="PersonUpdate" class="person" method="update">
         <result name="update">/example/personUpdate.jsp</result>
         <result name="input">/example/index.html</result>
        </action>
        <action name="PersonDelete" class="person" method="delete">
         <result name="list">/example/personList.jsp</result>
         <result name="input">/example/index.html</result>
        </action>
        <action name="PersonMerge" class="person" method="merge">
         <result name="list">/example/personList.jsp</result>
         <result name="input">/example/index.html</result>
        </action>
不用多解释了.重复而且繁琐了, 推荐使用第一种方式!

 

 

 

 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值