Servlet vs Filter
2022-08-31 17:09:30
Servlet 和 Filter 之间有什么区别?您建议使用什么来授权页面?
Servlet 和 Filter 之间有什么区别?您建议使用什么来授权页面?
当您想要根据特定条件筛选和/或修改请求时,请使用 。当您想要控制、预处理和/或后处理请求时,请使用 。Filter
Servlet
Java EE 教程提到了以下有关过滤器的信息:
筛选器是可以转换请求或响应的标头和内容(或两者)的对象。筛选器与 Web 组件的不同之处在于,筛选器本身通常不会创建响应。相反,筛选器提供的功能可以“附加”到任何类型的 Web 资源。因此,过滤器不应对它充当过滤器的Web资源有任何依赖关系;这样,它可以由多种类型的Web资源组成。
筛选器可以执行的主要任务如下:
- 查询请求并采取相应措施。
- 阻止请求和响应对进一步传递。
- 修改请求标头和数据。为此,请提供请求的自定义版本。
- 修改响应标头和数据。为此,请提供响应的自定义版本。
- 与外部资源交互。
对于授权,a 是最适合的。下面是筛选器如何检查已登录用户的请求的基本启动示例: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);
}
}
筛选器最适合授权。这是因为它们可以配置为为站点的所有页面运行。因此,您只需要一个过滤器即可保护所有页面。