??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲va在线,亚洲综合第一页,a天堂在线资源http://www.aygfsteel.com/yangfan/zh-cnTue, 17 Jun 2025 10:58:11 GMTTue, 17 Jun 2025 10:58:11 GMT60~写 "UHTML" jsp应用--学会使用 JSTLhttp://www.aygfsteel.com/yangfan/archive/2005/02/25/1511.htmlYang FanYang FanFri, 25 Feb 2005 10:28:00 GMThttp://www.aygfsteel.com/yangfan/archive/2005/02/25/1511.htmlhttp://www.aygfsteel.com/yangfan/comments/1511.htmlhttp://www.aygfsteel.com/yangfan/archive/2005/02/25/1511.html#Feedback0http://www.aygfsteel.com/yangfan/comments/commentRss/1511.htmlhttp://www.aygfsteel.com/yangfan/services/trackbacks/1511.html

[学习W记]**~写 "UHTML" jsp应用--学会使用 JSTL**


作者:Juniper_c
  刚开始用JSP做web应用的时候,象用PHPQASP一LJSPQ在HTML代码中夹杂着一大堆?nbsp;scriptlet---即java 代码Dc由于本人的“排版”技术还可以,开始的时候觉得挺好,~写“效率”高Q调试又方便Q?br>
? 了后来才知道---q是一U极其愚蠢的做法?---JSP诞生的时候就已经明确与ASPQPHP划清了界限,使用javaBean、Servlet可以 有效的将HTML中夹杂的java 代码D剥,然后包装成一个可在多个页面复用的“逻辑处理lg?--q是JSP相对于PHPQASP的优之处之 一?br>
? 有时即使用javabean + servletQ我们也不得不将“极量”的 java代码 嵌入? HTML?---的确Q有时你必须q样Q因为在 javabean中,你无法用JSP中的隐含对象Q比?nbsp;request, session,response{?

使用Servlet虽然可以使用JSP的对象,但却不能象javaBean灉|地插入到 html ?-
所以,Tag(标签) 出CQ可以用所有的JSP隐含对象Q,它的出现d解决了这个问题,可以让你~写出“纯HTML”的JSP늠---由此带来的好处自然不a而喻Q更高的可维护性、更高的lg复用效率、更易维护的HTML面````

弟不才Q刚刚开始学JSTLQ觉得这个东东真的很不错Q很惌更多?nbsp;初学?nbsp;知道q个Qƈ能应用到实际的web开发中?br>下面Q就开始编写我们的W一?nbsp;TagQ?br>
**下面是用了单Tag的JSP文gQ运行结果是昄当前旉Q?br>
<%@ page contentType="text/html;charset=gb2312" %>
<html><body>
<%@taglib uri="/tags" prefix="visa"%>
现在旉是:<visa:date/>
</body></html>

很明显,使用了tag的JSP|爽了许多---如果数据库操作{一些复杂功能也装q去的话Qtag的优势就更明显了Q?br>
**环境Qwin2000 server + Tomcat5.019 + j2sdk1.42 + SQLServer 2k
**开发一个TagQ需要编?个主要文Ӟ
1-标签处理器(一个类servlet的javac)
2-标签描述W(一个XML风格的tld文gQ?br>完成q两个文Ӟ可以在WEB应用中部|Ӏ应用了?br>
好了Q下面我们就开始做吧!

1-~写tag处理器:datetag.java

它的作用p一个ServletQ接受来自客L的请求,但它却可以象javaBean一样在JSP中方便调用?br>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;
}
}
?nbsp;javac~译之后Q就得到?nbsp;datetag.class文g了,其攑֜ xxx\WEB-INF\classes\tag 目录下?br>
2-~写tag库描q符Qtags.tld
比较Ҏ(gu)看出Q?lt;tag></tag>部分有点象servlet mapping的配|?-q里配置的是tag的名字与tagcM间的映射?br>
<?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\ 目录下?br>
3-配置你的web.xmlQ?br>配置web.xmlQ注册你的标{ֺQ在web.xml?nbsp;<web-app>?lt;/web-app>之间dQ?br>在这里注册你的自定义标签W,在JSP中的引用名ؓQ?tags
<taglib>

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

</taglib>

4-开始在JSP中用!
因ؓ已经在web.xml中注册过Q通过 /tags 引用你的标签库;
prefix的作用就?lt;jsp:useBean/>中的 idQ只是作Z个标志(可Q意定义)
<visa:date/> 很明显,通过调用dateQ就{于调用?nbsp;datetag.class Q?br>
<%@ page contentType="text/html;charset=gb2312" %>
<html><body>
<%@taglib uri="/tags" prefix="visa"%>
现在旉是:<visa:date/>
</body></html>


**怿Cq里Q有人就有了疑问了:Z使用一个TagQ我做了这么多的“多余”工作(~写tldQ修改web.xmlQ还要重启tomcatQ,值得吗?Q?br>
---{案是:q是很值得的!
1、如果将比较复杂的逻辑功能装qTagQ它?yu)具有比Servlet,javaBean更高的灵zL,更多的优点,更易扩展Q更易维?--d分离表示层与逻辑层!

2、因为Tag的功能ƈ非只是这一些,q有更多高功能---值得d习!

****
q只是一个很单的应用Q当Ӟ你会有很多的“迷惑点”,q是正常?--在TAG中有一些独有的Ҏ(gu),惛_全学会TAGq不是g单的事情?br>--所以,在这里,我向大家推荐一本好书:?sh)子工业出版C《jsp标志库编E指南》(英文名:《Professional JSP Tag Libraries》)


PSQ? 使用JSTL配合javabean,servletq可以有效保护你的源码哦 ---- 因ؓQ你可以向你的客户交付不含有java 源代码的web应用Q因为,所有的 java代码 都已l被~译?nbsp;*.class?nbsp;   *^_^*

[? 意]Q针?nbsp;Tomcat 5.0x以下的版?---如:Tomcat 4.0xQ要~译标签处理器,必须你?nbsp;servlet.jar(? TOMCAT_HOME%\common\lib下面) 放进环境变量 CLASSPATH ?--(如果?nbsp;tomcat5.0x 以上的版本,好象 没这个要?---否则Q会提示~译错误?br>   整理发布QUmbrella 摘自QCnJSP论坛 相关链接Q?a target="_blank">http://www.cnjsp.org/cnjbb/showthread.jsp?forumID
=3&rootID=37656&announceID=37656

Yang Fan 2005-02-25 18:28 发表评论
]]>
如何成ؓ一个成功的JspE序?/title><link>http://www.aygfsteel.com/yangfan/archive/2005/02/25/1507.html</link><dc:creator>Yang Fan</dc:creator><author>Yang Fan</author><pubDate>Fri, 25 Feb 2005 09:36:00 GMT</pubDate><guid>http://www.aygfsteel.com/yangfan/archive/2005/02/25/1507.html</guid><wfw:comment>http://www.aygfsteel.com/yangfan/comments/1507.html</wfw:comment><comments>http://www.aygfsteel.com/yangfan/archive/2005/02/25/1507.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yangfan/comments/commentRss/1507.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yangfan/services/trackbacks/1507.html</trackback:ping><description><![CDATA[<table style="width: 571px; height: 1667px;" border="0"> <tbody><tr><td colspan="2" align="center"> <h2>如何成ؓ一个成功的JspE序员?</h2> </td></tr> <tr> <td width="30%">作者:转脓(chung) </td> <td align="center" width="30%"><br> </td> </tr> <tr><td colspan="2" height="15"> </td></tr> <tr><td colspan="2" align="left">一 个普通的错误是把JSP当作化的 Java。它不是Q(事实? JSP 是简化的 servlets 。)E序员通常试着没有学习要求的支持技巧?nbsp; 直接学习 JSP ?br> JSP 是一个衔接技术,q且成功地连接你需要理解的另外的技术。如果你已经<br> 知道 JavaQHTML ?nbsp;JavascriptQ? q意味着 JSP 确实是单的?nbsp;<br><br>需要成Z个成功的 JSP E序员可以参考这个时间表。请注意下列Q?nbsp;<br><br>*忽略你已l熟(zhn)的步骤?nbsp;<br>*训练的时间只是代表学习好_的基旉Q这h能{Ud下一步?nbsp;<br><br>Q、徏立ƈ且理解你的Web Server?nbsp;<br>因ؓApache 是免费的q且在大多数q_上工作,l目的推?nbsp;Apache?nbsp;<br>安装旉Q? 天?nbsp;<br><br><br>Q、保证你理解 HTML / XHTML ?nbsp;<br>? 需要了解html基础, 特别?nbsp;HTML 布局中的table的用。XHTML 不久?br> 代替 HTML Q学?nbsp;XHTML 的基是一个好L? 许多E序员通过 HTML IDE <br> 学习 HTML ( 集成开发环?nbsp;) 。因为大多数 HTML IDE产生混ؕ的HTMl语法Q?br> 所以花旉学习手工 写作html是很有必要的。因 Z会使用 JSP ?nbsp;HTML<br>  混合~程Q精通HTML语法是重要的。所以,你必能利地写 HTML ?nbsp;<br>训练旉Q? ?nbsp;4 个星期?nbsp;<br><br><br>Q、开始学?nbsp;Java ?nbsp;<br>开 始学?nbsp;Java 1.4 理解 Java 基础是很重要的。不用担心学习Swing?nbsp;Java<br>  的图形方面,因ؓ在JSP 中你不会使用q些特征。集 中精?nbsp;?nbsp;Java 工作?br> l节Q学?nbsp;Java 的逻辑Q也?nbsp;Java Bean上花旉。学习Applet是好? ?br> 是就象SwingQ?  JSP 的大多数应用不使用程 序?nbsp;<br>训练旉Q? ?nbsp;6 个星期?nbsp;<br><br><br>Q、学?nbsp;JavaScript <br>学习怎么?nbsp;JavaScript在HTML中验证输入的Form元素。也学习 JavaScript?br> 么能在一 HTML 以内修改Form的元素。最后要求你能从一 <br>HTML 内的事件中触发 JavaScript Function?nbsp;<br>训练旉Q一?nbsp;2 个星期?nbsp;<br><br><br>Q、学习ƈ且理解你的Web Server的更好的l节?nbsp;<br>熟?zhn)Web Server的特征,q是很重要的?nbsp;<br>训练旉Q? 天?nbsp;<br><br><br>Q、徏立你?nbsp;JSP Server <br>? 推荐以Tomcat开始。它可以很好地运行JSPE序。当你不能在生使用Tomcat<br> Ӟ学习可能多的知识以便于更好的运行程序。另?  许多 JSP E序员?br> Tomcat。因此当你遇C个问题时Q你容易发现帮助?nbsp;<br>安装旉Q一?nbsp;2 天?nbsp;<br><br><br>Q、开始学?nbsp;JSP ?nbsp;<br>? 本的 JSP 学习通过的步?nbsp;1到步?可以完成, 然后使用 JSP 对象和脚本写  <br> JSP E序来联pR学?nbsp;JSP 的另外一个方面可以学习怎么创徏一个分布式的应?br> E序?nbsp;<br>训练旉Q? ?nbsp;6 个星期?nbsp;<br><br><br>Q、学习更多的 JSP server?nbsp;<br>没有关于更多?nbsp;JSP Server当然也可以运行jspE序。然? 许多 JSP server?br> pqD的特征Q可以让你更好的理解你的JSP 工程?nbsp;<br>学习更多的Jsp server如何处理jspE序是有必要的。同样也可以优化你的 JSP <br> 应用E序Qƈ且之运行得更快而不ZQ何问题?nbsp;<br>训练旉Q? ?nbsp;7 天?nbsp;<br><br><br>Q?nbsp;学习 JDBC ?nbsp;<br>JSP  大多数应用将使用数据库,JDBC 被用于数据库q接。经常忽略的一个事实就<br> 是,每个 JDBC Driver 所支持的东西是相当不同的。了 解ƈ熟?zhn)? 在jsp工程上被?br> 用的 JDBC driver的细节是很重要的。(有时q部分的学习被包含在前面 Java ?br> JSP的学习中?nbsp;。) <br>训练旉Q??nbsp;2 个星期?nbsp;<br><br>? 现在Q你已经成ؓ了熟l的 JSP E序员。仍然有很多需要学习,你可以考虑扩展<br> 你的知识比如 DHTML Q?  XML Qjava证书Q?nbsp;JSP Tag Libraries ?nbsp; Servlets , <br> 看你惌造什么类型的|站而决定了?nbsp;<br><br>q? 些训l是JSP 的核心。你不必都学习上面所有的, 取决于你在工E中分配C么Q<br> 务和你已l有什么知识。但是这是我成功地训l程序员 的时间表。关键的 单元是时间?br> q_的说, 5 个月旉实能够训练一个h ( 从开始到完成 ) 成ؓ一个对jsp熟?zhn)E序员? 个月旉g很长Q但要成Z个资? 的WEBE序员所学的东西q远不止q一些?nbsp;<br><br>也许你认样学习一U语ap的时间太长了Q因为学 ASP 会更快、时间会更短?br>  但是学习 ASP 不需要学习java的?br> <br> 相关链接Q?a target="_blank">http://www.cnjsp.org/cnjbb/showthread.jsp?forumID=</a><br> <a target="_blank">3&rootID=5749&announceID=5749</a><br> </td></tr></tbody> </table><img src ="http://www.aygfsteel.com/yangfan/aggbug/1507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yangfan/" target="_blank">Yang Fan</a> 2005-02-25 17:36 <a href="http://www.aygfsteel.com/yangfan/archive/2005/02/25/1507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ݳ</a>| <a href="http://" target="_blank">կ</a>| <a href="http://" target="_blank">ī񹤿</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank">¤</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ű</a>| <a href="http://" target="_blank">̳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ũ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">²</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank">غ</a>| <a href="http://" target="_blank">ξ</a>| <a href="http://" target="_blank">差</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʵ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">۶</a>| <a href="http://" target="_blank">ˮ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>