對象 | 描述 |
---|---|
request | HttpServletRequest 接口的實例 |
response | HttpServletResponse 接口的實例 |
out | JspWriter類的實例,用於把結果輸出至網頁上 |
session | HttpSession類的實例 |
application | ServletContext類的實例,與應用上下文有關 |
config | ServletConfig類的實例 |
pageContext | PageContext類的實例,提供對JSP頁面全部對象以及命名空間的訪問 |
page | 相似於Java類中的this關鍵字 |
Exception | Exception類的對象,表明發生錯誤的JSP頁面中對應的異常對象 |
做用域 | 功能 |
---|---|
pageContext | 做用域僅限於當前頁面對象,能夠近似於理解爲java的this對象,離開當前JSP頁面(不管是redirect仍是forward),則pageContext中的全部屬性值就會丟失。 |
request | 做用域是同一個請求以內,在頁面跳轉時,若是經過forward方式跳轉,則forward目標頁面仍然能夠拿到request中的屬性值。若是經過redirect方式進行頁面跳轉,因爲redirect至關於從新發出的請求,此種場景下,request中的屬性值會丟失。(適用於請求轉發,在重定向中會失去被賦予的值) |
session | session的做用域是在一個會話的生命週期內,會話失效,則session中的數據也隨之丟失。 |
application | 做用域是最大的,只要服務器不中止,則application對象就一直存在,而且爲全部會話所共享。(定義的對象被存儲在服務器,因此少使用該對象,否則會增長服務器負載,影響服務器性能) |
<%-- Created by IntelliJ IDEA. User: YOONA Date: 2019/10/21/021 Time: 17:23 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>setAttribute</title> </head> <body> <% pageContext.setAttribute("name","taeyeon",PageContext.REQUEST_SCOPE);//只有pageContext纔有第三個參數,session,application,request都沒有第三個參數. %> <jsp:forward page="getAttribute.jsp"/> </body> </html>
<%-- Created by IntelliJ IDEA. User: YOONA Date: 2019/10/21/021 Time: 17:27 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>getAttribute</title> </head> <body> <% String s= (String) request.getAttribute("name"); out.println(s); %> <%=s%> </body> </html>
taeyeon taeyeon
當沒有設置pageContext.setAttribute()中沒有添加這一參數==PageContext.REQUEST_SCOPE==。就會輸出null null
。由於page域中設置的參數只能在本頁面有做用,因此當頁面跳轉後就獲取不到name的屬性值。html
信息 | 描述 |
---|---|
Accept | 指定瀏覽器或其餘客戶端能夠處理的MIME類型。它的值一般爲 image/png 或 image/jpeg |
Accept-Charset | 指定瀏覽器要使用的字符集。好比 ISO-8859-1 |
Accept-Encoding | 指定編碼類型。它的值一般爲 gzip 或compress |
Accept-Language | 指定客戶端首選語言,servlet會優先返回以當前語言構成的結果集,若是servlet支持這種語言的話。好比 en,en-us,ru等等 |
Authorization | 在訪問受密碼保護的網頁時識別不一樣的用戶 |
Connection | 代表客戶端是否能夠處理HTTP持久鏈接。持久鏈接容許客戶端或瀏覽器在一個請求中獲取多個文件。Keep-Alive 表示啓用持久鏈接 |
Content-Length | 僅適用於POST請求,表示 POST 數據的字節數 |
Cookie | 返回先前發送給瀏覽器的cookies至服務器 |
Host | 指出原始URL中的主機名和端口號 |
If-Modified-Since | 代表只有當網頁在指定的日期被修改後客戶端才須要這個網頁。 服務器發送304碼給客戶端,表示沒有更新的資源 |
If-Unmodified-Since | 與If-Modified-Since相反, 只有文檔在指定日期後仍未被修改過,操做纔會成功 |
Referer | 標誌着所引用頁面的URL。好比,若是你在頁面1,而後點了個連接至頁面2,那麼頁面1的URL就會包含在瀏覽器請求頁面2的信息頭中 |
User-Agent | 用來區分不一樣瀏覽器或客戶端發送的請求,並對不一樣類型的瀏覽器返回不一樣的內容 |
方法 | 做用 |
---|---|
Cookie[] getCookies(); | 取得客戶端傳遞的Cookie信息 |
String getHeader(String str); | 取得請求頭信息,根據請求頭名稱取得對應的值 |
Enumeration<String> getHeaderNames(); | 按照枚舉的方式取得全部請求頭信息 |
String getMethod(); | 取得請求的方式 |
String getPathInfo(); | 取得額外路徑 |
String getContextPath(); | 去的當前項目的根路徑 |
String getQueryString(); | 取得URL地址?後面的參數 |
String getRequestURI(); | 取得URL地址 |
String getServletPath(); | 取得Servlet的映射路徑 |
HTTPSession getSession(); | 取得Session內置對象 |
String getRealPath(); | 取得項目的真實路徑 |
String getRemoteHost(); | 取得主機名稱 |
String getParameter(String name); | 取得表單提交的參數,適用於每次接收一個參數,會出現空指針異常 |
String getParameterValues(String name); | 取得表單提交的參數,適用於接收多個參數,好比複選框的值。會出現空指針異常 |
void setAttribute(String key,Object value); | 以鍵值對形式保存數據 |
void getAttribute(String key); | 獲取保存的數據屬性值 |
void getRequestDispatcher(String loc).forward(HttpServletRequest req, HttpServletResponse resp); | 服務器跳轉 |
除了前面介紹的兩種解決亂碼問題,咱們也能使用request對象來解決亂碼問題,使用request。setCharacterEncoding("編碼格式");
來設置全局的編碼格式。java
全部參數不必定都要用表單的形式來傳遞,也可使用url重寫的方式進行傳遞,格式以下: 動態頁面地址?參數名稱 1=參數內容 1&參數名稱 2=參數內容 2&....
mysql
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.io.*,java.util.*" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>requestTest(runoob.com)</title> </head> <body> <h2>HTTP 頭部請求實例</h2> <table width="100%" border="1" align="center"> <tr bgcolor="#949494"> <th>Header Name</th><th>Header Value(s)</th> </tr> <% Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String paramName = (String)headerNames.nextElement(); out.print("<tr><td>" + paramName + "</td>\n"); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr>\n"); } %> </table> </body> </html>
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (空行) <!doctype ...> <html> <head>...</head> <body> ... </body> </html>
響應頭 | 描述 |
---|---|
Allow | 指定服務器支持的request方法(GET,POST等等) |
Cache-Control | 指定響應文檔可以被安全緩存的狀況。一般取值爲 public,private 或no-cache 等等。 Public意味着文檔可緩存,Private意味着文檔只爲單用戶服務而且只能使用私有緩存。No-cache 意味着文檔不被緩存。 |
Connection | 命令瀏覽器是否要使用持久的HTTP鏈接。close值 命令瀏覽器不使用持久HTTP鏈接,而keep-alive 意味着使用持久化鏈接。 |
Content-Disposition | 讓瀏覽器要求用戶將響應以給定的名稱存儲在磁盤中 |
Content-Encoding | 指定傳輸時頁面的編碼規則 |
Content-Language | 表述文檔所使用的語言,好比en, en-us,,ru等等 |
Content-Length | 代表響應的字節數。只有在瀏覽器使用持久化 (keep-alive) HTTP 鏈接時纔有用 |
Content-Type | 代表文檔使用的MIME類型 |
Expires | 指明啥時候過時並從緩存中移除 |
Last-Modified | 指明文檔最後修改時間。客戶端能夠 緩存文檔而且在後續的請求中提供一個 If-Modified-Since請求頭 |
Location | 在300秒內,包含全部的有一個狀態碼的響應地址,瀏覽器會自動重連而後檢索新文檔 |
Refresh | 指明瀏覽器每隔多久請求更新一次頁面。 |
Retry-After | 與503 (Service Unavailable)一塊兒使用來告訴用戶多久後請求將會獲得響應 |
Set-Cookie | 指明當前頁面對應的cookie |
S.N. | 方法 | 描述 |
---|---|---|
1 | String encodeRedirectURL(String url) | 對sendRedirect()方法使用的URL進行編碼 |
2 | String encodeURL(String url) | 將URL編碼,回傳包含Session ID的URL |
3 | boolean containsHeader(String name) | 返回指定的響應頭是否存在 |
4 | boolean isCommitted() | 返回響應是否已經提交到客戶端 |
5 | void addCookie(Cookie cookie) | 添加指定的cookie至響應中 |
6 | void addDateHeader(String name, long date) | 添加指定名稱的響應頭和日期值 |
7 | void addHeader(String name, String value) | 添加指定名稱的響應頭和值 |
8 | void addIntHeader(String name, int value) | 添加指定名稱的響應頭和int值 |
9 | void flushBuffer() | 將任何緩存中的內容寫入客戶端 |
10 | void reset() | 清除任何緩存中的任何數據,包括狀態碼和各類響應頭 |
11 | void resetBuffer() | 清除基本的緩存數據,不包括響應頭和狀態碼 |
12 | void sendError(int sc) | 使用指定的狀態碼向客戶端發送一個出錯響應,而後清除緩存 |
13 | void sendError(int sc, String msg) | 使用指定的狀態碼和消息向客戶端發送一個出錯響應 |
14 | void sendRedirect(String location) | 使用指定的URL向客戶端發送一個臨時的間接響應,重定向 |
15 | void setBufferSize(int size) | 設置響應體的緩存區大小 |
16 | void setCharacterEncoding(String charset) | 指定響應的編碼集(MIME字符集),例如UTF-8 |
17 | void setContentLength(int len) | 指定HTTP servlets中響應的內容的長度,此方法用來設置 HTTP Content-Length 信息頭 |
18 | void setContentType(String type) | 設置響應的內容的類型,若是響應還未被提交的話 |
19 | void setDateHeader(String name, long date) | 使用指定名稱和值設置響應頭的名稱和內容 |
20 | void setHeader(String name, String value) | 使用指定名稱和值設置響應頭的名稱和內容 |
21 | void setIntHeader(String name, int value) | 指定 int 類型的值到 name 標頭 |
22 | void setLocale(Locale loc) | 設置響應的語言環境,若是響應還沒有被提交的話 |
23 | void setStatus(int sc) | 設置響應的狀態碼 |
<%@ page import="java.util.Calendar" %> <%@ page import="java.util.Locale" %> <%@ page import="com.mysql.jdbc.util.TimezoneDump" %> <%@ page import="java.util.TimeZone" %><%-- Created by IntelliJ IDEA. User: YOONA Date: 2019/10/22/022 Time: 14:29 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>response對象的示例Refresh</title> </head> <body> <h2>自動刷新,response</h2> <% response.setIntHeader("Refresh",2); Calendar calendar=Calendar.getInstance(TimeZone.getDefault()); int hour=calendar.get(Calendar.HOUR); int min=calendar.get(Calendar.MINUTE); int s=calendar.get(Calendar.SECOND); String am_pm=""; if(calendar.get(Calendar.AM_PM)==0)//AM==0;PM==1 am_pm="AM"; else am_pm="PM"; String time=hour+":"+min+":"+s+am_pm; %> <h2><%=time%></h2> </body> </html>
Set-Cookie: name=runoob; expires=Friday, 04-Feb-17 22:03:38 GMT; path=/; domain=runoob.com
(Set-Cookie 信息頭包含一個鍵值對,一個 GMT(格林尼治標準)時間,一個路徑,一個域名。鍵值對會被編碼爲URL。有效期域是個指令,告訴瀏覽器在何時以後就能夠清除這個 cookie。)的形式體現;cookie是瀏覽器所提供的一種技術,一些信息存儲在客戶端,使用時能夠不用經過網絡傳輸,而獲取信息,提升網頁的處理效率,減小服務器的負載。可是因爲存儲在客戶端,因此安全性不好。response.addCookie(Cookie cooke)
,序號 | 方法 | 描述 |
---|---|---|
1 | public void setDomain(String pattern) | 設置 cookie 的域名,好比 runoob.com |
2 | public String getDomain() | 獲取 cookie 的域名,好比 runoob.com |
3 | public void setMaxAge(int expiry) | 設置 cookie 有效期,以秒爲單位,默認有效期爲當前session的存活時間 |
4 | public int getMaxAge() | 獲取 cookie 有效期,以秒爲單位,默認爲-1 ,代表cookie會活到瀏覽器關閉爲止 |
5 | public String getName() | 返回 cookie 的名稱,名稱建立後將不能被修改 |
6 | public void setValue(String newValue) | 設置 cookie 的值 |
7 | public String getValue() | 獲取cookie的值 |
8 | public void setPath(String uri) | 設置 cookie 的路徑,默認爲當前頁面目錄下的全部 URL,還有此目錄下的全部子目錄 |
9 | public String getPath() | 獲取 cookie 的路徑 |
10 | public void setSecure(boolean flag) | 指明 cookie 是否要加密傳輸 |
11 | public void setComment(String purpose) | 設置註釋描述 cookie 的目的。當瀏覽器將 cookie 展示給用戶時,註釋將會變得很是有用 |
12 | public String getComment() | 返回描述 cookie 目的的註釋,若沒有則返回 null |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>建立cookie</title> </head> <body> <% Cookie cookie1=new Cookie("name","teayeon");//建立cookie對象 Cookie cookie2=new Cookie("age","18"); cookie1.setMaxAge(60*60*24);//設置最大生存時間 cookie2.setMaxAge(60*60*24); response.addCookie(cookie1);//添加到相應的報文頭中 response.addCookie(cookie2); %> <h2><a href="getCookie.jsp">點我</a>跳轉到獲取Cookie信息</h2> </body> </html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>獲取cookie的值</title> </head> <body> <%! String name; String value; %> <% Cookie cookies[]=request.getCookies(); for(int x=0;x<cookies.length;x++){ name=cookies[x].getName(); value=cookies[x].getValue(); %> <h2><%=name%>---><%=value%></h2> <% } %> </body> </html>
name--->teayeon age--->18 JSESSIONID--->5C600F1372097AE7A09ED74D1274FAC5
<% response.setHeader("Set-Cookie","name=teayeon"); %>
注意:通常一個客戶端最多保存300多個cookie,當數據量太大時將沒法使用cookie。web
<%@page session="false" %>
<input type="hidden" name="sessionid" value="12345">
這個條目意味着,當表單被提交時,指定的名稱和值將會自動包含在GET或POST數據中。每當瀏覽器發送一個請求,session_id的值就能夠用來保存不一樣瀏覽器的軌跡。 這種方式多是一種有效的方式,但點擊<AHREF>標籤中的超連接時不會產生表單提交事件,所以隱藏表單域也不支持通用會話跟蹤。因此說只有三種方式支持會話提問:session是否能夠在服務器從新啓動後繼續使用?sql
回答:能夠經過序列化的方式保存session對象。apache
S.N. | 方法 | 描述 |
---|---|---|
1 | public Object getAttribute(String name) | 返回session對象中與指定名稱綁定的對象,若是不存在則返回null |
2 | public Enumeration getAttributeNames() | 返回session對象中全部的對象名稱 |
3 | public long getCreationTime() | 返回session對象被建立的時間, 以毫秒爲單位,從1970年1月1號凌晨開始算起 |
4 | public String getId() | 返回session對象的ID |
5 | public long getLastAccessedTime() | 返回客戶端最後訪問的時間,以毫秒爲單位,從1970年1月1號凌晨開始算起 |
6 | public int getMaxInactiveInterval() | 返回最大時間間隔,以秒爲單位,servlet 容器將會在這段時間內保持會話打開 |
7 | public void invalidate() | 將session無效化,解綁任何與該session綁定的對象 |
8 | public boolean isNew() | 返回是否爲一個新的客戶端,或者客戶端是否拒絕加入session |
9 | public void removeAttribute(String name) | 移除session中指定名稱的對象 |
10 | public void setAttribute(String name, Object value) | 使用指定的名稱和值來產生一個對象並綁定到session中 |
11 | public void setMaxInactiveInterval(int interval) | 用來指定時間,以秒爲單位,servlet容器將會在這段時間內保持會話有效 |
<%@ page import="java.util.Date" %><%-- Created by IntelliJ IDEA. User: YOONA Date: 2019/11/4/004 Time: 22:29 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>session</title> </head> <% out.print("--------"); //獲取session的建立時間 Date createdate = new Date(session.getCreationTime()); //獲取session最後一次使用的時間 Date lastdate = new Date(session.getLastAccessedTime()); Integer count = Integer.valueOf(0); String countKey = String.valueOf("count"); String userid = String.valueOf("teayeon"); String userKey = String.valueOf("name"); if (session.isNew()) { session.setAttribute(countKey, count); session.setAttribute(userKey, userid); } else { count = (Integer) session.getAttribute(countKey); count += 1; userid = (String) session.getAttribute(userKey); session.setAttribute(countKey, count); } %> <body> <h1>Session 跟蹤</h1> <table border="1" align="center"> <tr bgcolor="#949494"> <th>Session 信息</th> <th>值</th> </tr> <tr> <td>id</td> <td><% out.print(session.getId()); %></td> </tr> <tr> <td>建立時間</td> <td><% out.print(createdate); %></td> </tr> <tr> <td>最後訪問時間</td> <td><% out.print(lastdate); %></td> </tr> <tr> <td>用戶 ID</td> <td><% out.print(userid); %></td> </tr> <tr> <td>訪問次數</td> <td><% out.print(count); %></td> </tr> </table> </body> </html>
Session信息 | 值 |
---|---|
id | 2AF9C0F94869D5049E786A6ECDA8DF8A |
建立時間 | Mon Nov 04 22:53:52 CST 2019 |
最後訪問時間 | Mon Nov 04 22:53:52 CST 2019 |
用戶 ID | teayeon |
訪問次數 | 0 |
Session信息 | 值 |
---|---|
id | 2AF9C0F94869D5049E786A6ECDA8DF8A |
建立時間 | Mon Nov 04 22:53:52 CST 2019 |
最後訪問時間 | Mon Nov 04 22:53:52 CST 2019 |
用戶 ID | teayeon |
訪問次數 | 1 |
當處理完一個用戶的會話數據後,您能夠有以下選擇:編程
移除一個特定的屬性:調用public void removeAttribute(String name) 方法來移除指定的屬性。瀏覽器
刪除整個會話:調用public void invalidate() 方法來使整個session無效。緩存
設置會話有效期:調用 public void setMaxInactiveInterval(int interval) 方法來設置session超時。tomcat
登出用戶:支持servlet2.4版本的服務器,能夠調用logout()方法來登出用戶,而且使全部相關的session無效。
配置web.xml文件:若是使用的是Tomcat,能夠向下面這樣配置web.xml文件:
<session-config> <session-timeout>15</session-timeout> </session-config>
==超時以分鐘爲單位,Tomcat中的默認的超時時間是30分鐘。==
Servlet中的getMaxInactiveInterval()方法以秒爲單位返回超時時間。若是在web.xml中配置的是15分鐘,則getMaxInactiveInterval( ) 方法將會返回900。
- application對象中提供了getAttributeNames()方法,能夠取得所有屬性的名稱,下面利用此方法列出所有的屬性名稱和內容。
<%@ page import="java.util.*" %><%-- Created by IntelliJ IDEA. User: YOONA Date: 2019/11/6/006 Time: 13:56 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>獲取所有的屬性名稱及內容</title> </head> <body> <% Enumeration enu = application.getAttributeNames(); while (enu.hasMoreElements()) { String name = (String) enu.nextElement(); %> <h3><%=name%>-----><%=application.getAttribute(name)%> </h3> <% } %> </body> </html>
javax.servlet.context.tempdir----->D:\taeyeon\weblearn\target\tomcat\work\Tomcat\localhost\_ org.apache.catalina.resources----->org.apache.naming.resources.ProxyDirContext@7f6dafb ......
- 網站計數器:
<%@ page import="java.math.BigInteger" %> <%@ page import="java.io.File" %> <%@ page import="java.util.Scanner" %> <%@ page import="java.io.FileOutputStream" %> <%@ page import="java.io.FileInputStream" %> <%@ page import="java.io.PrintStream" %> <%-- Created by IntelliJ IDEA. User: YOONA Date: 2019/11/6/006 Time: 14:59 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>網站計數器</title> </head> <body> <%--瀏覽人數保存在文件中,每次訪問都會去讀取該文件中的數據,而後判斷當前用戶是否爲新用戶,來給流量加一--%> <%! Integer count = null;//建立存放瀏覽人數的對象 File file1 = null; %> <%! public Integer load(File file) {//返回當前保存的瀏覽量 try { Scanner scanner = null; file1 = new File(file + "/count.txt"); if (file.exists()) ; else { file.mkdir(); } if (file1.exists()) {//判斷當前文件是否存在 scanner = new Scanner(new FileInputStream(file1)); if (scanner.hasNext()) { count = Integer.valueOf(scanner.next()); } scanner.close(); } else { count = 0; save(file, count); } } catch (Exception e) { e.printStackTrace(); } return count; } //用來保存每一判斷後的瀏覽量 public void save(File file, Integer count) { try { if (file.exists()) ; else { file.mkdir(); } PrintStream ps = new PrintStream(new FileOutputStream(file1)); ps.println(count); ps.close(); } catch (Exception e) { e.printStackTrace(); } } %> <% String filePath = application.getRealPath("/"); File file = new File(filePath + "/file"); if (session.isNew()) { synchronized (this) { count = load(file); System.out.println(count); count = count + 1; save(file, count); } } session.setMaxInactiveInterval(1); response.setHeader("refresh","1"); %> <H2>你是第<%=count == null ? "0" : count%>個訪客!</H2> </body> </html>
config對象經常使用方法有:
方 法 | 說 明 |
---|---|
getServletContext() | 獲取Servlet上下文 |
getServletName() | 獲取servlet服務器名 |
getInitParameter() | 獲取服務器全部初始參數名稱,返回值爲java.util.Enumeration對象 |
getInitParameterNames() | 獲取服務器中name參數的初始值 |
<servlet> <servlet-name>initmsg</servlet-name> <jsp-file>/WEB-INF/config.jsp</jsp-file> <init-param> <param-name>name</param-name> <param-value>teayeon</param-value> </init-param> </servlet>
<%= config.getInitParameter("name")%>
- 不配置web.xml
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>config安全性</title> </head> <body> <h3>我在WEB-INFO下面</h3> </body> </html>
HTTP狀態404- 類型狀態報告 信息 描述 所請求的資源不可用。 Apache Tomcat / 7.0.47
- 配置了web.xml,就能夠經過虛擬路徑進行訪問了(servlet-name不能重複)。
<servlet> <servlet-name>config</servlet-name> <jsp-file>/WEB-INF/config.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>config</servlet-name> <url-pattern>/config</url-pattern> </servlet-mapping>
注意:咱們在書寫web.xml文件時,<servlet>節點必定要放在<servlet-mapping>的前面。好比:
<servlet> </servlet> <servlet-mapping> </servlet-mapping> <servlet> </servlet> <servlet-mapping> </servlet-mapping>
這樣書寫會報錯的,正確方式以下:
<servlet> </servlet> <servlet> </servlet> <servlet-mapping> </servlet-mapping> <servlet-mapping> </servlet-mapping>
方法 | 描述 |
---|---|
forward(String relativeUrlPath): | 將當前頁面轉發到另一個頁面或者Servlet組建上; |
getRequest(): | 返回當前頁面的request對象; |
getResponse(): | 返回當前頁面的response對象; |
getServetConfig(): | 返回當前頁面的servletConfig對象; |
getServletContext(): | 返回當前頁面的ServletContext對象,這個對象是全部的頁面共享的. |
getSession(): | 返回當前頁面的session對象; |
findAttribute(): | 按照頁面,請求,會話,以及應用程序範圍的屬性實現對某個屬性的搜索; |
setAttribute(): | 設置默認頁面範圍或特定對象範圍之中的對象. |
removeAttribute(): | 刪除默認頁面對象或特定對象範圍之中的已命名對象. |
這個對象主要用來訪問頁面信息,同時過濾掉大部分實現細節。
這個對象存儲了request對象和response對象的引用。application對象,config對象,session對象,out對象能夠經過訪問這個對象的屬性來導出。
pageContext對象也包含了傳給JSP頁面的指令信息,包括緩存信息,ErrorPage URL,頁面scope等。
PageContext類定義了一些字段(訪問域int類型),包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE, APPLICATION_SCOPE。它也提供了40餘種方法,有一半繼承自javax.servlet.jsp.JspContext 類。
pageContext.setAttribute(String s,Object b,int i);//s爲key,b爲value,i爲域
pageContext.removeAttribute("attrName", PAGE_SCOPE);
獲取request對象:
pageContext.getRequest();
獲取application對象:
pageContext.getServletContext();
. . . . . . . 這樣的方式就能夠等價的獲取到對象,而後使用該實例。