Servlet深入之請求HttpServletRequest


HttpServletRquest
1.獲取客戶機信息
URI與URL的區別,URI是包含URL的,URL一定是一個完整的路徑,URI可以是一個相對路徑也可以寫成完整路徑
getRequestURL();
getRequestURI();
getQueryString();獲得get方式提交的查詢串,即提交路徑?后的參數。
getRemoteAddr();獲取客戶端IP地址
getContextPath();獲取訪問web工程的虛擬目錄名稱
getMethod();獲取請求方式
getReuqestURI.subString(request.getContextPath().length());獲取訪問資源路徑

2.獲取客戶機頭信息
getHeader(name);根據名稱獲取請求的頭信息內容
getHeaders(name);對於一個頭信息有多個值就通過這個方法返回一個Enumeration集合
getHeaderNames();獲取所有頭信息的Enumeration集合

3.獲取請求參數
請求參數即用戶提交服務器的一些數據如鏈接?后的參數,表單提交的參數。
getParameter(name);獲取參數值
getParameterValues(name);通過name獲得多只checkbox值數組
getParameterNames();獲取所有name的Enumeration集合
getParameterMap()獲取請求參數的map集合
在獲取請求參數后進行處理時都需要經過判斷進行非空校驗
如if(username!=null&&username.trim.length()>0)

處理請求中文亂碼,
數據的傳輸都是以字節的方式實現的,需要在兩端保持編碼與解碼的一致性。
request.setCharaterEncoding("");//對於post請求。
而get請求方式可以修改tomcat解碼字符集 conf/server.xml中配置,也可以手動進行編碼解碼
username=URLEncoding.encode(username,"");對數據進行指定編碼
username=URLDecoder.decode(username,"");對數據進行指定解碼
也可以寫成username=new String(username.getBytes(),"","");

特殊字符轉義
+表示空格
%w2B表示+號
%2F表示正斜杠/
%3F表示問號?
%25表示百分號%
%23表示#號
%26表示&分割參數符號

利用請求域轉發傳遞對象
HttpServletRequest和ServletContext一樣都是一個數據域對象,可以用來存儲數據。
兩者的區別是在存活時間不一樣,請求存活的時間是由響應的結束控制的,而ServletContext的村說時間是由服務器的啟動與停止控制的。可以通過請求域轉發傳遞對象,是因為請求可以在多個Servlet之間進行傳遞,而響應就代表一次請求的處理結束。
在AServlet中
request.setArrtibute(name,value)
RequestDispatcher dispatcher=request.getRequestDispatcher(ServletUrl);//相對路徑
dispatcher.forward(request,reponse);//如果在此方法之前發生響應將數據返回給客戶端此方法會報出異常。且此方法不能多次出現。
在B中
request.getArrtibute(name);
應用主要是在servlet中處理數據之后傳遞給JSP進行展示。要注意只有最終的Servlet程序決定響應的內容,之前的對響應內容的操作在每一次轉發都會被清空。
轉發與重定向的區別
1,轉發一次請求一次響應,重定向兩次請求兩次響應
2,轉發只能跳轉站內程序,重定向定向任何站點
3,轉發URL地址不變,重定向URL地址改變
4,轉發對客戶端不可見,重定向對客戶端可見

RequestDispatcher
include方法
用於將Dispatcher封裝的資源內容作為當前響應內容的一部分包含進來,即被含的Servlet程序的響應資源被保留,由多個Servlet程序一同生成最終響應,這一點不同於forward方法。常用來頁面布局,將公共部分抽取出來,通過ResquestDispatcher的include引入更加方便維護。
request.getRequestDispatcher(.html).include(request,response);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM