java forward怎么用_ActionForward的使用

本文介绍了Struts中的ActionForward如何用于页面转向,包括全局和局部forward的区别,转发与重定向的差异,以及如何在Action中自定义转向和重定向。通过示例代码展示了动态ActionForward的实现,即根据用户输入动态跳转到不同页面,无需预先配置所有可能的forward。

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

1、ActionForward包含转向信息

2、全局forward和局部forward

* 全局forward,若很多个Action处理完后都要转向到某页面,不妨把该页面设为全局forward:

Java代码  icon_star.png

* 局部forward:

Java代码  icon_star.png

type="cn.huan.struts.LoginAction"

name="loginForm"

scope="request"

>

* mapping.findForward方法会先自动找配置中的局部forward,若没有就找全局forward

3、转发和重定向

转向:同一个request

重定向:需设置redirect="true",另建一个新request,故改变了url

4、转发和重定向都可以自己定义而不用struts提供的ActionForward

在Action中自定义转向:

Java代码  icon_star.png

RequestDispatcher dispatcher = request.getRequestDispatcher("/mustlogin.jsp");

dispatcher.forward(request, response);

return null;

在Action中自定义重定向:

Java代码  icon_star.png

response.sendRedirect(request.getContextPath() + "/login.jsp");

return null;

5、struts-config.xml文件和web.xml文件在运行时都不能动态修改,也就是不能再在Action中改已配置好的属性值

6、动态ActionForward

不需要修改Action代码和增加配置

例如:如果需要根据页面输入的值动态的跳转到不同页面:

Java代码  icon_star.png

页面:

则用动态ActionForward可很好地实现,Action和配置信息分别为(其中注释部分为没有使用动态   ActionForm时的代码):

Action代码:

Java代码  icon_star.png

package cn.huan.struts;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

/**

* 动态ActionForwad测试

* @author 刘银环

*

*/

public class DynaActionForwardTestAction extends Action {

/* (non-Javadoc)

* @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

*/

@Override

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception {

String page = request.getParameter("page");

//      ActionForward af = null;

//      if("1".equals(page)){

//          af = mapping.findForward("page1");

//      }else if("2".equals(page)){

//          af = mapping.findForward("page2");

//      }

//      return af;

//动态ActionForward

ActionForward af = new ActionForward();

af.setPath("/page" + page + ".jsp");

return af;

}

}

配置信息:

Java代码  icon_star.png

type="cn.huan.struts.DynaActionForwardTestAction">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值