top
Loading...
JSP中的PAGE命令(1)
”疚慕致鄣奈侍獍ǎ喝綰臥贘SP里面使用自定義的JAVA類,如何讓你的表格在EXCEL下面顯示,怎樣指定用單線程的方式執行Servlet,以及怎樣設置http輸出流的緩沖區大小等等。
JSP的命令一共有三個:page、include和taglib。Page命令讓你能夠控制從JSP頁面生成的Servlet的屬性和結構。Include命令讓你插入一個文件,通常用于導入Applet。在JSP1.1標準里面,新添加了一個命令taglib,用于自定義的標簽。JSP命令的語法格式如下(以page為例):
$#@60;%@ page attribute="value" %$#@62;
或者
$#@60;%@ page attribute1="value1"
attribute2="value2"

attributeN="valueN" %$#@62;
如果你想讓你的JSP文件和XML標準兼容,你還可以考慮下面這種寫法:
$#@60;jsp:directive.page attribute="value" /$#@62;
在什么位置插入page命令沒有關系,因為page命令和其他的命令一樣,只在JSP頁面編譯的時候起作用。
Page命令的參數包括import, contentType, isThreadSafe, errorPage, isErrorPage,session, buffer, autoflush, extends, info, language。注意這些參數的名稱是大小寫敏感的。

import參數:使用自定義的類
import參數的作用是讓你指定生成的servlet中需要導入的包(packages)。缺省的情況下會自動導入java.lang.*,javax.servlet.*,javax.servlet.jsp.*,javax.servlet.http.*,另外還可能有你所使用的服務器自動導入的類。但是,出于可移植性的考慮,不要讓你的JSP依靠特定的服務器。原則:總是顯式的指定自己用到的類包。
import參數的格式為:
$#@60;%@ page import="package.class[,package.class2]" %$#@62;
例如:
$#@60;%@ page import="java.util.*,java.sql.*" %$#@62;
這個命令就導入了java.util和java.sql包里面的所有類。
import參數是page命令的參數中唯一一個可以在同一個頁面中出現多次的。盡管命令出現的位置無關緊要,筆者仍然建議你把所有的import參數寫在頁面的開始部分。

如何引入自定義的類包呢?首先要明確你所要使用的類包被正確的安裝到了你的服務器上面。現在的JSP服務器中大多數不支持JSP頁面引用具有自動更新(auto-reloading)屬性目錄下面的類包。不同的服務器的針對servlet的類包的存放目錄是不一樣的,詳見表1。必須注意,一旦你更改了這些目錄下面的文件,? 須重新啟動服務器。

服務器 標準目錄 候選目錄 自動更新 JSP可用
TOMCAT 3.0 webpages/WEB-INF/classes classes N/N Y/Y
JSWDK 1.0.1 webpages/WEB-INF/servlets classes N/N Y/Y
JWS 2.0 servlets classes Y/N N/Y
表1 類包的安裝目錄
用一個例子來說明自定義類包的引用吧。首先假設你的java源程序里面寫明了package pack.cla,那么你編譯以后的class文件就會位于你的編譯器的output路徑/pack/cla下面。再假設你使用的服務器是TOMCAT,你的應用的存放路徑是webapps/myapp/。那么你所要做的就是把/pack目錄拷貝到/myapp/WEB-INF/classes下面,然后再重新啟動TOMCAT。這樣你就可以在JSP文件中引用pack.cla里面的類了。

contentType 參數:利用EXCEL來顯示表格
contentType 參數指定http響應的頭部(response header)的Content-Type值。客戶端的瀏覽器會根據你在contentType指定的MIME類型和字符集代碼來顯示servlet輸出的內容。MIME(Multipurpose Internet Mail Extention)的內容一直在增加,現在包括的應用程序文檔格式已經很多了。表2列出了一些常見的MIME類型。

MIME 類型
意義
application/msword Microsoft Word文檔
application/pdf Acrobat PDF 文件
application/vnd.ms-excel Microsoft Excel 表格
audio/x-wav wav格式的音頻文件
text/html HTML格式文本文檔
text/css HTML層疊樣式表
text/plain 普通文本文檔
image/jpeg JPEG格式圖片
video/mpeg MPEG格式視頻文件

表2 常見MIME類型

contentType參數的格式為:
$#@60;%@ page contentType="MIME-type" %$#@62;
或者
$#@60;@ page contentType="MIME-type;charset=Character-Set" %$#@62;
實際上,設置page命令的contenType參數和下面的代碼功能上完全等價:
$#@60;% response.setContentType("MIME-Type"); %$#@62;
但是,這樣用scriplet直接調用setContentType函數的方式有一個缺陷,書寫的位置不像page命令一樣是位置無關的(如果servlet的輸出流沒有設置緩沖區的情形下)。
JSP的默認MIME類型是text/html,普通的servlet則是text/plain。不過兩者的默認charset都是ISO-8859-1。需要指出的一點是,如果你使用了FrontPage等網頁制作工具來編寫JSP頁面的話,最好刪除其自動加上的Content-Type設置,以免引起可能的沖突。
舉一個例子,我們經常碰到某些需要訪問數據庫并用表格形式顯示數據的應用,現在可以通過contentType參數的設置用Excel來顯示表格。步驟有兩個。首先,用page命令把MIME類型設置為application/vnd.ms-excel。然后,把你想輸出的內容按照Excel的格式要求輸出。
Excel的表格格式有兩種。簡單的一種是直接把不同行的數據寫在不同的行上,然后把不同列上的數據用TAB鍵分隔開。比如像下面一樣寫一個JSP文件:

$#@60;%@ page contentType="application/vnd.ms-excel" %$#@62;
$#@60;%-- 注意數據之間的間隔要用TAB鍵 --%$#@62;
JAN FEB MAR APR MAY
142 154 225 456 777

在安裝了Excel的系統上用瀏覽器打開這個頁面的時候,你就會看到頁面中的數據自動在Excel的表格中顯示出來。
另外一種數據格式就是用通常的HTML表格,但是只有最新版本的Excel才支持HTML表格的顯示。這種方法的好處是不必關心用戶是否安裝了Excel,就算沒有Excel表格也可以正常的顯示。自然的,你會馬上考慮到能不能動態的改變contentType的值,以便按照用戶的需求來顯示表格。遺憾的是,page命令不能夠在運行期間才確定參數的值,也不能夠想當然的把page命令插入到if語句中間去。要到達這一目的,我們只能使用contentType參數的等價形式:setContentType函數。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗