1. 程式人生 > >JSP學習筆記(二)

JSP學習筆記(二)

JSP內建物件

  1. request物件
  2. response物件
  3. session物件
  4. application物件
  5. out物件

有些物件不用宣告就可以在JSP頁面的Java程式片和表示式部分使用,這就是JSP的內建物件

1.request物件

request物件是實現了ServletRequest介面類的一個例項

[1].HTTP請求

HTTP通訊協議是使用者與伺服器之間一種提交資訊與響應資訊的通訊協議,其中request封裝了使用者提交的資訊,即請求。
HTTP請求包括請求行頭域和可能的資訊體,如:

GET/hello.htm HTTP/1.1
Host: localhost:8080
accept-encoding: gzip, deflate

第一行是請求行,其中GET是請求行規定的請求方法,hello.htm是請求的資源,HTTP/1.1是使用的HTTP協議的版本。
第二行是頭(header),是請求資原始檔所在的地址。
第三行也是頭(header),是告訴伺服器端:我的瀏覽器支援gzip和deflate格式的網頁壓縮格式哦

[2].獲取使用者提交的資訊

<form action = "abc.jsp" method = "post">
			<input type = "text" name = "boy" value = "ok">
			<input type = "submit" value = "提交">
</form>

使用者向abc.jsp提交表單,而我們在abc.jsp中使用:
request.getParameter(“boy”)就可以獲取name為boy的文字輸入框的內容

上一章中的 <jsp: param name = “” value = “”> 也可以通過這種方式來獲取

為了防止獲取的中文資訊亂碼,可以對request設定編碼:

request.setCharacterEncoding("utf-8");

2.response物件

response物件對使用者的請求作出動態響應,向用戶傳送資料

[1]動態響應contentType屬性

response.setContentType("application/msword; charset = utf-8");

例如讓使用者點選儲存當前頁面為word文件,則在使用者點選後設置該屬性,此時使用者瀏覽器就會啟用word來顯示或儲存當前頁面

[2]HTTP響應

響應由狀態行開始,可以包含幾個頭即可能的資訊體,如:
請求成功,則返回"HTTP/1.1 200 OK"
請求失敗,則返回"HTTP/1.1 404 Object Not Found"

[3]response重定向

response.sendRedirect(“url”);即跳轉頁面到url

注:詳細過程:redirect 會首先發一個response給瀏覽器,然後瀏覽器收到這個response後再發一個requeset給伺服器,伺服器接收後發新的response給瀏覽器。這時頁面從瀏覽器獲取來的是一個新的request。這時,在原來跳轉之前的頁面用request.setAttribute存的東西都沒了,如果在當前的新頁面中用request.getAttribute取,得到的將會是null。這種方式的跳轉會改變瀏覽器的位址列中的url地址。

addHeader(String head,String value);
setHeader(String head,String value);
用來動態新增新的響應頭和頭的值,如果新增的頭已經存在,則覆蓋

3.session物件

session是實現了HttpSession介面類的一個例項

[2]

當一個使用者首次訪問Web服務目錄中的一個JSP頁面時,Tomcat伺服器產生一個session物件,這個物件呼叫相應的方法可以儲存使用者在訪問該Web服務目錄中各頁面期間提交的各種資訊,如姓名和性別等等。
這個session物件被分配了一個String型別的id號,Tomcat伺服器同時將這個id號傳送到使用者端,存放在使用者的Cookie中。
不同使用者之間的session物件互不相同

[3]session物件與URL重寫

如果使用者端不支援或禁用了Cookie,那麼,JSP頁面可以通過URL重寫來實現session物件的唯一性,就是當用戶從一個頁面重新連線到一個頁面時,通過向這個新的URL新增引數,把session物件的id傳遞過去,例如如果想跳轉到second.jsp頁面,程式碼實現如下:

String str = response.encodeRedirectURL("second.jsp");  //重寫
response.sendRedirect(str);

4.application物件

不同Web服務目錄下的application不同

5.out物件

out.println和out.print的區別是println會向快取區寫入一個換行,但是瀏覽器不識別該換行