jsp基礎知識(1),jsp基礎知識

來源:互聯網
上載者:User

jsp基礎知識(1),jsp基礎知識

1.JSP全稱是Java Server Pages,它和servle技術一樣,都是SUN公司定義的一種用於開發動態web資源的技術。

2.JSP技術也是一種動態web資源的開發技術
    因為JSP技術允許在頁面中嵌套java代碼,以產生動態資料,並且web伺服器在執行jsp時,web伺服器會傳遞web開發相關的對象給jsp,jsp通過這些對象,可以與瀏覽器進行互動,所以jsp當然也是一種動態web資源開發技術。

3.JSP和Servlet的比較

      本人是先學Servlet的,Servlet感覺就是在寫純粹的java代碼,而jsp中既可以寫java代碼又可以寫 指令碼語言。很大程度上jsp和servlet是很相似的,只不過jsp站的更高,將很多servlet的操作給封裝起來了。不管是JSP還是Servlet,雖然都可以用於開發動態web資源。但由於這2門技術各自的特點,在長期的軟體實踐中,人們逐漸把servlet作為web應用中的控制器組件來使用,而把JSP技術作為資料顯示模板來使用。

4.JSP的原理圖:


原理解釋: 

 (1)Web容器根據用戶端訪問的資源類別(Web容器會根據資源的第一行代碼確定),如果你訪問的是JSP資源,就交由JSP引擎處理如果訪問的是Servlet資源,就交由Servlet引擎處理
  (2)如果是JSP資源,JSP引擎會將其翻譯成Servlet資源,傳入相關的對象,如果是靜態資源,以out.write()形式輸出,如果是動態資源,以out.print()形式輸出。(這個查看C:\apache-tomcat-7.0.22-windows-x86\apache-tomcat-7.0.22\work\Catalina\localhost下的對應工程檔案的原始碼就可以看出來)
  (3)當JSP引擎在翻譯正確後,將其輸出給Servlet引擎,當作Servlet處理。
  (4)如果再次訪問同一個jspname.jsp檔案,翻譯工作依然進行,Servlet引擎工作可以減化,所以這是為會麼第N次較第1次快的原因

5. JSP文法 
  (1)JSP模版元素 
模版元素就是HTML中的靜態內容,即<body>,<table>,<form>等在html中用到的標籤

  (2)JSP運算式 
        a>文法:<%="字串變數或運算式"%>
        b>結束無分號  
        c>預設輸出到瀏覽器


  (3)JSP指令碼片斷 
a>文法:<% ...java代碼; %>
        b>指令碼片斷中的注釋符號與java代碼一致
c>多個JSP指令碼片斷中定義的變數,本質是_jspService()方法中的局部變數,可以訪問

注意:JSP修改後,無需重新部署,直接重新整理,Web容器會自動比較新舊二個版本JSP


(4)JSP聲明
a>文法:<%! ...java代碼 %>
        b>JSP聲明的變數或方法,會成為Servlet的執行個體變數或執行個體方法或普通方法
        c>JSP指令碼片斷中不能定義局部方法,方法只能定義在JSP聲明中

  5)JSP注釋
a>文法:<%-- 注釋的內容 --%>
        b>對於HTML注釋來說,JSP引擎會將其翻譯成servlet內容,
 對於JSP注釋來說,JSP引擎不會將其翻譯成servlet內容

          所以綜合上述,對於注釋應該優先考慮用jsp的注釋方式。

        c>注釋不能嵌套使用
   
  6)JSP指令
a>指令是程式員控制JSP引擎做什麼的依據
b>有三類:
page
include
tablib
       c>page指令的屬性有
language="指明JSP支援的語言,預設為java語言"
       import="當前JSP頁面中,需要匯入的包,其中import可以寫多次"
                session="true表示需要伺服器建立session/false不需要伺服器建立session",預設true
buffer="none|8kb|sizekb"JSP輸出使用的緩衝大小,預設8kb
autoFlush="true表示當緩衝滿時,web容器是自動重新整理到用戶端/false需要手工重新整理到用戶端",預設true
                isThreadSafe="true表示web伺服器確保安全執行緒/false不確保安全執行緒",預設true
info="text"表示jsp的相關描述資訊,可以通過getServletInfo()取得該jsp的資訊
       errorPage="當前jsp頁面出錯後,轉寄到的目標頁面"
       isErrorPage="true"(當某個jsp頁面有該屬性時,web容器會自動建立exception對象
                上述異常處理屬於局部異常處理
在web.xml檔案:
    <error-page>
  <error-code>500</error-code>
  <location>/error_500.jsp</location>
      </error-page>
           <error-page>
  <exception-type>java.lang.NumberFormatException</exception-type>
             <location>/error_500.jsp</location>
     </error-page>

     這個設定檔代碼說明了,當出現了代號為500的瀏覽器異常時, 此時頁面會跳轉到error_500.jsp的頁面中,如果出現NumberFormatException異常時,頁面也會跳轉到error_500.jsp上,至於具體跳轉到那個頁面上可以隨意的修改<location>的參數值就可,這種體現了在設定檔中處理異常的的方式,算是一種全域的異常處理。

                如果全域中有code又有type,此時二者同時顯示
                當全域和局部異常同時出現時,局部異常優先

a)JSP頁面的中文採用UTF-8方式編碼
b)JSP儲存時採用UTF-8方式編碼
c)指示瀏覽器以UTF-8方式查看

              contentType="text/html;charset=UTF-8"
      isELIgnored="false表法JSP引擎不忽略EL運算式語言/true表法JSP引擎忽略EL運算式語言"    


jsp基礎知識

<%@ %> 這個屬於指令元素,它指定有關頁面的資訊。不如你要匯入一個JSTL庫的時候就要用到。如你要用一個EL的函數 fn:escapeXml() ,這是要聲明<%@ taglib prefix="fn" uri="java.sun.com/jsp/jstl/core"%>
<%! %>,<% %>是用來在JSP頁面中添加小段代碼的 比如Java代碼
<% %> 這個可以頁面中加入整個的代碼塊。
<%! %>這個是用來聲明的,這個不建議使用
還有一個<% = %>這個是用來添加一個運算式的 可以獲得其中的結果 比如<%= 1+1 %>
 
jsp基礎知識

這句不算jsp中的內容。
這是jsp輸出的內容,屬於html結構。

<form 是表單
action是動作

?act=up是提交的地址,假如你的網頁的是127.0.0.1
那麼這裡的提交地址便是127.0.0.1/?act=up

method是方式 post是代表post提交方式。除此之外,還有get提交方式。
get的提交方式是把參數放在url地址中,而post是放在http的header中。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.