<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Restarting in Java

    統(tǒng)計

    留言簿

    閱讀排行榜

    評論排行榜

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

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


    作者:Juniper_c
     
    剛開始用JSP做web應(yīng)用的時候,象使用PHP,ASP一樣用JSP,在HTML代碼中夾雜著一大堆的 scriptlet---即java 代碼段。由于本人的“排版”技術(shù)還算可以,開始的時候覺得挺好,編寫“效率”高,調(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)用到實際的web開發(fā)中。
    下面,就開始編寫我們的第一個 Tag!

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

    <%@ page contentType="text/html;charset=gb2312" %>
    <html><body>
    <%@taglib uri="/tags" prefix="visa"%>
    現(xiàn)在時間是:<visa:date/>
    </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)用。
    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
    比較容易看出,<tag></tag>部分有點象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,注冊你的標(biāo)簽庫:在web.xml的 <web-app>與</web-app>之間添加:
    在這里注冊你的自定義標(biāo)簽符,在JSP中的引用名為:/tags
    <taglib>

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

    </taglib>

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

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


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

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

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

    ****
    這只是一個很簡單的應(yīng)用,當(dāng)然,你會有很多的“迷惑點”,這是正常的---在TAG中有一些獨有的特性,想完全學(xué)會TAG并不是件簡單的事情。
    --所以,在這里,我向大家推薦一本好書:電子工業(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 以上的版本,好象 沒這個要求)---否則,會提示編譯錯誤。
     
    整理發(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 閱讀(234) 評論(0)  編輯  收藏


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲一区在线视频观看| 亚洲AV无码乱码在线观看裸奔| 精品国产成人亚洲午夜福利| 四虎最新永久免费视频| 久久亚洲AV无码精品色午夜麻豆| 99re在线视频免费观看| 91嫩草私人成人亚洲影院| 巨波霸乳在线永久免费视频| 性xxxx黑人与亚洲| 免费观看的毛片手机视频| 亚洲欧美熟妇综合久久久久| 国产区卡一卡二卡三乱码免费| 免费人成动漫在线播放r18| 亚洲高清偷拍一区二区三区 | 国产A在亚洲线播放| 国内少妇偷人精品视频免费| 亚洲国产老鸭窝一区二区三区| 91成人在线免费观看| 亚洲AV无码成人专区| 日本黄色免费观看| 免费一级做a爰片久久毛片潮| 亚洲色婷婷一区二区三区| 免费人成视频在线观看网站| 亚洲自偷自偷在线成人网站传媒| 国产在线播放免费| 国产在线精品观看免费观看 | 亚洲AV成人影视在线观看| 免费看无码自慰一区二区| 夜夜爽妓女8888视频免费观看| 亚洲国产高清在线| 免费观看男人免费桶女人视频| jzzjzz免费观看大片免费| 蜜芽亚洲av无码精品色午夜| 国产青草视频免费观看97| 女人隐私秘视频黄www免费| 亚洲网址在线观看| 免费A级毛片无码久久版| 免费av一区二区三区| 亚洲av综合av一区二区三区 | 亚洲国产成人五月综合网| 久久免费国产视频|