ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javaweb:jsp内置对象及作用域

2022-07-28 12:03:13  阅读:165  来源: 互联网

标签:javaweb 作用域 request 对象 session jsp 数据 页面


jsp有九大内置对象

page:表示当前jsp页面,类似于this;

pageContext:JSP 的页面容器,用于访问 page、request、application 和 session 的属性,可以存放数据,是域对象之一;

request:请求,可以用来存放数据,是域对象之一;

response:响应请求,处理信息返回客户端;

out:输出内容到网页;

session:可以存放数据,域对象之一;

application:就是servletContext改了个名,可以存放数据,域对象之一;

config:这是一个 Servlet 配置对象,用于 Servlet 和页面的初始化参数;

exception:异常处理,只有在 JSP 页面的 page 指令中指定 isErrorPage 的取值 true 时,才可以在本页面使用 exception 对象。

 

上面提到了四个域对象,分别是

pageContext

request

session

application 它们四个都有存取数据的功能,都下面三个方法: setAttribute(String name, Object o)将属性保存到域对象中 getAttribute(String name)获取域对象中的属性值 removeAttribute(String name)将属性从域对象中移除 区别在于它们三个存储数据的域不同

pageContext:存储的数据只在当前页面有效,也就是本页面存,本页面取,页面死了数据就死了;

request:存储的数据仅在本次请求有效,但是请求转发时数据仍然有效;

session:存储的数据仅在当前会话范围有效,关闭浏览器后失效;

application:数据存储在服务器中,只有服务器关闭数据才会失效。   下面我们对这四个与对象进行一次存取测试: 首先建立一个Demo001.jsp用于存数据并且立刻取数据
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>数据存</title>
</head>
<body>
<%
    pageContext.setAttribute("name", "金木三001");
    request.setAttribute("name", "金木三002");
    session.setAttribute("name", "金木三003");
    application.setAttribute("name", "金木三004");
    
    String a = (String)pageContext.getAttribute("name");
    String b = (String)request.getAttribute("name");
    String c = (String)session.getAttribute("name");
    String d = (String)application.getAttribute("name");
%>
<h1><%= a %></h1>
<h1><%= b %></h1>
<h1><%= c %></h1>
<h1><%= d %></h1>

</body>
</html>

 

 没有问题,四个都能读取到

然后我们建立一个Demo002.jsp,换一个页面来读取数据

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>数据存</title>
</head>
<body>
<%
    String a = (String)pageContext.getAttribute("name");
    String b = (String)request.getAttribute("name");
    String c = (String)session.getAttribute("name");
    String d = (String)application.getAttribute("name");
%>
<h1><%= a %></h1>
<h1><%= b %></h1>
<h1><%= c %></h1>
<h1><%= d %></h1>

</body>
</html>

 

 可以发现,pageContext和request存的数据已经取不到了

然后我们关闭浏览器,重新打开直接访问Demo002.jsp

 

和想的一样,session存的数据也没有了

然后我们修改一下Demo001.jsp,给它加上一句请求转发,将请求转发到Demo002.jsp试一下

修改后的Demo001.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>数据存</title>
</head>
<body>
<%
    pageContext.setAttribute("name", "金木三001");
    request.setAttribute("name", "金木三002");
    session.setAttribute("name", "金木三003");
    application.setAttribute("name", "金木三004");
    
    String a = (String)pageContext.getAttribute("name");
    String b = (String)request.getAttribute("name");
    String c = (String)session.getAttribute("name");
    String d = (String)application.getAttribute("name");
    
    pageContext.forward("Demo002.jsp");
%>

</body>
</html>

 

 

 

我们发现,request存储的数据还在,所以说请求转发能够携带请求中存储的数据。   (本文仅作个人学习记录用,如有纰漏,敬请指正)    

标签:javaweb,作用域,request,对象,session,jsp,数据,页面
来源: https://www.cnblogs.com/jmsstudy/p/16527779.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有