??xml version="1.0" encoding="utf-8" standalone="yes"?>蜜臀久久精品,国产精东传媒成人av电影,国产日本欧美一区二区三区在线http://www.aygfsteel.com/mulin/archive/2007/01/08/92289.html公主她爹公主她爹Mon, 08 Jan 2007 00:40:00 GMThttp://www.aygfsteel.com/mulin/archive/2007/01/08/92289.htmlhttp://www.aygfsteel.com/mulin/comments/92289.htmlhttp://www.aygfsteel.com/mulin/archive/2007/01/08/92289.html#Feedback0http://www.aygfsteel.com/mulin/comments/commentRss/92289.htmlhttp://www.aygfsteel.com/mulin/services/trackbacks/92289.html
View Helper模式告诉我们Q我们能使用Helpers来得在一个应用中QModel数据能够适应表现层的需要。典型的Q表现层一般都包括一些JSP面。这些页面由一些用来给用户昄内容的HTML和图片组成。然而,当这些页面需要显CZ些存储在Model上的动态信息的时候,q里有一个问题出C。你希望能够避免在页面上Z昄那些动态数据而用嵌入的Java代码Q你得使用一些Helper来帮助你实现上述的功能?/div>
要抛弃那些在控制器Servlet里将一些Model数据作ؓ一个属性存储在request里面的想法。在一个页面里Q你要获取Model数据Q有三种选择。你可以以JSP脚本的Ş式嵌入Java代码Q你也可以用ELQ或者你也可以用一个Helper帮你取得数据。根据将表现层和商业逻辑分离的原则,使用一些Helper来帮助我们得数据适应表现层的要求比将表现层代码和Java代码混在一h意义Q参见图1Q?/div>
?
你可以设惻I通过使用单易用的Helper代替Java代码Q页面设计h员开发表现层变得单多了。当Ӟ前提是开发h员发布了一个Helper目录q且详细描述了这些Helper怎么使用Q因样开发h员才会用那些Helper。然而,如果在开发h员能够提供Helperq行h的Model数据之前Q页面设计h员就已经设计了页面,又有新的问题。解册个问题的一个有用的技巧是在Helper里设|一些假数据以便在没有Model数据的时候显C;q有一个可以替代的Ҏ(gu)是在Model里设|一些能使Helperq行的假数据。无论哪U方法,面设计人员都不会在{待开发h员的时候闲h?/div>
使用Helper有如下优点:
。表现层的组件是标准化的Qؓ应用提供了统一的look和feel
。Java代码从页面设计h员那里被抽离Q得他们有了易用的Helper来访问Model
。如果Modelq不存在的话Q你可以创徏一些Helper来显CZ些假数据。这P不管应用E序的准备如何,面设计人员都可以进行他们的设计工作?/div>
。Helper作ؓ业务数据和表现层的中介,它可以把两者清晰的分离开来?/div>
 
实现JavaBeans Helper的策?/strong>
在ؓJSP面开发Helper的时候,你有两种选择。你可以使用JavaBeans或者定制标{,具体选择哪一U取决于你在Helper中所要处理的数据。一般来_JavaBeans适合你处理单个的数据Q而定制标{֍更适合使用在那些处理一pd数据的场合。然而,需要着重指出的是,你可以用L一U方法来处理两种cd的数据?/div>
实现View Helper模式的策?/div>
你可以在一个JSP面里用JavaBeans来实现Helper。当处理和格式化单一的文本数据时QJavaBeans模式的Helper非常单易用。那些内|的JSP标签会让你非常简单和直观的用JavaBeans。对JavaBeans的用包括简单的声明Q后面就可以引用该给定的标签了,像下面那样Q?/div>
<%-- Declare bean --%>
<jsp:useBean id="myBean" class="jspBook.util.myBean"/>
<%-- Get first name from bean --%>
Hello <jsp:getProperty name="myBean" property="firstName"/>,
welcome to Acme Products' oBnline store!
JavaBeans能做的事可不仅仅是简单的数据项从Model里取出来Q它q能格式化制定的数据V进行计或产生大块的数据项。如你所惻I它非帔R合使用内嵌的JSP标签来获取数据项。但是如果你使用JavaBeans太多Q那么你的JSP面因为太多的Java代码而变得؜׃堪,不管你用多EL。在q种情况下,你应该把所有的附加行ؓ装C个制定标{N面去?/div>
 
实现定制标签Helper的策?/strong>
Z对付复杂Model的{换,定制标签能够嵌入Java代码Q操作好几个有关数据的算子,只提供简单的标签l页面设计者用。ؓ了用定制标{,你必d一个承了TagSupport或BodyTagSupport的类。你可以在标{ֺ描述W里声明你的c,如下所C:
Listing 1. An Example TLD
 
<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 
web-jsptaglibrary_2_0.xsd"
   version="2.0" >
 
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>myTags</short-name>
<description>
   Tag library to support the examples in Chapter 8
</description>
<tag>
   <name>myTag</name>
   <tag-class>jspbook.ch08.myTag</tag-class>
   <body-content>JSP</body-content>
   <attribute>
      <name>myAttribute</name>
      <required>yes</required>
      </attribute>
</tag>
</taglib>
 
通过在JSP面里首先用taglib指示W声明以后,q个定制标签p够在面里被引用Q如下所C:
<%@ taglib uri="/helpers" prefix="helpers" %>
 
<helpers:myTag myAttribute="some value">
   Body text...
</helpers:myTag>
 
我更們֐于用定制标{作为View Helper的实现方式。因为当它们集中存储在应用服务器的时候,它们l了开发h员更多的讉KServlet上下文的权限q且提供了更多的性能优点。另一个我們֐于用定制标{原因是它更利于非Java开发h员直观的使用Q它们的格式更像标准的HTML标签Q这些HMTL标签对于我们大多数的人来说再熟?zhn)不过。最后,一旦这些定制标{q了你的开发和试Q你可以在你的整个目的所有JSP面使用它们。一旦这些定制标{被设计得更加通用Q那么你可以它们打包v来在所有的目中用到它们?/div>
 
实现Model分离的策?/strong>
不管是用定制标{或者JavaBeansQ提供独立的Helper是非常有用的Q这些独立的Helper能够在没有Model数据存在的时候提供一pd的假数据来代替Model数据。这使得面开发h员可以独立于开发团队而完成它们的d。ؓ了实现这U策略,Helper需要去Model的存在,以便使用一个真实的Model数据或者用一个静态的假Model数据Q如下图Q?/div>
按照q个思\Q我们需要创Z个静态的Model来精复制真实的Model。不是所有的时候都能让q两者保持同步。一个在某些时候更完美的替代方法是Q让开发h员创造一些假数据到Model里头Q以侉K面开发h员能够当作真实Model已经存在一P同时也确保了他们自己工作的那个Model永远是正的Q见图三Q?/div>
 


公主她爹 2007-01-08 08:40 发表评论
]]>JAXP的演q?/title><link>http://www.aygfsteel.com/mulin/archive/2007/01/04/91673.html</link><dc:creator>公主她爹</dc:creator><author>公主她爹</author><pubDate>Thu, 04 Jan 2007 00:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/mulin/archive/2007/01/04/91673.html</guid><wfw:comment>http://www.aygfsteel.com/mulin/comments/91673.html</wfw:comment><comments>http://www.aygfsteel.com/mulin/archive/2007/01/04/91673.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/mulin/comments/commentRss/91673.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/mulin/services/trackbacks/91673.html</trackback:ping><description><![CDATA[     摘要: 摘要:JAXP Q全UJava API for XML ParsingQ的可插拔性(pluggabilityQ在开发社区里引v很大的蘪动。这点也是JAXP的精华所在。开发h员可以编写自qxml处理器,只要它符合JAXP的APIsQ这样底层不同的xml处理器可以Q意切换而不用改应用E序的代码。JAXP的演q作?Rahul Srivastava译?[http://www.matrix.org.c...  <a href='http://www.aygfsteel.com/mulin/archive/2007/01/04/91673.html'>阅读全文</a><img src ="http://www.aygfsteel.com/mulin/aggbug/91673.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/mulin/" target="_blank">公主她爹</a> 2007-01-04 08:54 <a href="http://www.aygfsteel.com/mulin/archive/2007/01/04/91673.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>