??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲熟妇无码爱v在线观看,亚洲无码日韩精品第一页,亚洲中文久久精品无码http://m.tkk7.com/huhu/category/1641.htmlHuhu'Blogzh-cnTue, 27 Feb 2007 09:48:45 GMTTue, 27 Feb 2007 09:48:45 GMT60jstl中定义String数组(转蝲)http://m.tkk7.com/huhu/articles/39356.html似水年似水年Wed, 05 Apr 2006 05:11:00 GMThttp://m.tkk7.com/huhu/articles/39356.htmlhttp://m.tkk7.com/huhu/comments/39356.htmlhttp://m.tkk7.com/huhu/articles/39356.html#Feedback0http://m.tkk7.com/huhu/comments/commentRss/39356.htmlhttp://m.tkk7.com/huhu/services/trackbacks/39356.html有h提出了个q个问题Q想了半天可以用fn函数实现
<%@ taglib uri="<%@ taglib prefix="fn" uri="<c:set var="arrayvalue" value="0,1,10,15,20" />
<c:set var="delim" value=","/> 
<c:set var="array" value="${fn:split(arrayvalue, delim)}"/>
<table border="1" align="center">
<tr><td>A</td><td>B</td></tr>
<c:forEach var="i" begin="0" end="5">
<tr>
<td><c:out value="${i}"/></td>
<td>
<c:out value="${array[i]}"/>
</tr>
</c:forEach>
</table> 
如果不能使用fn函数麻烦了

<%@ taglib uri="

<% int[] arrayvalue={0,1,5,10,15,88};%>
<table border="1" align="center">
<tr><td>A</td><td>B</td></tr>
<c:forEach var="i" begin="0" end="5">
<tr>
<td><c:out value="${i}"/></td>
<td>
 <% Integer j=(Integer)pageContext.getAttribute("i"); %>
 <%= arrayvalue[j.intValue()] %></td>
</tr>
</c:forEach>
</table>

下面是某位大侠的话,时常看看
会话范围Qsession scopeQ?br />在我的经验中Q会话范围要比应用范围用的多。会话范围允怽创徏q且对象绑定到一个会话上面。你必须在session-aware的JSPs中创建绑定在会话的对象ƈ且在同一个会话中所有的JSP和servlet能够讉K到这些对象。会话范围常常用在管理安全验证和理多个面的状态信息。绑定在会话范围的对象在不需要的时候也要显C的删除。当我计划将某个cȝ对象l定C话范围的时候我通常会该类可串行化??br />h范围Qrequest scopeQ?
在绑定对象的时候,面范围我用的最多。此cd象只在同一个请求的面间有效。在h处理完成的时候这些对象将会自动的被释放。因而不需要显式的释放它们Q这样就没有了ɾpȝ被一些不必要内存消耗而拖累的危险?br />面范围Qpage scopeQ?
当你创徏只对当前面相关的对象的时候你需要选择面范围。和h范围一Pl定在页面范围的对象不要昑ּ的删除。我很少在我的JSP应用中用“页面范围”,但是q是的默认范围?br />



似水年 2006-04-05 13:11 发表评论
]]>
displayTag学习摘要http://m.tkk7.com/huhu/articles/23790.html似水年似水年Wed, 14 Dec 2005 02:55:00 GMThttp://m.tkk7.com/huhu/articles/23790.htmlhttp://m.tkk7.com/huhu/comments/23790.htmlhttp://m.tkk7.com/huhu/articles/23790.html#Feedback0http://m.tkk7.com/huhu/comments/commentRss/23790.htmlhttp://m.tkk7.com/huhu/services/trackbacks/23790.html1.tableTag中name属性:值默认作用域Qrequest


<display:table name="accList">
如果作用域ؓsessionQ则<display:table name="sessionScope.accList">
tableTag中指定ID属性会把该对象加入到pageContext对象中去。如ID="test"
<%int cate=((Role)pageContext.getAttribute("test")).getCategory();%>
生成表格的序列号 例如Q?lt;display:table id="row" name="mylist">
<display:column title="序列?><%=pageContext.getAttribute("row_rowNum")%></display:column>
如行Prow_rowNum <c:out value="${row_rowNum}"/>
firstName:row.firstName   <c:out value="${row.firstName}"/>
lastName: row.lastName  全部由ID来取?BR>
2.限制面昄的结果集?/B>
1)全部<display:table name="accList" class="its" id="test">
2)??lt;display:table name="accList" class="its" id="test" length="5">
3)从第二个开始,昄??lt;display:table name="accList" class="its" id="test" offset="2" length="5">

3.包装器decorators,有行包装?必须l承TableDecorator)和列包装?必须实现ColumnDecorator)
  在tableTag中显ClistӞdecorators中的Ҏ会在list前调用,如果decorators实现cM有相关的getXXX()ҎӞ调用此方法,如果没有Q则直接调用list
  在columnTag中显CvalueӞdecorators中的Ҏ会先调用Q?应该重用)

4.传递参敎ͼ有两U方式,
  一。struts方式Q有以下几个属?BR>  1)href 基本的超q接
  2)paramId d到url上的参数?BR>  <display:column property="status" href="details.jsp" paramId="id" paramProperty="id" />
  3)paramName 传递容器内的其它bean当作参数 如:request.setAttribute("testparam", "sendamail");
  <display:column property="email" href="details.jsp" paramId="action" paramName="testparam" paramScope="request" />
  4)paramScope 指定bean的作用域
  二。decorators方式
  cWrapperҎQ?BR>
public String getLink1()
        {
                ListObject lObject= (ListObject)getCurrentRowObject();
                int lIndex= getListIndex();
                return "<a href="details.jsp?index=" + lIndex + "">" + lObject.getId() + "</a>";
        }


标签Q?BR>
<display:table name="sessionScope.details" decorator="org.displaytag.sample.Wrapper" >
  <display:column property="link1" title="ID" />
  <display:column property="email" />
</display:table>


5.分页
  指定属?pagesize="10" 每页昄10条记?BR>
6.排序
1)在list中封装的对象的属性要实现Comparable接口,(一般均实现?
2) 在columnTag中指定sortable="true"
  可指定默认排序的?defaultsort="1" 数gؓW几列默认排?defaultorder="descending" 指定默认为降?BR>
7.导出 支持下列格式Q?html', 'xml', 'csv', and 'excel'.
  属性:export="true",注意导出无效Q当使用jsp:include or the RequestDispatcher
  <display:column media="csv excel" title="URL" property="url"/>
  指定该url属性值只能在csv、excel中导?BR>  需要指定export filter.

8.更改默认讄
  1)通过<display:setProperty name=... value=...> 标签Q可以覆盖一些默认设|?BR>  2)创徏displaytag.properties文gQ所有时区共用,Z文编码则创徏displaytag_zh_cn.propertiesQ放到类路径?jar包内共有两个默认的属性文件TableTag.propertiesQmessage.properties

9其它
  1)当多个表在一|C时Q每个表都想要有分页、排序、导出等功能Ӟ只需为每个table指定一个不同的ID卛_?BR>  2)增加表头<display:caption>角色理</display:caption>
  3)增加表尾  <display:footer><tr><td colspan="6" align="center" >国瑞数码版权所?lt;/td></tr></display:footer>
  4)http和email自动链接功能Q指定autolink="true"
  5)指定一列显C的最大长度,避免太长把表格变?maxLength="10" style="whitespace: nowrap;"
  6)当列的gؓnullQ用nulls="false"属性把null转ؓI白



似水年 2005-12-14 10:55 发表评论
]]>
应用JDOM处理数据库到XML转换的JSP实现http://m.tkk7.com/huhu/articles/6608.html似水年似水年Thu, 23 Jun 2005 09:54:00 GMThttp://m.tkk7.com/huhu/articles/6608.htmlhttp://m.tkk7.com/huhu/comments/6608.htmlhttp://m.tkk7.com/huhu/articles/6608.html#Feedback0http://m.tkk7.com/huhu/comments/commentRss/6608.htmlhttp://m.tkk7.com/huhu/services/trackbacks/6608.html阅读全文

似水年 2005-06-23 17:54 发表评论
]]>
使用 JSP 2.0 开发类?JSTL 的标?/title><link>http://m.tkk7.com/huhu/articles/5697.html</link><dc:creator>似水年</dc:creator><author>似水年</author><pubDate>Tue, 07 Jun 2005 08:27:00 GMT</pubDate><guid>http://m.tkk7.com/huhu/articles/5697.html</guid><wfw:comment>http://m.tkk7.com/huhu/comments/5697.html</wfw:comment><comments>http://m.tkk7.com/huhu/articles/5697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/huhu/comments/commentRss/5697.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/huhu/services/trackbacks/5697.html</trackback:ping><description><![CDATA[     摘要: 学习如何使用单标?API 和构建用于求?JSP 表达式的定制标记Q如何控?JSP 面中的以及如何创?Java 集合? 本文相关下蝲Q?· CZ代码 · OC4J 10g 开发h员预览版 2 · JSTL 1.1 JavaServer Pages (JSP) ?JSP 标准标记?(JSTL) ?Web 开发h员提供了许多有用的标讎ͼ也称作操作)。此外,...  <a href='http://m.tkk7.com/huhu/articles/5697.html'>阅读全文</a><img src ="http://m.tkk7.com/huhu/aggbug/5697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/huhu/" target="_blank">似水年</a> 2005-06-07 16:27 <a href="http://m.tkk7.com/huhu/articles/5697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>试你对技术的掌握度:JSPE序员成长之?/title><link>http://m.tkk7.com/huhu/articles/5692.html</link><dc:creator>似水年</dc:creator><author>似水年</author><pubDate>Tue, 07 Jun 2005 08:24:00 GMT</pubDate><guid>http://m.tkk7.com/huhu/articles/5692.html</guid><wfw:comment>http://m.tkk7.com/huhu/comments/5692.html</wfw:comment><comments>http://m.tkk7.com/huhu/articles/5692.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/huhu/comments/commentRss/5692.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/huhu/services/trackbacks/5692.html</trackback:ping><description><![CDATA[在本文章中用精通、熟l、熟悉、了解标志你Ҏ技术的掌握E度? <P>  _N?能够掌握此技术的85%技术要点以上,使用此技术时间超q两q_q用此技术成功实?个以上的目。能使用此技术优化性能或代码,做到最大可能的重用?/P> <P>  熟练Q能够掌握此技术的60%技术要点以上,使用此技术时间超q一q_q用此技术成功实?个以上的目。能使用此技术实现Y仉求ƈ有经验的U篏在实C前能做优化设计尽可能的实现模块或代码的重用?/P> <P>  熟悉Q能够掌握此技术的50%技术要点以上,使用此技术时间超q半q上Qƈ使用此技术成功实?个以上的目。能使用此技术实现Y仉求?/P> <P>  了解Q可以在实际需要时参考技术文档或帮助文g满你的需要,基本知道此项技术在你运用是所L作用Q能够调用或者用其Ҏ规定提供l你的调用方式?/P> <P>  二:基本要求</P> <P>  1:html 掌握E度Q熟l。原因:不会html你可能写JSP?</P> <P>  2:javascript/jscript:掌握E度Q熟悉。原因:client端的数据校验、一些页面处理需要你使用脚本?/P> <P>  3:css 掌握E度Q熟悉。原因:实现面风格的统一通常会用cssd现?/P> <P>  4:java基础~程 掌握E度Q熟l。原因:不会java你能写JSP?开玩笑吧。还有你必须非常熟悉以下几个包java.lang;java.io;java.sql;java.util;java.text;javax.sevrlet;javax.servlet.http; javax.mail;{?/P> <P>  5:sql 掌握E度Q熟l。原因:如果你不使用数据库的话你也许不需要掌握sql。同时你必须对以下几U数据库中的一U以上的sql比较熟悉。Oracle,DB2,Mysql,Postgresql.</P> <P>  6:xml 掌握E度Q了?原因QAppServer的配|一般是使用XML来实现的?/P> <P>  7:ejb 掌握E度Q了?原因Q很多项目中商业逻辑是由ejb来实现的Q所以呢…?/P> <P>  8:以下几种AppServer(engnier) 你需要了解一个以上?/P> <P>  a:)Tomcat </P> <P>  b:)WebLogic</P> <P>  c:)WebSphere</P> <P>  d:)JRun</P> <P>  e:)Resin</P> <P>  原因Q你的jsp跑在什么上面啊Q?/P> <P>  三:选择要求(因项目而定)</P> <P>  1:LDAP 掌握E度Q了解 原因QLADP来多的运用在权限控制上面?<BR>  2:Struts 掌握E度Q熟l 原因Q如果符合MVC设计通常会用Struts实现C?<BR>  3:Xsp 掌握E度Q根据需要而定很多时候是不用的Q但在不需要用ejb但jsp+servlet+bean实现不了的时候Xsp是一个非怸错的选择?<BR>  4:Linux 掌握E度Q熟悉 原因Q如果你的运用跑在Linux/Unix上你最要知道rm ,mv,cp,vi,tar gzip/gunzip 是用来做什么的吧?</P> <P>  四:工具的?/P> <P>  1:UltraEdit(EditPlus)+jakarta-ant+jakarta-log4j; <BR>  2:Jubilder4-6 <BR>  3:Visual Age For Java <BR>  4:VCafe </P> <P>  以上的工具你选择你自q悉的吧。不q强烈徏议你用log4j做调试工兗?/P> <P>  五:成长之\</P> <P>  1:html 学习旉Q如果你的智商在80以上Q?5天时间应该够用了。至你能手写出一个页面来?<BR>  2:jacascript/jscript学习旉Q这真的不好_比较深奥的东西,够用的话一个礼拜可以学写皮毛?<BR>  3:css 学习旉,三天的时间你应该知道如何使用css了,不要求你写,一般是工来写css?<BR>  4:java 学习旉Q天才也的三个月吧。慢满学吧。如果要_N,那我不知道需要多时间了。用来写 <BR>jsp,四个月应该够了?<BR>  5:sql 学习旉Q只需要知道insert ,delete ,update ,select,create/drop table的话一天你应该知道了?<BR>  6:xml 学习旉Q我不知道我q没有学会呢。呵c不q我知道DTD是用来做什么的?<BR>  7:ejb 学习旉Q基本的调用?天你会调用了。不q是建立在你学会java的基上的?<BR>  8:熟悉AppServer,Tomcat四天你可以掌握安装,配置。把jsp跑v来了。如果是WebLogic也够了,但要使用ejb那不关你的事情吧。SA做什么去了?<BR>  9:熟悉Linux那可得需要不时间。慢慢看man吧?<BR>  10QStruts如果需要你再学习?</P><img src ="http://m.tkk7.com/huhu/aggbug/5692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/huhu/" target="_blank">似水年</a> 2005-06-07 16:24 <a href="http://m.tkk7.com/huhu/articles/5692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提升JSP应用E序的七大绝?/title><link>http://m.tkk7.com/huhu/articles/5691.html</link><dc:creator>似水年</dc:creator><author>似水年</author><pubDate>Tue, 07 Jun 2005 08:23:00 GMT</pubDate><guid>http://m.tkk7.com/huhu/articles/5691.html</guid><wfw:comment>http://m.tkk7.com/huhu/comments/5691.html</wfw:comment><comments>http://m.tkk7.com/huhu/articles/5691.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/huhu/comments/commentRss/5691.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/huhu/services/trackbacks/5691.html</trackback:ping><description><![CDATA[你时常被客户抱怨JSP面响应速度很慢吗?你想q当客户讉Kơ数剧增Ӟ你的WEB应用能承受日益增加的讉K量吗Q本文讲qC调整JSP和servlet的一些非常实用的ҎQ它可你的servlet和JSP面响应更快Q扩展性更强。而且在用h增加的情况下Q系l负载会呈现出^滑上长的势。在本文中,我将通过一些实际例子和配置Ҏ使得你的应用E序的性能有出人意料的提升。其中,某些调优技术是在你的编E工作中实现的。而另一些技术是与应用服务器的配|相关的。在本文中,我们详l地描述怎样通过调整servlet和JSP面Q来提高你的应用E序的M性能。在阅读本文之前Q假设你有基本的servlet和JSP的知识? <P>  Ҏ一Q在servlet的init()Ҏ中缓存数?/P> <P>  当应用服务器初始化servlet实例之后Qؓ客户端请求提供服务之前,它会调用q个servlet的init()Ҏ。在一个servlet的生命周期中Qinit()Ҏ只会被调用一ơ。通过在init()Ҏ中缓存一些静态的数据或完成一些只需要执行一ơ的、耗时的操作,可大大地提高系l性能?/P> <P>  例如Q通过在init()Ҏ中徏立一个JDBCq接池是一个最佳例子,假设我们是用jdbc2.0的DataSource接口来取得数据库q接Q在通常的情况下Q我们需要通过JNDI来取得具体的数据源。我们可以想象在一个具体的应用中,如果每次SQLh都要执行一ơJNDI查询的话Q那pȝ性能会急剧下降。解x法是如下代码Q它通过~存DataSourceQ得下一ơSQL调用时仍然可以l利用它Q?/P> <P>public class ControllerServlet extends HttpServlet <BR>{ <BR> private javax.sql.DataSource testDS = null; <BR> public void init(ServletConfig config) throws ServletException <BR> { <BR>  super.init(config); <BR>  Context ctx = null; <BR>  try <BR>  { <BR>   ctx = new InitialContext(); <BR>   testDS = (javax.sql.DataSource)ctx.lookup("jdbc/testDS"); <BR>  } <BR>  catch(NamingException ne) <BR>  { <BR>   ne.printStackTrace(); <BR>  } <BR>  catch(Exception e) <BR>  { <BR>   e.printStackTrace(); <BR>  } <BR> } </P> <P> public javax.sql.DataSource getTestDS() <BR> { <BR>  return testDS; <BR> } <BR> ... <BR> ... <BR>} </P> <P>  Ҏ 2:止servlet和JSP 自动重蝲(auto-reloading)</P> <P>  Servlet/JSP提供了一个实用的技术,卌动重载技术,它ؓ开发h员提供了一个好的开发环境,当你改变servlet和JSP面后而不必重启应用服务器。然而,q种技术在产品q行阶段对系l的资源是一个极大的损耗,因ؓ它会lJSP引擎的类装蝲?classloader)带来极大的负担。因此关闭自动重载功能对pȝ性能的提升是一个极大的帮助?/P> <P>  Ҏ 3: 不要滥用HttpSession </P> <P>  在很多应用中Q我们的E序需要保持客L的状态,以便面之间可以怺联系。但不幸的是׃HTTPh天生无状态性,从而无法保存客L的状态。因此一般的应用服务器都提供了session来保存客L状态。在JSP应用服务器中Q是通过HttpSession对像来实现session的功能的Q但在方便的同时Q它也给pȝ带来了不的负担。因为每当你获得或更新sessionӞpȝ者要对它q行Ҏ的序列化操作。你可以通过对HttpSession的以下几U处理方式来提升pȝ的性能Q?/P> <P>  · 如果没有必要Q就应该关闭JSP面中对HttpSession的缺省设|: 如果你没有明指定的话,每个JSP面都会~省地创Z个HttpSession。如果你的JSP中不需要用session的话Q那可以通过如下的JSP面指示W来止它:</P> <P>Q?@ page session="false"%Q?nbsp; </P> <P>  · 不要在HttpSession中存攑֤的数据对像:如果你在HttpSession中存攑֤的数据对像的话,每当对它q行dӞ应用服务器都对其进行序列化Q从而增加了pȝ的额外负担。你在HttpSession中存攄数据对像大Q那pȝ的性能׃降得快?/P> <P>  · 当你不需要HttpSessionӞ快地释攑֮Q当你不再需要sessionӞ你可以通过调用HttpSession.invalidate()Ҏ来释攑֮?/P> <P>  · 量session的超时时间设得短一点:在JSP应用服务器中Q有一个缺省的session的超时时间。当客户在这个时间之后没有进行Q何操作的话,pȝ会将相关的session自动从内存中释放。超时时间设得越大,pȝ的性能׃低Q因此最好的Ҏ是量使得它的g持在一个较低的水^?/P> <P>  Ҏ 4: 页面输行压~?/P> <P>  压羃是解x据冗余的一个好的方法,特别是在|络带宽不够发达的今天。有的浏览器支持gzip(GNU zip)q行来对HTML文gq行压羃Q这U方法可以戏剧性地减少HTML文g的下载时间。因此,如果你将servlet或JSP面生成的HTML面q行压羃的话Q那用户׃觉得面览速度会非常快。但不幸的是Q不是所有的览器都支持gzip压羃Q但你可以通过在你的程序中查客L览器是否支持它。下面就是关于这U方法实现的一个代码片D:</P> <P>public void doGet(HttpServletRequest request, HttpServletResponse response) <BR>throws IOException, ServletException <BR>{ <BR> OutputStream out = null <BR> String encoding = request.getHeader("Accept-Encoding"); <BR> if (encoding != null && encoding.indexOf("gzip") != -1) <BR> { <BR>  request.setHeader("Content-Encoding" , "gzip"); <BR>  out = new GZIPOutputStream(request.getOutputStream()); <BR> } <BR> else if (encoding != null && encoding.indexOf("compress") != -1) <BR> { <BR>  request.setHeader("Content-Encoding" , "compress"); <BR>  out = new ZIPOutputStream(request.getOutputStream()); <BR> } <BR> else <BR> { <BR>  out = request.getOutputStream(); <BR> } <BR> ... <BR> ... <BR>}  </P> <P>  Ҏ 5: 使用U程?/P> <P>  应用服务器缺省地为每个不同的客户端请求创Z个线E进行处理,qؓ它们分派service()ҎQ当service()Ҏ调用完成后,与之相应的线E也随之撤消。由于创建和撤消U程会耗费一定的pȝ资源Q这U缺省模式降低了pȝ的性能。但所q的是我们可以通过创徏一个线E池来改变这U状c另外,我们q要个线E池讄一个最线E数和一个最大线E数。在应用服务器启动时Q它会创建数量等于最线E数的一个线E池Q当客户有请求时Q相应地从池从取Z个线E来q行处理Q当处理完成后,再将U程重新攑օ到池中。如果池中的U程不够地话Q系l会自动地增加池中线E的数量Q但总量不能过最大线E数。通过使用U程池,当客Lh急剧增加Ӟpȝ的负载就会呈现的qx的上升曲U,从而提高的pȝ的可伸羃性?/P> <P>  Ҏ 6: 选择正确的页面包含机?/P> <P>  在JSP中有两种Ҏ可以用来包含另一个页面:1、用include指示W?Q?@ includee file=”test.jsp?%Q??、用jsp指示W?Qjsp:includee page=”test.jsp?flush=”true?Q?。在实际中我发现Q如果用第一U方法的话,可以使得pȝ性能更高?/P> <P>  Ҏ 7:正确地确定javabean的生命周?/P> <P>  JSP的一个强大的地方是对javabean的支持。通过在JSP面中用<jsp:useBeanQ标{,可以javabean直接插入C个JSP面中。它的用方法如下:</P> <P>Qjsp:useBean id="name" scope="page|request|session|application" class= <BR>"package.className" type="typeName"Q?<BR>Q?jsp:useBeanQ?</P> <P>  其中scope属性指Zq个bean的生命周期。缺省的生命周期为page。如果你没有正确地选择bean的生命周期的话,它将影响pȝ的性能?/P> <P>  举例来说Q如果你只想在一ơ请求中使用某个beanQ但你却这个bean的生命周期设|成了sessionQ那当这ơ请求结束后Q这个bean仍然保留在内存中,除非session时或用户关闭浏览器。这样会耗费一定的内存Qƈ无谓的增加了JVM垃圾攉器的工作量。因此ؓbean讄正确的生命周期,q在bean的命结束后快地清理它们,会用系l性能有一个提高?/P> <P>  其它一些有用的Ҏ </P> <P>  · 在字W串q接操作中尽量不使用“+”操作符Q在java~程中,我们常常使用“+”操作符来将几个字符串连接v来,但你或许从来没有惛_q它居然会对pȝ性能造成影响吧?׃字符串是帔RQ因此JVM会生一些时的对像。你使用的“+”越多,生成的时对像就多Q这样也会给pȝ性能带来一些媄响。解决的Ҏ是用StringBuffer对像来代曎쀜+”操作符?/P> <P>  · 避免使用System.out.println()ҎQ由于System.out.println()是一U同步调用,卛_调用它时Q磁盘I/O操作必须{待它的完成Q因此我们要量避免对它的调用。但我们在调试程序时它又是一个必不可的方便工具Qؓ了解册个矛盾,我徏议你最好用Log4j工具(<A >http://Jakarta.apache.org</A> )Q它既可以方便调试,而不会生System.out.println()q样的方法?</P> <P>  · ServletOutputStream ?PrintWriter的权?使用PrintWriter可能会带来一些小的开销Q因为它所有的原始输出都{换ؓ字符来输出Q因此如果用它来作为页面输出的话,pȝ要负担一个{换过E。而用ServletOutputStream作ؓ面输出的话׃存在一个问题,但它是以二进制进行输出的。因此在实际应用中要权衡两者的利弊?/P> <P>  ȝ</P> <P>  本文的目的是通过对servlet和JSP的一些调优技术来极大地提高你的应用程序的性能Qƈ因此提升整个J2EE应用的性能。通过q些调优技术,你可以发现其实ƈ不是某种技术^収ͼ比如J2EE?NET之争Q决定了你的应用E序的性能Q重要是你要对这U^台有一个较为深入的了解Q这样你才能从根本上对自q应用E序做一个优化!</P><img src ="http://m.tkk7.com/huhu/aggbug/5691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/huhu/" target="_blank">似水年</a> 2005-06-07 16:23 <a href="http://m.tkk7.com/huhu/articles/5691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP |页制作技巧ȝhttp://m.tkk7.com/huhu/articles/5690.html似水年似水年Tue, 07 Jun 2005 08:22:00 GMThttp://m.tkk7.com/huhu/articles/5690.htmlhttp://m.tkk7.com/huhu/comments/5690.htmlhttp://m.tkk7.com/huhu/articles/5690.html#Feedback0http://m.tkk7.com/huhu/comments/commentRss/5690.htmlhttp://m.tkk7.com/huhu/services/trackbacks/5690.html<form name="form1<%=id%>" method="post" action="bookOrder.jsp?bookid=<%=id%>">

<img src="images/all1.gif" width="40" height="40" onClick="submit()"></form>



2 防止为登陆浏览:
if(session.getAttribute("UserName")==null||session.getAttribute("UserName")=="")

{



out.println("<Script language=´javascript´>");

out.println("alert(´对不P请你登陆后再订阅´)");

out.println("history.go(-1)");

out.println("</script>");

}

else

{



%>



3验证 用户信息的合法性:




<%@ page language="java" import="java.sql.*" %>

<jsp:useBean id="bookM" scope="page" class="date.SearchBookCar" />

<%! String bookid,bookNumS; int Id,bookNumI;

%>



<%



bookid=request.getParameter("bookid");//得到ID

bookNumS=request.getParameter("bookfield");//得到数量

if(bookNumS!=""&bookNumS!=null)

{



try

{

bookNumI=Integer.parseInt(bookNumS);//转换成intcd

Id=Integer.parseInt(bookid) ;



}

catch(NumberFormatException e)

{

out.println("<Script language=´javascript´>");

out.println("alert(´对不?您输入的数字格式不对!´)");

out.println("history.back(-1)");

out.println("</script>");



}

boolean one=bookM.bookQuery(Id,bookNumI,""+session.getAttribute("loginTime"),""+session.getAttribute("UserName"));

if(one)

{

out.println("<Script language=´javascript´>");

out.println("alert(´提交成功!´)");

out.println("history.back(-1)");

out.println("</script>");



}

else

{

out.println("<Script language=´javascript´>");

out.println("alert(´您已l订q此书!´)");

out.println("history.back(-1)");

out.println("</script>");



}

}

bookM.bclose();

}%>

4表单的检?
<form action="search.jsp" name="search_form" methor="post">

<input type="submit" name="Submit3" value="定" onclick=search_sub()>

<script language="javascript">

function search_sub()

{

if(document.search_form.keyword.value==""|document.search_form.keyword.value=="误入关键字")

{

window.alert("误入关键字!");

document.search_form.keyword.focus();

return;

}

else

{

document.search_form.submit();

}

}

5搜烦的sql代码Q?
String strSQL="Select * from hotbook";

if(way!=null&&keyword!=null)

{



//////////////出版C?*******************

if(way.trim().equals("3"))

{

strSQL="SELECT * FROM hotbook where";

strSQL=strSQL+" 出版C?like "+"´%"+keyword+"%´";

}

//////////////出版日期********************

if(way.trim().equals("4"))

{

strSQL="SELECT * FROM hotbook where";

strSQL=strSQL+" 出版日期 like ´%"+keyword+"%´";

}

//////////////书名********************

if(way.trim().equals("1"))

{

strSQL="SELECT * FROM hotbook where";

strSQL=strSQL+" 书名 like ´%"+keyword+"%´";

}

//////////////作?*******************

if(way.trim().equals("2"))

{

strSQL="SELECT * FROM hotbook where";

strSQL=strSQL+" 作?like ´%"+keyword+"%´";

}

//////////////ISBN********************

if(way.trim().equals("5"))

{

strSQL="SELECT * FROM hotbook where";

strSQL=strSQL+" ISBN like ´%"+keyword+"%´";

}

}



6分页昄
if (strSQL!=null)

{

Connection con=yy.getConn();

Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

ResultSet RSa=stmt.executeQuery(strSQL);

RSa.last();

int qikan_num=0;//每页实际|

int pageNO=1;//W几?

int pageRecorders=5;//每页10条记?

int pageTotal=RSa.getRow();//共几?

int pageCount=pageTotal/pageRecorders;//每页10条共几页

String strPage = request.getParameter("pagenum");//得到传递上来的|

if(strPage==null)

{

//表明在QueryString中没有pageq一个参敎ͼ此时昄W一|?

pageNO = 1;

}

else

{

//字W串转换成整?

pageNO= java.lang.Integer.parseInt(strPage);

if(pageNO<1)

{pageNO = 1;}

}

if(pageCount>=0)

{

//记录指针定位到待显C页的第一条记?/的前一条上

if((pageNO-1)==0)//如果为第一,则指向第0?

{

RSa.beforeFirst();//如果为第一条记录,

}

else RSa.absolute((pageNO-1) * pageRecorders);//如果为其它,则指向当前条的下一?

}



%>



<table width="772" border="0">

<tr>

<td width="120"><%if (session.getAttribute("UserName")!=null)

{ out.println("<font color=red>Ƣ迎您:"+session.getAttribute("UserName")+"</font>");}

else

{ out.println("<font color=red>h登陆!</font>"); };%>

</td>

<%if(pageNO<=pageCount){%>

<td width="128">

<a href="../search.jsp?pagenum=<%=pageNO+1%>&keyword=<%=keyword%>&way=<%=way%>">下一</a></td>

<%}%>

<%if(pageNO>1){%>

<td width="124">

<a href="../search.jsp?pagenum=<%=pageNO-1%>&keyword=<%=keyword%>&way=<%=way%>">上一</a></td>

<%}%>

<td width="124"> </td>

<td width="124"><a href="search.jsp">查看全部热点?lt;/a></td>

<td width="126"><a href="myorder.jsp" target="_blank">查看我的订单</a></td>

</tr>

</table>





</td>

</tr>

</table>

<table width="660" border=0 align="center" cellpadding=6 cellspacing=0 class=linehight height="123">

<%

while( RSa.next()&&qikan_num<pageRecorders)

{

String bookname= RSa.getString("书名");

String writer=RSa.getString("作?);

float sale2=RSa.getFloat("定h");

String pubname= RSa.getString("出版C?);

String pubtime= RSa.getString("出版日期");

int bookid= RSa.getInt("id");

String image= RSa.getString("ISBN");



%>

<tr>

<td align=middle width="23%" height=16><a href=javascript:show("../search_info.jsp?id=<%=bookid%>","详细资料",600,300)><img src="image/hotbook/<%=image%>.jpg" border="0"></a></td>

<td valign=top width="58%" ><b>书名:</b><a href=javascript:show("../search_info.jsp?id=<%=bookid%>","详细资料",600,300)><font color="#cc0000"><b><%= bookname%></b></font></a><br>

<b><br>作?</b><%=writer%><br>

<b>定h:</b><font color="#cc0000"> K?lt;%=sale2%></font><br>

<b>出版C?</b><%=pubname%><br>

<b>出版日期:</b><%=pubtime%></td>

<td valign=bottom width="19%" height=16 >

<form name="form1<%=bookid%>" method="post" action="bookTiqiao.jsp?bookid=<%=bookid%>">

<input type="text" name="bookfield" size="3" maxlength="3" value="1">

?lt;img src="images/all1.jpg" width="41" height="36" onClick="submit()" style="cursor:hand">

</form>

</td>

</tr>

<tr align=middle>

<td valign=top colspan=3 height=0>

<div align="right"><img src="images/search_end.gif" width="424" height="15"></div>

</td>

</tr>

<%

qikan_num++;

}

%>

</table>

<table width="772" border="0" align="center">

<tr>

<td><%

out.println("<p><b><font color=´#174572´ size=´2´>本页?+qikan_num+"条纪录,共找?+pageTotal+"?lt;/font></b></p>");

out.println("<font color=´#cc00000´ size=´2´>当前是第"+pageNO+"?lt;/font>");

out.println("|");

for(int i=1;i<pageCount+2;i++)

{

%>

<a href="../search.jsp?pagenum=<%=i%>&keyword=<%=keyword%>&way=<%=way%>"><u><%=i%></u></a>

<%

}

RSa.close();

stmt.close();

con.close();

}%>



</td>

</tr>

</table>

7另一U?删除数据后,跌{的方?
<%

if (session.getAttribute("UserName")==null)

{

response.sendRedirect("../index.jsp");

}else{



String keyword1,SQL;





keyword1=request.getParameter("bookid");

SQL="Delete From bookdindan Where ¶©ÔÄÕßid=´"+keyword1+"´";



Connection con=yy.getConn();

Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

stmt.executeUpdate(SQL);

response.sendRedirect("../myorder.jsp");





stmt.close();

con.close();

}

%>

8?q月日{换的Ҏ ?2004-05-02 2004q???
<%!

public static String YMD(String dt)

{

try

{

return dt.substring(0,4)+"q?+dt.substring(5,7)+"?+dt.substring(8,10)+"?;

}

catch(Exception e)

{

}

return "null";

}

%>

9 中文转换
<%!

public String getStr(String str)

{

try

{

String temp_p=str;

byte[] temp_t=temp_p.getBytes("GBK");

String temp=new String(temp_t,"ISO8859_1");

return temp;

}

catch(Exception e)

{



}

return "null";

}

10 用户注销 代码
<%

session.setAttribute("UserName","");

session.setAttribute("station","");

session.setAttribute("id","");

response.sendRedirect("default.jsp");

%>



W二?
1 防止用户h面Q等?0U?
// default.jsp
<%String aaa="b"+session.getAttribute("nF");
if(!aaa.equals("bnull"))
{
session.setAttribute("nF",null);
response.sendRedirect("1.jsp");
}
else
{
session.setAttribute("nF","a");

%>
//1.jsp
<%@ page contentType="text/html; charset=gb2312"%>
<%@ page language="java" %>
<p>对不P服务器正在运行时Q请勿刷新页面,谢谢合作Q如有不便敬误?lt;/p>
<p>面于10U后重新回到主页.......L待!Q!</p>

<%response.setHeader("Refresh","10;URL=default.jsp");%>
2用javaBean调用javascript指o
//jsp
try{
studentID=(String)session.getAttribute("studentID");
if(studentID==null){
throw new Exception();
}
}catch(Exception e){
Tools.showalert("您还没有dQ或q接时Q请重新d!",out);
Tools.showJS("window.open(´../login.jsp´,´_self´)",out);
}
//Bean
import javax.servlet.jsp.JspWriter;
public static void showalert(String msg, JspWriter out)
{
try
{
out.print(String.valueOf(String.valueOf((new StringBuffer("<SCRIPT LANGUAGE=\"javascript\"\n> alert(\"")).append(msg).append("\");\n").append("</SCRIPT>\n"))));
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
3用javaBean q回
public static void goback(JspWriter out)
{
try
{
out.print("<SCRIPT LANGUAGE=\"javascript\"\n> history.go(-1);\n</SCRIPT>\n");
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
4用bean 插入javascript
public static void goback(JspWriter out)
{
try
{
out.print("<SCRIPT LANGUAGE=\"javascript\"\n> history.go(-1);\n</SCRIPT>\n");
}
catch(Exception e)
{
System.out.println(e.toString());
}
}


似水年 2005-06-07 16:22 发表评论
]]>
jsp2.0新特?/title><link>http://m.tkk7.com/huhu/articles/5687.html</link><dc:creator>似水年</dc:creator><author>似水年</author><pubDate>Tue, 07 Jun 2005 08:18:00 GMT</pubDate><guid>http://m.tkk7.com/huhu/articles/5687.html</guid><wfw:comment>http://m.tkk7.com/huhu/comments/5687.html</wfw:comment><comments>http://m.tkk7.com/huhu/articles/5687.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/huhu/comments/commentRss/5687.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/huhu/services/trackbacks/5687.html</trackback:ping><description><![CDATA[<P>JSPQJavaServer PagesQ技术是对Servlet的进一步抽象,它由JCPQJava Community ProcessQ开发,是用于生成动态内容的开攑ּ的、可免费获取的规范,也是J2EEQJava 2 Enterprise EditionQ规范的重要l成部分。许多商业应用服务器如BEA WebLogic、IBM WebSphere、Live Jrun和Orion都支持JSP技术?</P> <P>从机预订系l、银行系l到购物pȝQWeb上到处都在应用JSP技术。新发布?.0版是对JSP1.2的升U,增加了一些有的新特性。JSP2的目标是使动态网늚设计更加ҎQ而且无需学习Java~程语言?</P> <P>本文内容包括Q?</P> <P>提供h丰富CZ代码的教E来使你熟悉JSP2.0 <BR>介绍JSP2.0的新Ҏ?<BR>提供利用JSP2.0开发应用程序的一些体?<BR>l出了一些示例代码,对这些代码稍加修改即可用于你自己的应用程序?<BR>如果你还不熟悉JSPQ那么直接从JSP2.0入手是一个不错的L。但是如果希望学习JSP1.2Q也怽需要从 JSP教程 开始学习?</P> <P>JSP 2.0 <BR>JSP 2.0是对JSP 1.2的升U,增加了几个有的新特性,可以使Web应用E序设计人员和开发h员的工作更容易一些。JSP 2.0的目标是比以前更易于使用Q更重要的是无须学习Java语言本n可以用它。它增加了一U称为SimpleTag的新扩展机制来简化标{APIQTag APIQ?</P> <P>除了其他一些改q外QJSP 2.0引入的最主要的新Ҏ包括: </P> <P>一U简单的表达式语aQELQ,能够用来ҎCJSP面讉K数据Q这U表辑ּ语言化了ZJSP的不含脚本的应用E序的编写,不需要用Java Scriptlet或者Java表达式; <BR>用于直接使用JSP技术来定义可重用的自定义行为的新语法,该语法?tag?tagx文gQ这cL件可由开发h员或者网作者编写; <BR>3XML语法得到了实质性的改进Q增加了新的标准文g扩展名(.tagx用于标签文gQ?jspx用于JSP文gQ?<BR>本文主要讨论表达式语a、简化的标签API和标{文件。相信目前的JSP开发h员将会发现这些重要的Ҏ不但有,而且非常有用?</P> <P>Z要从1.2跨越?.0Q?<BR>在Java规格hQJSR 152Q中版本h初定?.3。但是正如你在后面看到的那P׃q些新特性对JSP应用E序的开发模型生了如此深刻的媄响,专家l感到有必要把主版本号升U到2.0Q这h能充分反映这U媄响。此外,新的版本号也有助于把开发h员的注意力吸引到q些有趣的新Ҏ上来。o人欣慰的是, 所有合法的 JSP1.2 面同时也是合法的JSP2.0 面 ?</P> <P>JSP 2.0h <BR>在着手学习JSP 2.0之前Q你需要一个支持JSP2.0和Java Servlet 2.4规范的JSP环境。幸q的是,Jakarta Tomcat 5.0Qalpha试版)支持新的JSP2.0和Servlet 2.4规范Q可以从http://jakarta.apache.org/builds/jakarta-tomcat/release/v5.0.4-alpha/下蝲q安?Tomcat 5.0 ?</P> <P>JSP表达式语a <BR>向JSP|页传递信息是通过JSP scoped属性和h参数完成的。专门ؓ|页作者量w定做的一U表辑ּ语言QELQ把JSP scoped属性提升ؓ从业务逻辑向JSP面传递信息的标准方式。但是要注意Q尽这U表辑ּ语言是JSP的一个重要特性,它ƈ不是一U通用的程序语a。它仅仅是一U数据访问语aQ可以方便地讉K和处理应用程序数据,而无需使用scriptlet或者请求时Qrequest-timeQ表辑ּ的倹{?</P> <P>在JSP2.0之前Q网作者只能用表辑ּ<%= aName %>讉Kpȝ的|比如下面的例子: </P> <P><someTags:aTag attribute="<%= pageContext.getAttribute("aName") %>"> </P> <P>或者用自定义JavaBeanslg的| </P> <P><%= aCustomer.getAddress().getCountry() %> </P> <P>表达式语a允许|页作者用简单的语法讉K对象。比如要讉K一个简单变量,可以像下面这样写Q?</P> <P><someTags:aTag attribute="${aName}"> </P> <P>而访问嵌套的JavaBeans属性,则可以像下面q样写: </P> <P>${aCustomer.address.country} </P> <P>你可能会问,q不是JavaScript的语法吗Q完全正!如果你用过JavaScriptQ就会感到非常轻松,因ؓ表达式语a正是借用了访问结构化数据的JavaScript语法?</P> <P>注意Q?表达式语a最初是作ؓJSP标准标签库(JSTLQ?.0的一部分而开发的QJSTL是一U标准标{ֺQ它提供寚w用的、结构化的Q务的支持Q如q代和条件、XML文档处理、国际化和利用SQL讉K数据库等。JSTL规范是由JSR 52专家l开发的。关于JSTL的介l,请参?Faster Development with JSTL Q用JSTL加速开发). </P> <P>讉K应用E序数据 <BR>可以使用点号q算W(.Q访问作为对象属性的应用E序数据Q也可用方括号q算W[‘name']讉K命名的数l元素?</P> <P>表达?{data}表示名ؓdata的scoped变量。可以用点P.Q或ҎP[]Q运符从集合中索属性| </P> <P>点号q算W用于访问命名的属性,比如表达?{customer.name}表示scoped变量customer的name属性; <BR>Ҏ可符可用于检索命名的属性,比如?{customer[“name”]}中。也可以通过${customers[0]}的Ş式来讉K集合customers中的W一V?<BR>表达式语al一了对点号和方括号q算W的处理Q因?{customer.name}?{customer[“name”]}是等L。正如你看到的那P表达式必M?{和}包围h?</P> <P>EL的标识符求值方式是使用PageContext.findAttribute(String)Q把标识W作Z个属性来查找它的倹{如果没有找到该属性,则返回null?</P> <P>q算W?<BR>表达式语a支持术q算W、关p运符和逻辑q算W,以完成大多数的数据处理操作。此外,它还提供了一个用于测试一个对象是否ؓI的Ҏq算W。运符如表1所C。你可以使用emptyq算W判断某个集合或字符串是否ؓI。比方说Q只有当要求的命名参数param没有l出Ӟ表达?{empty param.name}才返回真。Emptyq算W可以与?”运符一起用,比如${!empty param.name}当要求的命名参数param存在时返回真?</P> <P>?1 Q表辑ּ语言q算W?<BR>  <BR>q算W?<BR> 说明 <BR>  <BR>+ <BR> ?<BR>  <BR>- <BR> ?<BR>  <BR>* <BR> ?<BR>  <BR>/ ?div <BR> ?<BR>  <BR>% ?mod <BR> 模(求余Q?<BR>  <BR>== ?= <BR> {于 <BR>  <BR>!= ?!= <BR> 不等?<BR>  <BR>< ?lt <BR> 于 <BR>  <BR>> ?gt <BR> 大于 <BR>  <BR><= ?le <BR> 于{于 <BR>  <BR>>= ?ge <BR> 大于{于 <BR>  <BR>&& ?and <BR> 逻辑?<BR>  <BR>|| or or <BR> 逻辑?<BR>  <BR>! ?not <BR> 逻辑?<BR>  <BR>empty <BR> 查是否ؓI?<BR>  <BR>a ? b : c <BR> 条gq算W?<BR>  </P> <P>隐含对象 <BR>除了q算W外Q表辑ּ语言q定义了一些隐含对象以支持|页作者访问需要的应用E序数据。表辑ּ语言定义的隐含对象如?所C,后面给Z用这些隐含对象的一个例子?</P> <P>?2 Q表辑ּ语言中的隐含对象 <BR>  <BR>隐含对象 <BR> 内容 <BR>  <BR>applicationScope <BR> 应用E序范围内的scoped变量l成的集?<BR>  <BR>cookie <BR> 所有cookiel成的集?<BR>  <BR>header <BR> HTTPh头部Q字W串 <BR>  <BR>headerValues <BR> HTTPh头部Q字W串集合 <BR>  <BR>initParam <BR> 全部应用E序参数名组成的集合 <BR>  <BR>pageContext <BR> 当前面的javax.servlet.jsp.PageContext对象 <BR>  <BR>pageScope <BR> 面范围内所有对象的集合 <BR>  <BR>param <BR> 所有请求参数字W串l成的集?<BR>  <BR>paramValues <BR> 所有作为字W串集合的请求参?<BR>  <BR>requestScope <BR> 所有请求范围的对象的集?<BR>  <BR>sessionScope <BR> 所有会话范围的对象的集?<BR>  </P> <P>表达式语a的例?<BR>如你所aQ网作者无d习Java也能够用这U表辑ּ语言。示例代?昄了一些表辑ּ的例子和隐含对象的用?</P> <P>代码CZ1 : ex1.jsp </P> <P>要运行这个例子,请参照以下步骤,q里我们假定Tomcat 5.0安装在c:\tomcat5.0下?</P> <P>切换目录?c:\Tomcat5.0\webapps\jsp-examples <BR>创徏新目录,名字可以是Q意的Q比如jsp2-tutorial <BR>切换到jsp2-tutorial <BR>把ex1.jsp复制q保存到该目录下 <BR>启动Tomcat 5服务器:指向“开始?>“程序?>“Apache Tomcat 5.0”,单击“Apache Tomcat 5.0”来启动Tomcat <BR>在浏览器中输入http://localhost:8080/jsp-examples/jsp2-tutorial/ex1.jsp <BR>你将看到cM?所C的画面。用表辑ּ语言p么简单! </P> <P><BR>?1 Q?JSP 表达式语a和隐含对?</P> <P>注意 : 在本文中Q所有的JSP文g都保存在c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial目录下?</P> <P>填充表单例子 <BR>隐含对象$paran[var]可用于读取填充表单的数据。代码示?l出了一个简单的表单Q该表单提示用户输入一个名字?</P> <P>代码CZ2 : form.jsp </P> <P><HTML> <BR><HEAD> <BR><TITLE>Form Content</TITLE> <BR></HEAD> <BODY> <H3>Fill-out-form</H3> <BR><P> <BR><FORM action="form.jsp" method="GET"> <BR>Name = <input type="text" name="name" value="${param['name']}"> <BR><input type="submit" value="Submit Name"> </FORM> <P> <BR>The Name is: ${param.name} </BODY> <BR></HTML> <BR>在本例中Q当用户输入名字q单几Z提交”按钮时Q输入的名字׃昄同一面中的“The Name is:”字样后面,如图2所C?</P> <P>同样Q运行这个例子只需要把form.jsp复制到c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial下ƈ用浏览器打开它?</P> <P><BR>?2 Q表单处?</P> <P>定义和用函?<BR>表达式语a允许你定义可在表辑ּ中调用的函数。函数必M为publiccM的public staticҎ~写。函Cl定义,它的{֐QsignatureQ就映射到标{ֺ描述W(TLDQ中?</P> <P>Z说明函数的用,我们举一个简单的例子Q把两个数相加。首先要~写求两C和的JavaҎ代码Q如代码CZ3所C,q里定义了一个静态方法,它接收两个字W串参数Q把它们解析成整数ƈq回它们的和?</P> <P>代码CZ3 : Compute.java </P> <P>package jsp2.examples.el; import java.util.*; public class Compute { <BR>public static int add(String x, String y) { <BR>int a = 0; <BR>int b = 0; <BR>try { <BR>a = Integer.parseInt(x); <BR>b = Integer.parseInt(y); <BR>}catch(Exception e) {} <BR>return a + b; <BR>} <BR>} <BR>用javac把这D代码编译成功后Q下一步就要把函数的签名映到标签库。代码示?说明了如何把add函数映射到包含函数实现和函数{֐的类。后面将说明把这D代码添加到哪儿?</P> <P>代码CZ4 : 函数描述W?</P> <P><function> <BR><description>add x and y</description> <BR><name>add</name> <BR><function-class>jsp2.examples.el.Compute <BR></function-class> <BR><function-signature>int <BR>add(java.lang.String,java.lang.String) <BR></function-signature> <BR></function> <BR>现在我们可以编写一个JSP面来用这个函数。代码示?是包含两个字D늚一个表单,用户输入两个数字q按下“求和”按钮,׃调用上面的函数ƈ把两个数相加Q结果在同一个页面中昄出来?</P> <P>代码CZ5 : math.jsp </P> <P><%@ taglib prefix="my" <BR>uri="http://jakarta.apache.org/tomcat/jsp2-example-taglib %> <HEAD> <BR><TITLE>Functions</TITLE> <BR></HEAD> <BODY> <H3>Add Numbers</H3> <BR><P> <BR><FORM action="math.jsp" method="GET"> <BR>X = <input type="text" name="x" value="${param["x"]}"> <BR><BR> <BR>Y = <input type="text" name="y" value="${param["y"]}"> <BR><input type="submit" value="Add Numbers"> <BR></FORM> <P> <BR>The sum is: ${my:add(param["x"],param["y"])} </BODY> <BR></HTML> <BR>要运行这个例子: </P> <P>复制Compute.javaq保存到C:\Tomcat5.0\webapps\jsp-examples\WEB-INF\classes\jsp2\examples\el下; <BR>使用javac~译Compute.javaQ?<BR>~辑文gC:\Tomcat5.0\webapps\jsp-examples\WEB-INF\jsp2\jsp2-example-taglib.tldQ把代码CZ4中的代码D|加到文g中最后一?lt;/function>标签之后Q?lt;/taglib>标签之前Q?<BR>复制math.jspq保存到c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial下; <BR>用浏览器打开该文件?<BR>如果一切正常,应该会看到类似如?所C的H口?</P> <P><BR>?3 Q用函?</P> <P>标签处理?<BR>JSP 1.2中传l的标签处理API׃允许标签体中包含scriptlet而变得复杂,但是现在利用表达式语a可以~写不含scriptlet的JSP|页。最l,JSP 2.0引入了一U新的标{扩展机ӞUCؓ“简单标{扩展”,q种机制有两U用方式: </P> <P>Java开发h员可以定义实现接口javax.servlet.jsp.tagext.SimpleTag的类; <BR>不懂Java的网늼写h员则可以使用标签文g?<BR>首先来看W一U方式,代码CZ6l出了一个简单的标签处理器,它的作用仅仅是打印“This is my first tag! ”?</P> <P>代码CZ6 : HelloTag.java </P> <P>package jsp2.examples.simpletag; import javax.servlet.jsp.JspException; <BR>import javax.servlet.jsp.tagext.SimpleTagSupport; import java.io.IOException; /** <BR>* SimpleTag handler that prints "This is my first tag!" <BR>*/ <BR>public class HelloTag extends SimpleTagSupport { <BR>public void doTag() throws JspException, IOException { <BR>getJspContext().getOut().write("This is my first tag!"); <BR>} <BR>} <BR>~译成功后,下一步就要在TLD中定义一个标{描q符Q下面是标签描述W的例子?</P> <P>代码CZ7 : 标签描述W?</P> <P><tag> <BR><description>Prints this is my first tag</description> <BR><name>hello</name> <BR><tag-class>jsp2.examples.simpletag.HelloTag</tag-class> <BR><body-content>empty</body-content> <BR></tag> <BR>最后再~写一个用上q标{JSP面文gQ见代码CZ8?</P> <P>代码CZ8 : helloworld.jsp </P> <P><%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %> <BR><HTML> <BR><HEAD> <BR><TITLE>Simple Tag Handler</TITLE> <BR></HEAD> <BODY> <BR><H2>Simple Tag Handler</H2> <BR><P> <BR><B>My first tag prints</B>: <mytag:hello/> <BR></BODY> <BR></HTML> <BR>要运行这个例子: </P> <P>复制HelloTg.javaq保存到C:\Tomcat5.0\webapps\jsp-examples\WEB-INF\classes\jsp2\examples\simpletag下; <BR>使用javac~译HelloTag.javaQ?<BR>把代码示?中的标签描述W添加到文gC:\Tomcat5.0\webapps\jsp-examples\WEB-INF\jsp2\jsp2-example-taglib.tld中的</taglib>之前Q?<BR>复制helloworld.jspq保存到c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial目录中; <BR>用浏览器打开helloworld.jsp?<BR>如果一切正常,应该会看到类似如?所C的画面?</P> <P><BR>?4 Q简单标{֤理器 </P> <P>标签文g <BR>使用单标{扩展机制的另一U方法是通过标签文g。标{文件是一U资源文Ӟ|页作者可以利用它抽取一DJSP代码Q通过定制功能来实C码的复用。换句话_标签文g允许JSP|页作者用JSP语法创徏可复用的标签库。标{文件的扩展名必L?tag”?</P> <P>明用标{文件是多么ҎQ考虑一下代码示?。没错,q就是一个标{文Ӟ </P> <P>代码CZ9 : greetings.tag </P> <P>Hello there. How are you doing? <BR>一旦定义了标签文gQ就可以在JSP|页的编写中使用q种定制的功能。比如代码示?0中的JSP|页?</P> <P>代码CZ10 : chat.jsp </P> <P><%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %> <BR><HTML> <BR><HEAD> <BR><TITLE>JSP 2.0 Examples - Hello World Using a Tag File</TITLE> <BR></HEAD> <BR><BODY> <BR><H2>Tag File Example</H2> <BR><P> <BR><B>The output of my first tag file is</B>: <tags:greetings/> <BR></BODY> <BR></HTML> <BR>要运行这个例子: </P> <P>复制标签文ggreetings.tagsq保存在c:\Tomcat5.0\webapps\jsp-examples\WEB-INF\tags 目录下; <BR>复制JSP|页文gchar.jspq保存在c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial 目录下; <BR>用浏览器打开chat.jsp文g?<BR>如果一切正常,应该会看到类似如?所C的H口?</P> <P>?5 Q简单的标签文g </P> <P>注意 : 重要的是要注意到q里没有为问候标{写TLDQ而是创徏了一个标{文件ƈ攑֜Ҏ的目录中Q然后用taglib指o导入q直接用它?</P> <P>另一个标{文件的例子 <BR>标签文g可以作ؓ模板使用。考虑代码CZ11中的标签文gdisplay.tagQ这个例子是ҎTomcat 5.0中的面板的例子改写的。指令attributecM于TLD中的<attribute>元素Q允许声明自定义的动作属性?</P> <P>代码CZ11 : display.tag </P> <P><%@ attribute name="color" %> <BR><%@ attribute name="bgcolor" %> <BR><%@ attribute name="title" %> <BR><TABLE border="0" bgcolor="${color}"> <TR> <BR><TD><B>${title}</B></TD> <BR></TR> <BR><TR> <BR><TD bgcolor="${bgcolor}"> <BR><jsp:doBody/> <BR></TD> <BR></TR> <BR></TABLE> <BR>代码CZ12l出了用上q标{一个简单的JSP面?</P> <P>代码CZ12 : newsportal.jsp </P> <P><%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %> <BR><HTML> <BR><HEAD> <BR><TITLE>Another Tag File Example</TITLE> <BR></HEAD> <BR><BODY> <BR><H2>News Portal: Another Tag File Example</H2> <BR><TABLE border="0"> <TR valign="top"> <BR><TD> <BR><tags:display color="#ff0000" bgcolor="#ffc0c0" <BR>title="Travel"> <BR>Last French Concorde Arrives in NY<br/> <BR>Another Travel Headline<br/> <BR>Yet Another Travel Headline<br/> <BR></tags:display> <BR></TD> <BR><TD> <BR><tags:display color="#00fc00" bgcolor="#c0ffc0" <BR>title="Technology"> <BR>Java for in-flight entertainment<BR> <BR>Another Technology Headline<BR> <BR>Another Technology Headline<BR> <BR></tags:display> <BR></TD> <BR><TD> <BR><tags:display color="#ffcc11" bgcolor="#ffffcc" <BR>title="Sports"> <BR>American Football<BR/> <BR>NBA<BR/> <BR>Soccer<BR/> <BR></tags:display> <BR></TD> <BR></TR> <BR></TABLE> <BR></BODY> <BR></HTML> <BR>要运行这个例子: </P> <P>复制文gdisplay.tagq保存在c:\Tomcat5.0\webapps\jsp-examples\WEB-INF\tag 下; <BR>复制文gnewsportal.jspq保存到c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial下; <BR>用浏览器打开newsportal文g?<BR>l果应该会得C?cM的画面?</P> <P><BR>?6 Q把标签文g用作模板 </P> <P>l论 <BR>JSP 2.0使得快速开发和l护动态网|以前更加ҎQ尽“Java”一词出现在JSP中,但用JSP2.0Q网作者无d习JavaE序语言本nQ就能开发出全新的动态网c本文中的例子说明了使用JSP2.0的新Ҏ开发动态网|多么Ҏ?</P> <P>更多信息 <BR>Fast Track JSP 1.2 <BR>JavaServer Pages Technology <BR>JavaServer Pages Specification (JSR 152) <BR>The Tomcat 5 Servlet/JSP Container <BR>JSP Developers Forum <BR>JavaServer Pages Standard Tag Library (JSTL) <BR>   <BR></P><img src ="http://m.tkk7.com/huhu/aggbug/5687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/huhu/" target="_blank">似水年</a> 2005-06-07 16:18 <a href="http://m.tkk7.com/huhu/articles/5687.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP中自定义标记W的使用http://m.tkk7.com/huhu/articles/5686.html似水年似水年Tue, 07 Jun 2005 08:17:00 GMThttp://m.tkk7.com/huhu/articles/5686.htmlhttp://m.tkk7.com/huhu/comments/5686.htmlhttp://m.tkk7.com/huhu/articles/5686.html#Feedback0http://m.tkk7.com/huhu/comments/commentRss/5686.htmlhttp://m.tkk7.com/huhu/services/trackbacks/5686.html阅读全文

似水年 2005-06-07 16:17 发表评论
]]>
jsp中取得当前绝对\径的Ҏhttp://m.tkk7.com/huhu/articles/5678.html似水年似水年Tue, 07 Jun 2005 08:03:00 GMThttp://m.tkk7.com/huhu/articles/5678.htmlhttp://m.tkk7.com/huhu/comments/5678.htmlhttp://m.tkk7.com/huhu/articles/5678.html#Feedback0http://m.tkk7.com/huhu/comments/commentRss/5678.htmlhttp://m.tkk7.com/huhu/services/trackbacks/5678.html但是在jsp中好像没有直接的Ҏ可以取得当前目录的绝对\径?

request.getRealPath()只是取得根目录所对应的绝对\径,看了一下Servlet API文档Q发现可?

通过q种方式获得当前文g的绝对\径名Q比如在我的cqq.jsp文g中这样写Q?

<%

String strAbsPath=application.getRealPath(request.getRequestURI());

out.println(strAbsPath);

%>

其实jsp中的application对象是Servlet中的ServerContext

q样得到的\径就?D:\aaa\bbb\ccc\cqq.jsp q样的,如果我们不想要后面的文g名呢Q?

是我们惛_?D:\aaa\bbb\ccc\ q个路径Q?我们可以直接用FilecL操作了?/P>


完整的语句应该是q样的:
String strAbsPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();



似水年 2005-06-07 16:03 发表评论
]]>
Tag File?/title><link>http://m.tkk7.com/huhu/articles/5671.html</link><dc:creator>似水年</dc:creator><author>似水年</author><pubDate>Tue, 07 Jun 2005 07:49:00 GMT</pubDate><guid>http://m.tkk7.com/huhu/articles/5671.html</guid><wfw:comment>http://m.tkk7.com/huhu/comments/5671.html</wfw:comment><comments>http://m.tkk7.com/huhu/articles/5671.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/huhu/comments/commentRss/5671.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/huhu/services/trackbacks/5671.html</trackback:ping><description><![CDATA[<span id="hllrlln" class=javascript id=text57544>Tag File是從JSP 2.0開始新增的功能,主要的目的是讓撰寫JSPE頁的網頁設ah員即使在不懂Java語法的情況下Q也可以使用JSP語法來自a標c,若能搭配JSTLQJava Standard Tag LibraryQ或其它自訂標籤庫,不懂Java語法的JSPa計人員也可以設a出相當實用的自a標c?<BR><BR>我們可以來a計一個簡單的Tag FileQTag File通常是存攑֜WEB-INF/tags/目錄下,下面是我們設a的單Tag FileQ?<BR><PRE class=codeStyle><table border="1"> <tr><td>Hello! World!</td></tr> </table></PRE><BR><BR>假設我們的Tag File取名為hello.tagQ?.tag是Tag File的副檔名Q也可以?.tagxQTag File也可以包括其它的Tag FileQ如果是這樣的情況,可以?.tagf作為副檔名?<BR><BR>我們的Tag File中目前只有靜態的內容Q事實上您可以在當中使用合法的JSP語法來撰寫,像是Scriptlet、EL、指令元素或動作元素{等Q我們可以撰寫以下的JSPE頁來用自a的Tag FileQ?<BR><PRE class=codeStyle><%@taglib prefix="demo" tagdir="/WEB-INF/tags" %> <html> <body> <demo:hello/> </body> </html></PRE><BR><BR>埯這個JSPE頁Q將會傳回以下的內容Q?<BR><PRE class=codeStyle><html> <body> <table border="1"> <tr><td>Hello! World!</td></tr> </table> </body> </html></PRE><BR><BR>Tag File實際上會轉譯為Simple TagQ以TomcatZ的話Q您可以在work\Catalina\localhost\myjsp\org\apache\jsp\tag\web下找到轉譯之後的*.java?.class檔案Q名Eqhello_tag.java與hello_tag.classQ是J承SimpleTagSupport的類別?<BR><BR>在Tag File中可以用out、config、request、response、session、application、jspContext{隱含物Ӟ前六個的使用與JSPE頁中所使用的隱含物件是相同的,jspContext在轉譯之後,實際上則是JspContext物g?<BR><BR>在Tag File中可以?lt;jsp:invoke>?lt;jsp:doBody>兩個標c,前者可以用來處理FragmentQ後者可以用來決定要不要處理標籤間的本體文字Q這在之後我們會再介紏V?<BR><BR>在Tag File中可以用的指o元素有taglib、include、tag、attribute、variable五個,前兩者的使用方式與在JSPE頁中是相同的,tag指o則類似於JSPE頁中的page指oQ用於指定與Tag File盔R的屬性(像是pageEncoding、body-content{)Qattribute用以指定標籤的屬性,而variable用於a定Tag File的Scripting VariableQ以傛_JSPE頁中用,後三者詳細的使用會在之後作介紏V?</SPAN><img src ="http://m.tkk7.com/huhu/aggbug/5671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/huhu/" target="_blank">似水年</a> 2005-06-07 15:49 <a href="http://m.tkk7.com/huhu/articles/5671.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://1515m.com" target="_blank">þþþAVƬ </a>| <a href="http://smalody.com" target="_blank">avѸ߳ˮ</a>| <a href="http://sjzbosite.com" target="_blank">պһѹۿ</a>| <a href="http://gzmcmy.com" target="_blank">޹˾Ʒ91þþ</a>| <a href="http://8hnbuk14.com" target="_blank">һ߹ۿ</a>| <a href="http://jinguwj.com" target="_blank">߹ۿ</a>| <a href="http://139699.com" target="_blank">ŷAVӰ߹ۿ</a>| <a href="http://51cga.com" target="_blank">ŮӰԺҪ</a>| <a href="http://8xxon8.com" target="_blank">߹ۿѹۿַ</a>| <a href="http://lzlcp.com" target="_blank">޹Ӱavַ</a>| <a href="http://cxljdz.com" target="_blank">ƷƵۿ</a>| <a href="http://arkinbokis.com" target="_blank">Ļһ</a>| <a href="http://3y0r.com" target="_blank">һɫþ88ۺ޾Ʒ</a>| <a href="http://fantoment.com" target="_blank">aëƬëƬѹۿó </a>| <a href="http://820111com.com" target="_blank">þ޾Ʒavվ</a>| <a href="http://www-3499.com" target="_blank">³ʦӰԺѹۿ </a>| <a href="http://yisousou.com" target="_blank">޳aƬ߲</a>| <a href="http://sjmthanks.com" target="_blank">Ƶ</a>| <a href="http://zdmaid.com" target="_blank">޵ӰĻ</a>| <a href="http://zhaosaohuo.com" target="_blank">˳վ߹ۿ10</a>| <a href="http://adcadm.com" target="_blank">츾͵ŷ</a>| <a href="http://xamxx.com" target="_blank">jlzzjlzz߲Ƶ</a>| <a href="http://71caoxee.com" target="_blank">avɫ</a>| <a href="http://yzxjk.com" target="_blank">97</a>| <a href="http://yu388.com" target="_blank">þ˽˹ƷvA</a>| <a href="http://www-554757.com" target="_blank">ҰĻƵ </a>| <a href="http://c7372.com" target="_blank">¸Ļ</a>| <a href="http://www-887234.com" target="_blank">ëƬվ</a>| <a href="http://01shanzhai.com" target="_blank">Ʒ޾Ʒ2021</a>| <a href="http://lhtjdj.com" target="_blank">޾ƷԲ߹ۿ</a>| <a href="http://wx-jn.com" target="_blank">Ƶ</a>| <a href="http://rimcn.com" target="_blank">ձҳַ߿Ѳ </a>| <a href="http://fsweicheng.com" target="_blank">ѿĻɫƬ</a>| <a href="http://youyou8tv.com" target="_blank">Ʒרҹ</a>| <a href="http://udlmw.com" target="_blank">޵һҳƵ</a>| <a href="http://ai-xian.com" target="_blank">ñIJԭӾѹۿ</a>| <a href="http://hnqkzj.com" target="_blank">ɫ͵͵Ůùۿŷ</a>| <a href="http://ryhjled.com" target="_blank">޾Ʒ99߹ۿ</a>| <a href="http://zbhongtai.com" target="_blank">91۲ѹ</a>| <a href="http://www-66409b.com" target="_blank">ۺ޹</a>| <a href="http://dd99com.com" 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>