Dict.CN 在線詞典, 英語學習, 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統計

          留言簿(23)

          積分與排名

          優秀學習網站

          友情連接

          閱讀排行榜

          評論排行榜

          編寫 "純HTML" jsp應用--學會使用 JSTL

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

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

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

          使用Servlet雖然可以使用JSP的對象,但卻不能象javaBean靈活地插入到?html?中--
          所以,Tag(標簽)?就出現了(可以使用所有的JSP隱含對象),它的出現徹底解決了這個問題,可以讓你編寫出“純HTML”的JSP頁碼---由此帶來的好處自然不言而喻:更高的可維護性、更高的組件復用效率、更易維護的HTML頁面````

          小弟不才,剛剛開始學JSTL,覺得這個東東真的很不錯!很想讓更多的?初學者?知道這個,并能應用到實際的web開發中。
          下面,就開始編寫我們的第一個?Tag!

          下面是使用了簡單Tag的JSP文件,運行結果是顯示當前時間:

          taglib uri="/tags" prefix="visa"%>]]>
          現在時間是:
          很明顯,使用了tag的JSP頁清爽了許多---如果將數據庫操作等一些復雜功能也封裝進去的話,tag的優勢就更明顯了!

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

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

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

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

          import java.util.Date;
          import javax.servlet.jsp.*;
          import javax.servlet.jsp.tagext.*;

          public class datetag extends TagSupport{

           public int doStartTag() throws JspException{
            Date dte=new Date();
            try{
            JspWriter out=pageContext.getOut();
            out.print(dte);
             }
             catch(java.io.IOException e)
             {throw new JspTagException(e.getMessage());}
           return SKIP_BODY;
          }
          }
          用 javac編譯之后,就得到了 datetag.class文件了,將其放在 xxx\WEB-INF\classes\tag 目錄下。

          2-編寫tag庫描述符:tags.tld
          比較容易看出,部分有點象servlet mapping的配置--這里配置的是tag的名字與tag類之間的映射。

          <?xml version="1.0" encoding="ISO-8859-1"?>
          <taglib>
          <tlib-version>1.0</tlib-version>
          <jsp-version>1.2</jsp-version>

          <tag>
          <name>date</name>
          <tag-class>tag.datetag</tag-class>
          <body-content>empty</body-content>
          </tag>
          </taglib>



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

          3-配置你的web.xml:
          配置web.xml,注冊你的標簽庫:在web.xml的 之間添加:
          在這里注冊你的自定義標簽符,在JSP中的引用名為:/tags

          <taglib>
          <taglib-uri>/tags</taglib-uri>
          <taglib-location>/WEB-INF/tags.tld</taglib-location>
          </taglib>

          4-開始在JSP中使用!
          因為已經在web.xml中注冊過,通過 /tags 引用你的標簽庫;
          prefix的作用就象中的 id,只是作為一個標志(可任意定義)
           很明顯,通過調用date,就等于調用了 datetag.class :

          <%@ page contentType="text/html;charset=gb2312" %>
          <html><body>
          <%@taglib uri="/tags" prefix="visa"%>
          現在時間是:<visa:date/>
          </body></html>


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

          -答案是:這是很值得的!
          1、如果將比較復雜的邏輯功能封裝進Tag,它就具有比Servlet,javaBean更高的靈活性,更多的優點,更易擴展,更易維護---徹底分離表示層與邏輯層!

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

          **
          這只是一個很簡單的應用,當然,你會有很多的“迷惑點”,這是正常的---在TAG中有一些獨有的特性,想完全學會TAG并不是件簡單的事情。
          -所以,在這里,我向大家推薦一本好書:電子工業出版社的《jsp標志庫編程指南》(英文名:《Professional JSP Tag Libraries》)


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

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

          ]]>

          posted on 2006-10-08 14:21 都市淘沙者 閱讀(317) 評論(0)  編輯  收藏 所屬分類: JSP/PHP

          主站蜘蛛池模板: 临安市| 肃南| 湖北省| 盈江县| 于都县| 镇宁| 桦南县| 万山特区| 黄浦区| 黎川县| 宜黄县| 江永县| 舟曲县| 城固县| 泗洪县| 遂川县| 汤阴县| 肥西县| 淄博市| 报价| 临泽县| 新乡市| 新绛县| 三原县| 宜昌市| 宝清县| 玉树县| 桃江县| 新巴尔虎左旗| 商洛市| 东丰县| 玉田县| 郑州市| 神木县| 法库县| 汤阴县| 富民县| 威远县| 弥勒县| 贡觉县| 南宫市|