1. 程式人生 > >JSP復習(part 3 )

JSP復習(part 3 )

響應頭 utf 瀏覽器 聲明 數據 thead code 直接 web服務器

3.4.4

request對象提供了一些用來獲取客戶信息的方法,利用這些方法,可以獲取客戶端的IP地址 協議等有關信息

3.5

request對象和response對象相對應,用於響應客戶請求,由服務器端向客戶端輸出信息。當服務器向客戶端傳送數據時,JSP容器會自動創建RESPONSE對象並

將信息封裝到response對象中,當JSP容器處理完請求後,request對象會被銷毀,response和request綜合起來完成動態網頁的交互功能

3.5.1

原理
1web容器(tomcat等)會傳入與web容器相關的HttpServletRequest和HttpServletResponse的實現。
2每一次瀏覽器的請求web服務器都會創建一個新的HttpServletReques和ServletResponse對象,並且
這兩個對象的聲明周期僅限於web容器內。
response對象常用方法
1 setStatues
2 setHeader
3 getWriter
4 getOutputStream
response常見應用

1)向瀏覽器輸出數字
原理:
無論是ServletOutputStream對象還是ServletWrite對象的write(int c);方法
都會自動將c去查詢iso8859-1編碼表,並取出相應的字符傳送到客戶端,
所以輸入的是數字,客戶端得到的卻是對應的字符。
解決辦法:
將數字轉換成字符串,再通過字符串的形式進行輸出。
又因為OutputStream對象write()方法參數中不支持對字符串的輸出,所以需要通過getBytes方法進行轉換
而ServletWriter的write()方法參數支持字符串的輸出,所以可以直接輸出,不必轉換

2)向瀏覽器輸出中文字符
原因:
1byte[] getBytes();方法在進行編碼的時候會按照當前的編碼方式進行編碼
2byte[] getBytes(String charset);方法在進行編碼的時候會按照指定的編碼方式進行編碼
3而iso8859-1不支持中文字符的編碼,所以,在進行編碼的時候需要指定能夠編碼中文字符的編碼方式。
註意:在以字符流方式輸出中文到客戶端,需要提前告訴客戶端用utf-8去接受。

3)設置響應頭發送給客戶端
當遇到中文字符的時候,需要使用URLEncoder類的靜態方法使用指定的編碼機制將字符串轉換為客戶端瀏覽器能正確解析的編碼方式。
方法原型:
String encode(String s, String enc);
code:
response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(file.getName(), "utf-8"));

JSP復習(part 3 )