详解JSP内置对象

JSP内置对象包含

request请求、response响应、out输出、session会话、application应用程序等

为什么需要内置对象?

为了方便Web程序的开发 JSP页面内置了一些默认的对象 这些对象不需要预先声名就可以在脚本代码和表达式中使用,它们也称为 隐式对象、预定义变量

九大内置对象

PageContext 存数据
Request 存数据
Response
Session 存数据
Application [ServletContext] 存数据
config [ServletConfig]
out
page
exception

敲个demo理解存数据的几个对象

在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>PageContext</title>
</head>
<body>
<%--    内置对象--%>
    <%
        pageContext.setAttribute("name1","潮");//保存的数据只在一个页面中有效
        request.setAttribute("name2","汕");//保存的数据只会在一次请求中有效,请求转发也会携带这个数据
        session.setAttribute("name3","奴");//保存的数据只会在一次会话中有效,从打开浏览器到关闭浏览器
        application.setAttribute("name4","仔");//保存的数据只在服务器中有效,从打开服务器到关闭服务器
    %>
<%--代码片段
    我们从pageContext中取出 通过查找的方式
    作用域从低到高
--%>
    <%
        String name1 = (String) pageContext.findAttribute("name1");
        String name2 = (String) pageContext.findAttribute("name2");
        String name3 = (String) pageContext.findAttribute("name3");
        String name4 = (String) pageContext.findAttribute("name4");
        String name5 = (String) pageContext.findAttribute("name5");
    %>
<%--使用EL表达式进行输出--%>
    <h3>从EL表达式取出的值为:</h3>
    <h4>${ name1}</h4>
    <h4>${ name2}</h4>
    <h4>${ name3}</h4>
    <h4>${ name4}</h4>
    <h4>${ name5}</h4>
    <h2><%= name5%></h2>
</body>
</html>

启动服务器运行
在这里插入图片描述
可以清楚的看到 我们没有存入name5的值 但是<%= name5%>会打印出null
使用EL表达式却不会打印出null 说明EL表达式会帮我们自动过滤

使用EL表达式注意需要在Page指令处添加 isELIgnored="false"

接下来再来敲个小demo

在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>PageDemo2</title>
</head>
<body>
<%--代码片段
    我们从pageContext中取出 通过查找的方式
    作用域从低到高
--%>
<%
    String name1 = (String) pageContext.findAttribute("name1");
    String name2 = (String) pageContext.findAttribute("name2");
    String name3 = (String) pageContext.findAttribute("name3");
    String name4 = (String) pageContext.findAttribute("name4");
    String name5 = (String) pageContext.findAttribute("name5");
%>
<%--使用EL表达式进行输出--%>
<h3>从EL表达式取出的值为:</h3>
<h4>${name1}</h4>
<h4>${name2}</h4>
<h4>${name3}</h4>
<h4>${name4}</h4>
<h4>${name5}</h4>
<h2><%= name5%></h2>
</body>
</html>

启动服务器 注意先访问有set值的demo1 再访问取值的demo2
在这里插入图片描述
在这里插入图片描述
发现只有session和application的作用域有效

接下来再来修改一下demo实现转发

在这里插入图片描述
启动服务器访问demo1
实现转发到demo2
在这里插入图片描述
说明Request被携带过去了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值