Restarting in Java

          統(tǒng)計(jì)

          留言簿

          閱讀排行榜

          評(píng)論排行榜

          編寫(xiě) "純HTML" jsp應(yīng)用--學(xué)會(huì)使用 JSTL

          [學(xué)習(xí)筆記](méi)**編寫(xiě) "純HTML" jsp應(yīng)用--學(xué)會(huì)使用 JSTL**


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

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

          但 有時(shí)即使使用javabean + servlet,我們也不得不將“極少量”的 java代碼 嵌入到 HTML中----的確,有時(shí)你必須這樣:因?yàn)樵?nbsp;javabean中,你無(wú)法使用JSP中的隱含對(duì)象,比如 request, session,response等.

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

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

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

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

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

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

          好了,下面我們就開(kāi)始做吧!

          1-編寫(xiě)tag處理器:datetag.java

          它的作用就象一個(gè)Servlet,接受來(lái)自客戶端的請(qǐng)求,但它卻可以象javaBean一樣在JSP中方便調(diào)用。
          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-編寫(xiě)tag庫(kù)描述符:tags.tld
          比較容易看出,<tag></tag>部分有點(diǎn)象servlet mapping的配置--這里配置的是tag的名字與tag類(lèi)之間的映射。

          <?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,注冊(cè)你的標(biāo)簽庫(kù):在web.xml的 <web-app>與</web-app>之間添加:
          在這里注冊(cè)你的自定義標(biāo)簽符,在JSP中的引用名為:/tags
          <taglib>

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

          </taglib>

          4-開(kāi)始在JSP中使用!
          因?yàn)橐呀?jīng)在web.xml中注冊(cè)過(guò),通過(guò) /tags 引用你的標(biāo)簽庫(kù);
          prefix的作用就象<jsp:useBean/>中的 id,只是作為一個(gè)標(biāo)志(可任意定義)
          <visa:date/> 很明顯,通過(guò)調(diào)用date,就等于調(diào)用了 datetag.class :

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


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

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

          2、因?yàn)門(mén)ag的功能并非只是這一些,還有更多高級(jí)功能---值得去學(xué)習(xí)!

          ****
          這只是一個(gè)很簡(jiǎn)單的應(yīng)用,當(dāng)然,你會(huì)有很多的“迷惑點(diǎn)”,這是正常的---在TAG中有一些獨(dú)有的特性,想完全學(xué)會(huì)TAG并不是件簡(jiǎn)單的事情。
          --所以,在這里,我向大家推薦一本好書(shū):電子工業(yè)出版社的《jsp標(biāo)志庫(kù)編程指南》(英文名:《Professional JSP Tag Libraries》)


          PS: 使用JSTL配合javabean,servlet還可以有效保護(hù)你的源碼哦 ---- 因?yàn)椋憧梢韵蚰愕目蛻艚桓恫缓衘ava 源代碼的web應(yīng)用,因?yàn)椋械?nbsp;java代碼 都已經(jīng)被編譯成 *.class了    *^_^*

          [注 意]:針對(duì) Tomcat 5.0x以下的版本----如:Tomcat 4.0x:要編譯標(biāo)簽處理器,必須將你的 servlet.jar(在% TOMCAT_HOME%\common\lib下面) 放進(jìn)環(huán)境變量 CLASSPATH 中---(如果是 tomcat5.0x 以上的版本,好象 沒(méi)這個(gè)要求)---否則,會(huì)提示編譯錯(cuò)誤。
           
          整理發(fā)布:Umbrella
          摘自:CnJSP論壇
          相關(guān)鏈接:http://www.cnjsp.org/cnjbb/showthread.jsp?forumID
          =3&rootID=37656&announceID=37656

          posted on 2005-02-25 18:28 Yang Fan 閱讀(243) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 延庆县| 抚州市| 津南区| 齐齐哈尔市| 壤塘县| 兴海县| 临颍县| 会宁县| 垦利县| 镇安县| 台中市| 时尚| 怀柔区| 七台河市| 南陵县| 印江| 紫云| 青川县| 博兴县| 古田县| 环江| 夏河县| 康定县| 滨海县| 日土县| 隆安县| 南宫市| 荆州市| 宜川县| 台安县| 喀什市| 徐汇区| 方城县| 南充市| 清苑县| 固安县| 唐海县| 涞源县| 连南| 塔城市| 沙雅县|