1. 程式人生 > >08-【jsp重點】

08-【jsp重點】

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