详解Servlet之过滤器(Filter)
过滤器
1.为什么使用它?
有很多全站性的东西需要处理,例如乱码问题,通过过滤器统一进行过滤更简单
2.有什么用?
实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单说,就是可以实现web容器对某资源的访问前截获进行相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理。
3.怎么用?
步骤1:先写一个类实现javax.servlet.Filter接口
步骤2:重写抽象方法
步骤3:在doFilter()方法中写处理代码,最后用FilterChain调用FilterChain.doFilter(req, resp)方法,表示可以执行后面的拦截器(如果有的话)
步骤3:进行配置,web.xml配置如下
<!-- 优先配置过滤器 ,过滤器应该在Servlet前面配置,并且过滤器之间有顺序 --> <filter> <filter-name>firstfilter</filter-name> <filter-class>cn.hk.filter.FirstFilter</filter-class> </filter> <filter-mapping> <filter-name>firstfilter</filter-name> <!-- 拦截访问资源 *表示拦截所以资源 --> <url-pattern>/*</url-pattern> </filter-mapping>
4运用的场景?
1)实现URL级别的权限访问控制;
2)处理全站中文乱码问题;
3)实现自动登录;
4)过滤敏感词汇;
5) 压缩网页;
6)选择性让浏览器缓存;等等。
这几种功能的实现采用同样的原理,那就是使用包装模式或动态代理增强request或response对象的功能。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
servlet过滤器(Filter)详解(九)
本文实例为大家分享了servlet过滤器的具体代码,供大家参考,具体内容如下 1.servlet过滤器产生背景 项目中我们会遇到这样一类的需求,对访问服务器的用户ip实施过滤,只有在允许名单中的ip才能访问服务,为了实现需求,每当有客户端请求时,我们都会写校验ip的代码,客户端能够访问到的servlet我们都需要这样做,很明显这样做有一个缺点,就是代码冗余,维护不方便,如果验证规则改变,修改起来也特别麻烦. 为了解决以上问题,Filter 技术应运而生. 2.servlet过滤器是什么? ser
-
Servlet和Filter之间的区别与联系
filter是一个可以复用的代码片段,可以用来转换HTTP请求.响应和头信息.Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应. 最近使用插装的时候,改用cookie对计算机进行识别,加入了过滤,仔细研究了一下servlet和filter,区别主要是: 过滤器的生命周期一般都要经过下面三个阶段: servlet的特点是: 初始化 当容器第一次加载该过滤器时,init() 方法将被调用.该类在这个方法中包含了一个指向 Filter Con
-
springboot扫描自定义的servlet和filter代码详解
这几天使用spring boot编写公司一个应用,在编写了一个filter,用于指定编码的filter,如下: /** * Created by xiaxuan on 16/11/1. */ @WebFilter(urlPatterns = "/*",filterName="CharacterEncodeFilter", initParams={ @WebInitParam(name="encoding",value="UTF-8&qu
-
Spring Boot 编写Servlet、Filter、Listener、Interceptor的方法
前言 在编写过滤器.监听器.拦截器之前我们需要在spring-boot启动的类上加上注解@ServletComponentScan: @SpringBootApplication @ServletComponentScan public class MySpringbootApplication { public static void main(String[] args) { SpringApplication.run(MySpringbootApplication.class, args)
-
SpringBoot初始教程之Servlet、Filter、Listener配置详解
1.介绍 通过之前的文章来看,SpringBoot涵盖了很多配置,但是往往一些配置是采用原生的Servlet进行的,但是在SpringBoot中不需要配置web.xml的 因为有可能打包之后是一个jar包的形式,这种情况下如何解决?SpringBoot 提供了两种方案进行解决 2.快速开始 2.1 方案一 方案一采用原生Servlet3.0的注解进行配置.@WebServlet .@WebListener.@WebFilter是Servlet3.0 api中提供的注解 通过注解可以完全代替web
-
Filter、Servlet、Listener的学习_动力节点Java学院整理
Java中Filter.Servlet.Listener的学习资料,希望大家喜欢 1.Filter的功能 filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开 servlet时处理response.换种说法,filter其实是一个"servlet chaining"(servlet 链). 一个Filte
-
详谈Servlet和Filter的区别以及两者在Struts2和Springmvc中的应用
在javaweb开发中,Servlet和Filter是很重要的两个概念,我们平时进行javaweb开发的时候,会经常和Servlet和Filter打交道,但我们真的了解Servlet和Filter吗? 一.基本概念 Servlet: Servlet 是在WEB服务器上运行的程序.这个词是在 Java applet的环境中创造的,Java applet 是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务. 服务器上需要一些程序,
-
web.xml中servlet, bean, filter, listenr 加载顺序_动力节点Java学院整理
web.xml 文件中一般包括 servlet, spring, filter, listenr的配置.那么他们是按照一个什么顺序加载呢?加载顺序会影响对spring bean 的调用. 比如filter需要用到 bean ,但是加载顺序是 先加载filter 后加载spring,则filter中初始化操作中的bean为null:首先可以肯定 加载顺序与他们在web.xml 文件中的先后顺序无关. web.xml 中 listener 和 serverlet 的加载顺序为 先 listener
-
JavaWeb Servlet中Filter过滤器的详解
JavaWeb Servlet中Filter过滤器的详解 1.简述 Filter过滤器,对web服务器所有web资源进行过滤,从而实现一些特殊的功能(权限访问控制.过滤敏感词汇.压缩响应信息).Filter能够对Servlet容器的请求和响应进行检查和修改,其本身不能生成请求request和响应response,只提供过滤作用(Servlet被调用之前检查Request对象修改其相关信息,Servlet被调用后检查Response修改其相关信息),Filter对象常驻服务器. 2.Lifecyc
-
Java servlet、filter、listener、interceptor之间的区别和联系
servlet.filter.listener.interceptor之间的区别和联系 一.概念 1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层. 2.filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求.响应和头信息.Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应. 3.listener:
-
解决cannot be cast to javax.servlet.Filter 报错的问题
cannot be cast to javax.servlet.Filter 报错, 原因servlet-api.jar冲突 使用maven开发web应用程序, 启动的时候报错: jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 然后输出错误: 严重: Exception starting filter encodingFilter java.lang
随机推荐
- php serialize()与unserialize() 不完全研究
- 用js实现放大镜的效果的简单实例
- js文件中直接alert()中文出来的是乱码的解决方法
- 轻轻松松学JS调试(不下载任何工具)
- jsp基于XML实现用户登录与注册的实例解析(附源码)
- IOS UI学习教程之设置UITextField各种属性
- php 解决旧系统 查出所有数据分页的类
- 详解C++编程中用数组名作函数参数的方法
- android客户端从服务器端获取json数据并解析的实现代码
- 详解使用vue实现tab 切换操作
- IE8/IE9下Ajax缓存问题
- Mysql大小写敏感的问题
- 使用jQuery避免鼠标双击的解决方案
- javascript实现鼠标移到Image上方时显示文字效果的方法
- 页面只有一个text的时候,回车自动submit的解决方法
- java中的文件操作总结(干货)
- 100行Android代码轻松实现带动画柱状图
- C#基础知识之base关键字介绍
- Java实现自动压缩文件并加密的方法示例
- python 按照固定长度分割字符串的方法小结