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

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

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

    細(xì)心!用心!耐心!

    吾非文人,乃市井一俗人也,讀百卷書(shū),跨江河千里,故申城一游; 一兩滴辛酸,三四年學(xué)業(yè),五六點(diǎn)粗墨,七八筆買(mǎi)賣(mài),九十道人情。

    BlogJava 聯(lián)系 聚合 管理
      1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks

    JSP自定義標(biāo)簽的另類(lèi)體驗(yàn)

     

    jsp自定義標(biāo)簽的定義步驟:
    創(chuàng)建標(biāo)記處理器
    創(chuàng)建TLD文件
    編輯web.xml
    在JSP頁(yè)面中使用此標(biāo)簽
    在此我們主要討論和學(xué)習(xí)的不是如何開(kāi)發(fā)自定義標(biāo)簽,所以具體的開(kāi)發(fā)事例百度或google一下就可以找到,在此不再贅述。
    我們用到過(guò)自定義標(biāo)簽的人,也許最大的體會(huì)是他的復(fù)雜性,但是下面這種用法,卻讓我們對(duì)他的認(rèn)知有所改變(事例介紹采用struts版本)
    在一個(gè)web應(yīng)用中,將數(shù)據(jù)庫(kù)查詢結(jié)果集ResultSet rs保存至session或者reueest范圍內(nèi),再傳遞給jsp頁(yè)面來(lái)顯示。這本身是沒(méi)問(wèn)題的,但是當(dāng)同時(shí)查詢的用戶非常多時(shí),服務(wù)器的壓力就非常大。如果我們使用自定義標(biāo)簽,將結(jié)果集返回到j(luò)sp頁(yè)面,情況就不一樣了。具體實(shí)現(xiàn)如下:
                          Datatag .java
    -----------------------------------------------------------------
    package getdata;
    import java.io.*;
    import javax.servlet.jsp.*;
    import javax.servlet.jsp.tagext.*;
    import java.sql.*;

    public class Datatag extends TagSupport
    {

        public int doStartTag()throws JspException
        {

            
            ResultSet rs=(ResultSet)this.pageContext.getSession().getAttribute("resultSet");
               try{
               JspWriter out=pageContext.popBody();
                  while(rs.next())
                  {
                      out.println("<tr>");
                      out.println("<form>");
                        out.println("<td align='center'> <input type='checkbox' name='checkbox' value='checkbox'> </td>");
                          out.println("<td>"+ rs.getString("receiver") +"</td>");
                          out.println("<td><a href=showdatail.jsp>"+ rs.getString("title") +"</a></td>");
                          out.println("<td><a href=upload/"+rs.getString("annex")+"> "+ rs.getString("annex") +"</a></td>");
                          out.println("<td>"+ rs.getString("date") +"</td>");
                   out.println("</form>");
                      out.println("</tr>");
                  }
            }
               catch(Exception ex)
               {
                      ex.printStackTrace();
               }
               return SKIP_BODY;
        }
        public int doEndTag() throws JspException
        {
            return EVAL_PAGE;

        }
    }
                             data.tld
    --------------------------------------------------------------------
    <?xml version="1.0" encoding="UTF-8"?>
     <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
     "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

    <taglib>
      <tlib-version>1.0</tlib-version>
      <jsp-version>1.1</jsp-version>

        <tag>
            <name>result</name>
            <tag-class>getdata.Datatag</tag-class>
            <body-content>jsp</body-content>
        </tag>
    </taglib>
                                           web.xml
    ---------------------------------------------------------------
    添加以下內(nèi)容:
      <taglib>
        <taglib-uri>/WEB-INF/data.tld</taglib-uri>
        <taglib-location>/WEB-INF/data.tld</taglib-location>
      </taglib>
                                    displayAction.do
    ------------------------------------------------------------------
        String strSql=new String("select * from yonghu");
        HttpSession session=httpServletRequest.getSession();
        session.setAttribute("strSql",strSql) ;
        return actionMapping.findForward("success") ;
    如果不是用的struts,可以通過(guò)其他方法,實(shí)現(xiàn)這步!
                               display.jsp
    -----------------------------------------------------------------
    <%@ page contentType="text/html; charset=GBK" %>
    <%@ taglib uri="/WEB-INF/data.tld" prefix="app" %>
    <html>
    <head>
    <title>
    display
    </title>
    </head>
    <body bgcolor="#ffffff">
    <app:result />
    </body>
    </html> 
    這樣,在你的每一個(gè)jsp中,只要想輸出查詢結(jié)果,就只需要調(diào)用<app:result/>就可以了!
    以上代碼不一定完全正確,但其中的思想已經(jīng)非常清晰了!在大的項(xiàng)目中,這種模式非常被推崇!它體現(xiàn)了java 代碼重用的思想,并且也使結(jié)果集的相關(guān)操作不直接暴露與用戶,也實(shí)現(xiàn)了安全。

    posted on 2007-05-06 16:35 張金鵬 閱讀(109) 評(píng)論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 一个人看的www在线免费视频| **毛片免费观看久久精品| 亚洲精品夜夜夜妓女网 | 亚洲精品一区二区三区四区乱码| 亚洲欧洲精品成人久久奇米网| 国产AⅤ无码专区亚洲AV| 亚洲av永久综合在线观看尤物| 污网站在线免费观看| 亚洲免费闲人蜜桃| 国产成A人亚洲精V品无码性色| 亚洲码欧美码一区二区三区| 免费A级毛片av无码| 又黄又爽一线毛片免费观看| 亚洲欧洲精品国产区| 免费h视频在线观看| 欧洲黑大粗无码免费| 中国毛片免费观看| 亚洲综合中文字幕无线码| 国产午夜亚洲不卡| 大地资源二在线观看免费高清| 国产黄在线观看免费观看不卡| 亚洲xxxxxx| 亚洲日本在线免费观看| 亚洲AV综合色区无码二区偷拍 | 国产99精品一区二区三区免费 | 最近中文字幕完整免费视频ww| AV在线播放日韩亚洲欧| 特级av毛片免费观看| 亚洲人成无码www久久久| 国产在线观看xxxx免费| 日韩亚洲国产高清免费视频| 亚洲男人的天堂www| 国产精品国产免费无码专区不卡 | a视频免费在线观看| 色欲色欲天天天www亚洲伊| 99免费在线视频| 亚洲午夜久久久影院| 免费很黄无遮挡的视频毛片| 免费91麻豆精品国产自产在线观看 | 亚洲人成色99999在线观看| 最新仑乱免费视频|