web应用中Filter过滤器之开发应用
1 过滤器的简单开发应用部署
首先讲解过滤器的开发部署运行基本流程,在这里先通过一个简单的示例:
1)编写过滤器类
编写一个简单的过滤器类:SimpleFilter,实现Filter接口,完整的代码为:
过滤器整个的工作流程:当客户端访问某个URL请求时,web容器会首先判断是否存在与该请求url相关联的过滤器,如果存在,则会先调用该过滤器。
package com.hzw.exam01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class SimpleFilter implements Filter {
public SimpleFilter() {}
public void destroy() {}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("before doFilter()");
chain.doFilter(request, response);
out.println("after doFilter()");
out.close();
}
public void init(FilterConfig fConfig) throws ServletException {}
}
2)编写测试页面test.jsp
<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<p>SimpleFilter的测试页面!</p>
</body>
</html>
3)在web.xml中配置该过滤器
主要配置内容:
<filter>
<filter-name>SimpleFilter</filter-name>
<filter-class>com.hzw.exam01.SimpleFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SimpleFilter</filter-name>
<url-pattern>/test.jsp</url-pattern>
</filter-mapping>
4)部署该应用,并运行,在浏览器地址栏输入地址:http://localhost:8080/FilterDemo/test.jsp直接访问test.jsp页面:

从结果中可以看出,当在过滤器的doFilter()方法中调用chain.doFilter(request,response)方法后,目标资源被调用,在响应中输出“SimpleFilter的测试页面!”,之后又回到了过滤器的doFilter()方法中,继续执行chain.doFilter(request,response)后面的代码,输出“after doFilter()”。
如下图演示过滤器的工作流程:

web应用中Filter过滤器之开发应用的更多相关文章
- HBase Filter 过滤器之RowFilter详解
前言:本文详细介绍了HBase RowFilter过滤器Java&Shell API的使用,并贴出了相关示例代码以供参考.RowFilter 基于行键进行过滤,在工作中涉及到需要通过HBase ...
- HBase Filter 过滤器之FamilyFilter详解
前言:本文详细介绍了 HBase FamilyFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.FamilyFilter 基于列族进行过滤,在工作中涉及 ...
- HBase Filter 过滤器之QualifierFilter详解
前言:本文详细介绍了 HBase QualifierFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.QualifierFilter 基于列名进行过滤, ...
- HBase Filter 过滤器之 ValueFilter 详解
前言:本文详细介绍了 HBase ValueFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.ValueFilter 基于列值进行过滤,在工作中涉及到需 ...
- web应用中的Filter过滤器之基础概述
1 过滤器概述 当web容器接收到对一个资源的请求时,它将判断是否有过滤器与这个资源相关联,如果有,那么容器将把这个请求交给过滤器进行处理.在过滤器中,你可以改变请求的内容或者重新设置请求的报头信息, ...
- Web.xml中Filter过滤器标签几个说明
在研究liferay框架中看到Web.xml中加入了过滤器的标签,可以根据页面提交的URL地址进行过滤,发现有几个新标签没用过,下面就介绍以下几个过滤器的标签用法: <!-- 定义Filter ...
- web.xml中Filter,Listener,Servlet的区别
一.Servlet Servlet是基本的服务端程序,他来自接口Servlet,接口中有方法service.而Servlet的一个重要实现类,则是tomcat服务器的核心,那就是HttpServlet ...
- web.xml中Filter的作用
Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码.做一些业务逻辑判断等.其工作原理是,只要你在web.xml文件配置好要 ...
- web.xml中Filter过滤器标签说明
原文:http://www.cnblogs.com/edwardlauxh/archive/2010/03/11/1918618.html 在研究liferay框架中看到Web.xml中加入了过滤器的 ...
随机推荐
- laravel 中间件排除
public function __construct(){ //除了主页之外 $this->middleware('auth', ['except' => ['index','show' ...
- PHP多进程学习(二)__fork起多个子进程,父进程的阻塞与非阻塞
先简单来了解一下多进程 [来初步了解一下PHP多进程及简单demo] php的多进程是不是可以无限制的fork子进程?fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的 ...
- 从知乎了解到,为什么Mysql禁用存储过程、外键和级联?
打开帖子直接一张醒目的图,是阿里巴巴的Java开发手册对Mysql相关的要求. 看看下面的回复 灵剑 存储过程没有版本控制,版本迭代的时候要更新很麻烦.存储过程如果和外部程序结合起来用,更新的时候很难 ...
- supervisor管理ELK进程
1.配置supervisor #更新epel yum install epel-release yum install python-pip pip install supervisor -p /et ...
- Jwt访问api提示401错误 Authorization has been denied for this request
教程 http://bitoftech.net/2015/02/16/implement-oauth-json-web-tokens-authentication-in-asp-net-web-ap ...
- Python学习札记(二十八) 模块1
参考:模块 NOTE 1.模块:一个.py文件称为一个模块. 2.代码模块化的意义:a.提升程序的可维护性 b.不用重复造轮子 3.避免模块冲突,解决方法:引入了按目录来组织模块的方法,称为包(Pac ...
- codeforces 256 div2 C. Painting Fence 分治
C. Painting Fence time limit per test 1 second memory limit per test 512 megabytes input standard in ...
- HDU - 5917 水题
题意:n个点m条边,找点集个数,点集满足有任意三个点成环,或者三个点互不相连 题解:暴力复杂度O(n^5/120*O(ok))==O(能过) //#pragma comment(linker, &qu ...
- UVA-10603 Fill (BFS)
题目大意:有三个已知体积但不知刻度的杯子,前两个杯子中初始时没有水,第三个装满水,问是否可以倒出d升水,如果倒不出,则倒出一个最大的d’,使得d’<=d,并且在这个过程中要求总倒水量最少. 题目 ...
- 处理EXCEL11问题
程序原本是好使的,但是自从卸载OFFICE11而安装14后,程序无法启动. 重新安装2003 ,然后,删除原引用 Microsoft.Office.Interop.Excel,然后添加引用,浏览,找到 ...