servlet之filter过滤器
1、Servlet 过滤器有以下目的
- 在客户端的请求访问后端资源之前,拦截这些请求。
- 在服务器的响应发送回客户端之前,处理这些响应。
2、Filter接口
1.每一个过滤器都需直接或间接继承Filter接口
2.Filter的创建
在web服务器启动时会将配置在web.xml中的过滤器保存至内存中。
3.Filter的方法
init():在Filter的生命周期中执行一次,在Filter创建的时候执行,可用于初始化参数、修改参数等操作。
doFilter():做拦截操作的时候执行
destroy():在Filter的生命中执行一次,在卸载Filter容器前被调用,用于回收Filter所占用的资源。
3、Filter的配置
<!--过滤器测试-->
<filter>
<filter-name>TestFilter</filter-name>
<filter-class>com.controller.TestFilter</filter-class>
<init-param>
<param-name>oneLink</param-name>
<param-value>/test1</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>TestFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
在web.xml中添加如上配置。其中com.controller.TestFilter为自己实现的过滤器,其代码如下:
package com.controller; 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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class TestFilter implements Filter { private String oneLink;
private String[] linkArr; public void init(FilterConfig filterConfig) throws ServletException {
oneLink = filterConfig.getInitParameter("oneLink");
if (!isNull(oneLink)) {
linkArr = oneLink.split(",");
}
return;
} public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
boolean isEqual = false;
for (String link : linkArr) {
String str = ((HttpServletRequest) servletRequest).getServletPath();
if(((HttpServletRequest) servletRequest).getServletPath().equals(link)){
isEqual = true;
break;
}
} if (isEqual) {
filterChain.doFilter(servletRequest, servletResponse);
} else {
httpResponse.sendRedirect("/test2");
filterChain.doFilter(servletRequest, servletResponse);
}
} public void destroy() {
} private boolean isNull(Object obj){
return obj == null || obj.equals("") ? true : false;
} }
这样一个简单的过滤器就配置完成。
4、Filter配置参数介绍
<filter>
<filter-name>TestFilter</filter-name>
<filter-class>com.controller.TestFilter</filter-class>
<init-param>
<param-name>oneLink</param-name>
<param-value>/test1</param-value>
</init-param>
</filter>
<filter-name>:配置过滤器名称
<filter-class>com.controller.TestFilter</filter-class>:配置过滤器的实现类 <init-param>:配置需要出示化的一些参数名、参数值
注:其中<init-param>中配置的参数在web服务启动时可通过Filter中的init方法获取,如filterConfig.getInitParameter("oneLink")
<filter-mapping>
<filter-name>TestFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<url-pattern>:配置过滤请求规则
<dispatcher>:配置过滤规则,请参考web.xml里<filter-mapping>中的<dispatcher>作用
servlet之filter过滤器的更多相关文章
- 【Servlet】Filter过滤器的编写和配置
Servlet的Filter介绍 在Servlet作为过滤器使用时,它可以对客户的请求进行过滤处理,当它处理完成后,它会交给下一个过滤器处理,就这样,客户的请求在过滤链里一个个处理,直到请求发送到目标 ...
- servlet中filter(过滤器)的学习使用
servlet过滤器是小型的web组件,它能够处理传入的请求和传出的响应.Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理r ...
- 6.Servlet、Filter过滤器以及监听器
Servlet 是运行在Web服务器端的Java程序,它使用Java语言编写,与Java程序的区别是Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的支持,在Jav ...
- java Servlet中的过滤器Filter
web.xml中元素执行的顺序listener->filter->struts拦截器->servlet. 1.过滤器的概念 Java中的Filter 并不是一个标准的Servlet ...
- Servlet的学习之Filter过滤器技术(1)
本篇将讲诉Servlet中一项非常重要的技术,Filter过滤器技术.通过过滤器,可以对来自客户端的请求进行拦截,进行预处理或者对最终响应给客户端的数据进行处理后再输出. 要想使用Filter过滤器, ...
- Servlet中的过滤器Filter详解
加载执行顺序 context-param->listener->filter->servlet web.xml中元素执行的顺序listener->filter->stru ...
- Servlet中的过滤器Filter
链web.xml中元素执行的顺序listener->filter->struts拦截器->servlet. 1.过滤器的概念 Java中的Filter 并不是一个标准的Servlet ...
- [转]Servlet的学习之Filter过滤器技术
本篇将讲诉Servlet中一项非常重要的技术,Filter过滤器技术.通过过滤器,可以对来自客户端的请求进行拦截,进行预处理或者对最终响应给客户端的数据进行处理后再输出. 要想使用Filter过滤器, ...
- 【Servlet】Java Serlvet Filter 过滤器
Filter的设计思想Filter是一种AOP(aspect-oriented programming)的设计思想 : 面向切面编程.用于的请求和响应都会走 使用filter的登录案例我们通过一张图片 ...
随机推荐
- css3实现手机效果的“切换标签”
Style样式 .toggle { position: relative; display: inline-block; width: 60px; height: 30px; border: 1px ...
- elk系列1之入门安装与基本操作
preface 我们每天都要查看服务器的日志,一方面是为了开发的同事翻找日志,另一方面是巡检服务器查看日志,而随着服务器数量以及越来越多的业务上线,日志越来越多,人肉运维相当痛苦了,此时,参考现在非常 ...
- bookstrap必备的基础知识
- Unicode 与 UTF 字符标准
Unicode 国际字符标准(UCS)是一个字符编码系统,它被设计用来支持世界各国不同语言书面文体之间的数据交换.处理以及显示. Unicode用两个字节表示一个字符.前127个字符与A ...
- JavaScript学习笔记——事件
javascript事件基础和事件绑定 一.事件驱动 1.事件 javascript侦测到的用户的操作或是页面的一些行为(怎么发生的) 2.事件源 引发事件的元素.(发生在谁的身上)3.事件处理程序 ...
- Java 命令行运行参数大全
Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOME"bin"java –option 来启动,-option为虚拟 ...
- cmd 导出目录树
cmd: tree /f >tree.txt
- Webpack 之 Loader 的使用
安装 loaders 如果loader在npm里,可以这样安装: $ npm install xxx-loader --save 或者 $ npm install xxx-loader --save- ...
- Unity 播放 视频
Unity3D 播放视频 http://www.cnblogs.com/fortomorrow/archive/2012/11/01/unity07.html Unity3D研究院之两种方式播放游戏视 ...
- Description DisplayName Display的关系
Description DisplayName Display的关系 ?