客戶端請求編碼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
通知服務器請求參數使用的編碼
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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.