一,request概念及常用的api
1.1-request表示客戶端向伺服器發出的請求,
所有客戶端資訊和客戶端提交的資料,均封裝在request物件中。這個請求或者物件就是request。
request全稱httpservletrequest
:瀏覽器輸入**的請求預設是get請求
http請求分為三部分
1_請求行
2_請求頭
3_請求體/請求正文/實體內容
全部傳送給伺服器,讓伺服器知道客戶端的情況
1.2-request常用api
獲取客戶機資訊:
getrequesturl()方法返回客戶端發出請求時的完整url
getrequesturi()方法返回請求行中的資源名部分
getquerystring()方法返回請求行中的引數部分
getremoteaddr()方法返回發出請求的客戶機的ip位址
getlocaladdr()方法返回web伺服器的ip位址
getmethod()方法返回客戶機請求方式
getcontextpath()方法返回當前web應用根目錄
getservletpath()方法返回servlet對映路徑
獲取請求頭資訊
getheader()方法返回請求頭的值
獲取請求體引數
getparameter()方法通過name獲得值
getparametervalues()方法通過name獲得多值
getparameternames ()方法獲得所有name
二、表單提交中文亂碼的原因和解決方案
2.1-為什麼表單中有中文,會出現亂碼呢?
客戶端以utf-8將中文編碼,而tomcat用iso8859-1解碼,編碼和解碼不一致,造成亂碼
2.3-解決方案
通用方式:適用於get和post
byte buf = username.getbytes(「iso8859-1」);按iso8859-1編碼
string username = new string(buf,」utf-8」);按utf-8解碼
專用方式:適用於post
request.setcharacterencoding(「utf-8」);針對請求體內容按utf-8編碼
request.getparameter(「username」)
如果專案中get和post業務功能相同的話,可以在doget()方法中呼叫dopost()
三、request域物件
[request物件既可以代表客戶端向伺服器的請求,也可以當做暫存資料的域物件]
3.1-什麼是域物件
域物件初學者可以理解為乙個容器,可以暫存string-object這種key-value形式的資料
域物件儲存時間是不同的,有的域物件儲存時間在一次請求中;有的域物件儲存時間在一次會話中;
有的域物件儲存時間在整個應用中。其中request域物件儲存時間只在一次請求中,也就是說
一次請求完畢後,request域物件就銷毀了,一旦request域物件銷毀,那麼存在其中的資料也
就不存在了。
3.2-為什麼需要域物件
有時我們的業務,乙個servlet完成不了,需要另乙個servlet幫忙,這就是說,
我們需要在二個或多個servlet之間傳遞資料,域物件就負責完成這項任務
3.3-request物件有二層含義:
01——代表客戶端向伺服器的請求物件,如getparameter(「username」)
02——代表可以暫存資料的域物件,如下如示api
3.4-request作為域物件常用的api
setattribute():向域物件中繫結key=value形式的資料
getattribute():從域物件中根據key找value,如果取到不到,返回null
removeattribute():從域物件中刪除key對應的value
servletcontext和request兩個域物件的比較
四、request**
4.1-多個servlet配合工作
有些時候,乙個servlet不能很好的完成業務工作,需要另一
個servlet來配合。這就是說,很有可能乙個servlet需要將
流程交由另乙個servlet,此時就要用**或重定向這二個
技術了,這裡我們談request**。
4.2-要**必須得用request.getrequestdispatcher().forward()方法
request.getrequestdispatcher(配置的虛擬路徑或者是html和jsp頁面).forward(request, response);
4.3-**是伺服器內部的事,與瀏覽器無關,所以瀏覽器的位址列不會變,
原來瀏覽器以什麼方式提交資料,**到另乙個servlet依然執行對應的
do***方法。
瀏覽器以post提交—第乙個servlet::dopost—第二個servlet::dopost
瀏覽器以get提交—第乙個servlet::doget—第二個servlet::doget
!注意:**不限於servlet之間,servlet也可以**到html和jsp頁面
Java核心技術 筆記6 7
1 repeat 10 0 system.out.println hello world 要接受此lambda表示式,需要提供函式式介面 public static void repeat int n runnable action action.run 會執行lambda表示式主體 2.不止乙個函...
Java核心技術 筆記6 8
1.區域性內部類中,若只建立乙個類的物件 只用了一次 就不用命名了,即 匿名內部類 public void start int interval,boolean beep timer t new timer interval listener t.start 0 形式即 new supertype ...
Java核心技術 筆記7 1
1.異常物件都是派生於 throwable 類的乙個例項 非受查異常 error層描述內部錯誤 和 資源耗盡錯誤 由程式導致的異常屬於runtimeexception 受查異常 程式本身沒有問題,執行時產生的錯誤 如io,取決於環境而非 屬於其他異常 2.用throws宣告異常 不宣告error異常...