Unit08: 过滤器、监听器    

下面这些小案例主要演示的filter的执行时机:

web

package web;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class AddCostServlet extends HttpServlet { @Override
protected void service(
HttpServletRequest req,
HttpServletResponse res) throws ServletException, IOException {
System.out.println("增加资费");
} }

AddCostServlet.java

package web;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class FindCostServlet extends HttpServlet { @Override
protected void service(
HttpServletRequest req,
HttpServletResponse res) throws ServletException, IOException {
System.out.println("查询资费");
req.setAttribute("name", "zhangsan");
} }

FindCostServlet.java

package web;

import java.io.IOException;

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 GuolvFilter implements Filter { public void destroy() {
System.out.println("销毁GuolvFilter");
} public void doFilter(
ServletRequest req,
ServletResponse res,
FilterChain chain)
throws IOException, ServletException {
System.out.println("在前面过滤敏感词");
chain.doFilter(req, res);
System.out.println("在后面过滤敏感词");
} String words; public void init(FilterConfig cfg) throws ServletException {
System.out.println("初始化GuolvFilter");
words = cfg.getInitParameter("words");
System.out.println("words:"+words);
} }

GuolvFilter.java

package web;

import java.io.IOException;

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 LogFilter implements Filter { public void destroy() {
System.out.println("销毁LogFilter");
} public void doFilter(
ServletRequest req,
ServletResponse res,
FilterChain chain)
throws IOException, ServletException {
System.out.println("在前面记日志");
//请求继续,向下执行
chain.doFilter(req, res);
System.out.println("在后面记日志");
} public void init(FilterConfig arg0) throws ServletException {
System.out.println("初始化LogFilter");
} }

LogFilter.java

package web;

import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener; public class MyListener
implements ServletRequestListener,
ServletRequestAttributeListener { public void requestDestroyed(ServletRequestEvent e) {
//request销毁时调用
System.out.println("销毁request");
System.out.println(e.getServletRequest());
} public void requestInitialized(ServletRequestEvent arg0) {
//request创建时调用
System.out.println("创建request");
} public void attributeAdded(ServletRequestAttributeEvent arg0) {
System.out.println("向request添加数据");
} public void attributeRemoved(ServletRequestAttributeEvent arg0) {
// TODO Auto-generated method stub } public void attributeReplaced(ServletRequestAttributeEvent arg0) {
// TODO Auto-generated method stub } }

MyListener.java

上面这个小案例,演示监听器。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>jsp5</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list> <servlet>
<servlet-name>findCost</servlet-name>
<servlet-class>web.FindCostServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>findCost</servlet-name>
<url-pattern>/findCost</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>addCost</servlet-name>
<servlet-class>web.AddCostServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addCost</servlet-name>
<url-pattern>/addCost</url-pattern>
</servlet-mapping> <filter>
<filter-name>log</filter-name>
<filter-class>web.LogFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>log</filter-name>
<!-- 声明Filter对哪些请求路径有效,即
用户在访问哪些路径时Tomcat调用此Filter. -->
<url-pattern>/*</url-pattern>
</filter-mapping> <!-- 多个Filter其顺序以mapping的配置顺序为准 -->
<filter>
<filter-name>guolv</filter-name>
<filter-class>web.GuolvFilter</filter-class>
<init-param>
<param-name>words</param-name>
<param-value>
靠,TMD,NND
</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>guolv</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <!-- 注册监听器,Tomcat会在相应事件发生时,
自动调用此监听器的对应的方法. -->
<listener>
<listener-class>
web.MyListener
</listener-class>
</listener> </web-app>

web.xml

Unit08: 过滤器、监听器的更多相关文章

  1. ava中拦截器 过滤器 监听器都有什么区别

    过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法u ...

  2. 05).30分钟学会Servlet+过滤器+监听器+实际案例

    一.Servlet简介: Servlet程序处理流程 二.Servlet程序实现 实现要求 Servlet属于java ee范畴,而java和javac属于java se范畴,要想编译servlet必 ...

  3. TODO java-web相关 servlet过滤器+监听器

    servlet过滤器 定义: 过滤器是小型的web组件,它负责拦截请求和响应,以便查看.提供或以某种方式操作正在客户机和服务器之间交换的数据. 与过滤器相关的servlet共包含3个简单接口:Filt ...

  4. JavaWeb基础-过滤器监听器

    过滤器 1定义:过滤器是一个服务器的组件,他可以截取用户端的请求与响应信息,并对这些信息进行过滤;过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息. 2过滤器的工作原理: 3过滤器 ...

  5. Java基础——Servlet(七)过滤器&监听器 相关

    一.过滤器简介 Filter 位于客户端和请求资源之间,请求的资源可以是 Servlet Jsp html (img,javascript,css)等.用于拦截浏览器发给服务器的请求(Request) ...

  6. java中拦截器 过滤器 监听器都有什么区别

    过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法u ...

  7. 过滤器 & 监听器 & 拦截器

    过滤器: https://blog.csdn.net/MissEel/article/details/79351231 https://blog.csdn.net/qq_32363305/articl ...

  8. 【JavaWeb】EL表达式&过滤器&监听器

    EL表达式和JSTL EL表达式 EL表达式概述 基本概念 EL表达式,全称是Expression Language.意为表达式语言.它是Servlet规范中的一部分,是JSP2.0规范加入的内容.其 ...

  9. JavaWeb过滤器.监听器.拦截器-原理&区别-个人总结

    对比项 拦截器 过滤器 机制 反射机制 函数回调 是否依赖servlet容器 是 否 请求处理 只能对action请求起作用 几乎所有的请求起作用 对action处理 可以访问action上下文.值栈 ...

  10. JavaWeb过滤器.监听器.拦截器-原理&区别(转)

    1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的 ...

随机推荐

  1. 034——VUE中表单控件处理之使用vue控制radio表单的实例操作

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. The main points of capacitive screen technology

  3. 转一个有意思的利用存储过程备份恢复PostgreSQL

    [转自 housonglin1213 的博客]http://blog.csdn.net/housonglin1213/article/details/51005540 1.自定义函数脚本备份 CREA ...

  4. idea解决mybatis逆向工程

    1.pom.xml <?xml version="1.0" encoding="UTF-8"?><project xmlns="ht ...

  5. Vim技能修炼教程(1) - 使用vundle管理插件

    世界上有两个伟大的编辑器:一个是emacs,一个是vi.它们从诞生以来,一直在Unix/Linux世界得到最广泛的支持. 尽管过了几十年,在Windows平台上和跨平台上有层出不穷的后起之秀不断挑战它 ...

  6. IOS开发 GCD介绍: 基本概念和Dispatch Queue

    iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ØN ...

  7. [IC]Lithograph(0)半导体制造的基本过程

    1. 晶圆片 Wafer 晶圆(Wafer)是指硅半导体集成电路制作所用的硅芯片,由于其形状为圆形,故称为晶圆.晶圆是生产集成电路所用的载体,一般意义晶圆多指单晶硅圆片. 半导体行业从图1到图2,是一 ...

  8. python的文件编码注释

    在python源文件的第一行或第二行写入如下内容: # -*- coding:gbk -*- # 设置源文件编码格式为gbk 或 # -*- coding:utf-8 -*- # 设置源文件编码格式为 ...

  9. windows主机与virtualbox虚拟机下的Linux共享网络

    环境: 主机:windows7 虚拟机:virtualbox 4.2 虚拟系统:CentOS6.2 需求: 1.虚拟机linux可以共享主机网络上互联网 2.主机.虚拟机互通讯,组成一个虚拟的局域网, ...

  10. 编程技巧:使用整数同时进行多个true|false判断

    情景 : 假设需要判断某银行用户的其中一个账号(profileA),币种(Currency)为人民币(CNY),余额是否大于1,0000,然后进行某业务逻辑处理. 概述: 为了进行这种判断,需要判断/ ...