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. Python批量修改图片格式和尺寸

    Python批量修改图片格式和尺寸 备注: 1.导入了PIL库,是处理图片用的,很强大; 2.导入了的win32库,是判断隐藏文件用的,我们的项目需要删除隐藏文件,不需要的可以直接找到删除. 3.导入 ...

  2. leetcode 849. Maximize Distance to Closest Person

    In a row of seats, 1 represents a person sitting in that seat, and 0 represents that the seat is emp ...

  3. mysql中的tinyint在C#中的类型

    mysql中的tinyint在C#中的类型 在C#中对应的类型是System.SByte,不是byte.

  4. QT 相关书籍

    qt qucik 核心编程 个人觉得此书写得非常之好....这位作者的另外一本虽然没看过,估计也不错 https://bbs.csdn.net/topics/390942701?list=lz qt5 ...

  5. C++ writestring 为什么不能写进中文 CStdioFile向无法向文本中写入中文【二】

    本地化设置需要具备三个条件:a. 语言代码 (Language Code)b. 国家代码 (Country Code) c. 编码(Encoding)本地名字可以用下面这些部分来构造:语言代码_国家代 ...

  6. 【跟着stackoverflow学Pandas】Renaming columns in pandas-列的重命名

    最近做一个系列博客,跟着stackoverflow学Pandas. 以 pandas作为关键词,在stackoverflow中进行搜索,随后安照 votes 数目进行排序: https://stack ...

  7. SpreadJS 在 Angular2 中支持绑定哪些属性?

    SpreadJS 纯前端表格控件是基于 HTML5 的 JavaScript 电子表格和网格功能控件,提供了完备的公式引擎.排序.过滤.输入控件.数据可视化.Excel 导入/导出等功能,适用于 .N ...

  8. angularjs 定时器 销毁

    angular.module('app', []) .controller('ItemController', function($scope, $interval) { // store the i ...

  9. Mac设置SVN:Cornerstone3

    前因 在windows下用Tortoisesvn.可惜Tortoisesvn没有Mac版,只能上知乎寻找适合于 Mac的SVN软件. 经过 找到了一款名为Cornerstone的软件.在App Sto ...

  10. Learning Scrapy(一)

    学习爬虫有一段时间了,从Python的Urllib.Urlllib2到scrapy,当然,scrapy的性能且效率是最高的,自己之前也看过一些资料,在此学习总结下. Scrapy介绍 关于scrapy ...