JSP中的PAGE命令就算沒有Excel表格也可以正常的顯示 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
此為主轉貼資料 http://www.php2000.net/modules/wfsection/article.php?articleid=2562 本文將要討論的問題包括:如何在JSP裏面使用自定義的JAVA類,如何讓你的表格在EXCEL下面顯示,怎樣指定用單線程的方式執行Servlet,以及怎樣設置http輸出流的緩衝區大小等等。
JSP的命令一共有三個:page、include和taglib。Page命令讓你能夠控制從JSP頁面生成的Servlet的屬性和結構。Include命令讓你插入一個文件,通常用於導入Applet。在JSP1.1標準裏面,新添加了一個命令taglib,用於自定義的標簽。JSP命令的語法格式如下(以page爲例): 或者
如果你想讓你的JSP文件和XML標準相容,你還可以考慮下面這種寫法:
在什麽位置插入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參數的格式爲:
例如: 這個命令就導入了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參數的格式爲:
或者
實際上,設置page命令的contenType參數和下面的代碼功能上完全等價:
但是,這樣用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文件:
JAN FEB MAR APR MAY
142 154 225 456 777
在安裝了Excel的系統上用瀏覽器打開這個頁面的時候,你就會看到頁面中的資料自動在Excel的表格中顯示出來。
另外一種資料格式就是用通常的HTML表格,但是只有最新版本的Excel才支援HTML表格的顯示。
這種方法的好處是不必關心用戶是否安裝了Excel,就算沒有Excel表格也可以正常的顯示。
自然的,你會馬上考慮到能不能動態的改變contentType的值,以便按照用戶的需求來顯示表格。
遺憾的是,page命令不能夠在運行期間才確定參數的值,也不能夠想當然的把page命令插入到if語句中間去。
要到達這一目的,我們只能使用contentType參數的等價形式:setContentType函數
*********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together!
希望能大家敞開心胸,將知識寶庫結合一起
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |