標籤:指令碼 內容 資料 存在 param 理解 -- 擷取 body
jsp和servlet的一些基礎知識整理,用於備忘。
一、jsp與servlet的基本關係1、jsp-->web容器-->servlet-->載入進容器的虛擬機器執行-->輸出執行結果給瀏覽器端 在這個過程,所有位於<%%>之外的值,都被認為是out.println()中的內容進行直接輸出。詳細理解看代碼
<html><%//例子說明:servlet和jsp的關係boolean b = false;if(b){%>這裡是內容一<%}else{%>這裡是內容二<% }%> <body> jsp_servlet. <br> </body></html>
上面的代碼和下面的代碼一個意思
<html><%//例子說明:servlet和jsp的關係 boolean b = false; if(b){ out.println("這裡是內容一"); }else{ out.println("這裡是內容二"); }%> <body> This is my JSP page. <br> </body></html>
<%%>標籤外的一切字元,jsp的web容器不會特殊處理,只是單純地放進輸出資料流out(printWriter)中輸出給瀏覽器
標籤中的內容,是java代碼,web容器處理完後,返回結果給瀏覽器
標籤外和標籤內的所有字元經過web容器處理後,得出一個html檔案,這是瀏覽器所接收到的最終檔案
2、執行說明
順序:瀏覽器請求-->jsp檔案-->web伺服器-->解析jsp為java檔案-->容器j的re檢查java檔案是否有編譯錯誤-->編譯java檔案,得到.class檔案-->jvm載入執行-->響應瀏覽器
web容器解析jsp時,一般先檢查是否已經存在了最新(表明jsp檔案並沒有被改變)編譯的檔案某某servet.class,如果是,則不重新編譯jsp檔案,否則重新編譯jsp檔案。
二、處理資料(處理表單資料以及url傳參資料)的總結
1、通常,我們用getParameter(參數名字):擷取對應的form(url)中某個name屬性值。當多個屬性值一樣時,只能擷取第一個屬性值。
2、getParameterValues(參數名字):擷取所有form或者url的name屬性值,返回一個數組。當多個屬性值的name一樣時,可用該方法。這個方法可用來處理多選框和複選框的資料。
3、getParameterName:擷取參數名字,返回對應的枚舉,通過類似迭代器的方式遍曆枚舉便可得到每個參數名字的的對應字元類型。
三、javascript中擷取(擷取用詞可能不太正確)jsp資料
1、javascript(這裡指的是用戶端的js指令碼,下面簡稱指令碼),jsp,java三者的關係:
首先,三者的順序:jsp-->轉變為java代碼-->web容器將之變為html代碼-->瀏覽器-->某個時間觸發,運行指令碼。
顯然,js指令碼是在jsp代碼(java)代碼執行完(而且兩者執行的地方不同,指令碼在瀏覽器執行,jsp,java代碼在web伺服器的web容器中執行)後執行,所以,理論上說,jsp的參數不可能傳給指令碼,因為兩者執行地方就不同。
所以,要達到類似的效果,只能在jsp中混寫js指令碼代碼。當然,更推薦的方法是,將參數放在某個隱藏表單區域,再通過js的dom方法擷取對應的參數值。
2、通常,以前判斷表單是否提交的笨方法是:getParameter(表單參數名),獲得結果是null,表明無對應表單提交。現在,可用一下方法代替:getMethod.equals("post" or "get"),返回布爾值,判斷是否提交了表單。
以上是複習一的歸納內容,如有不妥地方,歡迎指正。
jsp servlet基礎複習 Part1