JavaWeb学习打卡14(JSP内置对象及作用域)

发布于:2025-07-27 ⋅ 阅读:(13) ⋅ 点赞:(0)

JSP 中9 大内置对象

  • PageContext          // 用来存东西
  • Request                 // 用来存东西
  • Response
  • Session              // 用来存东西
  • Application  (ServletContext)  // 用来存东西
  • config         (ServletConfig)
  • out
  • page
  • exception

有  存取功能的内置对象  的实例:

先创建一个 pageContextDemo01.jsp 文件 :

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<%--内置对象--%>
<%
    pageContext.setAttribute("name1","小许1号");//保存的数据只在一个页面中有效
    request.setAttribute("name2","小许2号");    //保存的数据只在一次请求中有效,请求转发会携带这个数据
    session.setAttribute("name3","小许3号");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
    application.setAttribute("name4","小许4号");//保存的数据只在服务器中有效,从打开服务器到关闭服务器,数据才回丢失
%>

<%--脚本片段中的代码,会被原封不动的生成到 .JSP文件 .java文件中
要求:脚本片段中的代码:必须保证Java语法的正确性
--%>

<%
    //从pageContext 取出,我们通过寻找的方式(findAttribute)来取
    //从作用域的底层到高层寻找   page --> request --> session --> application
    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表达式 输出  ${}--%>
<h1>取出的值为:</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
<%--<h3>${name5}</h3>   //EL表达式会过滤掉不存在值--%>
<%--使用JSP表达式取不存在的值,不会被过滤,会在网页上显示 默认值null--%>
<h3><%=name5%></h3>

</body>
</html>

运行结果:

作用域等级:

 从底层到高层: page --> request --> session --> application

我们可以用  pageContext.setAttribute( )   来指定它的作用域

<%
    //设置作用域为 session 
    /*
    *public static final int PAGE_SCOPE = 1;
    *public static final int REQUEST_SCOPE = 2;
    *public static final int SESSION_SCOPE = 3;
    *public static final int APPLICATION_SCOPE = 4;
     */
    pageContext.setAttribute("hello1","hello1",PageContext.SESSION_SCOPE);
%>

两种页面跳转的实现方式,新建一个 jsp 文件 ,增加以下代码,可使其跳转到 indext.jsp 文件页面 

<%
    //在前端 jsp中可直接通过pageContext.forward() 就可以实现页面转发
    pageContext.forward("/indext.jsp");
    //上下这两句代码的效果都是一样的,两种不同的实现方式
    //request.getRequestDispatcher("/indext.jsp").forward(request,response);
%>

常用内置对象的应用场景

  • page(用不上,不用了解)
  • request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完就没用的
  • session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:;购物车;
  • application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天数据;

网站公告

今日签到

点亮在社区的每一天
去签到