jsp相關基礎知識

1、JSP簡介

  JSP全稱是Java Server Page,它和Servlet同樣,也是sun公司推出的一套開發動態web資源的技術,稱爲JSP/Servlet規範。其本質也是一個Servlet。html

2、HTMLServletJSP的關係

  HTML:只能開發靜態資源,不能包含java代碼,沒法添加動態數據。java

  Servlet:寫java代碼,能夠輸出頁面內容,可是很不方便,開發效率極低。web

  JSPHTML+Servlet瀏覽器

3、JSP快速入門(輸出當前時間)

4、分析JSP的原理以及生命週期

寫在以前:緩存

明確JSP就是一個Servlet。是一個特殊的Servlet。tomcat

JSP的原理:服務器

  客戶端提交請求——Tomcat服務器解析請求地址——找到JSP頁面——Tomcat將JSP頁面翻譯成Servlet的java文件——將翻譯好的.java文件編譯成.class文件——返回到客戶瀏覽器上。session

 

5、JSP的語法

  5.1 模板元素

      jsp中的模板元素指的就是jsp中的html標籤,在開發過程當中,先寫好這些模板元素,由於它們決定了頁面的外觀。架構

  5.2 Java程序片斷

      在jsp中,可使用java腳本代碼。形式爲:app

      <%

        在裏面寫java程序腳本

        須要注意:這裏面的內容由tomcat負責翻譯,翻譯以後是service方法的成員變量

      %>

  5.3 Java表達式

    使用<%=表達式%>

    翻譯完後是out.print(表達式內容);

    <%out.print("當前時間);%><%="當前時間"%>是同樣的

  5.4 JSP聲明

    JSP的聲明

    <%! 

      聲明能夠是變量,方法,靜態方法等

      須要注意的是:

      寫在裏面的內容將會被tomcat翻譯成全局的屬性或者類方法。

    %>

  5.5 JSP註釋

    JSP中的註釋:<%--註釋--%>

    注意:

    在Jsp中可使用html的註釋,可是隻能註釋html元素,不能註釋java程序片斷和表達式。

    jsp的註釋不只能夠註釋java程序片斷,也能夠註釋html元素。

  5.6 JSP指令

    5.6.1 簡介

      JSP指令是爲JSP引擎服務的,它不會產生可見輸出,而是告訴引擎如何處理JSP的其他部分(非指令部分)。

      基本語法:

        <%@ 指令名稱 屬性1="值1" 屬性2="值2".......%>

        通常把指令放在JSP頁面的頂部(不是必須的)

      指令的屬性能夠寫在一個指令的中,也能夠分開寫:好比:

      <%@指令 屬性1=」值1」 屬性2=」值2」%>.

      等價於:

        <%@指令 屬性1=」值1」 %>.

        <%@指令 屬性2=」值2」%>.

    5.6.2 page指令

      屬性:

        language:告知引擎,腳本使用的是java,默認是java,支持java。不寫也行。

        extends:告知引擎,JSP對應的Servlet的父類是哪一個,不須要寫,也不須要改。

        import:告知引擎,導入哪些包(類)。

          注意:引擎會自動導入:java.lang.*,javax.servlet.*,javax.servlet.http.*,javax.servlet.jsp.*

          導入的形式: 

            <%@page import=」java.util.Date,java.util.UUID」%>或者:

            <%@page import=」java.util.Date」%>

            <%@page import=」java.util.UUID」%>  用Eclipse:Alt+/ 自動導入

        session:告知引擎是否產生HttpSession對象,便是否在代碼中調用request.getSession()。默認是true。

        buffer:JspWriter用於輸出JSP內容到頁面上。告知引擎,設定他的緩存大小。默認8kb。

        errorPage:告知引擎,當前頁面出現異常後,應該轉發到哪一個頁面上(路徑寫法:/表明當前應用)

          注意:當在errorpage上使用了isErrorPage=true以後,ie8有時候不能正常顯示

          配置全局錯誤頁面:web.xml

          當使用了全局錯誤頁面,就無須再寫errorPage來實現轉到錯誤頁面,而是由服務器負責跳轉到錯誤頁面。

        isErrorPage:告知引擎,是否抓住異常。若是該屬性爲true,頁面中就可使用exception對象,打印異常的詳細信息。默認值是false。

        contentType:告知引擎,響應正文的MIME類型。contentType="text/html;charset=UTF-8"

            至關於response.setContentTYpe("text/html;charset=UTF-8");

        pageEncoding:告知引擎,翻譯jsp時(從磁盤上讀取jsp文件)所用的碼錶。

            pageEncoding="UTF-8"至關於告知引擎用UTF-8讀取JSP

        isELIgnored:告知引擎,是否忽略EL表達式,默認值是false,不忽略。

      總結:

          屬性衆多,通常都用默認值。用起來很簡單。

  5.6.3 include指令

    該指令是包含外部頁面。

      屬性:file,以/開頭,就表明當前應用。

  5.6.4 taglib指令

    該指令用於引入外部標籤

    uri:外部標籤的URI地址,相似名稱空間。

    prefix:前綴。

6、JSP的轉發和包含

  6.1 轉發

語法:<jsp:forward page="/forwarddemojsp"></jsp:forward> jsp的內置標籤

該方式等價於:

參數:<jsp:param name="message" value="transfer" />

 

獲取參數:

 

  注意:

    在使用forward帶參數時,不能在中間添加除空格和換行以外的內容。不然報錯。

  6.2 包含

     靜態包含:只有一種,<%@include file=%>,又稱爲include指令。特色是將兩個頁面合成一個。在包含者中可使用被包含者的屬性。

     動態包含:除了include指令外,其他全是動態包含。

      jsp的動態包含語法:

      <jsp:include page="" />

        又稱爲include動做。

      動態包含的特色是,各編譯各的,會產生多個javaclass文件。只是合併輸出結果。

7、JSP的九大隱式對象(重點)

隱式對象名稱

類型

備註

request

javax.servlet.http.HttpServletRequest

 

response

javax.servlet.http.HttpServletResponse

 

session

javax.servlet.http.HttpSession

Page指令能夠控制開關

application

javax.servlet.ServletContext

 

page

Java.lang.Object

當前jsp對應的servlet引用實例

config

javax.servlet.ServletConfig

 

exception

java.lang.Throwable

page指令有開關

out

javax.servlet.jsp.JspWriter

字符輸出流,至關於printwriter

pageContext

javax.servlet.jsp.PageContext

很重要

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8、PageContext抽象類(重要)

  8.1 PageContext抽象類概述

    它是JSP獨有的對象,Servlet中沒有這個對象。自己也是一個域(做用範圍)對象,可是它能夠操做其餘3個域對象中的屬性。並且還能夠獲取其餘8個隱式對象。(自定義標籤時用)

  8.2 PageContext生命週期

    它是一個局部變量,因此它的生命週期隨着JSP的建立而誕生,隨着JSP的結束而消失。每一個JSP頁面都有一個獨立的PageContext

  8.3 PageContext經常使用方法

    頁面範圍的方法:

      void setAttribute(String name,Object value);

      void removeAttribute(String name);

      Object getAttribute(String name);

    操做其餘域屬性的方法:

      比上面的三個方法多了一個參數 int scope

        void setAttribute(String name,Object value,int scope);

        void removeAttribute(String name,int scope);

        Object getAttribute(String name,int scope);

      int scope它自己是一個常量,有四個值,分別對應四個範圍。

        APPLICATION_SCOPE 應用級

        SESSION_SCOPE 會話級

        REQUEST_SCOPE 請求級

        PAGE_SCOPE 頁面級

       在四個範圍內根據名稱查找對象的方法:

         Object findAttribute(String name);

         查找順序是:PAGE——>REQUEST——>SESSION——>APPLICATION。只要在一個範圍內找到就再也不繼續查找。

         獲取其餘八個隱式對象的方法:(自定義標籤時用)

         pageContext.getRequest();

         pageContext.getResponse();

         pageContext.getSession();

         pageContext.getServletConfig();

         pageContext.getServletContext();

         pageContext.getException();

         pageContext.getPage();

         pageContext.getOut();(此方法是其父類JspContext提供)

9、四大域對象

 實際開發中用於存放數據的。

域對象名稱

範圍

級別

備註

PageContext

頁面範圍

最小

因範圍過小,開發中用的不多

ServletRequest

請求範圍

page大,比session

不一樣的資源,只有轉發用

HttpSession

會話範圍

request大,比application

屢次請求共享數據,但不一樣的客戶端不能共享

ServletContext

應用範圍

最大

儘可能少用,若是對數據有修改須要作同步處理

 

 

 

 

 

 

 

 

 

 

10、JSP開發

Servlet:擅長處理業務邏輯,不擅長輸出顯示界面。在web開發中多用於控制程序邏輯(流程)。因此咱們稱之爲:控制器。

JSP:擅長顯示界面,不擅長處理程序邏輯。在web開發中多用於展現動態界面。因此咱們稱之爲:視圖。

例如:

 

 

Mmodel 封裝的是數據模型

Vview 指的是jsp頁面

CController 指的是Servlet

注意:MVC模型針對的只是表現層的模型,和三層架構是沒有關係的。

相關文章
相關標籤/搜索