国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

JSPServletJSF自定義標簽

2024-09-05 00:17:09
字體:
來源:轉載
供稿:網友

jsp自定義標簽的定義步驟:

創建標記處理器
創建TLD文件
編輯web.xml
在JSP頁面中使用此標簽

在此我們主要討論和學習的不是如何開發自定義標簽,所以具體的開發事例百度或google一下就可以找到,在此不再贅述。

我們用到過自定義標簽的人,也許最大的體會是他的復雜性,但是下面這種用法,卻讓我們對他的認知有所改變(事例介紹采用struts版本)

在一個web應用中,將數據庫查詢結果集ResultSet rs保存至session或者reueest范圍內,再傳遞給jsp頁面來顯示。這本身是沒問題的,但是當同時查詢的用戶非常多時,服務器的壓力就非常大。如果我們使用自定義標簽,將結果集返回到jsp頁面,情況就不一樣了。具體實現如下:

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
---------------------------------------------------------------
添加以下內容:

以下為引用的內容:
< 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,可以通過其他方法,實現這步!

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>

這樣,在你的每一個jsp中,只要想輸出查詢結果,就只需要調用< app:result/>就可以了!

以上代碼不一定完全正確,但其中的思想已經非常清晰了!在大的項目中,這種模式非常被推崇!它體現了java 代碼重用的思想,并且也使結果集的相關操作不直接暴露與用戶,也實現了安全。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大英县| 南丰县| 开封市| 邵东县| 湖南省| 万源市| 武平县| 天峨县| 通海县| 枣强县| 斗六市| 稷山县| 黄龙县| 镇远县| 海口市| 三江| 莱西市| 阿拉善盟| 太仓市| 台北县| 淅川县| 通海县| 宝兴县| 象州县| 桂平市| 福泉市| 澄城县| 卓尼县| 武胜县| 德州市| 章丘市| 游戏| 汉源县| 吴川市| 砀山县| 卢龙县| 方正县| 五指山市| 商南县| 沙坪坝区| 桑日县|