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

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

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

    Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統(tǒng)計(jì)

    留言簿(23)

    積分與排名

    優(yōu)秀學(xué)習(xí)網(wǎng)站

    友情連接

    閱讀排行榜

    評(píng)論排行榜

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

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

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

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

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

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

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

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

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

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

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

    它的作用就象一個(gè)Servlet,接受來自客戶端的請(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-編寫tag庫描述符:tags.tld
    比較容易看出,部分有點(diǎn)象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,注冊(cè)你的標(biāo)簽庫:在web.xml的 之間添加:
    在這里注冊(cè)你的自定義標(biāo)簽符,在JSP中的引用名為:/tags

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

    4-開始在JSP中使用!
    因?yàn)橐呀?jīng)在web.xml中注冊(cè)過,通過 /tags 引用你的標(biāo)簽庫;
    prefix的作用就象中的 id,只是作為一個(gè)標(biāo)志(可任意定義)
     很明顯,通過調(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>


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

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

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

    **
    這只是一個(gè)很簡單的應(yīng)用,當(dāng)然,你會(huì)有很多的“迷惑點(diǎn)”,這是正常的---在TAG中有一些獨(dú)有的特性,想完全學(xué)會(huì)TAG并不是件簡單的事情。
    -所以,在這里,我向大家推薦一本好書:電子工業(yè)出版社的《jsp標(biāo)志庫編程指南》(英文名:《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 以上的版本,好象沒這個(gè)要求)---否則,會(huì)提示編譯錯(cuò)誤。

    ]]>

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

    主站蜘蛛池模板: 中文字幕在线亚洲精品| 亚洲日本一区二区三区在线| 一级做a爰片久久免费| 国产亚洲一区二区三区在线观看| 日韩视频在线观看免费| 亚洲а∨天堂久久精品9966| 亚洲毛片av日韩av无码| 99久久99久久精品免费观看| 亚洲最大中文字幕无码网站| 国产性爱在线观看亚洲黄色一级片 | 国产亚洲AV手机在线观看| 亚洲w码欧洲s码免费 | 中文字幕亚洲免费无线观看日本 | 免费大黄网站在线看| 亚洲熟女综合色一区二区三区 | 2022年亚洲午夜一区二区福利| 最近中文字幕免费mv视频8| 久久国产美女免费观看精品| ww亚洲ww在线观看国产| 77777亚洲午夜久久多人| 无码少妇一区二区浪潮免费| 91成人免费观看在线观看| 亚洲AV色欲色欲WWW| 日产亚洲一区二区三区| 亚洲国产精品综合久久一线 | 亚洲香蕉免费有线视频| 亚洲不卡无码av中文字幕| 黄+色+性+人免费| 免费萌白酱国产一区二区三区| 亚洲精品乱码久久久久久蜜桃图片| 国产亚洲3p无码一区二区| 国产精品色午夜免费视频| 亚洲成人免费网址| 三上悠亚在线观看免费| 福利片免费一区二区三区| 亚洲av一本岛在线播放| 亚洲日本一区二区| 亚洲色精品vr一区二区三区| 免费国产美女爽到喷出水来视频| 在线观看H网址免费入口| 99精品一区二区免费视频|