struts2 type="redirectAction"重定向 与动态调用方法

时间:2020-12-15 22:28:08

<?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>
    <!-- 创建包default,继承struts-default -->
    <package name="default" extends="struts-default">
        <!-- 名为login的Action,实现类为LoginAction -->
        <action name="login" class="com.action.LoginAction">  
            <!-- redirectAction返回类型 -->  
            <result type="redirectAction">
                <!-- Action名参数 -->
                   <param name="actionName">userLogin</param>

          <!-- 参数名 -->

        <param name="username">${username}</param>
                   <!-- 命名 空间参数-->
                <param name="namespace">/user</param>
            </result>  
            <!-- 返回值为error, redirectAction类型,重定向到名为error的Action-->      
            <result name="error" type="redirectAction">error</result>    
            </action>
            <!-- 名为error的Action -->
        <action name="error">
               <result>/error.jsp</result>
           </action>
    </package>
    <!-- 名为user的Action,命名空间为/user -->
    <package name="user" extends="struts-default" namespace="/user">
       <!--名为userLogin的Action  -->
       <action name="userLogin" class="com.action.UserAction">
           <result>/hello.jsp</result>         
       </action>
    </package>   
</struts>

其中hello.jsp 位于webroot 下。${username} 中的username  对应于login中的属性值,

即由页面传过来的值,而param 中 name="username" 中的username 对应于userLogin中的属性名称,即给该名称的属性赋值。

在hello.jsp中获取传递过来的属性 就要用到ognl表达式

<s:property value="username">

================================================================

动态调用方法

在struts.xml 中增加静态配置

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

增加后才可以动态调用方法;

动态调用方法首先在action得有对应的方法,被调用的方法与默认方法execute()类似

<action name="login" class="com.action.LoginAction">  
        <result>/result.jsp</result>

     <result name="add">/add.jsp</result>

    <result name="update">/update.jsp</result>
   </action>

对象的请求

http://127.0.0.1:8080/helloworld/login!update.action