Filter的生命周期为:init()→doFilter()→destroy()

jvavee教材例子中的日志filter init()函初始化用FiterConfig直接访问配置信息

然后定义了销毁方法,我的理解是将将配置信息清除、

核心是doFilter();

先对用户请求执行预处理得到了对象ServletContext发来的请求,输出,

记录然后执行chain.doFilter(request,reponse)切换到对

服务器响应后执行的处理,输出提示信息。

init():这个方法在容器实例化过滤器时被调用,它主要用于使过滤器为处理做准备。
doFilter():这个方法用于处理请求和响应。此方法是Filter的核心

destroy():该方法由容器在销毁过滤器实例之前调用。

Filter可以视作是servlet的加强版,主要用作对用户的请求进行预处理,或者对返回给客户端的结果进行再次加工,是一个典型的链式处理模式。

r有着极其重要的地位和作用。它就好比是一个过滤器,位于服务器请求与响应的中间。
判断程序请求是否合法代码举例:

public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException{

HttpServletRequest req = (HttpServletRequest)var1;
HttpSession session = req.getSession();
String state = (String)session.getAttribute("state");
if(state.equals("1")){
var3.doFilter(var1,var2);
}else{
HttpServletResponse response = (HttpServletResponse)var2;
response.sendRedirect("Error_page.html");
}
}
}

Session:

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。

服务器端为了保存某些数据,或实现某些必要的功能,当用户访问服务器时,将数据临时保存在服务器端以供完成服务器端的其他某些功能。服务器需要保存的数据可以以cookie的方式存储在客户端,而session的功能就是将服务器需要保存的数据存储在服务端。例如账号登录记录的功能,可以以session的方式将登录状态保存在服务器端,这样当用户访问其他程序时,需要用到登录的地方,都可以从该用户的session中取出该用户的数据,为用户服务。

session的底层是基于cookie技术来实现的,当用户打开浏览器,去访问服务器的时候,服务器会为每个用户的浏览器创建一个会话对象(session对象),并且为每个session对象创建一个Jsessionid号。当session对象创建成功后,会以cookie的方式将这个Jsessionid号回写给浏览器,当用户再次进行访问服务器时,及带了具有Jsessionid号的cookie数据来一起访问服务器,服务器通过不同session的 Jsessionid号来找出与其相关联的session对象,通过不同的session对象来为不同的用户服务。

Async:

@WebServlet(urlPatterns={"/syncservlet"})
public class SyncServlet extends HttpServlet {
private MyRemoteResource resource;
@Override
public void init(ServletConfig config) {
resource = MyRemoteResource.create("config1=x,config2=y");
}
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response) {
response.setContentType("text/html;charset=UTF-8");
String param = request.getParameter("param");
String result = resource.process(param);
/* ... print to the response ... */
}
}

@WebServlet(urlPatterns={"/asyncservlet"}, asyncSupported=true)
public class AsyncServlet extends HttpServlet {
/* ... Same variables and init method as in SyncServlet ... */
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response) {
response.setContentType("text/html;charset=UTF-8");
final AsyncContext acontext = request.startAsync();
acontext.start(new Runnable() {
public void run() {
String param = acontext.getRequest().getParameter("param");
String result = resource.process(param);
HttpServletResponse response = acontext.getResponse();
/* ... print to the response ... */
acontext.complete();
}
}

前一个没有采用异步处理,后一个使用了异步处理

转载于:https://www.cnblogs.com/q1q2w2w3e3e4/p/8650296.html

Filter Session and Async 第三周博客相关推荐

  1. 第三周博客作业西北师范大学|李晓婷

    1.助教博客链接:https://www.cnblogs.com/lxt-/MyComments.html 2.学生作业打分要求:   https://www.cnblogs.com/nwnu-dai ...

  2. 现代软件工程 第一周博客记录

    前言: 这是我真正意义上的第一篇博客,希望以后我能时刻谨记自己的这一篇博客对自己的分析,并且能及时认识到自己的错误和在学习上的放松,一直奋斗下去. 1.自我介绍 大家好,我叫罗博伦,来自西南石油大学软 ...

  3. go基础第一遍学习(李文周博客)

    go基础第一遍学习记录,以下内容来自李文周博客 文章目录 my重点记录 1.println和prinf的区别 一.通常情况: 二.整数: 三.浮点数: 四.字符串: 五.布尔类型: 2.[golang ...

  4. 马哥教育linux面授班37期第一周博客

    马哥教育linux面授班37期第一周博客   2019年5月5号晚,我怀着忐忑和激动的心情坐上了开往了北京的列车,我忐忑自己此行的目的地,马哥教育Linux第37期北京面授班,是因为我接下来五个月的时 ...

  5. SEO网络优化的三个博客优化技巧

    相信大家都听说过"博客",很多人也在使用博客记录自己的日常生活,但是对于新站长而言,刚开始写博客记录自己的学习经历,分享知识经验,很容易一腔热血在几个月以后就被打回原形,因为自身S ...

  6. 闽江学院2015-2016学年下学期《软件测试》课程-第三次博客作业

    闽江学院2015-2016学年下学期<软件测试>课程-第三次博客作业 作业提交班级:13软金2班全体同学 作业提交截止日期:2016年4月30日24:00前(超过截止时间提交的不给成绩) ...

  7. OO第三次博客总结作业

    OO第三次博客总结作业 1.规格化设计的大致发展历史和为什么得到了人们的重视  发展历史...上网搜索了一圈...什么都没搜索到,只能谈谈自己对规格化设计重要性的一些看法. 规格化设计,顾名思义,是有 ...

  8. OO第三次博客作业——规格

    OO第三次博客作业--规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...

  9. [BUAA OO]第三次博客作业

    OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼 ...

  10. 现代软件工程 作业 第一周博客作业

    第一周作业 1. 介绍自己,建博客 我是一名大三的学生,平时爱好看看书,感觉没啥特长. 要说有什么优势技能,就是文笔还可以吧. 从初三开始写日记,基本上上学的日子每天都写,一直到大一结束. 2. 现状 ...

最新文章

  1. Hibernate缓存原理与策略 Hibernate缓存原理:
  2. 2020年一季度中小微企业收入平均下降69.5%
  3. 自动配置IE代理脚本
  4. java druid mysql连接池_java使用Druid连接池连接mysql
  5. Windows和Linux双启动,并用在Windows下配置CoLinux启动
  6. 将截断字符串或二进制数据
  7. 最新互助盘模式_【爆料】“鸿运之都”抢单互助资金盘是“侏罗纪世界”的重启盘,操盘手疯狂抽水几百万马上崩盘!...
  8. 【Pytorch神经网络理论篇】 31 图片分类模型:ResNet模型+DenseNet模型+EffcientNet模型
  9. 统计英文文本的字母个数
  10. Ghost配置2——添加代码高亮
  11. 答案对程序不对matlab,程序结果不对
  12. SDWebImage下载和缓存图片(UIImge)
  13. 一位辅导员写给毕业生的一封信
  14. VMware ESXi客户端连接控制台时提示VMRC控制台连接已断开...正在尝试重新连接的解决方法...
  15. OpenJudge NOI题库 入门 116题 (二)
  16. Ubuntu下载压缩文件
  17. 小米路由mini刷潘多拉及老毛子固件-详细教程
  18. WPS新建文字分享微信.docx形式_这 3 个实用的文档「分享」技巧,很多人都不会用...
  19. 莫道C站小,这边风景独好~
  20. 小孟网站被黑客攻击,已经哭晕在厕所……

热门文章

  1. puppet 安装详解
  2. 【Android游戏开发二十一】Android os设备谎言分辨率的解决方案!
  3. 火狐浏览器缓存区的利用,如何提取火狐缓存的动画
  4. Guava 相关文章
  5. SHELL编程基础之BASH入门
  6. 学习language C
  7. 彻底解决四种路由器不能上网故障
  8. Linux内核网络参数的意义及应用
  9. java包装经验_java中基本类型和包装类型实践经验
  10. 使用Java代码发送邮件