jsp 語法詳解

SP語法解
JSP文件中,能夠總結出五類元素:
• 註釋
• 模板元素
• 腳本元素
• 指令元素
• 動做元素
1.模板元素:
     模板元素指JSP的靜態HTML或者XML內容,他對JSP的顯示是很是必要的,可是對於JSP的編程人員來講,就不怎麼關心這些部份內容,他主要有網頁的美工來完成.,它遵循的是html或者是xml語法規則!
     模板元素是頁面的框架,它影響頁面的結構和美觀效果.在jsp編譯的時候,它將這些個模板元素編譯到Servlet中去.當客戶端請求這個jsp頁面的時候Servlet會一字不變的發送到客戶端去!
2.註釋
JSP中的註釋有多種:
1.>>>HTML/XML註釋:在客戶端顯示的一種註釋。
JSP語法:<!--comment [<% = expression %>] -->
例如:<!--這是一個JSP頁面,當前時間爲: <%=(new java.util.Date()).toLocaleString() %> -->
2.>>>隱藏註釋:寫在JSP程序中,但不發給客戶。
JSP語法:<%-- comment --%>
scriptlets中的註釋:鬱友scriptlets包含的是JAVA代碼因此Java中的註釋規則也可使用
3. 腳本元素
腳本元素主要包括:
• 聲明(Delaration)
• 表達式(Expression)
• Scriptlets
聲明就是在JSP程序中聲明合法的變量和方法:
<%! String getDate()
    {
       return new Date().toString();
    }
    int count = 10;
%>
直觀的講表達式就是位於<%=和%>之間的代碼:
<%=getDate()%>
Scriptlets位於<%和%>之間,它們是合法的JAVA代碼:
       <%
          int i;
          String color1 = "99ccff";
          String color2 = "88cc33";
          for(i =1 ;i<=count;i++)
          {
          String color = "";
          if((i%2)==0) color = color1;
          else color = color2;
          out.println("<TR bgcolor="+color+">");
          out.println("<TD>----------------------</TD>");
          out.println("</TR>");
          }
          %>
4.指令元素
JSP中有三種指令元素,它們是:
• 頁面(page)指令
• include 指令
• taglib指令
5.動做元素:
   與指令元素不用的是,動做元素在請求處理階段起做用。JSP規範定義了一系列的標準動做,它們用jsp做爲前綴,這些動做有:
   <jsp:userBean>、<jsp:setProgery>、<jsp:getProperty>、<jsp:param>、<jsp:include>、<jsp:forward>、<jsp:plugin>、<jsp:fallback>、<jsp:params>、<jsp:attribut>、<jsp:body>、<jsp:invoke> 、<jsp:doBody>、<jsp:element>、<jsp:text>、<jsp:output>。
指令元素:
   指令用於從JSP發送一個信息的容器上,他用來設置全局變量,聲明類、要實現的方法和輸出內容的類型等。它們並不向客戶產生任何輸出,全部的指令都在JSP整個文件範圍內有效。指令元素爲翻譯階段提供了全局信息。
指令元素使用一下格式:<%@ directiovename arrtibute="value",attribute="value"%>。
1.頁面指令:用來定義JSP文件中的全局屬性。
格式以下:<%@ page attribute="value"... %>
詳細語法:
<% @ page

   [language="java"]

   [import="{package.calss | package.*},..."]

   [contentType="TYPE;charset=CHARSET"]

   [session="True|False"]

   [buffer="none|8K|sizeKB"]

   [autoFlush="True|False"]

   [isThreadSafe="True|False"]

   [info="text"]

   [errorpage="relativeURL"]

   [isErrorPage="True|False"]

   [extentds="package.class"]

   [isELIgnored="Ture|False"]

   [pageEncoding="perinfo"]

%>
例程:page.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"
session="true" buffer="24kb" autoFlush="true" info="a test directive jsp page"
errorPage="error.jsp" isErrorPage="false" contentType="text/html;charset=gb2312"%>
<%@ page isELIgnored="false"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'page.jsp' starting page</title>
  </head>
  <body>
    <H1>使用 page 指令的測試頁面</H1>
    <%=new java.util.Date().toLocaleString()%>
    使用表達式語言:
     \${4>3}:${4>3}
  </body>
</html>
2.include指令
   inlcude指令通知容器將當前的JSP頁面中的內嵌的,在指定位置的資源內容包含。被包含的文件內容能夠被JSP解析,這種解析發生在編譯期間。
  include指令格式以下:<%@ include file="filename"%>
3.taglib指令
   這個指令容許頁面使用者自定義標籤。首先用戶要開發標籤庫,爲標籤庫寫.tld配置文件,而後在JSP頁面裏使用自定義標籤。
   在JSP規範裏,標籤庫獲得了不斷的增強,最新的JSP2.0規範中增長了JSTL標籤庫。JSP的標籤庫在頁面裏定義以下:<%@ taglib uri ="taglibURI" prefix="tagPrefix" %>
4.表達式語言:
表達式語言是JSP2.0新增長的技術,經過表達式語言,能夠簡化JSP開發,使代碼整潔。表達式使用"${}"來表示
腳本元素:
JSP腳本元素是JSP代碼中使用最頻繁的元素,特別是Scriptlets。
1.聲明(Declaration):
在JSP裏,聲明是一段JAVA代碼,他用來定義在產生的類文件中的類的屬性和方法。聲明後的變量和方法能夠在JSP的任何地方使用。
聲明的語法格式爲:<%! variable declaration
                   moenthod declaration(paramType param,...)%>
例程:declare.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.io.UnsupportedEncodingException" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'declare.jsp' starting page</title>
  </head>
  <%!
     String trans(String chi)
     {
        String result = null;
        byte temp[];
        try
           {
              temp=chi.getBytes("gb2312");
              result = new String(temp);
           }
           catch(UnsupportedEncodingException e)
           {
             System.out.println(e.toString());
           }
           return result;
     }
  %>
  <%!
        int count = 10;
  %>
  <body>
      <%
         String source = "你好!世界";
         for(int i =0;i<count;i++)
         {
         out.println(trans(source));
         out.println("<br>");
         source = trans(source);
         }
      %>
  </body>
</html>
2.表達式(Expression)
表達式在JSP請求處理階段計算它的值,所得的結果轉換成字符串並於模板數據結合在一塊兒。語法:<%= some java expression %>
3.Scriplet
    Scriplet 是一段能夠在處理請求時間執行的java代碼,Scriplet 包括在他能夠產生輸出,並經輸出發送到客戶的輸入流裏,也能夠是一下誒流程控制語句。固然他中間還能夠包含一些合法的Java註釋。語法爲 <% java code statements %>。
動做元素:
     與指令元素不一樣,動做元素在請求處理階段起做用。JSP動做元素是使用XML語法寫成的,它採用如下兩種格式中的一種:
<prefix:tag arrtibute=value arrtribute-list.../>
或者 <prefix:tag arrtibute=value arrtribute-list...>
...
</prefix:tag>
標準動做有:
   <jsp:userBean>、<jsp:setProgery>、<jsp:getProperty>、< jsp:param>、<jsp:include>、<jsp:forward>、<jsp: plugin>、<jsp:fallback>、<jsp:params>、<jsp:attribut>、 <jsp:body>、<jsp:invoke>、<jsp:doBody>、<jsp: element>、<jsp:text>、<jsp:output>。
另外,還有:<jsp:root><jsp:declaration><jsp:scriptlet><jsp:expression>
介紹經常使用的JSP動做元素:
1.<jsp:param>
jsp:param 操做被用來以「名-值」對的形式爲其餘標籤提供附加信息。他和jsp:include、jsp:forward和jsp:plugin一塊兒使用,他的使用 方式爲:      <jsp:param name="paramName" value="paramValue"/>。
2.<jsp:include>
jsp:include 操做容許在請求時間內在現成的JSP頁面裏面包含靜態或者動態資源。被包含的對象只有對Jspwriter對象的訪問權,而且他不能設置頭或者 Cookie。若是頁面輸出是緩衝的,那麼緩衝區的刷新要優先於包含的刷新。此指令在運行上效率比<%@ page include %>指令的效率低,但能夠動態增長內容。經過如下格式來使用include指令:<jsp:include page="fileName" flush="true"/>或者
<jsp:include page="fileName" flush="true">
<jsp:param name="paramName" value="paramValue"/>
....
</jsp:include>

例如:
<jsp:include page="/source/copyright.html"/>
<jsp:include page="source/copyright.html">
<jsp:include page="index.html"/>
<jsp:include page="/index.html"/>
<jsp:include page="included.jsp" />
<jspparam name="companyName" value="huayuan">
</jsp:include>
3.<jsp:forward>
jsp:forward 操做是容許將請求轉發到另一個JSP、Servlet或者靜態資源文件中。請求被轉向到的資源鼻息位於用JSP發送請求相同的上下文環境之中。每當遇到次操做時,就中止執行當前的JSP,轉而執行被轉發的資源,按如下的方式使用次操做:
<jsp:forward page="uri"/>
或者
<jsp:forward page="uri">
<jsp:param name="paramName" value="paramValue"/>
....
</jsp:forward>
例如:
<% String target="/login.jsp" %>
<jsp:forward page="<%=target%>"/>
或者:
<jsp:forward page="/login.jsp">
     <jsp:param name="userID" value="starxing" />
     <jsp:param name="password" value="xxxxxx" />
</jsp:forward>
jsp:forward 操做典型的使用就是登陸,入進行權限驗證的頁面。
4.<jsp:setProperty>:
    此操做和useBean一塊兒協做,用來設置Bean的簡單屬性和索引屬性。<jsp:setProperty>標籤使用Bean給定的setXXX()方法,在Bean中設置一個或多個屬性值。
    Bean的自省(introspection)用來發現出現的是那些屬性和它們的名字是什麼,這些屬性是簡單的仍是索引的,它們是什麼類型的等。用如下方 法來使用setProperty:<jsp:setProperty name="beanName" propertyDetail />
其中,progertyDatail能夠是下面的幾個中的一個:
property="*"
property="propertyName" param="parameterName"
property="propertyName"
property="propertyName" value="propertyValue"
例如:
<jsp:useBean id="usersession" scope="session" class="com.user.UserSession">
<jsp:setProperty name="usersession" property="name" value="starxing" />
</jsp:useBean>
或者:
<jsp:useBean id="usersession" scope="session" class="com.user.UserSession" />
<jsp:setProperty name="usersession" property="name" value="starxing" />
(1)name="beanName":這個是必須的屬性。他的值爲Bean的名字,在這以前要用 jsp:userBean引入名稱。
(2)propertyDetails
能夠經過下面四種方法指定屬性的信息
• property="*":這是一個設置Bean屬性的快捷方式,在Bean中,屬性的名字、類型必須和request對象中的參數名稱向匹配。
• property="propertyName":使用request中的一個參數來定義Bean中的一個屬性值。在語法中,property指定Bean的屬性名,而且Bean屬性和request參數名應相同.
• property="propertyName"  param="paramterName":使用request中的一個參數來定義Bean中的一個屬性值。在語法中,property指定Bean的屬性名,param指定了那個參數的和屬性值相等。
• property="propertyName"  value="PropertyValue":把Value的值賦給Bean的屬性值。
5.<jsp:getProperty>
jsp:getProperty 是對jsp:setProperty的一個補充,他用來訪問一個Bean的屬性。
使用方法爲:<jsp:getProperty name="beanName" property="propertyName" />
例如:<jsp:useBean id="usersession" scope="session" class="com.user.UserSession" />
   <jsp:getProperty name="usersession" property="name" />
    <jsp:getProperty name="usersession" property="password" />
6.<jsp:useBean>
<jsp:useBean> 標籤用來在JSP頁面中建立一個Bean的實例,並指定他的名字以及做用分爲。語法以下:<jsp:useBean id="id",scope="page|request|session|application" typeSpec />
其中ID是一個大小寫相關的名字,用來表示這個實例;scope表示此對象可使用的範圍;typeSpec能夠是如下四個中的一個:
• class="className"
• class="className" type="typeName"
• Beanclass="beanName" type="typeName"
• type="typeName"

scope介紹:其實就是後面的內建對象的四個重要的屬性範圍:
• page:可以在包含<jsp:useBean>標籤的JSP文件中使用,頁面執行完畢,就會實效
• request:在請求範圍內有效。
• session:從建立Bean開始,就能夠在Session有效範圍內使用,這個Bean對於Jsp是共享的。注意:在建立Bean的JSP頁面中<%@ page %>指令中必須指定session=True。
• application:同Session同樣,從建立Bean開始,就能夠在任何使用相同application的JSP文件中使用Bean。
相關文章
相關標籤/搜索