概述
文章目录
- 一、request
- 二、session
- 三、application
- 三大作用域的区别
- 共同点
一、request
生命周期:
创建:客户端向服务器发送一次请求,服务器就会创建request对象.
销毁:服务器对这次请求作出响应后就会销毁request对象.
有效:仅在当前请求中有效。
作用:常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递。
获取表单提交参数: request.getParameter()
//从login.jsp中获取用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
String imageText = request.getParameter("imageText");
传值到表单: request.setAttribute()
if(user == null) {
//用户名和密码不匹配
request.setAttribute("msg", "用户名和密码不匹配!");
return “/jsp/login.jsp”;
}
二、session
适用场景:登录时,存取登录的用户信息,达到用户信息跨页面共享的效果。
后端:HttpSession session
,session.setAttribute("stu", stu)
前端:${session['stu'].name}
生命周期:
创建:服务器端第一次调用 getSession()
;(保存在服务器内存中)
解释 session:
当访问服务器某个网页的时候,会在服务器端的内存里开辟一块内存,这块内存就叫做session,而这个内存是跟浏览器关联在一起的。当访问一个页面的时候给浏览器创建一个独一无二的号码,也给同时创建的session赋予同样的号码。这个浏览器指的是浏览器窗口,或者是浏览器的子窗口,意思就是,只允许当前这个session对应的浏览器访问,就算是在同一个机器上新启的浏览器也是无法访问的。而另外一个浏览器也需要记录session的话,就会再启一个属于自己的session
销毁:
1.非正常关闭服务器(正常关闭 session 会序列化,再次启动服务器 session 会被反序列化);
注意:服务器正常关闭,再启动,Session 对象会进行钝化和活化操作。同时如果服务器钝化的时间在 session 默认销毁时间之内,则活化后 session 还是存在的。否则 Session 不存在。 如果 JavaBean 数据在 session
钝化时,没有实现 Serializable 则当 Session 活化时,会消失。
2.session 过期了默认30分钟;
3.手动调用 session.invalidate();
4.关闭浏览器。
注意:关闭浏览器再次访问会找不到 session 的会话 id 而不是 session 被销毁了。
备注:session 是服务器端对象,保存在服务器端。并且服务器可以将创建 session 后产生的 sessionid 通过一个 cookie 返回给客户端,以便下次验证。(session 底层依赖于 cookie)
有效:用户打开浏览器会话开始,直到关闭浏览器会话才会结束。一次会话期间只会创建一个session对象。
注意:只关闭标签页的话,session 状态是还在的。要完全关闭浏览器后,重新打开才会启用新的 session。
session 有自身的生命周期,如一定的时间内不再激活的话就会过期,被服务器注销。
作用:常用于 web 开发中的登陆验证界面(当用户登录成功后浏览器分配其一个 session 键值对)。
读取生成的验证码信息:
//图片的验证码 String imageMsg = (String)
request.getSession().getAttribute("imageMsg");
用户保持登录状态:
//登录成功 保存用户登录状态
request.getSession().setAttribute("user", user);
购物车物品保存:
//将cart放入session中
request.getSession().setAttribute("cart", cart);
三、application
生命周期:
创建:服务器启动的时候,服务器为每个WEB应用创建一个属于该 web 项目的对象 ServletContext 类。
销毁:服务器关闭或者项目从服务器中移除的时候。
注意:服务器只会创建一个 ServletContext 对象,所以如果在代码中,你创建了两个 application ,其实它们就是同一个,他们的值是互通的。
有效:此信息在整个服务器上被保留。
三大作用域的区别
- request:每一次请求都是一个新的 request 对象,如果在 web 组件之间需要共享同一个请求中的数据,只能使用请求转发。
- session:每一次会话都是一个新的 session 对象,如果如果需要在一次会话中的多个请求之间需要共享数据,只能使用session。
- application:应用对象,Tomcat启动到关闭,表示一个应用,在一个应用中有且只有一个 application 对象,作用于整个Web 应用,可以实现多次会话之间的数据共享。
共同点
- 设置作用域中的共享数据(保存数据)
作用域对象.setAttribute(String name,Object value);
- 获取作用域中的共享数据(获取数据)
Object value=作用域对象.getAttribute(String name);
- 删除作用域中的指定的共享数据(删除数据)
作用域对象.removeAttribute(String name);
最后
以上就是搞怪热狗为你收集整理的Servlet三大作用域一、request二、session三、application三大作用域的区别共同点的全部内容,希望文章能够帮你解决Servlet三大作用域一、request二、session三、application三大作用域的区别共同点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复