首页 > 其他分享 >Servlet作用域对象

Servlet作用域对象

时间:2023-10-04 10:55:26浏览次数:45  
标签:String 作用域 request 对象 session key 服务器 Servlet name

一、Servlet三大域对象

1、Request(HttpServletRequest):

  • 生命周期:
  • 创建:客户端向服务器发送一次请求,服务器就会创建request对象
  • 销毁:服务器对这次请求作出响应后就会销毁request对象
  • 有效:仅在当前请求中有效,如果web组件之间需要共享同一个请求中的数据,只能使用请求转发
  • 常用方法:
1.   request.getAttribute(String name);//获取名字为name的属性值
2.   request.setAttribute(String name,Object object);//在请求中保存名称为name的属性
3.   request.removeAttribute(String name);//清除请求中名字为name的属性
4.   request.getParameter(String name);//返回指定请求参数的值

2、Session(HttpSession):

  • 生命周期:
  • 创建:服务器第一次调用getSession();(保存在服务器内存中)
  • 销毁:
  • 非正常关闭服务器(正常关闭session会序列化,再次启动服务器session会被反序列化);
  • session过期默认30分钟
  • 手动调用session.invalidate();

  注意:关闭浏览器再次访问会找不对session的会话id而不是session被销毁了。

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

  • 常用方法:
1.   String imageMsg = (String) request.getSession().getAttribute(“imageMsg”);//图片的验证码      
     request.getSession().setAttribute(“cart”, cart);//将cart放入session中
                                            //(场景:购物车物品保存、保存用户登录状态)
2.   String getid();//获取sessionid
3.   void invalidate();//设置session对象失效
4.   Object getAttribute(String key);//通过key获取对象值
5.   void removeAttribute(String key); //从session中删除指定名称(key)所对应的对象
6.   void setMaxInactiveInterval(int interval);//设定session的非活动时间
7.   int getMaxInactiveInterval(); //获取session的有效非活动时间(以秒为单位)

3、Applicable(ServletContext):

  • 生命周期:
  • 创建:服务器启动的时候,服务器为每个Web应用创建一个属于该Web项目的对象ServletContext类
  • 销毁:服务器关闭或者项目从服务器中移除的时候
  • 有效:此信息在整个服务器上被保留
  • 常用方法:
1.   void setAttribute(String key,Object value);//以key/value的形式保存对象值
2.   Object getAttribute(String key);//通过key获取对象值
3.   String getRealPath(String path);//返回相对路径的真实路径
 
 
例.统计网站访问次数的实现(代码如下):
2-1统计页:
<%
   integer count = (Integer)application.getAttribute("count");
   if(count!=null){
         count = 1+count;
    }else{
         count = 1;
    }
    application.setAttribute("count",count);
%>
2-2显示页:
<%
    Integer i = (Integer)application.getAttribute("count");
    out.println("您好,您是第"+i+"位访问本网站的用户");
%>

二、三个作用域通用方法

  • 存放数据:setAttribute(name,value);
  • 获取数据:getAttribute(name);
  • 删除数据:removeAttribute(name).

标签:String,作用域,request,对象,session,key,服务器,Servlet,name
From: https://www.cnblogs.com/visioning/p/17742019.html

相关文章

  • 关于Servlet和Filter设置响应头生效问题
    一开始我一直觉得无论Servlet中设置的什么响应头,生效的都是Filter中设置的。因为响应回到客户端前也会经过Filter之后测试发现响应经过过滤器时不是重新执行一遍过滤器中的代码,而是执行doFilter()方法之后的代码Filter: Servlet: 运行结果: 在前端也发现响应回来的编码......
  • Java中的对象到底是什么
    对象是现实世界中的一切物体(实体,或能够定义的东西)Smalltalk是第一个成功的面向对象的语言在编程世界中,对象通过类来实例化;同一个类型的对象可以接受相同的消息状态+行为+标识=对象每个对象在内存中都会有一个唯一的地址。对象学习内容:组合,继承,多态,封装。类和对象类和对象时......
  • Bean的作用域
    前言在软件开发中,Bean的作用域指的是对象实例在应用程序中的生命周期和可见范围。在Java中,Bean是指在Spring框架中由Spring容器进行管理的Java对象。常用的Bean的作用域有:Singleton、Prototype、Request、Session、GlobalSession。Singleton单例作用域:在整个应用程序中只有一......
  • python小技巧: 对象字段文档注释, 一行分拆多行
    对象字段文档注释python类和函数的文档注释比较常用,只需要在类和函数下面增加'''即可,就可以在引用的地方查看注释内容了.但是对于类的字段,怎么增加注释呢?只需要像下面即可:classTradeRecordData: #H.Read'''一次完整的交易记录.包括买入及卖出''' #H.Readd......
  • Golang struct 结构体 面向对象编程思想-抽象 理解抽象
    我们在前面去定义一个结构体时候,实际上就是把一类事物的共有的属性(字段)和行为(方法)提取出来,形成一个物理模型(模板),这种研究问题的方法称为抽象。当你将一类事物的属性和行为抽取出来之后,下一步就是将代码体现出来。下面就是模拟银行卡存款取款查询余额方式。packagemainimport"fm......
  • 学过了这么多面向对象的编程语言,你知道他们的对象是谁吗?
    个人主页:【......
  • Servlet的生命周期
    一、什么是Servlet?Servlet(ServerApplet)是JavaServlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Se......
  • 如何查找python对象或类的父类子类以及用法
    一个类其方法和数据的来源可以是自定义,也可以是继承自各级父类。通过dir查看其方法和属性,通过help查看其使用方法。特别地,可通过Base和subclass寻找其父类和其他子类。亦可通过文档研究其继承关系。文档不仅包含自身类,也包括其父类的属性方法。  python>>>help(op("/projec......
  • Spring中Bean的作用域
    当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域:singleton:单例模式,在整个SpringIoC容器中,使用singleton定义的Bean将只有一个实例prototype:原型模式,每次通过容器的getBean方法获取prototype定义的B......
  • golang 求出这两个对象数组的2个差集,即存在其中一个数组,但是不存在于另一个数组
    代码来自chatgptpackagemainimport( "fmt" "reflect")typeObjectstruct{ IDint}funcmain(){ a:=[]Object{{1},{2},{3}} b:=[]Object{{2},{3},{4}} diffAB:=diff(a,b) diffBA:=diff(b,a) fmt.Println("InAn......