一使用IncludeAction类包含Web资源
虽然在JSP页面中可以使用<jspinclude>标签包含另一个Web资源但Struts框架提倡在包含Web资源时应先经过Struts控制器处理后再由Struts控制器负责包含Web资源orgapachestrutsactionsIncludeAction类提供了包含其他Web资源的功能使用IncludeAction类要在strutsconfigxml中配置<action>元素配置IncludeAction类的代码如下
<actionpath=/includetype=orgapachestrutsactionsIncludeAction
input=/firstValidatorjspvalidate=false
name=firstValidatorFormparameter=/firstValidatorjsp/>
在配置上面代码时应注意两点
firstValidatorjsp页面使用了firstValidatorForm进行数据验证所有应将<action>元素的validate属性设为false否则在运行include动作时就会进行验证在这时firstValidatorForm中的所有属性都没有被赋值所以每个属性都无法通过验证读者可以将validate属性设为true看看会发生什么情况
IncludeAction类的功能和效果与<jspinclude>标签完全一样这就意味着在IncludeAction包含的其他Web资源中无法改变响应信息头这样就无法改变ContentType字段的值因此按着上面的设置来运行程序所有的中文信息会显示乱码解决的方法有很多如可以自己实现一个IncludeAction类的子类在子类的execute方法中设置ContentType的值或都更简单的方法是在过滤器(EncodingFilter)中加入如下的代码
responsesetCharacterEncoding(GBK);
在IE中输入可访问include动作
虽然在JSP页面中可以使用<jspforward>标签把请求转发给另一个Web资源但Struts框架提倡在转发Web资源时应先经过Struts控制器处理后再由Struts控制器转发Web资源orgapachestrutsactionsForwardAction类提供了转发其他Web资源的功能使用ForwardAction类要在strutsconfigxml文件中配置<action>元素下面的代码演示了如何在<action>元素中使用ForwardAction类来包含其他的Web资源
<actionpath=/forwardtype=orgapachestrutsactionsForwardAction
input=/firstValidatorjspvalidate=false
name=firstValidatorFormparameter=/firstValidatorjsp/>
由于经过转发的Web资源可以改变ContentType字段的值因此使用ForwardAction类进行转发时无需再另外改变ContentType字段的值(因为在firstValidatorjsp页面中已经设置了ContentType的值)
在IE中输入可访问forward动作