Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应。 主要用于对HttpServletRequest 进行预处理,也可以对HttpServletResponse 进行后处理,是个典型的处理链。

过滤链的好处是,执行过程中任何时候都可以打断,只要不执行chain.doFilter()就不会再执行后面的过滤器和请求的内容。而在实际使用时,就要特别注意过滤链的执行顺序问题。

过滤器的作用描述:

  • 在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest 。
  • 根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。
  • 在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。
  • 根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据。

Session:在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。

Async:Async函数定义:

async 函数就是 Generator 函数的语法糖。

前文有一个 Generator 函数,依次读取两个文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var fs = require('fs');
var readFile = function (fileName){
  return new Promise(function (resolve, reject){
    fs.readFile(fileName, function(error, data){
      if (error) reject(error);
      resolve(data);
    });
  });
};
var gen = function* (){
  var f1 = yield readFile('/etc/fstab');
  var f2 = yield readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
};

  写成 async 函数,就是下面这样。

1
2
3
4
5
6
var asyncReadFile = async function (){
  var f1 = await readFile('/etc/fstab');
  var f2 = await readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
};

  优点:1.内置执行器。 Generator 函数的执行必须靠执行器,所以才有了 co 函数库,而 async 函数自带执行器。也就是说,async 函数的执行,与普通函数一模一样,只要一行。

2.更好的语义。 async 和 await,比起星号和 yield,语义更清楚了。async 表示函数里有异步操作,await 表示紧跟在后面的表达式需要等待结果。

3.更广的适用性。 co 函数库约定,yield 命令后面只能是 Thunk 函数或 Promise 对象,而 async 函数的 await 命令后面,可以跟 Promise 对象和原始类型的值(数值、字符串和布尔值,但这时等同于同步操作)

转载于:https://www.cnblogs.com/fl2017/p/8691098.html

LoggingFilter Session 以及Async相关推荐

  1. python3 异步 async with 用法

    异步上下文管理器"async with" 异步上下文管理器指的是在enter和exit方法处能够暂停执行的上下文管理器. 为了实现这样的功能,需要加入两个新的方法:__aenter ...

  2. python async_python async with和async for的使用

    网上async with和async for的中文资料比较少,我把PEP 492中的官方陈述翻译一下. 异步上下文管理器"async with" 异步上下文管理器指的是在enter ...

  3. Python中的async with用法

    原文出处:<async with和async for> 网上async with和async for的中文资料比较少,我把PEP 492中的官方陈述翻译一下. 异步上下文管理器" ...

  4. 介绍一个效率爆表的数据采集框架

    作者 | 俊欣 来源丨关于数据分析与可视化 今天我们来聊一下如何用协程来进行数据的抓取,协程又称为是微线程,也被称为是用户级线程,在单线程的情况下完成多任务,多个任务按照一定顺序交替执行. 那么aio ...

  5. python scrapy框架基如何实现多线程_【转】爬虫的一般方法、异步、并发与框架scrapy的效率比较...

    问题的由来 我们的需求为爬取红色框框内的名人(有500条记录,图片只展示了一部分)的 名字以及其介绍,关于其介绍,点击该名人的名字即可,如下图: 这就意味着我们需要爬取500个这样的页面,即500个H ...

  6. asyncio简单入门(二)

    请求网页 方法一: import asyncio import requestsasync def main():loop = asyncio.get_event_loop()future1 = lo ...

  7. Python爬虫入门教程石家庄链家租房数据抓取

    1. 写在前面 这篇博客爬取了链家网的租房信息,爬取到的数据在后面的博客中可以作为一些数据分析的素材. 我们需要爬取的网址为:https://sjz.lianjia.com/zufang/ 2. 分析 ...

  8. 不会这几个库,都不敢说我会Python爬虫

    很多朋友不知道Python爬虫怎么入门,怎么学习,到底要学习哪些内容.今天我来给大家说说学习爬虫,我们必须掌握的一些第三方库. 废话不多说,直接上干货. 1 请求库 1. requests GitHu ...

  9. 第17讲:aiohttp 异步爬虫实战

    在上一课时我们介绍了异步爬虫的基本原理和 asyncio 的基本用法,另外在最后简单提及了 aiohttp 实现网页爬取的过程,这一可是我们来介绍一下 aiohttp 的常见用法,以及通过一个实战案例 ...

  10. 1分钟爬取全国高校信息,制成大屏可视化!

    记得当初高考完,我选学校的时候是在书店买的高校信息排名的书,然而书中的信息都是很久之前的,并没有什么太大帮助.今天就来带大家爬点真正有用的东西,全国高校信息,涵盖绝大多数高校,并制作可视化看板.话不多 ...

最新文章

  1. 李彦宏喊你来坐出租车,无人驾驶的那种;百度还要继续搞芯片,联手华为的那种...
  2. python语言怎么学-怎么学Python语言呢?粤嵌Python学习路线入门
  3. 【Java并发编程】—–“J.U.C”:ConcurrentLinkedQueue
  4. ajax发送post请求_按键精灵安卓版发送post和get请求
  5. Debug Tensorflow: 随着训练进行,内存消耗越来越大
  6. 解决vmware移动虚拟机之后执行ifconfig命令无输出的问题
  7. 前端学习(2045)vue之电商管理系统电商系统之优化chainwebpack自定义打包入口
  8. 最实用的Git命令总结:新建本地分支、远程分支、关联和取消关联分支、清除本地和远程分支、合并分支、版本还原、tag命令、中文乱码解决方案、如何fork一个分支和修改后发起合并请求
  9. 应用配置管理ACM 使用场景快速入门
  10. MOSS2007服务器端的安装与基本配置
  11. endnote无法同步原因_endnote不能同步(endnote retrieving references)的解决方法
  12. python3 下载文件-使用Python 3从网上下载文件
  13. 苹果成为存储厂商的新饽饽
  14. selenium:解决页面元素display:none的方法
  15. AGC002E(AtCoder1999) Candy Piles(博弈论)
  16. iwebshop关于按钮点击提示的系列代码操作流程
  17. 01、静态工厂方法替代构造器
  18. 【UVA-10891】Game of Sum【区间DP】
  19. 敏捷开发宣言 (一)
  20. docker 安装 oracle

热门文章

  1. 文献阅读 Fully Convolutional Networks for Semantic Segmentation
  2. (6)matplotlib下水平竖直线绘制
  3. sonar mysql svn_jenkins+sonarqube+svn/git踩过的坑
  4. LibSvm使用说明和LibSvm源码解析
  5. R-FCN算法及Caffe代码详解
  6. python-random
  7. rsr分档matlab,matlab练习程序(dubins曲线)
  8. 用 Truffle 插件自动在Etherscan上验证合约代码
  9. C++ STL容器在for循环中删除迭代器 正确方法 it++正确吗
  10. 【Django 2021年最新版教程9】数据库查询操作