- 论坛徽章:
- 0
|
在前面的例子你可以看到,ActionBean 中一个事件对应的方法返回一个 Resolution对象。
Resolution 接口定义。
public interface Resolution {
void execute(HttpServletRequest request, HttpServletResponse response)
throws Exception;
}
Resolution 提供了 HttpServletRequest 和 HttpServletResponse 的访问能力。
Stripes 提供了几种 Resolution 实现,ForwardResolution ,RedirectResolution,StreamingResolution,ErrorResolution。
在前面例子中已经用到了ForwardResolution,它最终调用RequestDispatcher的forward方法显示目标页面。
ForwardResolution 提供了几种构造方法,用于不同目的。
public ForwardResolution(String path) {
}
public ForwardResolution(Class beanType) {
}
public ForwardResolution(Class beanType, String event) {
}
第一种,直接指定 URL 地址,这种方法简单明了。后两种不直接使用 URL ,它可以从一个ActionBean 转向另外一个 ActionBean ,Stripes 会自动转向目标 ActionBean 和触发 ActionBean 事件所对应的 URL 地址。
RedirectResolution与ForwardResolution不同的是它调用 HttpServletResponse 的sendRedirect方法显示目标页面。
StreamingResolution 不会将客户端转向另一个页面,它向客户端发送数据流。这个Resolution 常常用于动态显示图片,显示图表,XML数据。它提供一个可选的 filename 属性,可以用于文件下载。如果设置了该属性,那么在输出时 Stripes 会在输出流中会在文件头写入 Content-Disposition 信息 ,它指定下载文件的名称,在浏览器中会自动弹出下载文件窗口。StreamingResolution 会在后介绍使用。
ErrorResolution可以向客户端发送 HTTP 错误状态码和自定义的错误信息。
另外,Stripes 还提供了一种 JavaScriptResolution ,但奇怪的是这个 Resolution 没有从 StreamingResolution 继承。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1096/showart_1869157.html |
|