Servlet作用域对象

目录

一、Servlet三大域对象

        1、Request(HttpServletRequest):

        生命周期:

        常用方法:

        2、Session(HttpSession):

        生命周期:

        常用方法:

        3、Applicable(ServletContext):

        生命周期:

        常用方法:

二、三个作用域通用方法


一、Servlet三大域对象

对象名称 对象的类型
request(在一个服务器请求范围内有效
HttpServletRequest

 session(在一次会话范围内容有效

HttpSession
applicable(在一个应用服务器范围内有效
ServletContext

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);

猜你喜欢

转载自blog.csdn.net/m0_70314224/article/details/125567015