2012-02-07 36 views

回答

0

正向调度

getServletContext().getRequestDispatcher().forward("second page"); 

将请求转发由JSF控制器Servlet内部完成到另一个资源。浏览器不知道web容器在服务器端发生了什么。所以它仍然认为它正在趋向原始请求并在其地址栏中显示原始URL。但是,显示的页面内容来自第二页。

重定向调度

response.sendRedirect("second page"); 

在这种情况下,JSF控制器Servlet指示客户端浏览器(通过HTTP响应报头)来抓取另一个URL。所以浏览器完全获取一个新的URL并在地址栏中显示第二个URL。这可能会导致轻微的性能延迟

here

+0

这里的另一个例子:FacesContext.getCurrentInstance() .getExternalContext()重定向( “我的空间”); – tartak 2012-02-07 09:43:28

0

我认为你需要转发请求,而不是重定向。

RequestDispatcher dispatcher= request.getRequestDispatcher("servlet-mapped-url"); 
dispatcher.forward(request, response); 
1

似乎是一个很好的地方使用Servlet Filter。如果你想预先处理一个传入的请求,你可以用servlet过滤器来完成,然后简单地将它链接到适当的servlet。

详情请参阅BalusC Answer

如果不是这种情况下,你可以只喜欢转发请求:

 request.getRequestDispatcher("/yourServlet").forward(request, response); // forward to the main servlet 
相关问题