cetia4 1.1文档-2.7 Custom Responses

2.7 Custom Responses
通常情况下,render方法通过string来寻找它的响应视图。前面几节展现的代码都是遵循这样的规定。这发生在大多数情况下,因为这是一个便利的默认行为。但是,有时候定制respose也是需要的。可能现实需要一个不被支持的导航action,或者是应用程序需要一个调用 sendRedirect() 方法转到特定的资源。或者是render方法可能返回一个非文本的response,例如,动态的image,或者是pdf或者是其他类型的文档。
这种情况框架可以很简单的处理,比其他web frameworks例如struts更简单,只要在render方法中简单的返回null值,并且在代码中增添需要的导航代码。下面的代码展示了这种方法:
public String render( RenderContext context ) throws IOException
{
context.redirectTo( "http://www.acsinet-solutions.com" );
return null;
}

RenderContext 实例的 redirectTo() 方法是标准HttpSevletResponse实例sendRedirect()方法的一个代替。但是redirectTo()方法在portlet环境中的render方法是不能使用的.因为portlet环境中,redirection是不允许的。显然地,不管是传统的web请求还是web service请求,同样的response将会返回,除非使用了下一节介绍的技术。
定制response特性也可以使用在action方法中,这些将在以后介绍。

RenderContext接口也提供了display()方法,在servlet的环境中,这个方法包装了javax.servlet.RequestDispatcher 的forward()方法(在portlet的环境中,它封装了javax.portlet.PortletRequestDispatcher 的include()方法)。下面的代码指示了它的使用方法:

public String render( RenderContext context ) throws IOException
{
context.display( "/index.jsp" );
return null;
}

display() 方法设置了HTTP 头部信息,防止了cache内容,这是web应用的普遍的一个功能。如果不希望使用这个功能,可以使用常规的servlet API 的 forwarding 方法来代替。

你可能感兴趣的:(jsp,Web,框架,servlet,struts)