Fy一路向前

导航

 

    常用的跳转类型:

                   redirect:   重定向到jsp页面action同一个Action)

                   dispatcher: 转发到页面

                   redirectAction: 重定向到其他Action客户端跳转

                   chain:    转发到Action服务器跳转

 

转发和重定向设置:        

<action name="deptAction" class="com.syaccp.erp.action.DeptAction">

            <result name="success">/WEB-INF/jsp/basic/dept_list.jsp</result>

            <result name="editView">/WEB-INF/jsp/basic/dept_edit.jsp</result>

</action> 

    上例action中,success对应的视图是通过默认的转发(dispatch)跳转的。editView作为增删改的一部分,应该通过重定向来跳转页面,这样必须显式声明type=redirect,来达到重定向的效果。这时editView的内容改为action中一个方法更合适。如:

<action name="deptAction" class="com.syaccp.erp.action.DeptAction"> 

            <result name="success">/WEB-INF/jsp/basic/dept_list.jsp</result>

            <result name="editView" type="redirect">deptAction!select.action</result>

</action>

  这里在执行edit方法后返回editView字符串,将会再执行select方法,跟DeptEditServlet里response.sendRedirect("DeptListServlet")类似

上例只是重定向同一个Action类中的其他方法,开发中可能还需要重定向到其他Action类中,这时就需要用到type属性的另一个值:redirectAction:

LoginAction.java

 <action name="login" class="gz.itcast.action.LoginAction">
                <result name="login">/login1.jsp</result>
                <!-- redirect:   重定向到同一个Action -->
                <result name="login1" type="redirect">login!login.action</result>
                
                <!-- redirectAction:  重定向到其他Action -->
                <result name="success" type="redirectAction">book.action</result>
</action>

 上例中,如果LoginAction中某个方法返回字符串为success,则将跳转到另外一个Action去(通过book.action),执行其中的execute方法。

如果Action在其他包里面,则前面应加上包名,例:index/xxxAction。

BookAction.java

<!-- 图书模块 -->
    <package name="book" extends="struts-default" namespace="/">
            <action name="book" class="gz.itcast.action.BookAction">
                <result name="success">/index1.jsp</result>
            </action>
    </package>

 

 

 

 

<!-- 全局视图配置: 把该包下的所有action共用的视图都机集中在这里写 -->

<global-results>

<result name="success">/login.jsp</result>

</global-results>

 

<!-- 默认配置

 name: 必填项

 class: 可选项 。默认配置:  ActionSupport类   该类继承自struts-default <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />

 method: 可选。默认配置

    result:

     name: 可选。默认配置: success

     type: 可选。默认配置: dispatcher--转发到页面

                                            redirect: 代表重定向

                          常用的跳转类型

        redirect:   重定向到jspaction。同一个Action

        dispatcher: 转发到页面

        redirectAction: 重定向到其他Action,客户端跳转(数据不能传递)

       chain:    转发到Action,服务器跳转(数据能传递)可以在不同Action中通过request共享数据

 

 -->

 <!-- 全部使用默认配置的action的作用 :专门用于转发到WEB-INF下的页面 -->

 <action name="book">

  <result>/WEB-INF/jsp/login.jsp</result>

 </action>

/**

 * 登录逻辑的Action

 * @author APPle

 *

 */

public class LoginAction implements Action{

//默认方法

public String execute() throws Exception {

System.out.println("执行了LoginAction的execute方法");

//往request存放数据

ServletActionContext.getRequest().setAttribute("name", "eric");

 

return "login1";

}

 

public String login() throws Exception {

System.out.println("执行了LoginAction的login方法");

//从request获取数据

String name = (String)ServletActionContext.getRequest().getAttribute("name");

System.out.println("name="+name);

return "success";

}

}

 

<action name="login_1" class="gz.itcast.action.LoginAction">

<!-- redirectAction:  地址栏会变-day28_struts/login_2.action -->  

<!--<result name="login1" type="redirectAction">login_2</result>-->

<result name="login1" type="chain">login_2</result>

</action>

 

<action name="login_2" class="gz.itcast.action.LoginAction" method ="login" >

<result name="success" >/login1.jsp</result>

</action>

 

执行了LoginAction的execute方法

执行了LoginAction的login方法

name=eric

------------------------

<action name="login" class="gz.itcast.action.LoginAction">

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

<!--redirect:   重定向到同一个Action -->

<result name="login1" type="redirect">login!login.action</result>

 

<!--redirectAction:  重定向到其他Action--> 

<result name="success" type="redirectAction">book.action</result>

</action>

 

 

posted on 2018-02-26 20:11  Fy一路向前  阅读(157)  评论(0)    收藏  举报