JSP内置对象四大作用域及传递参数详解

JSP内置对象

JSP有九大内置对象,如下图:

在这里插入图片描述

其中常用来传递参数的内置对象及其作用空间如下图所示,其中作用空间是指该对象不会被重置的最大范围。我们通过认识不同对象的作用空间来决定在特定场景下应该使用何种对象进行参数传递。

对象作用空间范围大小
pageContext当前页面最小
request当前请求稍大
session当前会话更大
application当前应用程序最大

详解

1.pageContext对象及其作用空间

可以通过如下的方法获取pageContext中储存的变量

<%
pageContext.setAttribute("msg","this is a value from pageContext");

%>

<%=pageContext.getAttribute("msg")%>

pageContext只在当前单一页面有效,出了这个范围就没戏了。

如果存在引用的页面,即<%=pageContext.getAttribute("msg")%>出现在引用的页面中,也只有静态引用才有效。

所谓静态引用是指通过<%@ include file="another.jsp" %>这一标签引入的另外的JSP,从原理上看这种方式引入的JSP相当于把代码全都复制了过来,所以,pageContext依然是有效的。

相对应的动态引用,即通过<jsp:include page="相对路径"></jsp:include>的方式引入的页面,这种方法相当于新编译了了另外的JSP页面,原本的pageContext对象失效。

2.request对象及其作用空间

request对象在一次完整的请求中被保留,调用方式如下

<%
request.setAttribute("msg","this is a value from request");

%>

<%=request.getAttribute("msg")%>

所谓一次完整的请求就包含了服务器回复(response用户之前的全部动作。
因此,通过服务器的转发操作,我们可以把request对象中储存的变量传递给另一个JSP页面。

转发的代码如下:

//转发
        req.getRequestDispatcher("target.jsp").forward(req,resp);

通过这种操作,我们可以把当前页面携带的request对象继续传递给目标页面,在目标页面中进行解析。

3.session对象及其作用空间

Session对象在一次会话中被保留,获取参数的方式如下:

<%
session.setAttribute("msg","this is a value from session");

%>

<%=session.getAttribute("msg")%>

所谓一次会话,也即当前session的有效期通过以下几种方式判断:

  1. 主动通过session.invalidate()方法销毁当前session
  2. 超过设定的MaxInactiveInterval时间,即当前会话不活跃时间超过了阈值。
  3. 关闭了浏览器(不一定,但在多数情况下是)

在通过session会话来传递参数的过程中,可以使用重定向和转发的方法来跳转页面。

转发和上文中介绍的相同,关于重定向是通过下列方法完成的。

        //重定向
        resp.sendRedirect("index.jsp");

4.application对象及其作用空间

<%
application.setAttribute("msg","this is a value from session");

%>

<%=application.getAttribute("msg")%>

//在servlet中,需要通过ServletContext对象获得

结束条件: 重启服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值