我是靠谱客的博主 搞怪热狗,最近开发中收集的这篇文章主要介绍Servlet三大作用域一、request二、session三、application三大作用域的区别共同点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 一、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 sessionsession.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 应用,可以实现多次会话之间的数据共享。

共同点

  1. 设置作用域中的共享数据(保存数据)
作用域对象.setAttribute(String name,Object value);
  1. 获取作用域中的共享数据(获取数据)
Object value=作用域对象.getAttribute(String name);
  1. 删除作用域中的指定的共享数据(删除数据)
作用域对象.removeAttribute(String name);

最后

以上就是搞怪热狗为你收集整理的Servlet三大作用域一、request二、session三、application三大作用域的区别共同点的全部内容,希望文章能够帮你解决Servlet三大作用域一、request二、session三、application三大作用域的区别共同点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部