Struts1.x系列教程(17):使用IncludeAction和ForwardAction类包含和转入Web资源

简介:
一、使用IncludeAction类包含Web资源



     虽然在 JSP 页面中可以使用 <jsp:include> 标签包含另一个 Web 资源,但 Struts 框架提倡在包含 Web 资源时应先经过 Struts 控制器处理后,再由 Struts 控制器负责包含 Web 资源。 org.apache.struts.actions.IncludeAction 类提供了包含其他 Web 资源的功能。使用 IncludeAction 类要在 struts-config.xml 中配置 <action> 元素。配置 IncludeAction 类的代码如下:
< action  path ="/include"  type ="org.apache.struts.actions.IncludeAction"
            input
="/firstValidator.jsp"  validate ="false"
            name
="firstValidatorForm"  parameter ="/firstValidator.jsp"   />
在配置上面代码时应注意两点:
1. firstValidator.jsp 页面使用了firstValidatorForm 进行数据验证,所有应将<action> 元素的validate 属性设为“false ”。否则在运行include 动作时就会进行验证。在这时firstValidatorForm 中的所有属性都没有被赋值。所以每个属性都无法通过验证。读者可以将validate 属性设为“true ”,看看会发生什么情况。
    2. IncludeAction类的功能和效果与<jsp:include>标签完全一样。这就意味着在IncludeAction包含的其他Web资源中无法改变响应信息头。这样就无法改变Content-Type字段的值。因此,按着上面的设置来运行程序,所有的中文信息会显示乱码。解决的方法有很多,如可以自己实现一个IncludeAction类的子类,在子类的execute方法中设置Content-Type的值。或都更简单的方法是在过滤器(EncodingFilter)中加入如下的代码:    
response.setCharacterEncoding( " GBK " );

在IE中输入http://localhost:8080/samples/include.do可访问include动作。
    虽然在JSP 页面中可以使用<jsp:forward> 标签把请求转发给另一个Web 资源,但Struts 框架提倡在转发Web 资源时应先经过Struts 控制器处理后,再由Struts 控制器转发Web 资源。org.apache.struts.actions.ForwardAction 类提供了转发其他Web 资源的功能。使用ForwardAction 类要在struts-config.xml 文件中配置<action> 元素。下面的代码演示了如何在<action> 元素中使用ForwardAction 类来包含其他的Web 资源:
< action  path ="/forward"  type ="org.apache.struts.actions.ForwardAction"
            input
="/firstValidator.jsp"  validate ="false"
            name
="firstValidatorForm"  parameter ="/firstValidator.jsp"   />
     由于经过转发的Web 资源可以改变Content-Type 字段的值,因此,使用ForwardAction 类进行转发时,无需再另外改变Content-Type 字段的值(因为在firstValidator.jsp 页面中已经设置了Content-Type 的值)。
    
IE 中输入http://localhost:8080/samples/forward.do 可访问forward 动作。



 本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/214851,如需转载请自行联系原作者

相关文章
|
17天前
|
JSON 前端开发 JavaScript
前端使用lottie-web,使用AE导出的JSON动画贴心教程
前端使用lottie-web,使用AE导出的JSON动画贴心教程
|
16天前
|
JavaScript Java 测试技术
《手把手教你》系列技巧篇(四十六)-java+ selenium自动化测试-web页面定位toast-下篇(详解教程)
【5月更文挑战第10天】本文介绍了使用Java和Selenium进行Web自动化测试的实践,以安居客网站为例。最后,提到了在浏览器开发者工具中调试和观察页面元素的方法。
29 2
|
17天前
|
Web App开发 JavaScript 测试技术
《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
【5月更文挑战第9天】本文介绍了在Appium中处理App自动化测试中遇到的Toast元素定位的方法。Toast在Web UI测试中也常见,通常作为轻量级反馈短暂显示。文章提供了两种定位Toast元素的技巧.
21 0
|
18天前
|
机器学习/深度学习 JSON 编译器
C++ 资源大全:标准库、Web框架、人工智能等 | 最全整理
C++ 资源列表,内容包括: 标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等
64 1
|
18天前
|
SQL 存储 C#
C# Web控件与数据感应之 TreeView 类
C# Web控件与数据感应之 TreeView 类
|
18天前
|
SQL 存储 Oracle
C# Web控件与数据感应之 CheckBoxList 类
C# Web控件与数据感应之 CheckBoxList 类
|
18天前
|
SQL 存储 Oracle
C# Web控件与数据感应之 Control 类
C# Web控件与数据感应之 Control 类
|
18天前
|
SQL 存储 Oracle
C# Web控件与数据感应之 ListControl 类
C# Web控件与数据感应之 ListControl 类
|
18天前
|
SQL 安全 数据处理
Web 测试神器:HackBar 保姆级教程
Web 测试神器:HackBar 保姆级教程
|
2天前
|
XML JSON PHP
PHP的生命周期:从诞生到现代Web开发
【5月更文挑战第31天】探索PHP的历史演变,了解其如何塑造网络技术。本文将引导您穿越时间的长廊,见证一个编程语言如何适应不断变化的技术需求,并持续影响全球数百万开发者和用户。