栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

servlet三大作用域基础介绍

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

servlet三大作用域基础介绍

servlet的三大作用域包括request,session,application(ServletContext)

考虑到服务器的内存问题,能用小的不用大的:Request < Session < ServletContext
常见的使用场景:
Request:一次查询的结果。例如,Servlet 转发 JSP。
Session:存放当前会话的私有数据。例如,用户登录状态,验证码,购物车。
application(ServletContext):若需要所有的 Servlet 都能访问到,才使用这个域对象。

1.request

定义:request表示一个请求,只要发出一个请求就会创建一个request

它的作用域仅在当前请求中有效,如果Web组件之间需要共享同一个请求中的数据,只能使用请求转发。

作用:

  • 用于服务器间同一请求不同页面之间的参数传递
  • 用于表单的控件值传递

方法: 

request.setAttribute(); 将request.getParameter()方法获取的数据保存到request域中,即将获取的数据重新封装到一个域中。
request.getAttribute(); 返回在request.setAttribute()封装的域中存在的数据
request.removeAttribute(); 删除请求中的一个属性。
request.getParameter().获取通过类似post,get等方式传入的数据,即获取客户端到服务端的数据,代表HTTP请求数据。
2.session

定义:Session 是一个接口(HttpSession),用来维护一个客户端和服务器之间关联的一种技术。
每个客户端都有自己的一个 Session 会话。所以session中的数据可供当前会话中所有servlet共享
Session 会话中,我们经常用来保存用户登录之后的信息。

作用域:会话从用户打开浏览器开始,直到关闭浏览器才结束,一次会话期间只会创建一个session对象。

作用:

  • 用于web开发中的登陆验证界面
  • 用于电商网站购物车功能

 方法:

session.setAttribute("sessionName",Object); //保存  
//用来设置session值的,sessionName是名称,object是你要保存的对象。   
session.getAttribute("sessionName");  //取得 
//用来得到对应名称的session值,即得到object对象,注意需要进行类型转换!
session.removeAttribute();用于清空指定的属性
session.invalidate()是清除当前session的所有相关信息

在Servlet直接获取session:

HttpSession session = request.getSession();

JSP页面中直接使用(session属于JSP九大内置对象之一):

<%session.serAttribute("name","admin")%> 
3.application(ServletContext)

定义:ServletContext在 服务器启动时创建,服务器关闭时销毁。一个JavaWeb应用只创建一个ServletContext对象,所有的浏览器在访问服务器时都共享同一个ServletContext对象,ServletContext对象一般用于在多个浏览器间共享数据时使用。

作用:存储数据和访问来自任何页面的变量,类似于session。不同之处在于,所有用户分享一个application。而session是一个对象一个session对象
在一起协同工作以完成某项任务的一组 ASP 文件称作应用程序(application)
因为application持有会被应用程序中的许多页面使用信息(比如数据库连接信息),所以可以从任何页面访问这些信息。同时也意味着你可在一个地点改变这些信息,任何这些改变会自动反应在所有的页面上

Servlet中获取Application对象:

    ServletContext app01 = this.getServletContext();
    app01.setAttribute("name", "kaixuan");//设置一个值进去      
    ServletContext app02 = this.getServletContext();
    app02.getAttribute("name");    //获取键值对  

ServletContext同属于JSP九大内置对象之一,故可以直接使用
提示:服务器只会创建一个ServletContext 对象,所以app01就是app02,通过app01设置的值当然可以通过app02获取。

作用域对象共享数据:

 设置作用域中的共享数据
   作用域对象.setAttribute(String name,Object value);

 获取作用域中的共享数据
   Object value = 作用域对象.getAttribute(String name);

 删除作用域中的指定的共享数据
   作用域对象.removeAttribute(String name);
总结: 1.生命周期

(1)  request:只限于一次请求
(2)  session:一次会话(多次请求)
(3) application:项目的加载到卸载

2. 作用范围

requset:所有被请求转发的Servlet
session:所有Servlet(当前浏览器)
application:所有Servlet(所有浏览器都行)


3. 正确选择作用域

request:跟当前操作功能相关
session:跟用户信息相关,如登录信息、银行账号
application:跟项目全局信息相关,如:京东配送地址

(如果不正确选择作用域会出现内存浪费)

总结网上的一些资料加上自己补充,对servlet三大域的基础介绍就是这些
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/825347.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号