JSP九大内置对象、四大域对象

一、jsp 九大内置对象

jsp 中的内置对象,是指 Tomcat 在翻译 jsp 页面成为 Servlet 源代码后,内部提供的九大对象,叫内置对象。
在这里插入图片描述

二、jsp 四大域对象

在这里插入图片描述

  • 域对象是可以像 Map 一样存取数据的对象。四个域对象功能一样,不同的是它们对数据的存取范围
  • 虽然四个域对象都可以存取数据。在使用上它们是有优先顺序的。四个域在使用的时候,优先顺序分别是,他们从小到大的范围的顺序:pageContext ====>>> request ====>>> session ====>>> application

scope.jsp 页面

<body>
    <h1>这是scope.jsp页面</h1>
    <%
        pageContext.setAttribute("key","pageContext");
        request.setAttribute("key","request");
        session.setAttribute("key","session");
        application.setAttribute("key","application");
    %>

    pageContext域的值:<%=pageContext.getAttribute("key")%> <br>
    request域的值:<%=request.getAttribute("key")%> <br>
    session域的值:<%=session.getAttribute("key")%> <br>
    application域的值:<%=application.getAttribute("key")%> <br>

</body>

输出结果:
在这里插入图片描述
如果从scope.jsp中重定向到scope1.jsp

    <%
        request.getRequestDispatcher("/scope1.jsp").forward(request,response);
    %>

在这里插入图片描述
此时pageContext无法获取值,因为已经不是当前页面,超出了域范围。

如果刷新一下scope1.jsp页面,相当于一次新的请求,request值也会无法获取
在这里插入图片描述
如果关闭浏览器重新打开访问,相当于开启了一个新的会话,session的值也无法获取
在这里插入图片描述
如果重新启动服务器,application的值也会无法获取
在这里插入图片描述

三、jsp中的out输出和response.getWrite输出的区别

<body>
    <%
        response.getWriter().write("response输出1 <br/>");
        response.getWriter().write("response输出2 <br/>");
        
        out.write("out输出1 <br/>");
        out.write("out输出2 <br/>");
        
    %>

</body>

response 中表示响应,经常用于设置返回给客户端的内容(输出), out 也是给用户做输出使用的。

在这里插入图片描述
由于 jsp 翻译之后,底层源代码都是使用 out 来进行输出,所以一般情况下,在 jsp 页面中统一使用 out 来进行输出。避免打乱页面输出内容的顺序。

out.write() 输出字符串没有问题 。但是输出数值会有问题,会把数值直接强转成char类型,也就是对应的ASCII码,存在字符数组writeBuffer中,输出时就不是原来的数值了。

    public void write(int c) throws IOException {
        synchronized (lock) {
            if (writeBuffer == null){
                writeBuffer = new char[WRITE_BUFFER_SIZE];
            }
            writeBuffer[0] = (char) c;
            write(writeBuffer, 0, 1);
        }
    }

out.print() 输出任意数据都没有问题(都转换成为字符串后调用的 write() 输出)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值