jsp中四种用于存储数据的范围对象

jsp中用于存储数据的对象(用邮递员送快递举例)

四种范围对象

四种范围对象 (小->大) 有效范围
pageContext JSP页面容器 当前页面有效
request 请求对象 同一次请求有效
session 会话对象 同一次会话有效
appliation 全局对象 全局有效(整个项目有效)

尽量使用最小范围

  1. pageContext 当前页面有效(页面跳转后无效)
  2. request 同一次请求有效;其他请求无效(请求转发后有效; 重定向后无效)
  3. session 同一次会话有效 (无论怎么跳转,都有效;关闭/切换浏览器后无效;从登陆->退出之间全部有效
  4. application 全局变量;整个项目运行期间都有效(切换浏览器仍然有效);关闭服务、其他项目无效

尽量使用最小范围

四种范围对象的共有方法

返回值 方法 用处
Object getAttribute (String name) 根据属性名 获取 属性值
void setAttribute(String name, 0bject obj) 根据属性名 设置 属性值(新增,修改)
void removeAttribute(String name): 根据属性名 删除 对象

具体

  • pageContest
    同一页面内有效(同一个小区)
  • request(常用)
    同一个请求(同一趟行程可以不同小区)
    jsp中四种用于存储数据的范围对象_第1张图片
  • session(常用)
    数据在一个会话有效期内可用,同一客户端,不同次(快递放入分发站点,保存时间默认30分钟)
    jsp中四种用于存储数据的范围对象_第2张图片
    jsp中四种用于存储数据的范围对象_第3张图片jsp中四种用于存储数据的范围对象_第4张图片
    使用方法:
//服务端设置Session属性
session.setAttribute("user", username);
//客户端接收Session
Object obj = session.getAttribute("user");
    //判断是否为空,不是空就输出
    if(obj==null){
    //如果为空就提示用户登录
    }else{
    //不为空就输出用户名,和欢迎信息
    out.println("欢迎您"+obj.toString());
    }

jsp中四种用于存储数据的范围对象_第5张图片
在服务端设置过期时间:

//设置服务器端session过期日期(单位为:秒),如设置为10秒
       session.setMaxInactiveInterval(10);

在客户端中设置:

<%
//在客户端设置session,如点击注销之后,直接设置session过期
//第一种删除session中的数据
	session.removeAttribute("user");
//第二种 或者直接使用session过期
	session.invalidate();
//以2选一
//重定向主页
	response.sendRedirect("index.jsp");
%>

session的过程:
jsp中四种用于存储数据的范围对象_第6张图片

  • application
    数据在整个WEB项目中可用,直到WEB服务器停止运行(同一个快递,可以不同快递点,不同人)
    jsp中四种用于存储数据的范围对象_第7张图片
    jsp中四种用于存储数据的范围对象_第8张图片
    计数器的实现原理:
<%  //计数器
    Integer count = (Integer) application.getAttribute("count");
    //判断是否为空,为空赋值为0
    if (count == null) {
        count = 0;
    }
    //计数器+1
    count = count + 1;
    //返回值
    application.setAttribute("count", count);
}
%>

你可能感兴趣的:(jsp)