一、servlet工作原理
servlet工作原理
1.1 servlet如何獲取請求引數
1.1.1獲取請求引數值的方法
*獲取提交的name-value數值
-getparameter(name)
*獲取提交的name-values數值
-getparametervalues(name)
1.1.2getparameter方法
*常用於傳入的引數中,乙個名字對應乙個值的形式
*string request.getparameter(string paramname)
*如果引數名寫錯,會產生null
1.1.3getparametervalues方法
*string request.getparametervalues(string paramname)
*當需要獲取引數名相同的多個引數值時使用該方法
*多用於獲取提交的表單中核取方塊的值
*如果該引數名不存在,則返回null
1.2請求方式(詳見其他文章)
1.3 servlet如何處理中文引數
1.1.1為什麼表單提交中文會出現亂碼
*為什麼會產生亂碼
-當表單提交時,瀏覽器會對中文引數值進行編碼(會使用開啟表單所在的頁面的字符集進行編碼)
-web伺服器在預設情況下會使用iso-8859-1去解碼
-編碼與解碼方式不一致時,就會出現亂碼
1.1.2解決post方式時的亂碼問題
*step1:確保表單所在的頁面按照指定的字符集開啟
*step2:在伺服器端按照這個編碼格式解碼即可
-request.setcharacterencoding(「utf-8」)
-新增在讀取引數的前面
-此方法只針對post請求有效
1.1.3解決get方式時的亂碼問題
*step1:使用meta確保表單所在頁面按照指定字符集開啟
*step2:在伺服器端使用如下方式獲取引數值
1.4 servlet如何輸出中文
1.1.1為什麼返回的頁面會有亂碼
*編碼:將unicode字符集對應的位元組陣列轉換成某種本地字符集(如utf-8)對應的位元組陣列
*解碼:將某種本地字符集對應的位元組陣列轉換為unicode字符集對應的位元組陣列
*編碼和解碼使用的字符集不一致就產生了亂碼問題
1.1.2如何解決輸出內容的亂碼
*在獲取writeout物件及呼叫out方法之前呼叫setcontenttype方法
*response.setcontenttype(「text/html;charset=utf-8」)
*作用-通知容器,在呼叫out.println方法輸出時,使用指定的字符集
-生成訊息頭中content-type的值,通知瀏覽器,伺服器返回的資料型別和字符集
1.5 servlet如何訪問資料庫
*將jdbc驅動(.jar)檔案放到web-inf\lib下,原因是:classloader找到位元組碼檔案,然後載入到jvm的方法區中,變成乙個物件.tomcat都有自己的類載入器,會去web-inf下面lib中找位元組碼檔案.因為jar包中都是位元組碼檔案
*在servlet中編寫jdbc**,實現對資料庫的訪問
1.6 servlet如何執行-servlet執行的詳細步驟
*step1:瀏覽器根據ip建立與容器的連線
*step2:瀏覽器請求資料打包
*step3:容器解析請求資料報,封裝物件
*step4:容器依據路徑找到servlet建立物件
*step5:容器呼叫servlet物件的service方法
*step6:容器將響應打包發給瀏覽器
*step7:瀏覽器取出結果,生成頁面
mysql執行原理 mysql 執行原理
闡述mysql系統的各個模組是如何相親相愛的完成乙個我們認為的很簡單的查詢工作的。我們對啟動mysql,客戶端建立連線,請求query,得到返回結果,最終退出。這樣一整個過程來進行分析。第一步 當我們執行啟動mysql系統的命令之後,mysql的初始化模組就從系統配置檔案中讀取系統引數和命令列引數,...
小程式執行執行過程原理 程式執行原理
計算機中包含有較多的硬體,但是乙個程式要執行,有三個核心的硬體,分別是 cpu 記憶體 硬碟 計算機中哪乙個硬體裝置負責執行程式?記憶體的速度快還是硬碟的速度快?我們的程式是安裝在記憶體中的,還是安裝在硬碟中的?我買了乙個記憶體條,有 500g 的空間!這句話對嗎?計算機關機之後,記憶體中的資料都會...
Struts執行原理
對於struts的執行原理,首先來看如下執行原理圖 1 瀏覽器發出http請求給伺服器,然後伺服器解析主機 解析web應用 解析資源 2 伺服器 請求給actionservlet 總控制器 該類由struts提供 只需配置就可以這時候需要配置在struts config.xml的檔案,actions...