撩课Java+系统架构 视频 点击开始学习

81.Servlet的会话机制?

HTTP 是一种无状态协议,
这意味着每次客户端检索网页时,
都要单独打开一个服务器连接,
因此服务器不会记录下
先前客户端请求的任何信息。
它与FTP、Telnet等协议不同,
FTP等协议可以记住用户的连接信息。 会话(Session)是指一个终端用户
与交互系统进行通信的时间间隔,
通常指从登陆系统到注销系统之间
所经过的时间以及如果需要的话,
可能还有一定操作空间。
JSP有四种方式实现会话跟踪功能。 Cookie
服务器在响应请求时
可以将一些数据以"键-值"对的形式
通过响应信息保存在客户端。
当浏览器再次访问相同的应用时,
会将原先的存有session ID的Cookie
通过请求信息带到服务器端,
网络服务器通过识别唯一的session ID来
代表每个客户端,
从而识别这个客户端接下来的请求。 用于会话跟踪的Cookie叫做会话Cookie。
Servlet规范中会话跟踪的cookie名字
必须是JSESSIONID,
保存在浏览器的内存中。 Cookie可以用于保持用户的会话状态,
但Cookie信息保存在客户端,
存在较大的安全隐患,
且一般浏览器对Cookie的数目
及数据大小有严格的限制。
在Web应用中,
一般情况下通过HttpSession对象保持会话状态 Session
Session技术则是
服务端的解决方案,
它是通过服务器来保持状态的。
在Java中是通过调用
HttpServletRequest的getSession方法
使用true作为参数创建的。
在创建了Session的同时,
服务器会为该Session生成唯一的Session id,
而这个Session id在随后的请求中
会被用来重新获得已经创建的Session;
在Session被创建之后,
就可以调用Session相关的方法
往Session中增加内容了,
而这些内容只会保存在服务器中,
发到客户端的只有Session id;
当客户端再次发送请求的时候,
会将这个Session id带上,
服务器接受到请求之后
就会依据Session id找到相应的Session,
从而再次使用之。
正式这样一个过程,
用户的状态也就得以保持了。 隐藏表单域
隐藏表单域是将会话ID
添加到HTML的隐藏表单中
(类型为hidden的input)。
重定向和转发 重写URL
把会话ID编码在URL中。
counter.jsp;jsessionnid=be8d697876787876befdbde898789098980 对于URL复写,
服务器从请求的URI中提取出会话ID,
并把该请求与相应的会话关联起来,
然后在访问会话数据的时候,
JSP页面所进行的处理方式
就和使用cookie跟踪会话id时
所使用的方式完全相同。
所以sesssion的实现
要依靠cookie或URL复写技术。

82.Filter是什么?有什么作用?

过滤器是处于客户端与服务器
资源文件之间的一道过滤网,
在访问资源文件之前,
通过一系列的过滤器对请求进行修改、判断等,
把不符合规则的请求在中途拦截或修改。
也可以对响应进行过滤,
拦截或修改响应。
 
浏览器发出的请求先递交给第一个filter进行过滤,
符合规则则放行,
递交给filter链中的下一个过滤器进行过滤。
过滤器在链中的顺序
与它在web.xml中配置的顺序有关,
配置在前的则位于链的前端。
当请求通过了链中所有过滤器后
就可以访问资源文件了,
如果不能通过,
则可能在中间某个过滤器中被处理掉。 在doFilter()方法中,
chain.doFilter()前的一般是对request执行的过滤操作,
chain.doFilter后面的代码
一般是对response执行的操作。 过滤器一般用于登录权限验证、
资源访问权限控制、
敏感词汇过滤、
字符编码转换等等操作,
便于代码重用,
不必每个servlet中还要进行相应的操作。

83.Listener是什么?有什么作用?

监听器用于监听web应用中某些对象、
信息的创建、销毁、增加,修改,删除等
动作的发生,
然后作出相应的响应处理。
当范围对象的状态发生变化的时候,
服务器自动调用监听器对象中的方法。
常用于统计在线人数和在线用户,
系统加载时进行信息初始化,
统计网站的访问量等等。 分类:
按监听的对象划分,可以分为
ServletContext对象监听器
HttpSession对象监听器
ServletRequest对象监听器 按监听的事件划分
对象自身的创建和销毁的监听器
对象中属性的创建和消除的监听器
session中的某个对象的状态变化的监听器

84.你了解过Servlet3.0吗?

Servlet3.0相对于Servlet2.0来说
最大的改变是引入了Annotation注解
来取代xml配置,
用于简化web应用的开发和部署。
最主要几项特性: 1. 新增的注解支持:
该版本新增了若干注解,
用于简化 Servlet、
过滤器(Filter)
和监听器(Listener)的声明,
这使得 web.xml 部署描述文件
从该版本开始不再是必选的了。 2. 异步处理支持:
有了该特性,
Servlet 线程不再需要一直阻塞,
直到业务处理完毕才能再输出响应,
最后才结束该 Servlet 线程。
在接收到请求之后,
Servlet 线程可以将耗时的操作
委派给另一个线程来完成,
自己在不生成响应的情况下返回至容器。
针对业务处理较耗时的情况,
这将大大减少服务器资源的占用,
并且提高 并发处理速度。 3. 可插性支持:
熟悉 Struts2 的开发者一定会
对其通过插件的方式
与包括 Spring 在内的各种常用框架的整合
特性记忆犹新。
将相应的插件封装成 JAR 包并放在类路径下,
Struts2 运行时便能自动加载这些插件。
现在 Servlet 3.0 提供了类似的特性,
开发者可以通过插件的方式很方便的
扩充已有 Web 应用的功能,
而不需要修改原有的应用。

85.JSP和Servlet有哪些相同点和不同点?

JSP是Servlet技术的扩展,
本质上是Servlet的简易方式,
更强调应用的外表表达。
JSP编译后是"类servlet"。 Servlet和JSP最主要的不同点在于,
Servlet的应用逻辑是在Java文件中,
并且完全从表示层中的HTML里分离开来。
而JSP的情况是
Java和HTML可以组合
成一个扩展名为.jsp的文件。 在实际项目开发当中,
JSP侧重于视图,
Servlet主要用于控制逻辑。

 

撩课-Java每天5道面试题第10天的更多相关文章

  1. 撩课-Java每天5道面试题第13天

    撩课Java+系统架构点击开始学习 96.JDBC操作数据库的步骤 ? .加载数据库驱动 .创建并获取数据库链接 .创建jdbc statement对象 .设置sql语句 .设置sql语句中的参数(使 ...

  2. 撩课-Java每天5道面试题第15天

    撩课Java+系统架构点击开始学习 106.什么是Hibernate的并发机制?怎么去处理并发问题? a.Hibernate的Session对象是非线程安全的, 对于单个请求,单个会话, 单个的工作单 ...

  3. 撩课-Java每天5道面试题第9天

    撩课Java+系统架构 视频 点击开始学习 76.XML技术的作用? XML技术用于数据存储. 信息配置. 数据交换三方面. 可以将数据存储在XML中, 通过节点. 元素内容. 属性标示数据内容及关系 ...

  4. 撩课-Java每天5道面试题第8天

    撩课Java+系统架构 视频 点击开始学习 71.jsp有哪些内置对象?作用分别是什么? Page, pageContext, request, response, session, applicat ...

  5. 撩课-Java每天5道面试题第17天

    116.说下Struts的设计模式 MVC模式: web应用程序启动时 就会加载并初始化ActionServler. 用户提交表单时, 一个配置好的ActionForm对象被创建, 并被填入表单相应的 ...

  6. 撩课-Java每天5道面试题第24天

    151.springMVC和struts2的区别有哪些? .springmvc的入口是一个servlet即前端控制器(DispatchServlet), 而struts2入口是一个filter过虑器( ...

  7. 撩课-Java每天5道面试题第23天

    146.什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于MVC架构的 用来简化web应用程序开发的应用开发框架, 它是Spring的一个模块, 无 ...

  8. 撩课-Java每天5道面试题第22天

    141.Spring AOP是什么? AOP:面向切面编程 AOP技术利用一种称为“横切”的技术, 解剖封装的对象内部, 并将那些影响了多个类的公共行为 封装到一个可重用模块, 这样就能减少系统的重复 ...

  9. 撩课-Java每天5道面试题第20天

    131.Spring是什么? 他解决的是业务逻辑层和其他各层的松耦合问题, 因此它将面向接口的编程思想 贯穿整个系统应用. Spring是一个轻量级的IoC和AOP容器框架. 目的是解决企业应用开发的 ...

随机推荐

  1. iOS 时区获取问题

    时区缩写 UTC, CST, GMT, CEST 以及转换 UTC是协调世界时(Universal Time Coordinated)英文缩写,是由国际无线电咨询委员会规定和推荐,并由国际时间局(BI ...

  2. 49.RocketMQ 双主搭建(本文非EamonSec原创)

    声明:本文非EamonSec原创,copy自网上下载的某个个文件 1.RocketMQ介绍 1.1. 简介 RocketMQ 是一款分布式.队列模型的消息中间件,具有以下特点: 能够保证严格的消息顺序 ...

  3. 题目1004:Median(查找中位数)

    问题来源 http://ac.jobdu.com/problem.php?pid=1004 问题描述 给你两个非降序序列,让你求中位数.中位数为第(n+1)/2个数(从0开始计算). 问题分析 这个问 ...

  4. Linux RPM和YUM

    rpm包的管理:sealed 介绍: 一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中.它生成具有.RPM扩展名的文件. RPM是RedHat Package Manager(Re ...

  5. 深入理解map系列--HashMap(一)

    Map系列之HashMap(源码基于java8) HashMap是我们最常用的map实现之一,这篇文章将会介绍HashMap内部是如何工作的,以及内部的数据结构是怎样的 一.数据结构简图 二.源码解析 ...

  6. Calibre 3.4版中,为epub书籍嵌入中文字体

    1. 先把原版书籍epub文件添加到Calibre书库: 2. 书名上右键,选则 转换书籍 -> 逐个转换: 3. 在 界面外观 -> 字体 中,选择嵌入字体,在列表中选择中文字体,并勾选 ...

  7. anyncTask的3个参数(从源码可以发现其中使用了ThreadPoolExcuter线程池)

    AnyncTask异步处理数据并将数据应用到视图的操作场合 一  其中包含这几个方法 1 onPreExcute() 初始化控件,例如进度条2 doInBackground() 具体的执行动作请求数据 ...

  8. WCF系列教程之WCF服务协定

    本文参考自:http://www.cnblogs.com/wangweimutou/p/4422883.html,纯属读书笔记,加深记忆 一.服务协定简介: 1.WCF所有的服务协定层里面的服务接口, ...

  9. CPU漏洞补丁修复导致KeServiceDescriptorTable获取变更

    一.前言 2018年元旦,出现的cpu的漏洞,可以在windows环三直接读取内核数据,windows对该漏洞提供补丁,补丁增加了一个页表,对应的内核处理也增加了,接下来我们看下补丁修复的表象以及对K ...

  10. 作为一个编程新手,我再也不怕Flink迷了我的眼!

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由kyledong发表于云+社区专栏 使用 Flink 编写处理逻辑时,新手总是容易被林林总总的概念所混淆: 为什么 Flink 有那么 ...