- 浏览: 1112672 次
文章分类
- 全部博客 (379)
- S2SH (16)
- stuts2 (0)
- java语言 (81)
- JSP (17)
- <html>元素 (11)
- javaweb (4)
- web容器 (3)
- ext (23)
- javaScript (48)
- ant (1)
- liferay (1)
- sql (9)
- css (42)
- 浏览器设置 (3)
- office_world (1)
- eclipse (4)
- 其它 (28)
- 操作系统 (5)
- android (6)
- Struts2 (11)
- RegEx (3)
- mysql (5)
- BigDATA (1)
- Node.js (1)
- Algorithm (10)
- Apache Spark (1)
- 数据库 (5)
- linux (2)
- git (1)
- Adobe (3)
- java语言,WebSocket (1)
- Maven (3)
- SHELL (1)
- XML (2)
- 数学 (2)
- Python (2)
- Java_mysql (1)
- ReactJS (6)
- 养生 (4)
- Docker (1)
- Protocols (3)
- java8 (2)
- 书籍 (1)
- Gradle (2)
- AngularJS (5)
- SpringMVC (2)
- SOAP (1)
- BootstrapCSS (1)
- HTTP协议 (1)
- OAuth2 (1)
最新评论
-
Lixh1986:
Java并发编程:自己动手写一把可重入锁https://blo ...
Java之多线程之Lock与Condition -
Lixh1986:
http://win.51apps.com.cn/https: ...
temp -
ztwsl:
不错,支持很好
HttpServletRequest和ServletRequest的区别 -
guodongkai:
谢谢您能将知识精华汇编总结,让初学者们从原理中学会和提高。
javaScript之function定义 -
kangwen23:
谢谢了,顶顶
struts2中的ValueStack学习
在 JavaEE 中没有 Interceptor(拦截器)的概念,不要和Struts2和Spring中的混淆。
但是有 Filter(过滤器),它实质就起拦截器的作用。
过滤器有两个要素:
1、实现一个接口:javax.servlet.Filter。
2、绑定访问路径,对其进行过滤。
一、什么是 Filter(过滤器)?
Filter 是一个 Object, 用于改变 request/response 对象的请求头和请求体。
Filter 与其它的 web 组件不同的是,Filter 一般不会自己创建 response 对象对 web 请求进行响应,而是只提供方法,这些方法可绑定于任何 web 请求的资源。
可以对一个 web 资源配置一个或多个 Filter。
二、Filter 的主要任务:
1. 过滤请求
2. 拦截请求或相应
3. 修改 request 对象的 header 和 body。(需要提供自定义的 request 对象)
4. 修改 response 对象的 header 和 body。(需要提供自定义的 response 对象)
5. 与外部资源交互
三、Filter 的用途:
权限认证、日志、图片转换、数据压缩、加密、标记(Token)、XML转换等等。
四、使用 Filter
filter API 定义在 javax.servlet 包下的 Filter, FilterChain, FilterConfig 类中。
使用 Filter 需要两步:
1、定义一个Filter 类(必须实现 Filter 接口)
2、配置 Filter(在 web.xml 中配置 或者是使用 @WebFilter 注解)
1、定义一个Filter 类(必须实现 Filter 接口)
在 Filter 类中必须实现 Filter 接口的三个方法:
init(FilterConfig filterConfig):
Filter 实例化时被调用。
doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
Filter类的主要方法。
destroy()
2、配置 Filter(在 web.xml 中配置 或者是使用 @WebFilter 注解)
1)在 web.xml 配置:
2)使用 @WebFilter 注解(Since: Servlet 3.0)
四、Filter 与 Interceptor 的区别
1、Filter介绍
Filter可以认为是Servlet的一种“加强版”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。Filter也可以对用户请求生成响应,这一点与Servlet相同,但实际上很少会使用Filter向用户请求生成响应。使用Filter完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行预处理并生成响应,最后Filter再对服务器响应进行后处理。
2、Struts - Interceptor介绍
拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截,然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。
3、Filter和 Struts - Interceptor 的区别
- Filter是基于函数回调的(责任链设计模式),而Interceptor则是基于Java反射的(AOP设计模式)。
- Filter依赖于Servlet容器,而Interceptor不依赖于Servlet容器。
- Filter对几乎所有的请求起作用,而Interceptor只能对action请求起作用。
- Interceptor可以访问Action的上下文,值栈里的对象,而Filter不能。
- 在action的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一次。
4、Filter和 Spring - HandlerInterceptor 的区别
HandlerInterceptor is basically similar to a Servlet 2.3 Filter.
But in contrast to the latter it just allows custom pre-processing with the option of prohibiting the execution of the handler itself, and custom post-processing.
引用:
http://docs.oracle.com/javaee/6/tutorial/doc/bnagb.html
http://blog.csdn.net/zhaozheng7758/article/details/6105749
http://docs.oracle.com/javaee/6/api/javax/servlet/annotation/WebFilter.html
http://www.cnblogs.com/luoyun/archive/2013/01/04/2844274.html
-
转载请注明
原文出处:http://lixh1986.iteye.com/blog/1765692
-
但是有 Filter(过滤器),它实质就起拦截器的作用。
过滤器有两个要素:
1、实现一个接口:javax.servlet.Filter。
2、绑定访问路径,对其进行过滤。
一、什么是 Filter(过滤器)?
Filter 是一个 Object, 用于改变 request/response 对象的请求头和请求体。
Filter 与其它的 web 组件不同的是,Filter 一般不会自己创建 response 对象对 web 请求进行响应,而是只提供方法,这些方法可绑定于任何 web 请求的资源。
可以对一个 web 资源配置一个或多个 Filter。
二、Filter 的主要任务:
1. 过滤请求
2. 拦截请求或相应
3. 修改 request 对象的 header 和 body。(需要提供自定义的 request 对象)
4. 修改 response 对象的 header 和 body。(需要提供自定义的 response 对象)
5. 与外部资源交互
三、Filter 的用途:
权限认证、日志、图片转换、数据压缩、加密、标记(Token)、XML转换等等。
四、使用 Filter
filter API 定义在 javax.servlet 包下的 Filter, FilterChain, FilterConfig 类中。
使用 Filter 需要两步:
1、定义一个Filter 类(必须实现 Filter 接口)
2、配置 Filter(在 web.xml 中配置 或者是使用 @WebFilter 注解)
1、定义一个Filter 类(必须实现 Filter 接口)
在 Filter 类中必须实现 Filter 接口的三个方法:
init(FilterConfig filterConfig):
Filter 实例化时被调用。
doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
Filter类的主要方法。
destroy()
package com.test.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class SecurityFilter implements Filter { private FilterConfig filterConfig; @Override public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { ServletContext context = this.filterConfig.getServletContext(); HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; HttpSession session = req.getSession(); if (session.getAttribute("username") != null) { context.log("Authentication passed."); chain.doFilter(request, response); } else { context.log("Authentication failed."); res.sendRedirect("../failure.jsp"); } } @Override public void destroy() { this.filterConfig = null; } }
2、配置 Filter(在 web.xml 中配置 或者是使用 @WebFilter 注解)
1)在 web.xml 配置:
<filter> <filter-name>SecurityFilter</filter-name> <filter-class> com.test.filter.SecurityFilter</filter-class> </filter> <filter-mapping> <filter-name>SecurityFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2)使用 @WebFilter 注解(Since: Servlet 3.0)
package com.test.filter; import javax.servlet.Filter; import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebInitParam; @WebFilter( filterName = "SecurityFilter", urlPatterns = {"/*"}, initParams = { @WebInitParam(name = "mood", value = "awake") } ) public class SecurityFilter implements Filter { //... }
四、Filter 与 Interceptor 的区别
1、Filter介绍
Filter可以认为是Servlet的一种“加强版”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。Filter也可以对用户请求生成响应,这一点与Servlet相同,但实际上很少会使用Filter向用户请求生成响应。使用Filter完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行预处理并生成响应,最后Filter再对服务器响应进行后处理。
2、Struts - Interceptor介绍
拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截,然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。
3、Filter和 Struts - Interceptor 的区别
- Filter是基于函数回调的(责任链设计模式),而Interceptor则是基于Java反射的(AOP设计模式)。
- Filter依赖于Servlet容器,而Interceptor不依赖于Servlet容器。
- Filter对几乎所有的请求起作用,而Interceptor只能对action请求起作用。
- Interceptor可以访问Action的上下文,值栈里的对象,而Filter不能。
- 在action的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一次。
4、Filter和 Spring - HandlerInterceptor 的区别
HandlerInterceptor is basically similar to a Servlet 2.3 Filter.
But in contrast to the latter it just allows custom pre-processing with the option of prohibiting the execution of the handler itself, and custom post-processing.
引用:
http://docs.oracle.com/javaee/6/tutorial/doc/bnagb.html
http://blog.csdn.net/zhaozheng7758/article/details/6105749
http://docs.oracle.com/javaee/6/api/javax/servlet/annotation/WebFilter.html
http://www.cnblogs.com/luoyun/archive/2013/01/04/2844274.html
-
转载请注明
原文出处:http://lixh1986.iteye.com/blog/1765692
-
发表评论
-
javaWeb session失效时间设置
2018-04-25 14:19 1997session失效时间设置 session失效时间设 ... -
JSP 表达式 VS EL 表达式 用法比较
2017-06-21 06:03 1054应用场景: 根据访问路径URL,判断当前用户选择使用的语言。转 ... -
JSP之 @include VS jsp:include
2017-06-17 01:39 1416第一篇 对于可以重复使用的一段代码, 1、使用 <%@ ... -
JavaEE之(Servlet+Filter)环境搭建
2017-04-01 14:15 1041初学 Java Web 开发,请远 ... -
Servlet之单例与线程安全
2017-02-06 13:04 4441一、Servlet 是单例吗 不 ... -
Servlet之 destroy
2016-11-29 22:04 792只听说过 Servlet 何时 init(),何时 servi ... -
Servlet之JSP_03 JSTL/EL 表达式
2016-09-16 16:13 2318准备工作:在JSP 中启用 EL 表达式 <%@ ... -
Servlet之JSP_02初探
2016-09-15 22:37 844一、被编译后的JSP 1、写一个JSP文件:index.js ... -
Servlet之JSP_01概述
2016-09-15 20:42 1165一、什么是JSP JSP (Java Server Page ... -
Servlet之Servlet API
2016-09-13 19:10 1613一、在哪里 Java Servlet ... -
Servlet 的生命周期图
2014-12-31 03:18 951A servlet life cycle can be def ... -
在一个JSP页面中,操作数据库
2013-03-11 19:02 2784下面的代码是在一个jsp页面中实现数据库的操作。 也是为了加深 ... -
out.print和out.write
2012-12-30 11:42 19432问题: 这是一个JSP页面: <%@ page l ... -
等幂操作——get方法与post方法
2012-12-23 20:13 1753幂等操作: 指的是对于同一数据,不论对其进行任何次幂操作,总 ... -
如何将jsp中<input>设为只读
2012-12-13 10:49 23333将一个input变为只读,可以使用 readonly 属性 和 ... -
Request的 getAttribute 和 getParameter
2012-12-03 19:57 1282getParameter 返回的是String, 用于 ...
相关推荐
### Servlet与JSP与Filter的使用详解 #### 一、Servlet与JSP的基本概念 Servlet是一种Java技术,用于创建动态Web应用程序。它本质上是一个Java类,由Web服务器或应用服务器加载,以响应客户端请求。Servlet可以...
Spring Boot 使用 Servlet 及 Filter 过程详解 在 Spring Boot 应用程序中,Servlet 和 Filter 是两个非常重要的概念,它们都是 Java Servlet 规范的一部分。在本文中,我们将详细介绍 Spring Boot 使用 Servlet 及...
Servlet系列之Filter详解 在Java Web开发中,Servlet和Filter是两个非常重要的概念。Servlet是Java EE标准中用于处理HTTP请求的核心组件,而Filter则是一个预处理或后处理Servlet请求和响应的机制,它允许开发者在...
### Servlet过滤器详解 #### 一、Filter的基本概念与作用 **过滤器(Filter)**是一种Web组件,它能够在客户端请求到达目标资源(如Servlet、JSP页面等)之前进行预处理,以及在响应返回客户端之前进行后处理。...
SpringBootServlet、Filter、Listener配置详解 在SpringBoot中,Servlet、Filter、Listener是三个重要的组件,它们在Web应用程序中扮演着关键的角色。本篇文章将详细介绍如何在SpringBoot中配置Servlet、Filter、...
在Java企业级应用开发中,J2EE(Java 2 Platform, Enterprise Edition)提供了一种强大的组件模型,其中过滤器(Filter)是关键组件之一。本文将深入解析J2EE过滤器Filter的使用方法,并通过实例来阐述其工作原理。 ...
### Servlet 3.0 使用注解标注过滤器 #### 一、Servlet 3.0概述与新特性 Servlet 3.0 是 Java EE 6 的一部分,它引入了许多新的特性和改进,使得开发者能够更方便地开发 Web 应用程序。其中一个重要特性就是支持...
### Java Filter过滤机制详解 #### 一、什么是Filter Filter技术是Servlet 2.3版本中新引入的一个功能,它的主要作用在于对Web应用中的请求和响应进行预处理和后处理。Filter本身并不是一个Servlet,因此它不能...
Java Web开发中,Servlet Filter(过滤器)是一个重要的组件,它用于对web服务器上的所有web资源进行过滤,实现各种特殊功能,如权限访问控制、过滤敏感词汇、压缩响应信息等。Filter的作用是在Servlet被调用之前和...
3. Filter通过调用`FilterChain.doFilter()`将请求传递给下一个Filter或目标Servlet。 4. 目标Servlet处理完请求后,响应开始返回。此时,Filter可以再次介入,对响应进行后处理,如添加响应头或修改响应数据。 5. ...
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ...
使用Servlet 之过滤器需要实现javax.servlet.Filter接口,重写抽象方法,编写doFilter()方法中的处理代码,并使用FilterChain调用FilterChain.doFilter(req, resp)方法,表示可以执行后面的拦截器(如果有的话)。...
Filter 过滤器是 JavaWeb 的三大组件之一,另外两个组件是 Servlet 程序和 Listener 监听器。Filter 过滤器是一个接口,它的作用是拦截请求,过滤响应。常见的应用场景有权限检查、日记操作、事务管理等等。 ...
### Java中的Filter(过滤器)使用详解 #### 一、Filter概述 在Java Web开发中,`Filter`是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行后...
### Servlet过滤器详解 #### 一、字符编码过滤器 在Web开发中,尤其是在处理中文等多语言环境时,字符编码的问题尤为重要。如果字符编码设置不当,可能会导致页面出现乱码。为此,开发者通常会使用字符编码过滤器...
8. **Filter接口和FilterChain类**:Servlet 2.4引入了过滤器(Filter)概念,允许在请求到达Servlet之前进行预处理,或在响应离开Servlet之后进行后处理。FilterChain允许过滤器链式调用。 9. **Listener接口**:...
20.2.3 filterchain接口 590 20.3 过滤器的部署 591 20.4 过滤器的开发 592 20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与...
2. **请求处理**:当请求到达时,容器会调用Filter的`doFilter(ServletRequest request, ServletResponse response, FilterChain chain)`方法来处理请求。 3. **销毁**:当Web应用停止时,容器会调用Filter的`...