Java学习【web基础-JSP3-JSP中的9大内置对象2】

JSP9大内置对象
request : 客户端提交给服务器的所有数据,都被封装在该对象中。
response: 服务器响应给客户端的所有数据,都被封装在该对象中。

session: 会话

会话就是一段有开始,有结束的过程!

比如: 
打电话,从双方接通开始,持续到任何一方挂断为止,算一次电话会话。
会议: 从开会开始,到散会为止,算一个会议会话
人的一生: 从呱呱坠地开始,到百年以后结束,算一次人生会话。

在jsp技术中,会话特指:一个用户从打开一个网站的任何一个页面开始,到关闭了该网站的所有页面为止,算一次jsp中的会话。

给会话范围设置的属性,只要在一次会话范围中,都能获取!

Session的方法:

setAttribute() 在会话范围中设置属性
getAttribute() 从会话范围中获取属性
removeAttribute() 从会话范围中删除指定的属性

这里写图片描述
session的其它方法:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<h2>c.jsp</h2>


<table>
    <tr>
        <td>新会话?</td>
        <td><%=session.isNew() %></td>
    </tr>
    <tr>
        <td>会话id</td>
        <td><%=session.getId() %></td>
    </tr>
    <tr>
        <td>会话创建时间</td>
        <td><%=session.getCreationTime() %></td>
    </tr>
    <tr>
        <td>上次会话访问</td>
        <td><%=session.getLastAccessedTime() %></td>
    </tr>
    <tr>
        <td>当前系统时间</td>
        <td><%=System.currentTimeMillis() %></td>
    </tr>
    <tr>
        <td>会话闲置时间</td>
        <td>
            <%=System.currentTimeMillis() - session.getLastAccessedTime() %>
        </td>
    </tr>
    <tr>
        <td>让会话失效</td>
        <td>
            <% //session.invalidate(); %>
        </td>
    </tr>
</table>

<a href="a.jsp">go to a.jsp</a>

application: 应用对象,应用范围
从部署web应用开始,到卸载web应用为止,算一次应用范围。
只有,重新部署web应用,或者直接重启tomcat服务器,才能销毁application范围!

application.setAttribute();
application.getAttribute();
application.removeAttribute();

先介绍一个web 应用描述符,就是WebRoot/WEB-INF/web.xml文件。 对一个web应用的任何配置,都应该在web.xml中进行配置!
比如,可以通过该文件配置web引用的欢迎界面!
这里写图片描述
注意,每次修改完web.xml,记得保存,而且保存以后,还要重新部署web应用。

application.getInitParameter(); 获取初始化参数。
步骤1,先在web.xml中,配置初始化参数。
这里写图片描述
步骤2:在任何一个jsp页面上使用application.getInitParameter(名字)即可!
这里写图片描述

当web应用被部署的时候,tomcat会自动读取web应用的web.xml配置文件,并且把所有初始化参数自动封装进application对象中。

pageContext: 页面范围
从进入一个jsp页面开始,到该jsp页面执行完毕,算一次页面范围。

对比4大范围:
在当前页面上,4大范围的属性,都能获取
这里写图片描述

为了甩掉页面范围的值,留下request session application的值,需要转发到一个新页面,只要跳转到另外一个页面了,那么页面范围绝对是一个新的!(无论是转发还是重定向)
这里写图片描述

为了甩掉request范围的值,需要重定向,或者超链接。
这里写图片描述

继续甩掉会话范围,不用写什么代码,只要把浏览器窗口关闭完就行!会话就结束,再次打开一个新的浏览器窗口,直接访问b.jsp
这里写图片描述

最后甩掉应用范围: 也不用写代码,只需要重新部署以下web应用即可。
这里写图片描述

分析,jsp中的4大范围,从小到大,依次是:
pageContext < request < session < application
除了pageContext以外,其它3个范围都可以在不同页面直接传递数据!
那么问题是,3个范围(request session application)都能在不同页面直接传递数据,到底应该如何选择??
选择的原则是,能用小的,就别用大的范围! Why ??? 因为小范围内的数据,占用内存的时间少。 要知道,request session application都是由web服务器创建的,占用的都是web服务器的内存,当a.jsp把参数传递给b.jsp以后,内存就应该释放!

pageContext的其它方法:
通过pageContext可以获取4个范围中的数据:
findAttribute(), 寻找的顺序是 从小到大,依次寻找,如果在小范围中已经找到数据了,就不会在继续寻找了。

这里写图片描述
对比,pageContext.getAttribute()只在页面范围找,如果找不见,就直接范围null!
而且只有pageContext才有findAttribute方法,其它3个范围的内置对象没有

pageContext可以获取其它8个内置对象:
这里写图片描述

为什么要有这个功能,存在的价值何在?? 因为,将来学习的一些技术中,需要使用jsp页面的9大内置对象,如果将9大内置对象直接传递给一个方法,那么这个方法势必要定义9个形式参数,来一个一个接收! 倒不如直接传入一个pageContext即可!

pageContext.include就是java代码版本的动态包含
这里写图片描述

pageContext.forward() 就是java代码版本的转发
这里写图片描述

out: 字符输出流,起点服务器,终点客户端浏览器,意思就是out对象底层封装了套接字,能进行网络数据传输。
这里写图片描述
out.clearBuffer(); 清空out缓冲区中的数据

exception
要使用该内置对象,必须在jsp页面上添加一个指令元素
<%@ page isErrorPage=”true” %>
该内置对象中,存放了上一个jsp页面抛出的异常!!
这里写图片描述

还可以指定把错误信息打印到某个文件中,便于程序员后期维护,调试错误!
这里写图片描述

config
用于获取jsp页面的初始化参数
步骤1,在web.xml中为一个jsp页面配置初始化参数
这里写图片描述

这里写图片描述

与以下配置不同, 以下配置出来的初始化参数,可以用在任何一个jsp页面上,
但必须使用application.getInitParameter()来获取。

<context-param>
        <param-name>qq</param-name>
        <param-value>nihao!!!</param-value>
    </context-param>

page
代表当前jsp页面对象本身。 它起始就是this!! 而且没有什么用处!!
这里写图片描述

如果非要让page有个什么作用,那只能获取page指令元素的info属性的内容了!
这里写图片描述

经典面试题: jsp有哪些内置对象

pageContext, 表页面范围,通过该对象可以获取其它8个内置对象。
request, 请求范围, 从客户端发起请求开始,到服务器响应之时,算一次请求范围。所有客户端提交给服务器的数据,都全部封装在该对象中。
session,会话范围,从客户端浏览器访问一个web网站的任何一个页面开始,到关闭了该网站的所有页面位置,算一次会话范围。
Application,应用范围,从部署一个web应用开始,到卸载web应用位置,算一次应用范围。
Response, 响应对象,所有服务器响应给客户端的数据,全部都封装在该对象中。该对象还能完成重定向功能。 
Out, 字符输出流,起点服务器,终点客户端,用于把服务器生成的html字符串发送给远程客户端浏览器!
exception , 异常对象,总是存放上一个jsp页面抛出的异常信息,要使用该对象,必须添加指令: <%@ page isErrorPage=”true” %>
config,   Servlet配置对象,能给某一个jsp页面配置初始化参数。
Page, 代表单当前jsp页面本身,本质上就是this。唯一的作用是可以获取<%@page info=”哈哈哈” %>中的信息.

我们学习的时候,把4大范围叫做这样的名字:
页面范围, 请求范围, 会话范围, 应用范围,
也有人这样叫:
页面上下文, 请求上下文, 会话上下文, 应用上下文,
看到上下文这几个字,不要怕! 马上告诉自己,上下文,说人话,意思是:“map结构”.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值