javaweb:jsp内置对象及作用域

打印 上一主题 下一主题

主题 930|帖子 930|积分 2790

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:<%@ 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>储在服务器中,只有服务器关闭数据才会失效。 下面我们对这四个与对象进行一次存取测试:首先建立一个Demo001.jsp用于存数据并且立刻取数据
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.     pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title><%@ page language="java" contentType="text/html; charset=UTF-8"
  8.     pageEncoding="UTF-8"%>
  9. <!DOCTYPE html>
  10. <html>
  11. <head>
  12. <meta charset="UTF-8">
  13. <title>数据存</title>
  14. </head>
  15. <body>
  16. <%
  17.     pageContext.setAttribute("name", "金木三001");
  18.     request.setAttribute("name", "金木三002");
  19.     session.setAttribute("name", "金木三003");
  20.     application.setAttribute("name", "金木三004");
  21.    
  22.     String a = (String)pageContext.getAttribute("name");
  23.     String b = (String)request.getAttribute("name");
  24.     String c = (String)session.getAttribute("name");
  25.     String d = (String)application.getAttribute("name");
  26.    
  27.     pageContext.forward("Demo002.jsp");
  28. %>
  29. </body>
  30. </html></title>
  31. </head>
  32. <body>
  33. <%
  34.     pageContext.setAttribute("name", "金木三001");
  35.     request.setAttribute("name", "金木三002");
  36.     session.setAttribute("name", "金木三003");
  37.     application.setAttribute("name", "金木三004");
  38.    
  39.     String a = (String)pageContext.getAttribute("name");
  40.     String b = (String)request.getAttribute("name");
  41.     String c = (String)session.getAttribute("name");
  42.     String d = (String)application.getAttribute("name");
  43. %>
  44. <h1><%= a %></h1>
  45. <h1><%= b %></h1>
  46. <h1><%= c %></h1>
  47. <h1><%= d %></h1>
  48. </body>
  49. </html>
复制代码

 
 没有问题,四个都能读取到
然后我们建立一个Demo002.jsp,换一个页面来读取数据
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.     pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title><%@ page language="java" contentType="text/html; charset=UTF-8"
  8.     pageEncoding="UTF-8"%>
  9. <!DOCTYPE html>
  10. <html>
  11. <head>
  12. <meta charset="UTF-8">
  13. <title>数据存</title>
  14. </head>
  15. <body>
  16. <%
  17.     pageContext.setAttribute("name", "金木三001");
  18.     request.setAttribute("name", "金木三002");
  19.     session.setAttribute("name", "金木三003");
  20.     application.setAttribute("name", "金木三004");
  21.    
  22.     String a = (String)pageContext.getAttribute("name");
  23.     String b = (String)request.getAttribute("name");
  24.     String c = (String)session.getAttribute("name");
  25.     String d = (String)application.getAttribute("name");
  26.    
  27.     pageContext.forward("Demo002.jsp");
  28. %>
  29. </body>
  30. </html></title>
  31. </head>
  32. <body>
  33. <%
  34.     pageContext.setAttribute("name", "金木三001");
  35.     request.setAttribute("name", "金木三002");
  36.     session.setAttribute("name", "金木三003");
  37.     application.setAttribute("name", "金木三004");
  38.    
  39.     String a = (String)pageContext.getAttribute("name");
  40.     String b = (String)request.getAttribute("name");
  41.     String c = (String)session.getAttribute("name");
  42.     String d = (String)application.getAttribute("name");
  43. %>
  44. <h1><%= a %></h1>
  45. <h1><%= b %></h1>
  46. <h1><%= c %></h1>
  47. <h1><%= d %></h1>
  48. </body>
  49. </html>
复制代码

 
 可以发现,pageContext和request存的数据已经取不到了
然后我们关闭浏览器,重新打开直接访问Demo002.jsp

 
和想的一样,session存的数据也没有了
然后我们修改一下Demo001.jsp,给它加上一句请求转发,将请求转发到Demo002.jsp试一下
修改后的Demo001.jsp
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.     pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>数据存</title>
  8. </head>
  9. <body>
  10. <%
  11.     pageContext.setAttribute("name", "金木三001");
  12.     request.setAttribute("name", "金木三002");
  13.     session.setAttribute("name", "金木三003");
  14.     application.setAttribute("name", "金木三004");
  15.    
  16.     String a = (String)pageContext.getAttribute("name");
  17.     String b = (String)request.getAttribute("name");
  18.     String c = (String)session.getAttribute("name");
  19.     String d = (String)application.getAttribute("name");
  20.    
  21.     pageContext.forward("Demo002.jsp");
  22. %>
  23. </body>
  24. </html>
复制代码

 
 
 
我们发现,request存储的数据还在,所以说请求转发能够携带请求中存储的数据。 (本文仅作个人学习记录用,如有纰漏,敬请指正)  
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

去皮卡多

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表