Servlet作用域对象

发布时间 2023-10-04 10:49:54作者: Vision-H

一、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).