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过滤器之开发应用的更多相关文章

  1. HBase Filter 过滤器之RowFilter详解

    前言:本文详细介绍了HBase RowFilter过滤器Java&Shell API的使用,并贴出了相关示例代码以供参考.RowFilter 基于行键进行过滤,在工作中涉及到需要通过HBase ...

  2. HBase Filter 过滤器之FamilyFilter详解

    前言:本文详细介绍了 HBase FamilyFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.FamilyFilter 基于列族进行过滤,在工作中涉及 ...

  3. HBase Filter 过滤器之QualifierFilter详解

    前言:本文详细介绍了 HBase QualifierFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.QualifierFilter 基于列名进行过滤, ...

  4. HBase Filter 过滤器之 ValueFilter 详解

    前言:本文详细介绍了 HBase ValueFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.ValueFilter 基于列值进行过滤,在工作中涉及到需 ...

  5. web应用中的Filter过滤器之基础概述

    1 过滤器概述 当web容器接收到对一个资源的请求时,它将判断是否有过滤器与这个资源相关联,如果有,那么容器将把这个请求交给过滤器进行处理.在过滤器中,你可以改变请求的内容或者重新设置请求的报头信息, ...

  6. Web.xml中Filter过滤器标签几个说明

    在研究liferay框架中看到Web.xml中加入了过滤器的标签,可以根据页面提交的URL地址进行过滤,发现有几个新标签没用过,下面就介绍以下几个过滤器的标签用法: <!-- 定义Filter ...

  7. web.xml中Filter,Listener,Servlet的区别

    一.Servlet Servlet是基本的服务端程序,他来自接口Servlet,接口中有方法service.而Servlet的一个重要实现类,则是tomcat服务器的核心,那就是HttpServlet ...

  8. web.xml中Filter的作用

    Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码.做一些业务逻辑判断等.其工作原理是,只要你在web.xml文件配置好要 ...

  9. web.xml中Filter过滤器标签说明

    原文:http://www.cnblogs.com/edwardlauxh/archive/2010/03/11/1918618.html 在研究liferay框架中看到Web.xml中加入了过滤器的 ...

随机推荐

  1. 将flex页面嵌入到jsp页面中

    如果我们只需要用到Flex的一部分功能,例如播放器功能,我们可以单独把Flex页面嵌入到Jsp页面中.要想实现此功能,需要下载一个工程,将其覆盖在服务器根目录下即可.你可以在次下载:FlexModul ...

  2. 《Java入门第二季》第三章 继承

    Java 中的继承1.作用:代码复用. 2.语法:extends关键字. 3.注意点:私有(private)财产(methods.fields)不可继承. Java 中的方法重写 Java 中的继承初 ...

  3. # 20145122 《Java程序设计》第3周学习总结

    教材学习内容总结 1一类一文件. 2一个原始码中只能有一个公开类,一个类定义产生一个.class文档. 3如果参考名称与数据成员同名时,将参数的值指定给对象的数据成员时要在数据成员前加this. 4当 ...

  4. 解决use -D_SCL_SECURE_NO_WARNINGS的问题

    加入预处理器(项目属性----C/C++----预处理----预处理器定义): _SCL_SECURE_NO_WARNINGS

  5. 框架-springmvc源码分析(一)

    框架-springmvc源码分析(一) 参考: http://www.cnblogs.com/heavenyes/p/3905844.html#a1 https://www.cnblogs.com/B ...

  6. Windows系统下解决“telnet不是外部或内部命令”的问题

    在学习Node.js时,需要使用Telnet连接Node TCP服务器,在命令行中运行: $ telnet 127.0.0.1 9000 时,命令行工具会报错:“telnet不是外部或内部命令”. 这 ...

  7. SQL优化:清理生产环境中已失效字段基本步骤

    1.统计相应字段的数据情况(如:几年没更新,无数据等情况) 2.确认产品逻辑已无效(产品经理邮件确认) 3.数据备份 4.将数据清空(置为0或空) 5.测试环境中删除引用页面 6.修改定时程序,存储过 ...

  8. C++ 中的关于输出的设置于

    ▲setw(n)用法: 通俗地讲就是预设宽度 如 cout<<setw(5)<<255<<endl; 结果是: (空格)(空格)255 ▲setfill(char ...

  9. python 获取昨天今天明天日期

    import datetime today = datetime.date.today() yesterday = today - datetime.timedelta(days = ) tomorr ...

  10. 农历03__ZC

    代码,改自 农历01(http://www.cnblogs.com/cppskill/p/5930558.html) 1.main.cpp #include "Lunar_ZC.h" ...