Java JSP 內置對象

前8個內置對象的程序實例:

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

  <%
    
    Date date = new Date();
    //System.out.println(date);
  
  %>
  
  <%
    
   // 1. request **
   String name = request.getParameter("name");
   System.out.println(name);
   
   //2. response
   System.out.println(response instanceof HttpServletResponse);
   
   //3. pageContext **
   ServletRequest servletRequest = pageContext.getRequest();
   System.out.println( request == servletRequest  ) ;
   
   //4. sesison **
   System.out.println(session.getId());
   
   //5. application **
   System.out.println( application.getInitParameter("password") ); 
   
   //6. config
   System.out.println( config.getInitParameter("test") ); 
   
   //7. out **
   out.println("name 的值 :" + request.getParameter("name") )  ;
   out.println( " <br><br>  " );
   out.println("初始化 password 的值 :" + application.getInitParameter("password") )  ;
   
   //8. page
   out.println( " <br><br>  " );
   out.println( this );
   out.println( " <br><br>  " );
   out.println( page );
   
   
   
  
  %>

</body>
</html>



Request:請求對象

Respone:響應對象

Session:會話對象

Application:應用程序對象

Out:輸出對象

Config:配置對象

Page:頁面對象

PageContext:頁面上下文對象

Exception:例外對象

 

request對象

request 對象是 javax.servlet.httpServletRequest類型的對象。該對象代表了客戶端的請求信息,主要用於接受通過HTTP協議傳送到服務器的數據。例如我們在FORM表單中填寫的信息等,是最常用的對象。常用的方法有:getParameter、getAttribute,getParameterNames 和getParameterValues通過調用這幾個方法來獲取請求對象中所包含的參數的值。

getParameter(Strings) : 獲取表單提交的信息
                  String  s = request.getParameter("name");

getAttribute(Strings): 獲取指定屬性的值,如該屬性值不存在返回Null

                 String  s=request.getAttribute(“name”);

setAttribute(String key,Object obj):設置指定名字參數值

                 Strings=request.setAttribute(“zhuo”,name);
getProtocol() :獲取客戶使用的協議

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

getMethod() :獲取客戶提交信息的方式  get或post
               String  s = request.getMethod();
getHeader() :獲取HTTP頭文件中的accept、DontTrackMeHere和host的值
                String  s = request.getHeader("accept");

getRemoteAddr() :獲取客戶的ip地址
getServerHost() :獲取客戶機的名稱

getServerName() :獲取服務器名稱
getServerPort() :獲取服務器的商口號
getPamameterNames():獲取客戶端提交的所有參數的名字
                Enumeration  enum = request.getParameterNames();
                while(enum.hasMoreElements()){
                           String  s = (String)enum.nextElement();
                           out.println(s);      
                }

getRequestURI():獲得發出請求字符串的客戶端地址。

getSession(Boolean create):返回和當前客戶端請求相關聯的HttpSession對象。如果當前客戶端請求沒有和任何HttpSession對象關聯,那麼如果create變量爲true,則創建一個HttpSession對象並返回,反之返回null。一般與setArribute連用,例如:request.getSession().setAttribute(“zhuo”,name);

getQuertString():返回查詢字符串,該字符串由客戶端以get方法向服務器端傳送。查詢字符串出現在頁面請求“?”的後面,例如:http://www.njnu.edu.cn/hello.jsp?name=Jack。

getContentType():獲取客戶端請求的MIME類型。如果無法得到該請求的MIME類型,則返回-1。

getParameterValues(String name):獲得指定參數的所有值,參數由name指定。一般應用與要取得多個值當中,比如數組。

      String[] goodsId=request.getParameterValues("goodsId");
      String[] newNum=request.getParameterValues("newNum");

 

 

session對象

在頁面的page指令加上session="true" 或缺省 情況下以及在servlet中使用request.getSession();的方式進行創建。超時或服務停止時,session結束。(一個用戶對應一個session對象)
              什麼是session對象? ----- 它是一個jsp內置對象,它在第一個jsp被裝載時自動創建,完成會話期管理。從一個客戶打開瀏覽器並連接到服務器開始,到客戶關閉瀏覽器離  開這個服務器結束(或者超時),被稱爲一個會話。當一個客戶訪問一個服務器時,可能會在這個服務器的幾個頁面之間切換,服務器應當通過某種辦法知道這是一個客戶,就需要創建session對象。
             session對象的ID -----當一個客戶首次訪問服務器上的一個jsp頁面時,jsp引擎會產生一個session對象,同時分配一個String類型的的ID號,jsp引擎同時將這個ID號發送到客戶端,存放在cookie中,這樣,session對象直到客戶關閉瀏覽器後,服務器端,該客戶的session對象纔會消失,會並,和客戶的會話對應關係消失。當客戶重新打開瀏覽器再連接到該服務器時,服務器爲該客戶再創建一個新的session對象。

getAttribute(String name):獲得指定名字的屬性,如果該屬性不存在,將會返回null。

getAttributeNames():返回session對象中存儲的每一個屬性對象,結果集是一個Enumeration類的實例。

getCreationTime():返回session對象被創建的時間,單位爲毫秒。

getId():返回session對象在服務器端的編號。每生成一個session對象,服務器都會給它一個編號,而且這個編號不會重複,這樣服務器才能根據編號來識別session,並且正確地處理某一特定的session及其提供的服務。

getLastAccessedTime():返回當前session對象最後一次被操作的時間,單位爲毫秒。

getMaxInactiveInterval ():獲取sessionn對象的生存時間,單位爲秒。

setMaxInactiveInterval (int interval):設置session對象的有效時間(超時時間),單位爲秒。在網站的實際應用中。

例如:設置有效時間爲200秒。

       <%session.setMaxInactiveInterval(200);%>

removeAttribute(String name):刪除指定屬性的屬性值和屬性名。

setAttribute(String name,Java.lang.Object value):設定指定名字的屬性,並且把它存儲在session對象中。

invalidate():註銷當前的session對象。

 

 

respone對象

對客戶的請求做出動態響應,向客戶端發送數據。響應客戶請求時創建,響應結束時銷燬。(一次響應產生一個response對象)

setRedirect(url):把響應發送到另一個指定的頁面(url)進行處理。這是最常用的一個方法

sendError(int sc):向客戶端發送錯誤信息。例如:“505指示服務器內部錯誤”, “404指示網頁找不到的錯誤”

addHeader(String name,String value):添加http頭文件,該Header將會傳到客戶端去,如果有同名的Header存在,那麼原來的Header會被覆蓋。

setHeader(String name,String value):設定指定名字的http文件頭的值,如果該值存在,那麼它將會被新的值覆蓋。

containsHeader(String name):判斷指定名字的http文件頭是否存在,並返回布爾值。

flushBuffer():強制將當前緩衝區的內容發送到客戶端。

addCookie(Cookie cookie):添加一個Cookie對象,用來保存客戶端的用戶信息,可以用request對象的getCookies()方法獲得這個Cookie。


 

out對象

Out對象是一個輸出流,用來向客戶端輸出數據,就是現實在瀏覽器的頁面上,out對象用於各種數據的輸出

最常用的爲out.print()和out.println()用來輸出各種類型的數據

out.close();關閉流

out.getBufferSize();獲得當前緩存區大小可以用下面的語句

out.getRemaining();要獲得剩餘緩存區大小。

 

 

config對象

config對象是ServletConfig類的一個對象,存放着一些Servlet初始化信息,且只有在JSP頁面範圍內纔有效。當一個servlet初始化時,容器把某些信息通過此對象傳遞給servlet其常用方法如下:

getInitParameter(name):取得指定名字的Servlet初始化參數值。

getInitParameterNames():取得Servlet初始化參數列表,返回一個枚舉實例。

getServletContext():取得Servlet上下文(ServletContext)。

 getServletName():取得生成的Servlet的名字。

 

 

pageContext對象

pageContext對象提供存取所有關於jsp程序執行時期所要用到的屬性方法,她被封裝成java.servlet.jsp.pageContext接口,它的創建和初始化都是容器來完成的,jsp頁面裏可以直接使用pageContext對象的句柄,pageContext對象的getXXX()、setXXX()和findXXX()方法可以用來根據不同的對象範圍實現對這些對象的管理

getAttribute():返回與指定範圍內名稱有關的變量或null,例如:

forward(String relativeUrlPath):把頁面重定向到另一個頁面或者Servlet組件上。

findAttribute():用來按照頁面請求、會話以及應用程序範圍的順序實現對某個已經命名屬性的搜索。

getException():返回當前的exception對象。

setAttribute():用來設置默認頁面的範圍或者指定範圍之中的已命名對象。

removeAttribute():用來刪除默認頁面範圍或指定範圍之中已命名的對象。

 

 

page對象

page對象代表JSP頁面本身,只是this引用的一個代名詞。對JSP頁面創建者通常不可訪問,所以一般很少用到該對象。

 

 

exception對象

要使用exception對象,則頁面的isErrorPage必須指明爲true在Java中利用明爲try/catch的關鍵字來處理異常情況,如果在JSP頁面中沒有捕捉到的異常,就會生成exception對象,並把這個exception對象傳送到在page指令中設定的錯誤頁面中,然後在錯誤提示頁面中處理相應的exception對象

getMessage():獲取異常消息字符串
getLocalizeMessage():獲取本地化語言的異常錯誤
printStackTrace():顯示異常的棧跟蹤軌跡
toString():返回關於異常錯誤的簡單消息描述
fillInStackTrace():重寫異常錯誤的棧執行軌跡

 

 

 

application對象

Application對象是用力保存java web應用程序中的使用的變量,所有用戶不論何時皆可存取使用這些變量。Application對象最大的特點是沒有所謂的生命週期的。生命週期是指客戶端的瀏覽器是否被關閉,application對象都存在於主機上。直到服務器關閉後,application對象才失效。

getAttribute(String name):返回由name指定名字的application對象的屬性的值。返回值是一個Object對象,如果沒有,則返回null。

getAttributeNames():返回所有application對象屬性的名字,結果集是一Enumeration類型的實例。

getInitParameter(String name):返回由name指定名字的application對象的某個屬性的初始值,如果沒有參數,就返回null。

getServerInfo():返回Servlet編譯器當前版本的信息。

setAttribute(String name, Object obj):將參數Object指定的對象obj添加到application對象中,併爲添加的對象指定一個屬性。

removeAttribute(String name):刪除一個指定的屬性。


request、session對象和application是有區別的,一次請求代表了一個request對象,一個客戶端對應一個session對象,就是多個頁面之間可以共享;而application對象,爲多個應用程序保存信息,就是多個瀏覽器都是共享這個對象的。

requestsessionapplication的區別演示。
首先建立項目Application_Session_Request。在項目中建立一個如下的JSP頁面first.jsp,用於用這三個對象保存數據。
[html] view plaincopy
  1. <%@ page language = "java" pageEncoding = "gb2312"%>  
  2. <html>  
  3. <body>  
  4.     <%  
  5.         request.setAttribute("request","保存在Request中的內容");  
  6.         session.setAttribute("session","保存在Session中的內容");  
  7.         application.setAttribute("application","保存在Application中的內容");  
  8.       %>  
  9.        <jsp:forward page="second.jsp"></jsp:forward>  
  10. </body>  
  11. </html>  

然後再建立另一個JSP頁面second.jsp,用於獲取這三個對象保存的值。
[html] view plaincopy
  1. <%@ page language="java" pageEncoding="gb2312"%>  
  2. <html>  
  3.     <head>  
  4. </head>  
  5. <body>  
  6.       <%  
  7.         out.println("request:"+(String)request.getAttribute("request")+"<br>");  
  8.         out.println("session:"+(String)session.getAttribute("session")+"<br>");  
  9.         out.print("application:"+(String)application.getAttribute("application")+"<br>");  
  10.       %>  
  11. </body>  
  12. </html>  

部署運行,打開瀏覽器,輸入http://localhost:8080/Application_Session_Request/first.jsp,會發現這三個對象保存的內容都能取出,如圖所示:



在瀏覽器中輸入http://localhost:8080/Application_Session_Request/second.jsp,結果如圖所示:





如果再重新打開一個瀏覽器,直接輸入如上圖一樣的URL,由於不是同一會話,request對象及session對象都失效了,僅application對象仍然有效,如圖所示。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章