天天看點

jsp 教程(二)

<b>&lt;%@ page options %&gt;</b> options 可以是一下一項或幾項:

language="java" 指定jsp container 要用什麼語言來編譯jsp 網頁,預設值為 java;

import="package-spec.*"  定義此jsp 頁面可以使用哪些 java API,用逗号分隔列出一個或多個全稱類名

session="true or false" 隻有在調試的時候才會設定為false,預設為true

buffer="none or number<b>[kb]</b>" 指定輸出流緩存的大小,預設為8 kb

autoflush="true or false" 決定輸出流的緩沖區是否要自動重新整理。預設為true

isThreadSafe="true or false" 預設為 true,表明此 jsp 頁面可以處理來自多個線程的同步的請求。不建議使用 false。預設為 true

errorPage="error-page-URL" 表面如果發生異常錯誤,網頁會被重定向一個URL 頁面。

isErrorPage="true or false" 如果此頁面被用作處理異常的頁面,則設定為 true。預設為false。

contentType="content-type" 表示将在生成Servlet 中使用的MIME類型和可選字元編碼。預設為 text/html

info="text" 表示此 jsp 頁面的相關資訊,可由 getServletInfo()方法傳回。

extends="name-of-super-class" 定義此jsp 頁面産生的 Servlet是繼承自哪一個父類,通常為HttpServlet)

&lt;%@ include file="file-URL" %&gt; 将指定的檔案包含到容器裡

<b>&lt;%@ taglib uri=".../glarf.tld" prefix="glarf" %&gt;</b>: 聲明标簽的使用

    這一次主要介紹一下page 指令的相關屬性,另外兩個指令include和tablig将會在下一次詳細說明。

一、page import屬性

    屬性 import 屬性類似java類裡import,不過page import 屬性可以包好多個類,類名之間使用逗号分隔。其文法格式如下:

    例子如下:

&lt;%@ page import="java.util.*" %&gt;

    Demo:在這個demo 裡包含了兩個個自定義的類,都在com.tools包裡,代碼設計如下:import.jsp

    ServletUtilities 和 ShortLivedCookie 代碼設計如下,注意都在 com.tools包裡,

    import.jsp 第一次通路的輸出如下:

<a href="http://peiquan.blog.51cto.com/attachment/201310/22/7518552_13824644155Dgh.png"></a>

    import.jsp 第二次通路的輸出如下:

<a href="http://peiquan.blog.51cto.com/attachment/201310/22/7518552_1382464416LpQb.png"></a>

二、 page contentType 屬性

    page contentType 屬性石用來設定 response 的頭字段 Content-Type的值,用來表示輸出到用戶端的文檔的 MIME 類型。不同的ContentType 會影響用戶端所看到的效果。一般來說,屬性contentType 的使用有以下兩種格式:

&lt;%@ page contentType="MIME-Type" %&gt; 

&lt;%@ page contentType="MIME-Type; charset=Character-Set" %&gt;

    如:&lt;%@ page contentType="text/html" %&gt;

    如上代碼等同于 &lt;% response.setContentType("text/html"); %&gt;

    附:Servlet 的預設 MIME 類型是 text/plain,jsp 預設類型是 text/html,預設的字元集是ISO-8859-1。

    Demo1,:使用 contentType 屬性産生純文字檔案。

    Demo2:利用 contentType屬性産生 excel 表格

    将contentType 的屬性值設為“application/vnd.ms-excel”,便可産生一個簡易的 excel 表格。

    格式化表格的方式有兩種,一種方式是:将資料分成一行行的,列之間的使用 tab 分開(注意不是空格鍵)。如下是一個簡單的例子(附:表格裡的資料可以從資料裡讀取)。

    在 IE 的運作效果圖如下:

   首先會彈出如下對話框:

<a href="http://peiquan.blog.51cto.com/attachment/201310/22/7518552_1382464418NDyC.png"></a>

   接着就是

<a href="http://peiquan.blog.51cto.com/attachment/201310/22/7518552_1382464419AT8s.png"></a>

    格式化表格的第二種方式,就是使用html 表格屬性控制,如果設定其對應 MIME 類型,則可輸出 excel 表格,如果沒有則輸出html表格.

    Demo3:其實和Demo2很類似。exportToExcel.jsp代碼設計如下:

    輸出效果圖:

<a href="http://peiquan.blog.51cto.com/attachment/201310/22/7518552_1382464420VYaO.png"></a>

<a href="http://peiquan.blog.51cto.com/attachment/201310/22/7518552_1382464421eooe.png"></a>

三、page isThreadSafe 屬性

    屬性 isThreadSafe 表明此 jsp 頁面可以處理來自多個線程的同步的請求。一般是預設使用,如下:

&lt;%@ page isThreadSafe="true" %&gt; &lt;%!-- 預設--%&gt; 

&lt;%@ page isThreadSafe="false" %&gt;

    因為不推薦将isThreadSafe 屬性設定為 false,且這是與線程相關的知識體系,在此就不多做介紹了。相關知識可參考java 線程知識。

四、其他

    對于剩下來的其他屬性,可以參考一開始給出來的總結。在此隻是補充一下如何使用屬性 isErrorPage 和 errorPage。

    isErrorPage = ”true or false”,如果此頁面被用作處理異常錯誤的頁面,則為true。在這種情況下,頁面可被指定為另一頁面 page 指令元素中 errorPage 屬性的取值。指定此屬性為 true 時,便可以在此頁面使用内置對象 exception。預設值為false。

    errorPage = “error-page-url”,表示如果網頁發生異常錯誤,網頁會被重新指向一個 url 頁面。錯誤頁面必須在其page 指令元素中指定 isErrorPage = ”true“。

    Demo1:下面設定一個計算速度的 computeSpeed.jsp,如果正确輸入參數,便可得到正确的輸出;否則輸出異常頁面。

    computeSpeed.jsp代碼如下:

Distance: &lt;%= distance %&gt; m

Time: &lt;%= time %&gt; s

Speed: &lt;%= speed %&gt; m/s.

    speedErrors.jsp代碼如下:

    如果正确輸出參數的值,可以得到如下頁面:

<a href="http://peiquan.blog.51cto.com/attachment/201310/22/7518552_13824644224NVq.png"></a>

   參數輸入錯誤時,将會得到如下頁面。

<a href="http://peiquan.blog.51cto.com/attachment/201310/22/7518552_1382464428RrPl.png"></a>

本文轉自peiquan 51CTO部落格,原文連結:http://blog.51cto.com/peiquan/1313663