08-【jsp重點】
阿新 • • 發佈:2018-11-03
jsp的四個作用域和9個內建物件
jsp內建物件【重點】:pageContext、request、session、application、response、out、page、exception、config
作用:servlet 和 jsp進行資料互動 ,四個作用域和 9 個內建物件中的 四個作用域物件
內建物件:不需要宣告,直接使用的物件,就是內建物件(隱含物件)
9個內建物件:作用域物件 實現 servlet和jsp的 資料的共享,在 servlet執行轉發或重定向的時候實現資料共享
四個作用域相關的內建物件:(重點的重點)
pageContext 作用範圍 是一個頁面,javax.servlet.jsp.PageContext 類的例項
request 作用範圍 是一次請求 ,可以是多個頁面,HttpServletRequest類的例項
session 作用範圍 是一次會話,可以是多個請求,HttpSession
application (servletContext對應的物件) 作用範圍 整個web應用 ,可以是多個會話,ServletContext類的例項
兩個輸出相關的物件:
response 對應 servlet中 HttpServletResponse類的例項
out 功能類似於 PrintWriter
是 JspWriter 的例項
三個打醬油的物件:
page java中的this (jsp----->servlet 類 ----servlet類中的this )
exception 對應 Exception中java.lang.Throwable類的例項
config ServletConfig類的例項
作用域範圍詳解:
pageContext:作用範圍 是一個頁面 javax.servlet.jsp.PageContext 類的例項
test_scope.jsp
當用轉發跨頁面時:<jsp:forward page="ok.jsp"></jsp:forward>
ok.jsp
test_scope.jsp
效果圖:
request:作用範圍 是一次請求 ,可以是多個頁面
/* request跨頁面 ,在一次請求內共享 資料 */
request.setAttribute("str", "今天天氣不錯");
=================================
/* 測試 request物件 取值 */
String str = (String)request.getAttribute("str");
程式碼【test_scope.jsp、ok.jsp】
test_scope.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 8 <html> 9 <head> 10 <base href="<%=basePath%>"> 11 12 <title>My JSP 'test_scope.jsp' starting page</title> 13 14 <meta http-equiv="pragma" content="no-cache"> 15 <meta http-equiv="cache-control" content="no-cache"> 16 <meta http-equiv="expires" content="0"> 17 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 18 <meta http-equiv="description" content="This is my page"> 19 <!-- 20 <link rel="stylesheet" type="text/css" href="styles.css"> 21 --> 22 23 </head> 24 25 <body> 26 <!-- 27 pageContext:作用範圍 是一個頁面 javax.servlet.jsp.PageContext 類的例項 28 request:作用範圍 是一次請求 ,可以是多個頁面 29 --> 30 <% 31 /* 測試pageContext物件 */ 32 // 存資料 33 pageContext.setAttribute("name", "迪麗熱巴"); 34 // 取資料 35 Object uname = pageContext.getAttribute("name"); 36 37 /* request跨頁面 ,在一次請求內共享 資料 */ 38 request.setAttribute("str", "今天天氣不錯"); 39 %> 40 test_scope.jsp 輸出結果: 41 <%=uname %> 42 <!-- 轉發 --> 43 <jsp:forward page="ok.jsp"></jsp:forward> 44 </body> 45 </html>View Code
ok.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 8 <html> 9 <head> 10 <base href="<%=basePath%>"> 11 12 <title>My JSP 'index.jsp' starting page</title> 13 <meta http-equiv="pragma" content="no-cache"> 14 <meta http-equiv="cache-control" content="no-cache"> 15 <meta http-equiv="expires" content="0"> 16 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 17 <meta http-equiv="description" content="This is my page"> 18 <!-- 19 <link rel="stylesheet" type="text/css" href="styles.css"> 20 --> 21 </head> 22 23 <body> 24 <% 25 /* 測試 pageContext物件 */ 26 Object uname = pageContext.getAttribute("name"); 27 28 /* 測試 request物件 取值 */ 29 String str = (String)request.getAttribute("str"); 30 %> 31 一次請求 ,跨頁面取值<hr> 32 <%=uname %><br> 33 <%=str %> 34 </body> 35 </html>View Code