客戶端請求編碼POST/GET方式----RequestDispatcher----Cookie

一、客戶端請求參數的編碼:瀏覽器當前是什麼編碼就以什麼編碼傳遞數據
通知服務器請求參數使用的編碼 
request.setCharacterEncoding("UTF-8")只對Post有效
方式一、
針對get方式的請求中文參數,手工編碼
String desc = request.getParameter("desc");
get方式服務器都用ISO-8859-1去解碼


new String(desc.getBytes("ISO-8859-1"),"UTF-8");
需要對每一個請求參數都進行編碼


方式二、
解決get方式請求參數的中文編碼,可以修改Tomcat的配置
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8"/>
不建議使用,依賴服務器


二、ServletRequest對象也是一個域對象,即其內部維護了一個Map對象


三、轉發
由A轉向B,A稱之爲源資源,B稱之爲目標資源


源資源和目標資源共享請求和響應對象。
源資源轉發前會清空響應對象緩存中的內容。


轉發前,不要刷新或關閉源資源的輸出流。
即:源資源的所有輸出都無效。


四、RequestDispatcher接口
1、作用:
a、實現轉發
forward(ServletRequest request, ServletResponse response))
b、實現包含
include(ServletRequest request, ServletResponse response)
A要包含B,A稱之爲源資源,B稱之爲目標資源
特點:A和B的所有輸出會合並,由A來顯示
A和B共享request和response對象


目標組件設置的所有響應頭無效








2、該對象實例的獲取
a、SerlvetRequest.getRequestDispatcher(String path):
參數path,路徑的寫法上
path可以使用絕對路徑,也可以使用相對路徑
絕對路徑以"/"開頭,代表當前web應用
b、SerlvetContext.getRequestDispatcher(String path):
參數path,必須以"/"開頭,即只能使用絕對路徑


五、各種url地址的寫法
5.1相對路徑
不以“/”開頭
5.2絕對路徑
以"/"開頭
開發中建議使用絕對路徑
問題:絕對路徑寫法中,何時加項目名稱,何時不加項目名稱
路徑如果是給瀏覽器用的,需要加項目名稱;服務器用的,不需要加項目名稱


/day06是應用名稱
request.getReqeustDispatcher(String path): 不需要加   / 代表當前應用    /servlet/ServletDemo1
ServletContext.getRealPath(String path):  不需要    / 代表當前應用
form表單的action:要加。
HttpServletResponse.sendRedirect(String path):需要
href 需要
img src 需要




六、會話技術
1、Cookie:客戶端技術
Cookie是服務器Servlet向客戶端傳遞的一段小數據。
保存客戶端。再訪問其他服務器資源時會從客戶端傳遞給服務端。
cookie屬於某個特定客戶端的。


http://www.163.com/app1/username=admin


Cookie的屬性:
name:Cookie的名稱。必須的
value:單一的值。必須的
comment:可選的。註釋
path:可選的。路徑                    /app1

/app1
訪問的資源路徑是http://www.163.com/app2/1.html 不會帶cookie過來
訪問的資源路徑是http://www.163.com/app1/servlet/s/s  會帶cookie過來

默認值:/day06/servlet
訪問的地址是:http://localhost:8080/day06/1.jsp



domain:可選的。域名   itheima.com    http://www.163.com
如果訪問的地址是http://www.itcast.cn/myapp/servlet1
訪問的地址是http://www.163.com/app1
默認值:當前寫cookie的網站域名
age:可選的。生命值
默認生命值是瀏覽器進程。
version:可選的。版本號


向客戶端寫一個Cookie:HttpServletResponse.addCookie(Cookie c)
相當於向客戶端寫了一個響應頭Set-Cookie



服務器通過HttpServletRequest.getCookies() 獲取客戶端提交過來的Cookie。



相關信息:瀏覽器對一個網站最多能存20個cookie。
 瀏覽器最多能存300個Cookie。每一個Cookie不能超過4KB

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