`
sundful
  • 浏览: 1253481 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ActionForward动态转发

阅读更多
ActionForward的作用就是从一个页面链接到另一个页面,最简单的应用就是mapping.findForward("success")。

属性:name-逻辑名称;path-URL;redirect-当设置为true是,重定向,默认为false;className(可选)-默认为ActionForward。

一般的调用过程:当ActionServlet调用Action时,Action 把Mapping的findForward()传递给它。findForward()先在局部转发列表中寻找key,如果没找到,再从全局转发列表中寻找。如果都没找到,此方法将返回null,浏览器报错。

在<html:link>标记中的使用:
在配置文件中定义一个forward:
<forward name="article" path="/do/article?dispatch=view"/>

<html:link>中:
<html:link forward="article" paramName="articleForm" paramProperty="articleKey" paramId="key">News from the edge</html:link>

运行结果:
<a href="http://localhost/artimus/do/article?dispatch=view&key=17">News from the edge</a>

注意这边,如果已经存在一个参数,标签会很聪明的帮你添加一个连接符号,之后再添加参数。
添加自己要转发的路径:
public ActionForward execute( ActionMapping mapping,
                              ActionForm form, 
                              HttpServletRequest request,
                              HttpServletResponse response) 
                               throws Exception{
        ActionForward forward = new ActionForward();
        String loginid = ((LoginForm)form).getLoginid();
        String password = ((LoginForm)form).getPassword();
        if(...){
             ......  // business code 
            forward.setPath("welcome.jsp");
        }else{
            ActionMessages errors = new ActionMessages();
            .......
            forward = mapping.findForward("Failure");
        }
        return forward;
    }

在Action 类中添加参数:
 ActionForward forward = mapping.findForward("article");
 StringBuffer path = new StringBuffer(forward.getPath());
 boolean isQuery = (path.indexOf("?")>=0);
 if (isQuery)
 path.append("&amp;dispatch=view");
 else
 path.append("?dispatch=view");
 return new ActionForward(path.toString()); 

如果ActionForward 没有设置为重定向,新的参数将被合并到当前request的参数中。如果新的参数的名称和原参数名称相同,在新的转发期内将使用新的参数值。
分享到:
评论

相关推荐

    ActionForward与ForwardAction的功能

    ActionForward是Action类执行后返回的对象,用来指示控制器如何转发请求到下一个页面。在`struts-config.xml`配置文件中,通常使用`&lt;forward&gt;`元素定义ActionForward,如下: ```xml &lt;forward name="true" path=...

    ActionForward

    ActionForward 是 Struts 框架中的一个重要概念,它是 Struts MVC 设计模式中的一部分,用于处理用户请求后的转发逻辑。在 Struts 中,当一个 Action 处理完用户请求后,它需要告诉框架如何继续进行,即决定下一个...

    ActionForward和国际化

    除了在Action类中动态创建并返回`ActionForward`外,还可以在配置文件`struts.xml`中预先定义一些全局的转发规则。这种方式可以减少代码中的硬编码,并提高代码的可维护性。 ```xml &lt;forward name="login" path=...

    struts入门,最适合新手上路

    3. **动态ActionForward**:除了静态配置,还可以在Action的execute方法中动态创建并返回ActionForward,这提供了更灵活的控制流程的能力。 4. **ActionForward与Redirect**:ActionForward不仅限于在同一个应用内...

    js宝方法方法法笑嘻嘻典

    4. **运行期添加参数**:在Action或JSP页面中,可以通过ActionForward动态添加请求参数,例如使用`&lt;html:link&gt;`标签或JSTL的`&lt;c:url&gt;`标签,将参数值附加到转发路径中。 **ActionMapping** 1. **ActionMapping属性...

    struts 2 转发.rar

    在Struts2中,转发(Forward)是一种请求调度方式,用于将一个请求重定向到另一个Action或者资源。与重定向(Redirect)不同,转发发生在服务器端,不会导致浏览器地址栏变化。转发可以减少HTTP请求的数量,提高...

    模仿struts2转发

    在我们的模仿中,`ActionA`可以返回"forward_to_B",表示要转发到`ActionB`。 3. **结果映射**:在imitatestruts2.xml配置文件中,我们需要定义"forward_to_B"结果,指定它应该调用哪个Action。这样,当`ActionA`...

    Struts高级部分(2)(常用Action、验证框架、动态Form

    2. **ActionForward**:ActionForward用于指定Action执行后重定向或转发的页面。开发者可以在struts-config.xml配置文件中定义ActionForward,或者在Action类中动态返回ActionForward对象。 3. **ActionForm**:...

    关于action 不能用forward的问题

    在探讨“关于action不能用forward的问题”这一主题时,我们主要关注的是在Struts2框架中如何正确地使用forward机制来实现页面跳转,并解决在实际应用过程中遇到的相关问题。 ### Struts2框架简介 Struts2是基于MVC...

    北京大部分公司的ssh面试题

    Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。

    Struts开发中有哪几个关键对象

    在struts-config.xml文件中,每个ActionMapping对应一个请求URI,它包含了Action类的全限定名、ActionForm的类名以及Action完成后可能转发的ActionForward列表。当ActionServlet接收到请求时,会查找ActionMapping来...

    传智播客_result的各种视图转发类型及全局

    1. **视图转发(Forward)**: 视图转发是在服务器端完成的,它不会改变浏览器的URL。当Action执行完成后,请求会继续在同一个请求上下文中,通过Servlet容器内部的RequestDispatcher进行转发到一个新的资源。这种...

    struts课堂资料\第五章(动态ActionForm与控制器)

    2.2 Action:Action类是业务逻辑的载体,它接收来自ActionForm的数据,执行必要的业务操作,然后返回一个ActionForward对象指示下一个页面或动作。动态ActionForm和Action协同工作,使得业务逻辑可以更灵活地处理...

    MyStruts.zip

    这可以通过在Action类中返回一个ActionForward对象来实现,ActionForward指定要转向的路径。例如,如果一个用户登录成功,Action可能会转发到主页。 除了Action,配置文件也是Struts框架的重要组成部分。在标准的...

    response_sendRedirect和request_getRequestDispatcher()_forward的区别.

    表单form的action="/uu";sendRedirect("/uu");表示相对于服务器根路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/uu); Forward代码中的"/uu"则代表相对与WEB应用的路径。如...

    struts教程1-Action与Struts导航

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // 业务逻辑处理 // ... // 返回处理结果,例如转发...

    struts in action

    当接收到一个请求时,`ActionServlet`会查找与请求路径匹配的`ActionMapping`,然后创建或重用对应的`ActionForm`对象,调用`Action`的`execute`方法,并根据执行结果选择合适的`ActionForward`跳转到相应的视图。...

    深入struts1核心思想.doc

    ActionForward表示请求转发的方向,可以是绝对路径或相对路径,用于指示Action执行后转向的页面。有两种类型:内部转发(不改变URL)和外部重定向(改变URL)。 7. **ForwardAction和IncludeAction**: - **...

Global site tag (gtag.js) - Google Analytics