自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

充分使用標(biāo)簽功能編寫JSP應(yīng)用(JSTL)

開發(fā) 后端
本文簡單介紹了編寫JSP應(yīng)用如何使用標(biāo)簽功能。標(biāo)簽功能可以讓你編寫出“純HTML”的JSP頁碼,從而實(shí)現(xiàn)更高的可維護(hù)性、更高的組件復(fù)用效率、更易維護(hù)的HTML頁面。

剛開始用JSP做web應(yīng)用的時候,象使用PHP,ASP一樣用JSP,在HTML代碼中夾雜著一大堆的 scriptlet。即java 代碼段。由于本人的“排版”技術(shù)還算可以,開始的時候覺得這種JSP應(yīng)用挺好,編寫“效率”高,調(diào)試又方便!

到了后來才知道,這是一種極其愚蠢的做法。JSP誕生的時候就已經(jīng)明確與ASP,PHP劃清了界限,使用javaBean、Servlet可以有效的將HTML中夾雜的java 代碼段剝離,然后包裝成一個可在多個頁面復(fù)用的“邏輯處理組件”。這是JSP相對于PHP,ASP的優(yōu)越之處之一。

但有時即使使用javabean + servlet,我們也不得不將“極少量”的 java代碼 嵌入到HTML中----的確,有時你必須這樣:因為在 javabean中,你無法使用JSP中的隱含對象,比如 request,session,response等.

使用Servlet雖然可以使用JSP的對象,但卻不能象javaBean靈活地插入到 html 中。

所以,Tag(標(biāo)簽) 就出現(xiàn)了(可以使用所有的JSP隱含對象),它的出現(xiàn)徹底解決了這個問題,可以讓你編寫出“純HTML”的JSP頁碼---由此帶來的好處自然不言而喻:更高的可維護(hù)性、更高的組件復(fù)用效率、更易維護(hù)的HTML頁面。

小弟不才,剛剛開始學(xué)JSTL,覺得這個東東真的很不錯!很想讓更多的 初學(xué)者 知道這個,并能應(yīng)用到實(shí)際的JSP應(yīng)用開發(fā)中。
下面,就開始編寫我們的第一個 Tag!

**下面是使用了簡單Tag的JSP文件,運(yùn)行結(jié)果是顯示當(dāng)前時間:

  1. < %@ page contentType="text/html;charset=gb2312" %> 
  2. < html>< body> 
  3. < %@taglib uri="/tags" prefix="visa"%> 
  4. 現(xiàn)在時間是:< visa:date/> 
  5. < /body>< /html> 

很明顯,使用了tag的JSP頁清爽了許多---如果將數(shù)據(jù)庫操作等一些復(fù)雜功能也封裝進(jìn)去的話,tag的優(yōu)勢就更明顯了!

**環(huán)境:win2000 server + Tomcat5.019 + j2sdk1.42 + SQLServer 2k
**開發(fā)一個Tag,需要編寫2個主要文件:
1-標(biāo)簽處理器(一個類servlet的java類)
2-標(biāo)簽描述符(一個XML風(fēng)格的tld文件)
完成這兩個文件,就可以在WEB應(yīng)用中部署、應(yīng)用了。

好了,下面我們就開始做吧!

1-編寫tag處理器:datetag.java

它的作用就象一個Servlet,接受來自客戶端的請求,但它卻可以象javaBean一樣在JSP中方便調(diào)用。

  1. package tag;  
  2.  
  3. import java.util.Date;  
  4. import javax.servlet.jsp.*;  
  5. import javax.servlet.jsp.tagext.*;  
  6.  
  7. public class datetag extends TagSupport{  
  8.  
  9.  public int doStartTag() throws JspException{  
  10.   Date dte=new Date();  
  11.   try{  
  12.   JspWriter out=pageContext.getOut();  
  13.   out.print(dte);  
  14.    }  
  15.    catch(java.io.IOException e)  
  16.    {throw new JspTagException(e.getMessage());}  
  17.  return SKIP_BODY;  
  18. }  
  19. }  

用 javac編譯之后,就得到了 datetag.class文件了,將其放在 xxx\WEB-INF\classes\tag 目錄下。

2-編寫tag庫描述符:tags.tld

比較容易看出,< tag>< /tag>部分有點(diǎn)象servlet mapping的配置--這里配置的是tag的名字與tag類之間的映射。

  1. < ?xml version="1.0" encoding="ISO-8859-1"?> 
  2. < taglib> 
  3. < tlib-version>1.0< /tlib-version> 
  4. < jsp-version>1.2< /jsp-version> 
  5.  
  6. < tag> 
  7.  < name>date< /name> 
  8.  < tag-class>tag.datetag< /tag-class> 
  9.  < body-content>empty< /body-content> 
  10. < /tag> 
  11. < /taglib> 
  12.  

將tags.tld保存在xxx\WEB-INF\ 目錄下。

3-配置你的web.xml:

配置web.xml,注冊你的標(biāo)簽庫:在web.xml的 < web-app>與< /web-app>之間添加:
在這里注冊你的自定義標(biāo)簽符,在JSP中的引用名為:/tags

  1. < taglib> 
  2.  
  3. < taglib-uri>/tags< /taglib-uri> 
  4. < taglib-location>/WEB-INF/tags.tld< /taglib-location> 
  5.  
  6. < /taglib> 

4-開始在JSP應(yīng)用中使用!

因為已經(jīng)在web.xml中注冊過,通過 /tags 引用你的標(biāo)簽庫;
prefix的作用就象< jsp:useBean/>中的 id,只是作為一個標(biāo)志(可任意定義)
< visa:date/> 很明顯,通過調(diào)用date,就等于調(diào)用了 datetag.class :

  1. < %@ page contentType="text/html;charset=gb2312" %> 
  2. < html>< body> 
  3. < %@taglib uri="/tags" prefix="visa"%> 
  4. 現(xiàn)在時間是:< visa:date/> 
  5. < /body>< /html> 

**相信到了這里,有人就有了疑問了:為了使用一個Tag,我就做了這么多的“多余”工作(編寫tld,修改web.xml,還要重啟tomcat),值得嗎?!

---答案是:這是很值得的!

1、如果將比較復(fù)雜的邏輯功能封裝進(jìn)Tag,它就具有比Servlet,javaBean更高的靈活性,更多的優(yōu)點(diǎn),更易擴(kuò)展,更易維護(hù)---徹底分離表示層與邏輯層!

2、因為Tag的功能并非只是這一些,還有更多高級功能---值得去學(xué)習(xí)!

****

這只是一個很簡單的應(yīng)用,當(dāng)然,你會有很多的“迷惑點(diǎn)”,這是正常的---在TAG中有一些獨(dú)有的特性,想完全學(xué)會TAG并不是件簡單的事情,但對于JSP應(yīng)用開發(fā)而言這終究會節(jié)省很多的工夫。

--所以,在這里,我向大家推薦一本好書:電子工業(yè)出版社的《jsp標(biāo)志庫編程指南》(英文名:《Professional JSP Tag Libraries》)

PS:使用JSTL配合javabean,servlet還可以有效保護(hù)你的源碼哦 ---- 因為,你可以向你的客戶交付不含有java源代碼的web應(yīng)用,因為,所有的 java代碼 都已經(jīng)被編譯成 *.class了   *^_^*

[注意]:針對 Tomcat 5.0x以下的版本----如:Tomcat 4.0x:要編譯標(biāo)簽處理器,必須將你的 servlet.jar(在% TOMCAT_HOME%\common\lib下面) 放進(jìn)環(huán)境變量 CLASSPATH 中---(如果是 tomcat5.0x 以上的版本,好象沒這個要求)---否則,會提示編譯錯誤。

【編輯推薦】

  1. JSP換行問題解決辦法一覽
  2. 簡化JSP表達(dá)式中代碼
  3. 淺析JSP服務(wù)器
  4. 監(jiān)視JSP中JVM可用內(nèi)存
  5. JSP的Init和Destory函數(shù)提高工作效率
責(zé)任編輯:yangsai 來源: 網(wǎng)絡(luò)
相關(guān)推薦

2009-03-16 15:07:20

JSP分頁window.openJSP表單

2009-06-03 09:44:30

JSTLJSP編程

2009-07-02 11:15:34

標(biāo)簽實(shí)例JSP網(wǎng)頁應(yīng)用

2009-07-03 09:47:53

JSP JSTL

2009-08-03 09:15:39

JSP標(biāo)準(zhǔn)標(biāo)記庫JSTL

2009-07-07 14:33:44

JSP入門

2009-07-06 13:52:56

編寫JSP Tag

2009-06-29 15:57:54

JSP標(biāo)簽庫

2009-07-02 08:50:01

JSP標(biāo)簽庫

2020-03-23 20:57:02

SD-WAN網(wǎng)絡(luò)

2009-06-26 15:23:19

JSTL

2011-12-14 09:46:39

JSPJava

2009-01-18 10:56:27

JSTLEL表達(dá)式JSP標(biāo)準(zhǔn)標(biāo)記庫

2009-07-02 11:25:33

JSP課程

2009-07-07 17:07:28

JSP標(biāo)簽

2009-07-07 11:18:59

JSP Servlet

2013-01-31 10:04:29

F5虛擬應(yīng)用交付

2009-06-15 15:26:00

NetBeans連接數(shù)使用JSTL

2011-12-26 10:11:08

JSP

2009-07-07 17:37:32

JSP標(biāo)簽庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號