控制器的功能“
1. 獲取客戶端參數(shù)(顯式數(shù)據(jù),隱式數(shù)據(jù));
2. 調(diào)用模型層的業(yè)務方法,獲取模型數(shù)據(jù)(即:業(yè)務方法返回的結(jié)果—集合、boolean)
3. 根據(jù)模型數(shù)據(jù)進行流程控制(可能傳輸數(shù)據(jù)到視圖層)
Servlet:以多線程的方式響應用戶的并發(fā)請求,非線程安全。
CGI: 通用網(wǎng)關接口,以多進程的方式響應用戶的并發(fā)請求,被servlet所取代。
Servlet生命周期:有web容器來維護
1、加載: web容器加載servlet(被動加載、主動加載)
被動加載:當用戶第一次訪問servlet的時候,web容器才去加載servlet,這是默認的加載方式。
主動加載:當web應用服務器啟動的時候,由web容器主動加載servlet,而不管用戶是否發(fā)出訪問的請求。
<!—在Servlet元素中添加下面的子元素,將servlet默認的被動加載改為主動加載 -->
<load-on-startup>0</load-on-startup>
2、 初始化 :容器在加載servlet后,調(diào)用init()方法,完成初始參數(shù)的設置。
3、 服務 :doService()
4、 銷毀
5、 卸載
注:init()初始化方法和destroy()銷毀方法在servlet生命周期中只能調(diào)用一次。
Http請求中經(jīng)常使用的請求方式:
Get請求:1. 在瀏覽器地址欄中直接輸入url;
2. 超鏈接
3. 發(fā)送沒有指定method屬性的form表單
Post請求:發(fā)送method=post的表單
Post在發(fā)送表單數(shù)據(jù)時優(yōu)于get方式的方面:
1. 安全:在發(fā)送參數(shù)時,從url當中看不到參數(shù)的任何信息
2. 速度快:將參數(shù)封裝到數(shù)據(jù)行中,比get請求將參數(shù)附加到url之后快速
3. 數(shù)據(jù)傳遞大小無限制
相對路徑的問題:
如果相對路徑在Html元素中定義(form元素中的action屬性,超鏈接中的href屬性),相對路徑的 / 起始目錄為從web應用服務器的監(jiān)聽端口號開始
http://localhost:8080
HttpServletRequest接口:
request.getParameter()
獲取用戶發(fā)出請求時的參數(shù)的值(獲取的是這個參數(shù)的一個值)
如果request.getParameter()方法,獲取一個不存在的參數(shù)值,返回為null
如果獲取的參數(shù)沒有提供值,返回“”空字符串
Request.setAttribute(key,Object) :在請求域?qū)ο髍equest中綁定屬性。
Request.getAttribute(key):獲取屬性。
注:每個請求域都有各自的request對象,在一個請求域中的所有組件都可以通過共享的request對象傳值。不同的請求域擁有不用的request,request不能跨請求域傳值。請求域結(jié)束,request自動失效。
中文傳參數(shù)亂碼問題:
1. 對參數(shù)進行單獨的字符編碼轉(zhuǎn)換
String zh_name = new String(name.getBytes("iso-8859-1"),"utf-8");
2. 對以post方式傳遞的參數(shù)統(tǒng)一進行字符編碼轉(zhuǎn)化
request.setCharacterEncoding("utf-8");
3. 采取過濾器來進行字符編碼轉(zhuǎn)換(將系統(tǒng)中公共的行為在過濾器中統(tǒng)一實現(xiàn),避免在具體的控制器編寫大量的重復的代碼)
posted on 2012-10-26 09:05
宏才 閱讀(316)
評論(0) 編輯 收藏 所屬分類:
servlet