Unit08: 过滤器、监听器
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: 过滤器、监听器的更多相关文章
- ava中拦截器 过滤器 监听器都有什么区别
过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法u ...
- 05).30分钟学会Servlet+过滤器+监听器+实际案例
一.Servlet简介: Servlet程序处理流程 二.Servlet程序实现 实现要求 Servlet属于java ee范畴,而java和javac属于java se范畴,要想编译servlet必 ...
- TODO java-web相关 servlet过滤器+监听器
servlet过滤器 定义: 过滤器是小型的web组件,它负责拦截请求和响应,以便查看.提供或以某种方式操作正在客户机和服务器之间交换的数据. 与过滤器相关的servlet共包含3个简单接口:Filt ...
- JavaWeb基础-过滤器监听器
过滤器 1定义:过滤器是一个服务器的组件,他可以截取用户端的请求与响应信息,并对这些信息进行过滤;过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息. 2过滤器的工作原理: 3过滤器 ...
- Java基础——Servlet(七)过滤器&监听器 相关
一.过滤器简介 Filter 位于客户端和请求资源之间,请求的资源可以是 Servlet Jsp html (img,javascript,css)等.用于拦截浏览器发给服务器的请求(Request) ...
- java中拦截器 过滤器 监听器都有什么区别
过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法u ...
- 过滤器 & 监听器 & 拦截器
过滤器: https://blog.csdn.net/MissEel/article/details/79351231 https://blog.csdn.net/qq_32363305/articl ...
- 【JavaWeb】EL表达式&过滤器&监听器
EL表达式和JSTL EL表达式 EL表达式概述 基本概念 EL表达式,全称是Expression Language.意为表达式语言.它是Servlet规范中的一部分,是JSP2.0规范加入的内容.其 ...
- JavaWeb过滤器.监听器.拦截器-原理&区别-个人总结
对比项 拦截器 过滤器 机制 反射机制 函数回调 是否依赖servlet容器 是 否 请求处理 只能对action请求起作用 几乎所有的请求起作用 对action处理 可以访问action上下文.值栈 ...
- JavaWeb过滤器.监听器.拦截器-原理&区别(转)
1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的 ...
随机推荐
- vue 全选多选
html: //全选按钮 <li class="choice_fme"> <div @click="checkAll" v-bind:clas ...
- pycharm debug
1 debug 的模式,只有在打断点是才能运行. 2 主方法运行的时候 ,可以在下面输入一行 a =1 .方便debug 打完断电的会出现三角头, 运行甲壳虫 3 一步一步运行, F8 , 当 ...
- 2: 使用Prism初始化程序(纯汉语版)
本篇内容讲解了Prism应用程序启动和运行都发生了什么.一个Pris应用程序在程序启动期间需要注册和配置——这被叫做引导应用程序.Prism引导过程包括创建和配置一个模块目录,创建一个例如Unity的 ...
- hdu4453
题解: splay模板 删除,翻转等等 代码: #include<cstdio> #include<cstring> #include<cmath> #includ ...
- CF 1A
题解: n/a*m/a 都要向上取整 代码: #include<cstdio> #include<cmath> #include<cstring> #include ...
- Java中用反码表示整数,及int到byte的转换
Java中的整数都是通过补码表示的,当整数为正数时,补码和原码相同,当整数为负数时,补码为原码按位取反(符号位除外),然后加1. 通过一些例子可以比较明显的看出: int a = -1; System ...
- iOS开发探索-高斯模糊&毛玻璃效果
iOS开发中有的时候需要将图片设置模糊,来实现特定的效果获取更好的用户体验, iOS7之后半透明模糊效果得到大范围使用的比较大,现在也可以看到很多应用局部用到了图片模糊效果,可以通过高斯模糊和毛玻璃效 ...
- C#运行批处理【转】
/// <summary> /// C#运行bat文件 /// </summary> /// <param name="batPath">< ...
- Guid.NewGuid() 和 new Guid()的区别
Guid.NewGuid().ToString() + "||" + (new Guid()).ToString() b8efacbb-7d43-4da5-9f48-9a75d8c ...
- c# html内容处理类
using System; using System.Text; using System.Text.RegularExpressions; using System.Net; using Syste ...