全部博文(89)
分类: Java
2009-03-19 22:59:31
在前面的例子你可以看到,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 extends ActionBean> beanType) {
}
public ForwardResolution(Class extends ActionBean> 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
继承。