Servlet过滤器
来源:互联网 发布:ubuntu安装语言支持 编辑:程序博客网 时间:2024/05/19 09:02
1. Filter 简介:
<1> 在 Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序:Filter, FilterChain, FilterConfig。
<2> Filter 程序是一个实现了 Filter 接口的 Java 类,与 Servlet 程序相似,它由 Servlet 容器进行调用和执行。
<3> Filter 程序需要在 web.xml 文件中进行注册和设置它所能拦截的资源:Filter 程序可以拦截 Jsp, Servlet, 静态图片文件和静态 html 文件。
2.Filter 的基本工作原理:
<1> 当在 web.xml 中注册了一个 Filter 来对某个 Servlet 程序进行拦截处理时,这个 Filter 就成了 Servlet 容器与该 Servlet 程序的通信线路上的一道关卡,该 Filter 可以对 Servlet 容器发送给Servlet 程序的请求和 Servlet 程序回送给 Servlet 容器的相应进行拦截,可以决定是否将请求继续传递给 Servlet 程序,以及对请求和相应信息是否进行修改。
<2> 在一个 web 应用程序中可以注册多个 Filter 程序,每个 Filter 程序都可以对一个或一组 Servlet 程序进行拦截。
<3> 若有多个 Filter 程序对某个 Servlet 程序的访问过程进行拦截,当针对该 Servlet 的访问请求到达时,web 容器将把这多个 Filter 程序组合成一个 Filter 链(过滤器链)。Filter 链中各个 Filter 的拦截顺序与它们在应用程序的 web.xml 中映射的顺序一致。
3. 过滤器的部署:
在实现一个过滤器后,需要在 web.xml 中进行注册和设置它所能拦截的资源。这可以通过<filter>和<filter-mapping>元素来完成的。
<1> Filter 元素(注册Filter):<filter>元素用于在Web应用程序中注册一个过滤器。
下面是在 web.xml 文件中注册 Filter 的代码示例:
<filter>
</filter>
<2> 映射 Filter : <filter-mapping> 元素用于设置一个 Filter 所负责拦截的资源。一个 Filter 拦截的资源可通过两种方式来指定:Servlet 名称和资源访问的请求路径( url样式)。
下面是在 web.xml 文件中映射 Filter 的代码示例:
<filter-mapping>
</filter-mapping>
4. 下面是 Filter 过滤器的一个典型应用,通过这个应用我们能对 Filter 有更深入的理解和掌握。
<1> 编写一个过滤器 NameFilter , 完成以下功能:过滤表单的 name, 若 name 和 filter 中配置的初始化参数一致则将请求传给 hello.jsp(给出提示信息: Hello: xxx), 若不匹配则返回给 index.jsp 页面并给出提示信息(例如: name 不匹配,给出 “用户名错误”)
① 在login.jsp 登陆页面的代码如下:
${requestScope.errorInfo }
<form action="hello.jsp" method="post">
</form>
② 在实现了 Filter 接口的 doFilter 方法中的代码如下:
转发,因为我们要把request传回去
- servlet 过滤器
- Servlet 过滤器
- servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet过滤器
- Servlet 过滤器
- 硬盘开机噪音,有时不开机的故障
- uva457 - Linear Cellular Automata
- zoj1760 Doubles
- try{} catch(…){}
- 学习cpp的笔记
- Servlet过滤器
- 查看事务所使用回退段
- 文本文件和二进制文件区别及java中字节流和字符流归纳
- c++ 智能指针
- java设计模式之观察者模式
- USB打印电缆引起的打印机无法识别
- android GestureDetector 关于手势的判断
- C# 三元运算符 ?: 运算符
- 初始化的困惑