一、Request
1、requeste的生命周期:
创建:访问时创建
销毁:响应结束
域的作用范围:一次请求中
2、转发和重定向的区别(详情请点击https://www.jianshu.com/p/68988b42d21d)
(1)重定向两次请求,转发一次。
(2)重定向地址栏变化,转发地址栏不变化
(3)重定向可以访问外部资源,转发只能访问内部资源
3、用request.getParameter(“parameter_name“) 来取得参数时,如果不存在 parameter_name 这个参数,request.getParameter ()将返回 null
二、会话技术
一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。会话技术就是记录这次会话中客户端的状态与数据的。
会话技术分为Cookie和Session:
1、Cookie:存储在客户端。
(1)cookie分为会话级别的cookie和持久化cookie。会话级别cookie存储在浏览器的内存中,用户关掉浏览器,本次会话结束,那么cookie就会消失。持久化cookie存储在浏览器的磁盘文件中,关闭浏览器再打开会存在,持久化cookie用cookie.setMaxAge(seconds);方法。
(2)cookie 是服务器创建并传输给客户端,创建用Cookie cookie = new Cookie(name,value);
发送给客户端用:response.addCookie(cookie);
(3)服务器端获取来自客户端的cookie:Cookie [] cookies = request.getCookies();
2、Session:将数据存储到服务器端。
Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间 存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内存空间。所以说Session的实现是基于Cookie,Session需要借助于Cookie存储客 户的唯一性标识JSESSIONID.
(1)session对象的生命周期:服务器创建session开始,到服务器异常关闭,或者session过期或者手动销毁session为止。
session默认存在30分钟,session过期是指用户无操作30分钟之后session不存在,他的过期时间可以修改。手动销毁session的方法:session.invalidate();
(2)获得Session对象:HttpSession session = request.getSession();如果服务器中已经有该客户端的session,就会获取这个session,否则会创建一个新的session。服务器端怎么知道这个session是这个客户端的呢,靠的是jsessionID,而jsessionid是服务器创建session时创建的,要发送给客户端,这就要依靠cookie,所以说Session的实现是基于Cookie。那么问题来了,如果服务器把jsessionid发送给客户端之后,客户端关闭了浏览器,那么cookie就不存在了,那再次访问的时候session也就不存在了,所以可以把cookie持久化,这样再次访问就不会出现session没了的问题了。