JSP九大內置對象詳解

JSP九大內置對象詳解

JSP內置對象(9個內置對象):
1.PageContext javax.servlet.jsp.PageContext JSP的頁面容器
2.request javax.servlet.http.HttpServletrequest 獲取用戶的請求信息
3.response javax.servlet.http.HttpServletResponse 服務器向客戶端的迴應信息
4.session javax.servlet.http.HttpSession 用來保存每個用戶的信息
5.application javax.servlet.ServletContext 表示全部用戶的共享信息
6.config javax.servlet.ServletConfig 服務器配置信息,能夠取得初始化參數
7.out javax.servlet.jsp.jspWriter 頁面輸出
8.page java.lang.object)
9.exception java.lang.Throwable
四種屬性範圍:
page(pageContext):只在一個頁面中保存屬性。 跳轉以後無效。
request:只在一次請求中有效,服務器跳轉以後有效。 客戶端跳無效
session:再一次會話中有效。服務器跳轉、客戶端跳轉都有效。 網頁關閉從新打開無效
application:在整個服務器上保存,全部用戶均可使用。 重啓服務器後無效
注意:若是設置過多的application屬性範圍會影響服務器性能。
pageContext.PAGE_SCOPE
pageContext.REQUEST_SCOPE
pageContext.SESSION_SCOPE
pageContext.APPLICATION_SCOPE
pageContext.setAttribute("name", "liuyang", pageContext.APPLICATION_SCOPE);html

  • Request經常使用的方法:
    1.01 getParameter(String strTextName) 獲取表單提交的信息。

String strName=request.getParameter("name");java

    1.02 getProtocol() 獲取客戶使用的協議。python

String strProtocol=request.getProtocol();golang

    1.03 getServletPath() 獲取客戶提交信息的頁面。web

String strServlet=request.getServletPath();編程

    1.04 getMethod() 獲取客戶提交信息的方式,get|post。數組

String strMethod = request.getMethod();
瀏覽器

    1.05 getHeade() 獲取HTTP頭文件中的accept、accept-encoding和Host的值。ruby

String strHeader = request.getHeader("accept");服務器

    1.06 getRermoteAddr() 獲取客戶的IP地址。

String strIP = request.getRemoteAddr();

    1.07 getRemoteHost() 獲取客戶機的名稱。

String clientName = request.getRemoteHost();

    1.08 getServerName() 獲取服務器名稱。

String serverName = request.getServerName();

    1.09 getServerPort() 獲取服務器的端口號。

int serverPort = request.getServerPort();

    1.10 getParameterNames() 獲取客戶端提交的全部參數的名字。

Enumeration enum = request.getParameterNames();
while(enum.hasMoreElements()){
    String s=(String)enum.nextElement();
    out.println(s);
}

  1.11 getHeaderNames()     取出所有頭信息。

  <%
  Enumeration enu = request.getHeaderNames();//取出所有頭信息
  while(enu.hasMoreElements()){
  String name = (String)enu.nextElement();
  String value = request.getHeader(name);
  %>
  <h1><%=name %>--<%=value %></h1>
  <%    
  }
  %>

 

 

 

一、request對象

request 對象是 javax.servlet.httpServletRequest類型的對象。 該對象表明了客戶端的請求信息,主要用於接受經過HTTP協議傳送到服務器的數據。(包括頭信息、系統信息、請求方式以及請求參數等)。request對象的做用域爲一次請求。

二、response對象

response 表明的是對客戶端的響應,主要是將JSP容器處理過的對象傳回到客戶端。response對象也具備做用域,它只在JSP頁面內有效。

三、session對象

session 對象是由服務器自動建立的與用戶請求相關的對象。服務器爲每一個用戶都生成一個session對象,用於保存該用戶的信息,跟蹤用戶的操做狀態。session對象內部使用Map類來保存數據,所以保存數據的格式爲 「Key/value」。 session對象的value可使複雜的對象類型,而不只僅侷限於字符串類型。

四、application對象

 application 對象可將信息保存在服務器中,直到服務器關閉,不然application對象中保存的信息會在整個應用中都有效。與session對象相比,application對象生命週期更長,相似於系統的「全局變量」。

五、out 對象

out 對象用於在Web瀏覽器內輸出信息,而且管理應用服務器上的輸出緩衝區。在使用 out 對象輸出數據時,能夠對數據緩衝區進行操做,及時清除緩衝區中的殘餘數據,爲其餘的輸出讓出緩衝空間。待數據輸出完畢後,要及時關閉輸出流。

六、pageContext 對象

pageContext 對象的做用是取得任何範圍的參數,經過它能夠獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的建立和初始化都是由容器來完成的,在JSP頁面中能夠直接使用 pageContext對象。

七、config 對象

config 對象的主要做用是取得服務器的配置信息。經過 pageConext對象的 getServletConfig() 方法能夠獲取一個config對象。當一個Servlet 初始化時,容器把某些信息經過 config對象傳遞給這個 Servlet。 開發者能夠在web.xml 文件中爲應用程序環境中的Servlet程序和JSP頁面提供初始化參數。

八、page 對象

page 對象表明JSP自己,只有在JSP頁面內纔是合法的。 page隱含對象本質上包含當前 Servlet接口引用的變量,相似於Java編程中的 this 指針。

九、exception 對象

exception 對象的做用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中才能夠被使用,在通常的JSP頁面中使用該對象將沒法編譯JSP文件。excepation對象和Java的全部對象同樣,都具備系統提供的繼承結構。exception 對象幾乎定義了全部異常狀況。在Java程序中,可使用try/catch關鍵字來處理異常狀況; 若是在JSP頁面中出現沒有捕獲到的異常,就會生成 exception 對象,並把 exception 對象傳送到在page指令中設定的錯誤頁面中,而後在錯誤頁面中處理相應的 exception 對象。

====================================================================================================================================

JSP有九個內置對象(又叫隱含對象),不須要預先聲明就能夠在腳本代碼和表達式中隨意使用

JSP九大內置對象分爲四類:

  • 輸入輸出對象:out對象、response對象、request對象
  • 通訊控制對象:pageContext對象、session對象、application對象
  • Servlet對象:page對象、config對象
  • 錯誤處理對象:exception對象

九種對象簡介:

  1. out對象:用於向客戶端、瀏覽器輸出數據。
  2. request對象:封裝了來自客戶端、瀏覽器的各類信息。
  3. response對象:封裝了服務器的響應信息。
  4. exception對象:封裝了jsp程序執行過程當中發生的異常和錯誤信息。
  5. config對象:封裝了應用程序的配置信息。
  6. page對象:指向了當前jsp程序自己。
  7. session對象:用來保存會話信息。也就是說,能夠實如今同一用戶的不一樣請求之間共享數
  8. application對象:表明了當前應用程序的上下文。能夠在不一樣的用戶之間共享信息。
  9. pageContext對象:提供了對jsp頁面全部對象以及命名空間的訪問。

一.out對象

out對象是一個輸出流,用來向瀏覽器輸出信息,除了輸出各類信息外還負責對緩衝區進行管理。

out對象方法介紹:

方法名

說明

print或println

輸出數據

newLine

輸出換行字符

flush

輸出緩衝區數據

close

關閉輸出流

clear

清除緩衝區中數據,但不輸出到客戶端

clearBuffer

清除緩衝區中數據,輸出到客戶端

getBufferSize

得到緩衝區大小

getRemaining

得到緩衝區中沒有被佔用的空間

isAutoFlush

是否爲自動輸出

二.request對象

request對象封裝了從客戶端到服務器發出的請求信息。

request對象方法介紹:

 

方法名

說明

isUserInRole

判斷認證後的用戶是否屬於某一成員組

getAttribute

獲取指定屬性的值,如該屬性值不存在返回Null

getAttributeNames

獲取全部屬性名的集合

getCookies

獲取全部Cookie對象

getCharacterEncoding

獲取請求的字符編碼方式

getContentLength

返回請求正文的長度,如不肯定返回-1

getHeader

獲取指定名字報頭值

getHeaders

獲取指定名字報頭的全部值,一個枚舉

getHeaderNames

獲取全部報頭的名字,一個枚舉

getInputStream

返回請求輸入流,獲取請求中的數據

getMethod

獲取客戶端向服務器端傳送數據的方法

getParameter

獲取指定名字參數值

getParameterNames

獲取全部參數的名字,一個枚舉

getParameterValues

獲取指定名字參數的全部值

getProtocol

獲取客戶端向服務器端傳送數據的協議名稱

getQueryString

獲取以get方法向服務器傳送的查詢字符串

getRequestURI

獲取發出請求字符串的客戶端地址

getRemoteAddr

獲取客戶端的IP地址

getRemoteHost

獲取客戶端的名字

getSession

獲取和請求相關的會話

getServerName

獲取服務器的名字

getServerPath

獲取客戶端請求文件的路徑

getServerPort

獲取服務器的端口號

removeAttribute

刪除請求中的一個屬性

setAttribute

設置指定名字參數值

request對象演示:

完成一個簡單的用戶註冊信息界面,將註冊信息發送到歡迎界面上。

用戶註冊界面表單設置:

<form action="do_register.jsp" method="post">
    用戶名:
    <input type="text" name="userName"><br>
    技能:
    <input type="checkbox" name="skills" value="java">java
    <input type="checkbox" name="skills" value="python">python
    <input type="checkbox" name="skills" value="ruby">ruby
    <input type="checkbox" name="skills" value="golang">golang
    <br>
    <input type="submit" value="提交">
    <input type="reset" value="重置">
</form>

用戶註冊信息處理界面使用getParameter方法將用戶的表單信息提取出來

String name=request.getParameter("userName");
String[] skillArr=request.getParameterValues("skills");

將skillArr數組轉換成字符串:

String skills="";
if (skillArr!=null&&skillArr.length>0){
    for (String skill:skillArr
         ) {
        skills=skills+skill+" ";
    }
}

將數據使用setAttribute保存起來

request.setAttribute("userName",name);
request.setAttribute("skills",skills);

使用jsp的forword指令將頁面跳轉到welcome.jsp

<jsp:forward page="welcome.jsp"></jsp:forward>

setAttribute和getAttribute用於在web組件之間共享信息
getparameter方法用於接收服務器經過set和post方法傳輸的數據
注意沒有setparameter方法

 

welcome.jsp頁面配置:

<html>
<head>
    <title>技能展現界面</title>
</head>
<body>
信息展現界面:<br><br>
<%--<%=%>這是表達式<%%>這是jsp程序處理--%>
姓名:<%=request.getAttribute("userName")%><br>
技能:<%=request.getAttribute("skills")%>
</body>
</html>

 

三.response對象

 

response對象主要用於對客戶端的請求進行迴應。
以及處理http的鏈接信息,例如設置http文件頭,設置cookie對象等。

response對象方法:

方法名

說明

addCookie

添加一個Cookie對象

addHeader

添加Http文件指定名字頭信息

containsHeader

判斷指定名字Http文件頭信息是否存在

encodeURL

使用sessionid封裝URL

flushBuffer

強制把當前緩衝區內容發送到客戶端

getBufferSize

返回緩衝區大小

getOutputStream

返回到客戶端的輸出流對象

sendError

向客戶端發送錯誤信息

sendRedirect

把響應發送到另外一個位置進行處理

setContentType

設置響應的MIME類型

setHeader

設置指定名字的Http文件頭信息

 
 

四.session對象

session對象:是一個jsp內置對象,它在第一個jsp被裝載時自動建立,完成會話期管理。從一個客戶打開瀏覽器並鏈接到服務器開始,到客戶關閉瀏覽器離  開這個服務器結束(或者超時),被稱爲一個會話。當一個客戶訪問一個服務器時,可能會在這個服務器的幾個頁面之間切換,服務器應當經過某種辦法知道這是一個客戶,就須要建立session對象。

http是無狀態的鏈接協議,須要使用session來存放用戶每次的登錄信息

session對象方法:

方法名

說明

getAttribute

獲取指定名字的屬性

getAttributeNames

獲取session中所有屬性名字,一個枚舉

getCreationTime

返回session的建立時間

getId

獲取會話標識符

getLastAccessedTime

返回最後發送請求的時間

getMaxInactiveInterval

返回session對象的生存時間單位千分之一秒

invalidate

銷燬session對象

isNew

每一個請求是否會產生新的session對象

removeAttribute

刪除指定名字的屬性

setAttribute

設定指定名字的屬性值

接下來經過一個登錄的小例子來演示下session對象的應用:

登錄表單設置:

<form action="do_login.jsp" method="post">
    userName:<input type="text" name="userName"><br/>
    password:<input type="password" name="password"><br/>
    <input type="submit" value="submit">
    <input type="reset" value="reset">
</form>

登錄邏輯處理界面,使用getParameter獲取到用戶名和密碼:

String userName=request.getParameter("userName");
String password=request.getParameter("password");

對用戶名和密碼進行判斷:

if (userName!=null&&password!=null){
    session.setAttribute("userName",userName);
    response.setHeader("refresh","2;URL=welcome.jsp");
}

在歡迎界面使用getAttribute獲取當前的用戶名:

<%if(session.getAttribute("userName")!=null){%>
<%--getAttribute方法是使用指定的key獲取session中的value值。獲取到的是一個object對象
在使用的時候須要根據具體的類型進行類型轉換。
這裏取出的是一個字符串,直接調用會使用他的toString方法,所以不用進行轉換--%>
歡迎 <%=session.getAttribute("userName")%>
<a href="logout.jsp">註銷</a>
<%}else{%>
請先登錄
<a href="login.jsp">登錄</a>
<%}%>

 

判斷session對象是不是新建立

<%if (session.isNew()){%>

<br/>
<br/>
歡迎新用戶
<%}else{%>
<br/>
<br/>
歡迎老用戶
<%}%>

 

在登出界面裏清除session對象信息,並跳轉到歡迎界面中去:

session.invalidate();//清除掉session對象
response.setHeader("refresh","2;URL=welcome.jsp");

五.application對象

application對象表明當前的應用程序。存在於服務器的內存空間中。
應用一旦啓動便會自動生成一個application對象。若是應用沒有被關閉,
此application對象便一直會存在。直到應用被關閉
application的生命週期比session更長。
應用:
爲多個用戶共享全局信息。好比當前的在線人數等。

application對象方法:

方法名

說明

getAttribute

獲取應用對象中指定名字的屬性值

getAttributeNames

獲取應用對象中全部屬性的名字,一個枚舉

getInitParameter

返回應用對象中指定名字的初始參數值

getServletInfo

返回Servlet編譯器中當前版本信息

setAttribute

設置應用對象中指定名字的屬性值

可使用application對象來實現頁面訪問次數記錄的功能:

<%
    Object obj=application.getAttribute("counter");
    if (obj==null){
        application.setAttribute("counter",new Integer(1));
        out.println("該頁面被訪問了1次<br/>");
    }else {
        int countValue=new Integer(obj.toString());
        countValue++;
        out.println("該頁面被訪問了"+countValue+"次<br/>");
        application.setAttribute("counter",countValue);//java會自動裝箱

    }
%>

 

六.config對象

config對象表示當前jsp程序的配置信息
通常項目中,jsp被用做模版技術,也就是位於表示層
而位於表示層的jsp文件通常是不須要配置信息的
因此此對象在jsp程序中其實不多使用
config對象是servletConfig類的一個實例。

config對象方法:

方法名

說明

getServletContext

返回所執行的Servlet的環境對象

getServletName

返回所執行的Servlet的名字

getInitParameter

返回指定名字的初始參數值

getInitParameterNames

返回該JSP中全部的初始參數名,一個枚舉

 

 

七.page對象

page對象有點相似與java編程中的this指針,他指向了當前jsp頁面自己。
page對象是java.lang.object類的一個實例

page對象擁有一個toString方法,下面是官方定義的方法介紹:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
包名+類名+@+hashcode值

 

page對象的方法:

方法名

說明

toString

將當前項目的信息打印出來

getClass

返回當前的object類

hashCode

返回page對象的hashCode值

equals

用於比較對象是否與當前對象相同

八.exception對象

exception對象表示jsp引擎在執行代碼時拋出的異常
若是想要使用exception對象,那麼須要配置編譯指令的isErrorPage屬性爲true

即在頁面指令中設置:<%@page isErrorPage=「true」%>

九:pageContext對象

pageContetx對象是jsp頁面中全部對象功能的最大集成着。
使用他能夠訪問全部的jsp內置對象。

pageContext對象方法:

方法名

說明

forward

重定向到另外一頁面或Servlet組件

getAttribute

獲取某範圍中指定名字的屬性值

findAttribute

按範圍搜索指定名字的屬性

removeAttribute

刪除某範圍中指定名字的屬性

setAttribute

設定某範圍中指定名字的屬性值

getException

返回當前異常對象

getRequest

返回當前請求對象

getResponse

返回當前響應對象

getServletConfig

返回當前頁面的ServletConfig對象

getServletContext

返回全部頁面共享的ServletContext對象

getSession

返回當前頁面的會話對象

相關文章
相關標籤/搜索