Filter Session and Async 第三周博客
jvavee教材例子中的日志filter init()函初始化用FiterConfig直接访问配置信息
然后定义了销毁方法,我的理解是将将配置信息清除、
核心是doFilter();
先对用户请求执行预处理得到了对象ServletContext发来的请求,输出,
记录然后执行chain.doFilter(request,reponse)切换到对
服务器响应后执行的处理,输出提示信息。
destroy():该方法由容器在销毁过滤器实例之前调用。
Filter可以视作是servlet的加强版,主要用作对用户的请求进行预处理,或者对返回给客户端的结果进行再次加工,是一个典型的链式处理模式。
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对象来为不同的用户服务。
@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.助教博客链接:https://www.cnblogs.com/lxt-/MyComments.html 2.学生作业打分要求: https://www.cnblogs.com/nwnu-dai ...
- 现代软件工程 第一周博客记录
前言: 这是我真正意义上的第一篇博客,希望以后我能时刻谨记自己的这一篇博客对自己的分析,并且能及时认识到自己的错误和在学习上的放松,一直奋斗下去. 1.自我介绍 大家好,我叫罗博伦,来自西南石油大学软 ...
- go基础第一遍学习(李文周博客)
go基础第一遍学习记录,以下内容来自李文周博客 文章目录 my重点记录 1.println和prinf的区别 一.通常情况: 二.整数: 三.浮点数: 四.字符串: 五.布尔类型: 2.[golang ...
- 马哥教育linux面授班37期第一周博客
马哥教育linux面授班37期第一周博客 2019年5月5号晚,我怀着忐忑和激动的心情坐上了开往了北京的列车,我忐忑自己此行的目的地,马哥教育Linux第37期北京面授班,是因为我接下来五个月的时 ...
- SEO网络优化的三个博客优化技巧
相信大家都听说过"博客",很多人也在使用博客记录自己的日常生活,但是对于新站长而言,刚开始写博客记录自己的学习经历,分享知识经验,很容易一腔热血在几个月以后就被打回原形,因为自身S ...
- 闽江学院2015-2016学年下学期《软件测试》课程-第三次博客作业
闽江学院2015-2016学年下学期<软件测试>课程-第三次博客作业 作业提交班级:13软金2班全体同学 作业提交截止日期:2016年4月30日24:00前(超过截止时间提交的不给成绩) ...
- OO第三次博客总结作业
OO第三次博客总结作业 1.规格化设计的大致发展历史和为什么得到了人们的重视 发展历史...上网搜索了一圈...什么都没搜索到,只能谈谈自己对规格化设计重要性的一些看法. 规格化设计,顾名思义,是有 ...
- OO第三次博客作业——规格
OO第三次博客作业--规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...
- [BUAA OO]第三次博客作业
OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼 ...
- 现代软件工程 作业 第一周博客作业
第一周作业 1. 介绍自己,建博客 我是一名大三的学生,平时爱好看看书,感觉没啥特长. 要说有什么优势技能,就是文笔还可以吧. 从初三开始写日记,基本上上学的日子每天都写,一直到大一结束. 2. 现状 ...
最新文章
- Hibernate缓存原理与策略 Hibernate缓存原理:
- 2020年一季度中小微企业收入平均下降69.5%
- 自动配置IE代理脚本
- java druid mysql连接池_java使用Druid连接池连接mysql
- Windows和Linux双启动,并用在Windows下配置CoLinux启动
- 将截断字符串或二进制数据
- 最新互助盘模式_【爆料】“鸿运之都”抢单互助资金盘是“侏罗纪世界”的重启盘,操盘手疯狂抽水几百万马上崩盘!...
- 【Pytorch神经网络理论篇】 31 图片分类模型:ResNet模型+DenseNet模型+EffcientNet模型
- 统计英文文本的字母个数
- Ghost配置2——添加代码高亮
- 答案对程序不对matlab,程序结果不对
- SDWebImage下载和缓存图片(UIImge)
- 一位辅导员写给毕业生的一封信
- VMware ESXi客户端连接控制台时提示VMRC控制台连接已断开...正在尝试重新连接的解决方法...
- OpenJudge NOI题库 入门 116题 (二)
- Ubuntu下载压缩文件
- 小米路由mini刷潘多拉及老毛子固件-详细教程
- WPS新建文字分享微信.docx形式_这 3 个实用的文档「分享」技巧,很多人都不会用...
- 莫道C站小,这边风景独好~
- 小孟网站被黑客攻击,已经哭晕在厕所……