Filter学习总结,顺便提及点servlet3.0异步filter和异步监听

<!--filter过滤器--><filter><!--filter名称--><filter-name>myCharacterFilter</filter-name><!--filter处理的类--><filter-class>com.filter.MyCharacterFilter</filter-class><!--初始化参数--><init-param><param-name>defaultCharset</param-name><param-value>UTF-8</param-value></init-param></filter><!--过滤器映射--><filter-mapping>- <!--和过滤器名相同-->
<filter-name>myCharacterFilter</filter-name><!--拦截的路径--><url-pattern>*.do</url-pattern></filter-mapping><!--映射多个不同路径,需要些多个<filter-mapping>--><filter-mapping><filter-name>myCharacterFilter</filter-name><url-pattern>*.action</url-pattern></filter-mapping>


RoleFilter doFilter === startRoleFilter doFilter === endMyCharacterFilter end==do


<filter><filter-name>roleFilter</filter-name><filter-class>com.filter.MyRoleFilter</filter-class><init-param><param-name>username</param-name><param-value>www</param-value></init-param></filter><filter-mapping><filter-name>roleFilter</filter-name><url-pattern>*.action</url-pattern><dispatcher>ASYNC</dispatcher></filter-mapping><servlet><description></description><display-name>LoginServlet2</display-name><servlet-name>LoginServlet2</servlet-name><servlet-class>com.servlet.LoginServlet2</servlet-class><async-supported>true</async-supported></servlet><servlet-mapping><servlet-name>LoginServlet2</servlet-name><url-pattern>/LoginServlet.action</url-pattern></servlet-mapping>
resp.setContentType("text/html;charset=UTF-8");PrintWriter pw = resp.getWriter();pw.println("进入servlet时间" + new SimpleDateFormat("yyyy-Mm-dd HH:mm:ss").format(new Date()));pw.flush();AsyncContext ctx = req.startAsync();new Thread(new Executor(ctx)).start();pw.println("离开servlet时间" + new SimpleDateFormat("yyyy-Mm-dd HH:mm:ss").format(new Date()));pw.flush();
//等待10s,模拟业务逻辑try {Thread.sleep(10000);PrintWriter pw = ctx.getResponse().getWriter();pw.println("业务逻辑处理完成时间"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));pw.flush();this.ctx.complete();} catch (Exception e) {e.printStackTrace();}
- 异步线程开始时,调用 AsyncListener 的 onStartAsync(AsyncEvent event) 方法;
- 异步线程出错时,调用 AsyncListener 的 onError(AsyncEvent event) 方法;
- 异步线程执
行超时,则调用 AsyncListener 的 onTimeout(AsyncEvent event) 方法; - 异步执行完毕时,调用 AsyncListener 的 onComplete(AsyncEvent event) 方法。
ctx.addListener(new AsyncListener() {@Overridepublic void onTimeout(AsyncEvent arg0) throws IOException {System.out.println("listener===超时");}@Overridepublic void onStartAsync(AsyncEvent arg0) throws IOException {System.out.println("listener===开始");}@Overridepublic void onError(AsyncEvent arg0) throws IOException {System.out.println("listener===异常");}@Overridepublic void onComplete(AsyncEvent arg0) throws IOException {System.out.println("listener===完成");}});

Filter学习总结,顺便提及点servlet3.0异步filter和异步监听的更多相关文章
- 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener
=================6.SpringBoot拦截器实战和 Servlet3.0自定义Filter.Listener ============ 1.深入SpringBoot2.x过滤器Fi ...
- Servlet学习:(三)Servlet3.0 上传文件
转: Servlet学习:(三)Servlet3.0 上传文件 2018年08月03日 11:57:58 iDark_CSDN 阅读数:362 一.注意事项 客户端(浏览器) 表单的提交方法必须是 ...
- java web学习总结(二十一) -------------------模拟Servlet3.0使用注解的方式配置Servlet
一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet- ...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第6节 SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener_24、深入SpringBoot过滤器和Servlet配置过滤器
笔记 1.深入SpringBoot2.x过滤器Filter和使用Servlet3.0配置自定义Filter实战(核心知识) 简介:讲解SpringBoot里面Filter讲解和使用Servle ...
- SpringBoot拦截器和 Servlet3.0自定义Filter、Listener
官方文档译文 Spring Boot 包括对嵌入式Tomcat,Jetty和Undertow服务器的支持.大多数开发人员使用适当的“Starter”来获取完全配置的实例.默认情况下,嵌入式服务器在 p ...
- 学习Android过程中遇到的问题及解决方法——电话监听
也许有时你会有这样一个需求:通电话时有一个重要的事需要记下来或者和一个陌生人特别是大骗子通话时,这是就想如果能把通话录下来就方便多了.(这才是我写这个代码的目的!!!) 在此过程中,犯了一个很大的错误 ...
- SpringBoot2.0 监听器ApplicationListener的使用-监听ApplicationReadyEvent事件
参考:http://www.shareniu.com/article/73.htm 一.需求是想将我的写一个方法能在项目启动后就运行,之前使用了redis的消息监听器,感觉可以照着监听器这个思路做,于 ...
- Vue学习笔记(二)动态绑定、计算属性和事件监听
目录 一.为属性绑定变量 1. v-bind的基本使用 2. v-bind动态绑定class(对象语法) 3. v-bind动态绑定class(数组语法) 4. v-bind动态绑定style(对象语 ...
- Servlet3.0 新特性
Servlet3.0 的注解 Servlet 允许开发人员采用注解的方式来配置 Servlet.Filter.Listener. Servlet3.0 规范在 javax.servlet.annota ...
随机推荐
- Android newsClient 小实例应用
1.newsClient新闻客户端涉及知识点汇总: (1)ListView(用来显示消息) (2)开子线程去服务器取数据 (3)解析xml文件 (4)利用handler或者runOnUiThread( ...
- copy模拟
1.copy是浅复制,只复制一层:而deepcopy是所有层都复制,适用于lis嵌套listt的复制.两都均是函数.
- 【算法笔记】B1037 在霍格沃茨找零钱
1037 在霍格沃茨找零钱 (20 分) 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特( ...
- JSTL的核心标签
JSTL的核心标签: .if: 语法:<c:if test="" var="" scope=""></c:if> 当 ...
- HDU 1232 (畅通工程) 并查集经典模板题
Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通 ...
- php安装composer
php.ini打开三个扩展: extension=php_mbstring.dll extension=php_openssl.dll extension=php_pdo_mysql.dll
- [转] Kubernetes集群安装文档-v1.6版本
[From] https://www.kubernetes.org.cn/1870.html http://jimmysong.io/kubernetes-handbook
- 宽度优先搜索(BFS)— 20180909 - 20180917
BFS几类题: 1.图的遍历:a.层级遍历 b.由点及面 c.拓扑排序 2.简单图最短路径: 简单图:1.无向图 2.边权重一致 图的时间复杂度: N个点,M条边,M最大是N^2,时间复杂度O(N+M ...
- PIE SDK与Matlab结合说明文档
1.功能简介 Matlab是三大数学软件之一,它在数学类科技应用软件中在数值计算方面首屈一指.Matlab可以进行矩阵运算.绘制函数和数据.实现算法.创建用户界面.连接其他编程语言的程序等,主要应用于 ...
- webAPI过滤器返回数据加密
项目需求: 接口返回的数据,存在一些敏感信息,不希望其他用户看到,将Data进行加密传输 代码如下: public class EncryptDataFilterAttribute : ActionF ...