天天看點

jsp學習總結



JSP學習重點

JSP  (java server page java伺服器端網頁)

jsp:html中嵌套寫java代碼             相比servlet更簡單

servlet:java代碼中嵌套寫html代碼    複雜

JSP它的本質是Servlet

<%

書寫java代碼

%>

jsp運作原理

--------------------------JSP學習要點---------------------------------

JSP可以放置在WEB應用程式中除了WEB-INF及其子目錄 外的任何其他目錄中。

JSP的運作原理:jsp本質上還是一個Servlet

每個jsp頁面在第一次通路時,JSP引擎先将它翻譯成Servlet源程式,接着再把這個servlet源程式編譯成class檔案,然後由web容器裝載。

隐含對象:即不聲明就可以直接使用的對象

1.JSP九個隐式對象(不用聲明建立就可以直接當對象使用)

    1.request                httpServletRequest對象

    2.session       httpSession對象  代表浏覽器和伺服器的一個會話

    3.application      ServletContext對象  代表目前web應用,能擷取初始化參數(是在web.xml裡面定義的初始化參數)

    4.response               httpServletResponse對象(在jsp頁面中幾乎不會使用這個對象)

    前三個最為重要,也是使用最多的。

    5.pageContext            PageContext對象  頁面上下文,可以從該對象擷取其它八個對象,擷取目前頁面資訊(自定義标簽時使用)

    6.config      目前jsp對應的ServletConfig對象(開發中幾乎不使用)

    7.out                   JspWriter對象  調用out.println()方法列印到浏覽器中

    8.page             page=this代表目前jsp對應的Servlet對象引用,類型為Object隻能使用Object的方法  (開發中幾乎不用)

    9.exception             隻有在聲明了page指令的isErrorPage="true"時才可以使用

pageContext、request、session、application對象的屬性作用範圍依次變大。這四個對象被稱之為域對象

pagContext:屬性作用範圍僅限于目前JSP頁面

request:屬性作用範圍僅限于同一個請求

session:屬性作用範圍僅限于同一次回話:浏覽器打開直到關閉稱之為一次回話(在此期間要保證回話不失效)

application:屬性作用範圍是目前web應用,是範圍最大的屬性作用範圍。

2.JSP文法:

    1.模闆元素  即固定的靜态頁面 html代碼

    2.jsp輸出表達式  <%= %>

    3.jsp (java)腳本片段 <%  寫java代碼。。。  %>

    4.jsp的聲明  <%! %>  可以聲明方法    但是jsp聲明幾乎不使用

    5.jsp注釋    <%-- jsp注釋  --%>

3.請求重定向和請求轉發:(非常重要)

      對我的困惑點:關于請求轉發和請求重定向的位址的寫法

      轉發位址一般都是:/

      重定向位址一般都是沒有寫/

        本質差別:請求轉發隻發生了一次請求,而重定向則是向伺服器發出了兩次請求

   具體差別:1.請求轉發的位址欄不發生改變,重定向會發生改變

     2.請求轉發轉發中最終的servlet裡的request對象和最初的那個是同一個對象,請求重定向則不是同一個對象

                 3.請求轉發隻能轉發到目前web應用的資源,請求重定向可以任何資源

   4.請求轉發:/ 代表的是目前WEB應用的根目錄   http://localhost:8080/project/WebRoot

                   請求重定向:/代表的是目前站點的根目錄     http://localhost:8080/

4.JSP中文亂碼解決方案

  解決方案:

  第一處理級别:修改jsp的編碼模闆 使 pageEncoding和charset都為utf-8;(修改jsp模闆)  ---jsp頁面顯示中文

  第二處理級别:擷取參數時使用request.setCharset("utf-8");  對于post請求有用   ---擷取參數時候

  第三處理級别:修改tomcat的server.xml檔案   添加這個useBodyEncodingForURI="true"屬性。  ---全局處理

  中文亂碼問題最好是使用過濾器來解決。

5.JSP: page指令、include指令、JSP标簽

  比較簡單随便了解即可。

請求重定向和請求轉發:

總結:

         響應重定向:(一個web資源收到客服端的請求後,通知用戶端去請求另一個web資源--也就是你向我借錢,我沒有,我要你自己去找另一個人借錢)

                  用戶端通路了兩次伺服器 也就是 兩個 response/request

                  位址欄上的位址會顯示出,你重定向後的位址,客戶知道了位址變化了

                  重定向的位址有兩種寫法 開頭一種是加‘/‘斜線,表示通路web容器根目錄下(localhost:8080)的資源;

                  一種是不加斜線' / ',就是通路目前運用下的資源(推薦不加斜線)

                  重定向的位址可以是web容器内的或其它web應用

                  應用:重定向一般用在 登入子產品,和顯示購物車

請求轉發:(一個web資源收到客服端的請求後,伺服器程式幫用戶端去請求另一個web資源,也就是你向我借錢,我沒有,我幫你去找另一個人借)

                  用戶端發出了一個請求,轉發過程由伺服器幫你搞定

                  轉發的位址不加‘/‘斜線,表示通路相對于目前的請求路徑而言;

                  如果使用”/”開頭,代表相對于目前上下文路徑,即”/”表示應用上下文的根

                  轉發是隻能轉發到目前web容器的運用裡,因為 forward(request,response)

關于/的問題:使用絕對路徑絕對沒有問題,使用相對路徑有時候會出現拿問題。

jsp