- 浏览: 1091600 次
文章分类
- 全部博客 (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 1909session失效时间设置 session失效时间设 ... -
JSP 表达式 VS EL 表达式 用法比较
2017-06-21 06:03 1017应用场景: 根据访问路径URL,判断当前用户选择使用的语言。转 ... -
JSP之 @include VS jsp:include
2017-06-17 01:39 1373第一篇 对于可以重复使用的一段代码, 1、使用 <%@ ... -
JavaEE之(Servlet+Filter)环境搭建
2017-04-01 14:15 969初学 Java Web 开发,请远 ... -
Servlet之单例与线程安全
2017-02-06 13:04 4379一、Servlet 是单例吗 不 ... -
Servlet之 destroy
2016-11-29 22:04 735只听说过 Servlet 何时 init(),何时 servi ... -
Servlet之JSP_03 JSTL/EL 表达式
2016-09-16 16:13 2278准备工作:在JSP 中启用 EL 表达式 <%@ ... -
Servlet之JSP_02初探
2016-09-15 22:37 805一、被编译后的JSP 1、写一个JSP文件:index.js ... -
Servlet之JSP_01概述
2016-09-15 20:42 1115一、什么是JSP JSP (Java Server Page ... -
Servlet之Servlet API
2016-09-13 19:10 1584一、在哪里 Java Servlet ... -
Servlet 的生命周期图
2014-12-31 03:18 917A servlet life cycle can be def ... -
在一个JSP页面中,操作数据库
2013-03-11 19:02 2754下面的代码是在一个jsp页面中实现数据库的操作。 也是为了加深 ... -
out.print和out.write
2012-12-30 11:42 19381问题: 这是一个JSP页面: <%@ page l ... -
等幂操作——get方法与post方法
2012-12-23 20:13 1713幂等操作: 指的是对于同一数据,不论对其进行任何次幂操作,总 ... -
如何将jsp中<input>设为只读
2012-12-13 10:49 23268将一个input变为只读,可以使用 readonly 属性 和 ... -
Request的 getAttribute 和 getParameter
2012-12-03 19:57 1237getParameter 返回的是String, 用于 ...
相关推荐
不使用Servlet Filter接口,自定义FilterChain处理多个Filter执行顺序问题
javax.servlet.FilterChain.class javax.servlet.ServletRequestEvent.class javax.servlet.Filter.class javax.servlet.FilterConfig.class javax.servlet.ServletRequestAttributeListener.class javax.servlet....
1、Filter接口:所有的Servlet过滤器类都必须实现javax.servlet.Filter接口 a、init(FilterConfig): 这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取...
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ...
javax.servlet.Filter javax.servlet.Servlet javax.servlet.FilterChain javax.servlet.http.Cookie javax.servlet.FilterConfig javax.servlet.ServletConfig javax.servlet.GenericServlet javax.servlet....
在 Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序:Filter, FilterChain, FilterConfig。 Filter 程序是一个实现了 Filter 接口的 Java 类,与 Servlet 程序相似,它由 Servlet 容器进行调用和...
20.2.3 filterchain接口 590 20.3 过滤器的部署 591 20.4 过滤器的开发 592 20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与...
20.2.3 filterchain接口 590 20.3 过滤器的部署 591 20.4 过滤器的开发 592 20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与...
doFilter(ServletRequest, ServletResponse, FilterChain) - Method in interface javax.servlet.Filter The doFilter method of the Filter is called by the container each time a request/response pair is ...
20.2.3 filterchain接口 590 20.3 过滤器的部署 591 20.4 过滤器的开发 592 20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与...
import javax servlet Filter; import javax servlet FilterChain; import javax servlet FilterConfig; import javax servlet RequestDispatcher; import javax servlet ServletException; import javax servlet ...
20.2.3 filterchain接口 590 20.3 过滤器的部署 591 20.4 过滤器的开发 592 20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与...
MVC模式(model view controller) 模型:封装应用程序的数据和业务逻辑(POJO...对于servlet来说,拦截资源不是其所擅长的filter中的filterchain,这个API是servlet所没有的 Struts2中最主要的一个就是过滤器filter
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; ...
JAVA配置跨越访问Filter APP要访问WEB系统,需要进行跨域设置 关键: public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (encoding != null) { request.setCharacterEncoding(encoding); ...
Filter过滤器和Listener监听器详解 Filter过滤器 Filter的简介 对资源的访问进行过滤,相当于小区的保安,进去要检查,出去还要检查。 Filter的使用 编写一个类,继承并实现javax.servlet.Filter。 package ...
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { MyRequest myRequest = null; HttpServletRequest request2 = ...
JSP 开发中过滤器filter设置编码格式的实现方法 我们知道为了避免提交数据的乱码问题,需要在每次使用请求之前设置编码格式。...import javax.servlet.FilterChain; import javax.servlet.FilterConfig;
import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax....