Struts2 之 action/result设置

action 
1. 配置默认Action(当找不到Action,就由这个Action处理) 
    

<package name="default" namespace="/" extends="struts-default">
        <default-action-ref name="index"></default-action-ref>
        <action name="index">
            <result>/default.jsp</result>
        </action>
 </package> 
注意:每个namespace中只能配置一个default-action-ref
2. 动态方法调用,通过地址参数来选择调用哪些方法 ,如下
public class HelloWorld { 
    private String message; 
    public String execute(){ 
        message = "execute"; 
        return "success"; 
    } 
    public String addUI(){ 
        message = "addUI"; 
        return "success"; 
    } 
   //省略getter/setter
} 

可以在浏览器的地址栏使用以下地址请求方式来进行调用addUI这个方法:
http://localhost:8080/Struts2/test/helloworld!addUI.action
在action后面加上感叹号和具体需要调用的方法名称,不推荐使用这种方式,所以可以在struts.xml文件an里面通过使用静态常量的方式来指定禁止使用这样的动态方法调用,
<constant name="struts.enable.DynamicMethodInvocation" value="false" />  
可以通过method 属性实现
通配符方法来进行调用 
<package name="bird" namespace="/test" extends="struts-default"> 
    <action name="*_*" class="com.struts2.{1}action.HelloWorld" method="{2}"> 
        <result name="success">/WEB-INF/jsp/{1}_{2}.jsp?title=${title}</result> 
    </action> 
</package>

在actionNamn后面加上星号,然后method是大括号加上1,这个1代表第一个星号,那么我们下面再访问的地址就可以这样写
 http://localhost :8080/Struts2/test/helloworld_addUI.action

这样使用通配符就可以访问addUI这个方法了。推荐使用这样的方式

除非请求的url与action的name的属性绝对相同,否则将按先后顺序决定由哪个action来处理请求,因此设置默认action(*)应放在最后

可通过<default-action-ref name="" /> 
<default-class-ref class=""/>

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

设置默认action、class、interceptor,在容器中找不到相应的action(class....)将使用默认的action


1.  result中结果类型
常用的类型:dispatcher(默认值)、 redirect 、 redirectAction 、 plainText。前两个不绍了
redirectAction 重定向到另一个action:
重定向的action中同一个包下:
<result type="redirectAction">hello</result><!-- 直接写action名-->
重定向的action在别的命名空间下:
<result type="redirectAction">
    <param name="actionName">helloworld</param>
    <param name="namespace">/test</param>
</result>
plaintext:显示原始文件内容即文件源代码 ,
<result name="source" type="plainText ">
    <param name="location">/xxx.jsp</param>
    <param name="charSet">UTF-8</param><!-- 指定读取文件的编码 -->
</result>

2. Global Results(全局结果集) 
即为共用的action 执行顺序:当一个Action返回的String没有相应的<result>与之对应,Struts2就会查找全局的<result>。
配置: 
    
<package name="user" namespace="/user" extends="struts-default"> 
            <global-results> 
                <result name="mainpage">/main.jsp</result> 
            </global-results> 
            <action name="index"> 
                <result>/index.jsp</result> 
            </action> 
         <action name="user" class="com.bjsxt.struts2.user.action.UserAction"> 
                <result>/user_success.jsp</result> 
                <result name="error">/user_error.jsp</result> 
        </action>        
  </package> 
多个package使用了相同的相同的配置可以定义一个基类package,其他package继承此类extends="***" 
如果其他包中也需要用到这个全局结果集,需要用到package的extends
<package name="admin" namespace="/admin" extends ="user"> 
            <action name="admin" class="com.bjsxt.struts2.user.action.AdminAction"> 
                <result>/admin.jsp</result> 
            </action> 
</package>

3. 在result中还可以使用${属性名}表达式访问action中的属性,表达式里的属性名对应action中的属性名
<result name="success" type="redirect">/index.jsp?username=${username}</result>

在动态设定result结果时很有用,根据action返回的String(target):

<result name="delete">/WEB-INF/page/${target}.jsp</result>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值