首先众所周知,过滤器是与ervlet容器支持的,拦截器是与Spring容器支持的。
先谈谈Servlet(小服务程序)=Service+Applet(小应用程序):
Servlet是一个供其他Java程序调用的Java类,不能独立运行。Servlet的生命周期是由Servlet容器控制的,分为三个阶段:初始化,运行,销毁。Servlet的生命周期在百科中都有,概括而言就是由web容器调用,客户端发送请求的时候,实例化Servlet对象并初始化,再调用Service()方法离得doPost()或者doGetI()或者其他最后销毁。{需要注意的是Servlet一般只被初始化一次,即再次请求的时候不用init()直接调用service()方法}。
在eclipse中使用如下:
见附件,现在用的是4.4版本的好像web.xml就没有以前的servlet-mapping和servlet-name还有url了,说的不对请指出谢谢。
那Servlet说完了该说正点了Filter(过滤器):
<filter> <filter-name>mainPageFilter</filter-name> <filter-class>com.meihf.hjoyblog.filter.MainPageFilter</filter-class> </filter> <filter-mapping> <filter-name>mainPageFilter</filter-name> <url-pattern>/main/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping>
class对应你项目下的类目录,url-pattern是拦截请求。2.4版本后新增的<dispatcher>标签有REQUEST,FORWARD,INCLUDE,ERROR分别解释为:通过客户端传来的请求,通过forward传来的请求,通过include传来的请求和<error-page>传来的请求,默认是REQUEST。
package com.hanyx.hjoyblog.filter; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpUtils; import org.springframework.web.filter.OncePerRequestFilter; public class MainPageFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain fc) throws ServletException, IOException { @SuppressWarnings("deprecation") CharSequence requestPath = HttpUtils.getRequestURL(request); int start = requestPath.toString().lastIndexOf("main")+4; String subPath = (String) requestPath.subSequence(start,requestPath.length()); request.setAttribute("subPath", "/HJoyBlog/main"+subPath); request.getRequestDispatcher("/main").forward(request, response); } }
你所写的拦截器的类继承OncePerRequestFilter,这是为什么呢?
因为要确保一次 请求只通过一次拦截器不需重复。
再来说说interceptor(拦截器)是利用发射来管理这个类。拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求都起作用。另外在action的生命周期中,拦截器可以多次被调用,而过滤器只在初始化的时候被调用一次。
拦截器是做一些业务逻辑的操作。具体怎样使用如下代码:
这里先空出来,暂时还没有写这里的代码,配置的话同理写一个拦截器,然后在struts.xml中进行配置,等我写了我会再贴出来。
后续再补充还有SpringMVC的interceptor也会补充,谢谢。说的不对请大家指出。
相关推荐
Filter过滤器与Interceptor拦截器有很多相似
1、在SpringBoot中如何实现自定义过滤器(Filter)和拦截器(Interceptor) 2、通过执行案例了解多个过滤器和拦截器的执行顺序 【本案例包含源码以及可执行的jar文件,源码文件建议使用IDEA进行导入查看学习,建议使用...
NULL 博文链接:https://rd-030.iteye.com/blog/2384106
主要介绍了浅谈SpringMVC的拦截器(Interceptor)和Servlet 的过滤器(Filter)的区别与联系 及SpringMVC 的配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...
过滤器、拦截器、AOP、ControllerAdvcie的使用对比、执行顺序及代码教程的文章内的示例代码,文章...通过文章和这份代码,你可以学到过滤器、拦截器、AOP、ControllerAdvcie的基本使用方式,并了解到他们的执行顺序。
给大家介绍了spring-boot中如何定义过滤器、监听器和拦截器,对Spring Boot 编写Servlet、Filter、Listener、Interceptor的相关知识感兴趣的朋友一起看看吧
拦截器和过滤器的区别 1、拦截器基于动态代理 , 过滤器基于函数回调 2、拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器 3、拦截器在方法前后,异常前后等调用,而过滤器只能在请求前和请求...
Filter首先在DispatcherServlet的前面运行,而Interceptor在DispatcherServlet和Controllr(Handler)之间运行。 筛选 Web应用程序上下文功能 使用Spring函数困难 通常,实现编码,CORS,XSS,LOG,证书,授权等。 ...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
以上的这些功能,通过一种名为责任链或者拦截器或者过滤器(语义上的区别而技术上没有什么区别,知道做了什么就行了)的设计模式可以实现,那么就来看看什么是责任链的设计模式。 以下内容参考北京尚学堂的马士兵...
水槽时间戳过滤器 Flume拦截器根据事件标头中配置的passedTime检查时间戳字段有选择地过滤事件。 这支持基于包含或排除的过滤。 入门 克隆存储库 构建源 $ mvn clean package 创建拦截器目录并部署 $ mkdir -p /...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
15.1 拦截器概述 Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。 ...
11.拦截器 interceptor(和之前学的filter很类似) 1)什么起作用 当前struts2的filter过滤到一个.action结尾的请求的时候,会把这个请求交给struts2内部的拦截器(interceptor) 2)拦截器起到什么作用 可以帮我们丰富...