java web 过滤器跟拦截器的区别和使用

Python022

java web 过滤器跟拦截器的区别和使用,第1张

过滤器(filter):就是对请求起到过滤的作用,它在监听器之后,作用在servlet之前,对请求进行过滤。

拦截器(interceptor):就是对请求和返回进行拦截,它作用在servlet的内部,具体来说有三个地方:servlet_1和servlet_2之间,即请求还没有到controller层。servlet_2和servlet_3之间,即请求走出controller层次,还没有到渲染时图层。servlet_3和servlet_4之间,即结束视图渲染,但是还没有到servlet的结束。

它们之间的关系,可以用一张图来表示:

Java Web,是用Java技术来解决相关web互联网领域的技术总和。

web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet不过现在使用的很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。

Java技术对Web领域的发展注入了强大的动力。

在 Java Web 开发中,你可以使用过滤器 (Filter) 来禁止浏览器缓存页面。这里是基本的实现步骤:

创建一个新的过滤器类,实现 javax.servlet.Filter 接口。这个类应该包含一个实现了 doFilter 方法的代码块,该方法将在过滤器生效时被调用。

在 doFilter 方法中,你可以使用 HttpServletResponse 对象的 setHeader 方法来设置一些响应头信息,以禁止浏览器缓存页面。例如,你可以使用以下代码来设置 "Cache-Control" 响应头:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate")

在你的 Web 应用的部署描述符 (web.xml) 中,使用 <filter>和 <filter-mapping>元素配置过滤器。这样,你就可以在所有请求到达指定的资源之前,先将其过滤一遍。

下面是一个示例过滤器的完整代码,它实现了上述步骤:

import java.io.IOException

import javax.servlet.Filter

import javax.servlet.FilterChain

import javax.servlet.FilterConfig

import javax.servlet.ServletException

import javax.servlet.ServletRequest

import javax.servlet.ServletResponse

import javax.servlet.http.HttpServletResponse

public class NoCacheFilter implements Filter {

@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException {

HttpServletResponse httpResponse = (HttpServletResponse) response

httpResponse.