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("&dispatch=view");
else
path.append("?dispatch=view");
return new ActionForward(path.toString());
如果ActionForward 没有设置为重定向,新的参数将被合并到当前request的参数中。如果新的参数的名称和原参数名称相同,在新的转发期内将使用新的参数值。
分享到:
相关推荐
ActionForward是Action类执行后返回的对象,用来指示控制器如何转发请求到下一个页面。在`struts-config.xml`配置文件中,通常使用`<forward>`元素定义ActionForward,如下: ```xml <forward name="true" path=...
ActionForward 是 Struts 框架中的一个重要概念,它是 Struts MVC 设计模式中的一部分,用于处理用户请求后的转发逻辑。在 Struts 中,当一个 Action 处理完用户请求后,它需要告诉框架如何继续进行,即决定下一个...
除了在Action类中动态创建并返回`ActionForward`外,还可以在配置文件`struts.xml`中预先定义一些全局的转发规则。这种方式可以减少代码中的硬编码,并提高代码的可维护性。 ```xml <forward name="login" path=...
3. **动态ActionForward**:除了静态配置,还可以在Action的execute方法中动态创建并返回ActionForward,这提供了更灵活的控制流程的能力。 4. **ActionForward与Redirect**:ActionForward不仅限于在同一个应用内...
4. **运行期添加参数**:在Action或JSP页面中,可以通过ActionForward动态添加请求参数,例如使用`<html:link>`标签或JSTL的`<c:url>`标签,将参数值附加到转发路径中。 **ActionMapping** 1. **ActionMapping属性...
在Struts2中,转发(Forward)是一种请求调度方式,用于将一个请求重定向到另一个Action或者资源。与重定向(Redirect)不同,转发发生在服务器端,不会导致浏览器地址栏变化。转发可以减少HTTP请求的数量,提高...
在我们的模仿中,`ActionA`可以返回"forward_to_B",表示要转发到`ActionB`。 3. **结果映射**:在imitatestruts2.xml配置文件中,我们需要定义"forward_to_B"结果,指定它应该调用哪个Action。这样,当`ActionA`...
2. **ActionForward**:ActionForward用于指定Action执行后重定向或转发的页面。开发者可以在struts-config.xml配置文件中定义ActionForward,或者在Action类中动态返回ActionForward对象。 3. **ActionForm**:...
在探讨“关于action不能用forward的问题”这一主题时,我们主要关注的是在Struts2框架中如何正确地使用forward机制来实现页面跳转,并解决在实际应用过程中遇到的相关问题。 ### Struts2框架简介 Struts2是基于MVC...
Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。
在struts-config.xml文件中,每个ActionMapping对应一个请求URI,它包含了Action类的全限定名、ActionForm的类名以及Action完成后可能转发的ActionForward列表。当ActionServlet接收到请求时,会查找ActionMapping来...
1. **视图转发(Forward)**: 视图转发是在服务器端完成的,它不会改变浏览器的URL。当Action执行完成后,请求会继续在同一个请求上下文中,通过Servlet容器内部的RequestDispatcher进行转发到一个新的资源。这种...
2.2 Action:Action类是业务逻辑的载体,它接收来自ActionForm的数据,执行必要的业务操作,然后返回一个ActionForward对象指示下一个页面或动作。动态ActionForm和Action协同工作,使得业务逻辑可以更灵活地处理...
这可以通过在Action类中返回一个ActionForward对象来实现,ActionForward指定要转向的路径。例如,如果一个用户登录成功,Action可能会转发到主页。 除了Action,配置文件也是Struts框架的重要组成部分。在标准的...
表单form的action="/uu";sendRedirect("/uu");表示相对于服务器根路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/uu); Forward代码中的"/uu"则代表相对与WEB应用的路径。如...
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // 业务逻辑处理 // ... // 返回处理结果,例如转发...
当接收到一个请求时,`ActionServlet`会查找与请求路径匹配的`ActionMapping`,然后创建或重用对应的`ActionForm`对象,调用`Action`的`execute`方法,并根据执行结果选择合适的`ActionForward`跳转到相应的视图。...
ActionForward表示请求转发的方向,可以是绝对路径或相对路径,用于指示Action执行后转向的页面。有两种类型:内部转发(不改变URL)和外部重定向(改变URL)。 7. **ForwardAction和IncludeAction**: - **...