javaweb:jsp内置对象及作用域
2022/7/28 14:22:51
本文主要是介绍javaweb: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:jsp内置对象及作用域的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行
- 2024-05-08阿里云域名注册流程,分享给第一次购买域名的新手站长!