jsp基礎語法

jsp基礎語法

一,程序在第一次運行時速度很慢,而以後再次執行會變得很快,這是因爲jsp在第一次執行時會先將.jsp文件翻譯成.java文件,而後再將.java文件編譯成.class文件後才執行。這些轉換都是在服務器執行的,一旦有修改jsp文件都會再次從新翻譯編譯成.class文件。

提示:若是使用的是tomcat服務器,那麼這些文件.java,.class均可以在tomcat中的work目錄找到 html

二,JSP註釋

jsp支持兩種註釋方法,一種是顯式,這種註釋客戶端是能夠看見的,一種是隱式,這種是客戶端不能夠看見的。jsp中能夠書寫java代碼,語法<%java代碼%>
  1. 顯式註釋 <!-- 註釋內容 -->
  2. 隱式註釋 //註釋:單行註釋,用具java代碼 /* 註釋 */:多行註釋,用具java代碼 <%--註釋--%>:jsp註釋

3、Scriptlet

在jsp中,最重要的部分就是Scriptlet(腳本小程序),全部嵌套在HTML代碼中的java程序都必須使用Scriptlet標記出來。在jsp中一共有三種Scriptlet代碼
  • <% %>
  • <%! %>
  • <%= %>
<%%>中能夠定義局部變量、編寫語句等。好比:
<%
int x=10;
String s="taeyeon";
out.println("<h2>&lt;%%&gt;的使用:</h2>");//由於jsp會自動編譯<%%>因此須要使用轉義字符來輸出<%%>,下面也是如此。
out.println("<h4>"+x+"歲的"+s+"</h4>");
%>
<%!%>中能夠定義全局變量、類、方法。在<%!%>中不能出現任何其餘語句,因此要編寫一個普通的<%%>輸出變量,調用方法,輸出對象。好比:
<%!
    public int add(int x,int y){
            return x+y;
    }
%>
<%
    out.print("<h2>&lt;%!%&gt;的使用:</h2>");
    out.println("<h4>"+add(10,10)+"</h4>");
%>
<%=%>的主要功能是輸出一個變量或一個具體的內容。好比:
<%
    out.print("<h2>&lt;%=%&gt;的使用:</h2>");
%>
<h4> name:<%=s%></h4>
輸出結果
<%%>的使用:
10歲的taeyeon
<%!%>的使用:
20
<%=%>的使用:
name:taeyeon

備註:儘可能多使用<%=%>表達式,少使用out.println();的輸出語句,由於在jsp開發中,其實是在html中加入了一些控制及輸出語句,因此在輸出時爲了使html代碼和java代碼相分離,最好的作法就是隻輸出由jsp產生的變量,那麼這時使用表達式輸出比使用out.println()更加方便java

Scriptlet標籤
在程序中若是過多的使用<%%>會致使代碼混亂,因此在新版本jsp中提供了scriptlet標籤,使用此標籤能夠完成與<%%>一樣的功能。
<jsp:scriptlet>
  String url="www.taeyeon.com.cn";// java scriptlet 代碼
</jsp:scriptlet>
<h2><%=url%></h2>//這裏url會報錯,可是不影響編譯輸出
輸出結果
www.taeyeon.com.cn

4、page指令

page指令在jsp開發中較爲重要,使用此屬性,能夠定義一個jsp頁面的相關屬性,包括設置MIME類型,定義須要導入的包,錯誤頁的指定等。語法:<%@ page 屬性="" %>
page指令的經常使用屬性:

以上指令中只有import能夠重複使用,其餘的只能出現一次。web

設置頁面的MIME

在page指令中,contentType屬性是使用最多的一個屬性,若是想讓一個jsp文件顯示中文,則必須對整個頁面指定MIME編碼。語法<%@ page contentType="text/html;charset=UTF-8" language="java" %>小程序

1,什麼是MIME?tomcat

答:使用MIME類型能夠設置打開文件的應用程序類型。服務器

2,常見的MINE類型:app

超文本標記語言文本 .htm,.html text/html 
普通文本 .txt text/plain 
RTF文本 .rtf application/rtf 
GIF圖形 .gif image/gif 
JPEG圖形 .ipeg,.jpg image/jpeg 
au聲音文件 .au audio/basic 
MIDI音樂文件 mid,.midi audio/midi,audio/x-midi 
RealAudio音樂文件 .ra, .ram audio/x-pn-realaudio 
MPEG文件 .mpg,.mpeg video/mpeg 
AVI文件 .avi video/x-msvideo 
GZIP文件 .gz application/x-gzip 
TAR文件 .tar application/x-tar

3,在Tomcat安裝目錄/conf/web.xml中能夠查詢MIME類型,例如,若是如今但願頁面能夠按照word文檔的形式顯示,則可使用以下MIME類型:jsp

<mime-mapping>
    <extension>doc</extension>//元素用來描述擴展名
    <mime-type>application/msword</mime-type>//mime-type元素則爲MIME類型
 </mime-mapping>

4,使用contentType和pageEncoding設置編碼有什麼區別? pageEncoding指的是jsp文件自己的編碼,而contentType中的charset指的是服務器發送給客戶端的內容編碼。在jsp中若是pageEncoding存在,那麼jsp的編碼將由pageEncoding決定,不然由contentType中的charset決定,若是兩個都不存在,則將使用ISO-8859-1的編碼方式。jsp中的全部內容都要通過兩次編碼操做,第一階段會使用pageEncoding編碼,第二階段會使用utf-8,第三階段就是生成網頁,此時纔會使用contentType的編碼。<%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8" language="java" %>ide

5,錯誤頁的設置編碼

  • 指定出現錯誤時的跳轉頁面,經過errorPage屬性指定。
  • 錯誤處理頁必須有明確的標識,經過isErrorPage屬性指定。
  • <%@page errorPage="Scriptlet.jsp" %>設置出錯頁面跳轉的處理頁面。
  • <%@ page isErrorPage="true" %>設置該頁面能夠處理該錯誤。若是不寫這一句或者設置爲false,也能實現頁面的跳轉,只不過沒有exception對象的處理。

注意:此處一旦發生錯誤地址欄上的顯示界面名字是不會改變的,也就是說雖然看見了頁面的跳轉內容的改變,可是地址欄並無改變,這種跳轉叫作服務器跳轉,整個操做中客戶端對服務器只發以此請求,服務器也只響應一次。

  • 咱們也能夠在整個虛擬目錄上設置,就是修改web.xml文件。在全局錯誤中能夠處理的兩種類型錯誤,一種是http代碼的錯誤,如500,404;還有一種就是代碼異常,如NullPointerException等。
<error-page>
    <error-code>500</error-code>
    <location>/page/Scriptlet.jsp</location>
  </error-page>
  <error-page>
    <exception-type>java.lang.ArithmeticException</exception-type>
    <location>/page/Scriptlet.jsp</location>
  </error-page>

5、include指令

1,靜態包含

靜態包含指令是在jsp編譯時插入一個包含文本或代碼的文件,這個包含的過程是靜態的。語法:<%@ include file="要包含的文件路徑"%>。將這些文件包含在一塊兒,而後統一編譯成.class文件。

2,動態包含

使用<jsp:include page="{要包含的文件路徑|<%=表達式%>}" flush="true|false"/>能夠完成動態包含的操做。當傳遞參數的時候使用:

<jsp:include page="{要包含的文件路徑|<%=表達式%>}" flush="true|false">
    <jsp:param name="參數名稱" value="參數內容">
    ....
</jsp:include>

flush屬性的可選值爲false時表示這個網頁徹底被讀進來之後才輸出,在每個jsp的內部都會有一個buffer,因此設置成true時,當buffer滿了就輸出。通常設置爲true。

3,動態和靜態的區別

靜態包含是先將所有的內容包含在一塊兒,而後再一塊兒編譯。若是動態包含被包含的是動態頁面那麼是屬於先處理後包含的作法。好比當被引用界面裏也有定義變量x,而引用界面也有變量x的時候使用靜態包含,就會報出異常變量聲明重複,而使用動態就不會。

4,跳轉指令

將一個用戶的請求從一個界面傳遞到另外一個界面,即完成跳轉操做。

  • 不傳遞參數 <jsp:forward page="{要包含的文件路徑}|<%=表達式%>">
  • 傳遞參數
<jsp:forward page="{要包含的文件路徑}|<%=表達式%>">
    <jsp:param name="參數名稱" value="參數內容">
    ......
</jsp:forward>
相關文章
相關標籤/搜索