Servlet与过滤器

时间:2010-06-02 11:24:41

标签: java servlets servlet-filters

Servlet 过滤器有什么区别?您建议用什么来授权页面?

3 个答案:

答案 0 :(得分:95)

如果您希望根据特定条件过滤和/或修改请求,请使用Filter。如果您想控制,预处理和/或后处理请求,请使用Servlet

Java EE tutorial提及以下有关过滤器的内容:

  

过滤器是一个可以转换请求或响应的标头和内容(或两者)的对象。过滤器与Web组件的不同之处在于过滤器通常不会自行创建响应。相反,过滤器提供可以“附加”到任何类型的Web资源的功能。因此,过滤器不应该对作为过滤器的Web资源有任何依赖性;这样,它可以由多种类型的Web资源组成。

     

过滤器可以执行的主要任务如下:

     
      
  • 查询请求并采取相应行动。
  •   
  • 阻止请求和响应对进一步传递。
  •   
  • 修改请求标头和数据。您可以通过提供请求的自定义版本来完成此操作。
  •   
  • 修改响应标头和数据。您可以通过提供自定义版本的响应来执行此操作。
  •   
  • 与外部资源互动。
  •   

对于授权,Filter是最适合的。以下是过滤器如何检查登录用户请求的基本启动示例:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
    if (((HttpServletRequest) request).getSession().getAttribute("user") == null) {
        // User is not logged in. Redirect to login page.
        ((HttpServletResponse) response).sendRedirect("login");
    } else {
        // User is logged in. Just continue with request.
        chain.doFilter(request, response);
    }
}

答案 1 :(得分:18)

过滤器最适合授权。这是因为它们可以配置为针对站点的所有页面运行。因此,您只需要一个过滤器来保护您的所有页面。

答案 2 :(得分:3)

使用过滤器可以提高servlet的性能 -     当请求到来时,我们可以根据请求执行预处理,如果请求满足,那么我们可以转发到servlet,否则给客户端提供消息,在请求中提供适当的信息..