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);

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

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

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

String strProtocol=request.getProtocol();

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

String strServlet=request.getServletPath();

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

String strMethod = request.getMethod();

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

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>
  <%    
  }
  %>

 

 

 

1、request對象

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

2、response對象

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

3、session對象

session 對象是由服務器自動創建的與用戶請求相關的對象。服務器為每個用戶都生成一個session對象,用於保存該用戶的信息,跟蹤用戶的操作狀態。session對象內部使用Map類來保存數據,因此保存數據的格式為 “Key/value”。 session對象的value可以使復雜的對象類型,而不僅僅局限於字符串類型。

4、application對象

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

5、out 對象

out 對象用於在Web瀏覽器內輸出信息,並且管理應用服務器上的輸出緩沖區。在使用 out 對象輸出數據時,可以對數據緩沖區進行操作,及時清除緩沖區中的殘余數據,為其他的輸出讓出緩沖空間。待數據輸出完畢后,要及時關閉輸出流。

6、pageContext 對象

pageContext 對象的作用是取得任何范圍的參數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的創建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。

7、config 對象

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

8、page 對象

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

9、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

返回當前頁面的會話對象

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM