??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩成人精品在线,国产午夜精品一区二区三区欧美,亚洲色图一区二区三区http://www.aygfsteel.com/supperchen/category/30052.htmlzh-cnThu, 13 Mar 2008 13:03:35 GMTThu, 13 Mar 2008 13:03:35 GMT60Velocity中用Struts的国际化文g http://www.aygfsteel.com/supperchen/archive/2007/11/02/157791.html~来如此~来如此Fri, 02 Nov 2007 09:08:00 GMThttp://www.aygfsteel.com/supperchen/archive/2007/11/02/157791.htmlhttp://www.aygfsteel.com/supperchen/comments/157791.htmlhttp://www.aygfsteel.com/supperchen/archive/2007/11/02/157791.html#Feedback0http://www.aygfsteel.com/supperchen/comments/commentRss/157791.htmlhttp://www.aygfsteel.com/supperchen/services/trackbacks/157791.htmlhttp://www.junesky.org/blog/article.asp?id=144Q,以下是一个toobox.xml文gQ?
 E序代码<?xml version="1.0"?>
<toolbox>
  <tool>
     <key>link</key>
     <scope>request</scope>
     <class>
       org.apache.velocity.tools.struts.StrutsLinkTool
     </class>
  </tool>
  <tool>
     <key>msg</key>
     <scope>request</scope>
     <class>
       org.apache.velocity.tools.struts.MessageTool
     </class>
  </tool>
  <tool>
     <key>errors</key>
     <scope>request</scope>
     <class>
       org.apache.velocity.tools.struts.ErrorsTool
     </class>
  </tool>
  <tool>
     <key>form</key>
     <scope>request</scope>
     <class>
       org.apache.velocity.tools.struts.FormTool
     </class>
  </tool>
  <tool>
     <key>tiles</key>
     <scope>request</scope>
     <class>
       org.apache.velocity.tools.struts.TilesTool
     </class>
  </tool>
  <tool>
     <key>validator</key>
     <scope>request</scope>
     <class>
       org.apache.velocity.tools.struts.ValidatorTool
     </class>
  </tool>
</toolbox>StrutsLinkToolQ针?Struts ?LinkTool 专用版本Q提供了 setAction() ?setForward() 讉K预先配置的活动映?br /> MessageToolQ提供对 Struts 国际化支持的讉KQ尤为特别的是依赖于语言的消息资源?br /> ErrorsToolQ处?Struts 错误消息Q包括对国际化的支持?br /> FormToolQ访?Struts 的表?beans?br /> TilesToolQ提供对 Struts 1.1 Tiles 扩展支持的访问?br /> ValidatorToolQ提供对 Struts 1.1 Validator 扩展的访问,生成代码验证表单输入字段?br />
现在Q我们有一个编译好了的文gQApplicationResources_zh_CN.properties。它的内容如下:
name=六月?br />
?vm文g中,可以这样写Q?br /> $!{msg.get(“name?}


~来如此 2007-11-02 17:08 发表评论
]]>
更好的理解struts+velocityhttp://www.aygfsteel.com/supperchen/archive/2007/11/02/157789.html~来如此~来如此Fri, 02 Nov 2007 09:04:00 GMThttp://www.aygfsteel.com/supperchen/archive/2007/11/02/157789.htmlhttp://www.aygfsteel.com/supperchen/comments/157789.htmlhttp://www.aygfsteel.com/supperchen/archive/2007/11/02/157789.html#Feedback0http://www.aygfsteel.com/supperchen/comments/commentRss/157789.htmlhttp://www.aygfsteel.com/supperchen/services/trackbacks/157789.html

~来如此 2007-11-02 17:04 发表评论
]]>
Struts与Velocity集成 五个步骤替代JSPhttp://www.aygfsteel.com/supperchen/archive/2007/11/02/157787.html~来如此~来如此Fri, 02 Nov 2007 09:02:00 GMThttp://www.aygfsteel.com/supperchen/archive/2007/11/02/157787.htmlhttp://www.aygfsteel.com/supperchen/comments/157787.htmlhttp://www.aygfsteel.com/supperchen/archive/2007/11/02/157787.html#Feedback0http://www.aygfsteel.com/supperchen/comments/commentRss/157787.htmlhttp://www.aygfsteel.com/supperchen/services/trackbacks/157787.htmlJSP 替代物,同时带有希望?Struts 得到的所有方ѝ?br />   
  Java? 服务器页面(JSPQ技术是如此普及Q以至于Z忘记了在创徏 Web 面时还有其他选择。但是最q,有些开发h员已l{向模板引擎,以获得在 JSP 中得不到的灵zL。虽然用 JSP 和模板引擎都可以把数据嵌?HTMLQ但是每U技术都有自q处理方式。Velocity 模板是一个特别流行的 JSP 替代品。Velocity 提供了^~的学习曲线和巨大的易用性。开发h员喜Ƣ它z的语法Q而且性能分析也证明它的性能出 JSP。Velocity 也非常容易集成进 Struts 应用E序?br />   
  在这文章中Q我介l如何在 Struts 应用E序中集成和使用 Velocity 模板引擎。我会首先提供一个公式,然后逐步展开它。生成的应用E序l合?Struts ?Velocity ?? 一个第一的l合Q可能会让您怀疑自己对 JSP 的忠诚!
  
  在开始之前下载这文章的源代码,以及 Struts、Velocity ?Velocity 工具包。请注意Q本文假设您熟悉使用 Struts 框架q行 MVC ~程?br />   
  关于模板引擎
  
  在开始集?Struts ?Velocity 的简单Q务之前,让我们先保您理解模板引擎和它们在视囄成中的角艌Ӏ模板引擎作为整体概念,Velocity 作ؓ具体实现Q它们的生命?HTML 之外。Velocity 把数据合q到文本M中不同的点上。文本可以是文字、电子邮件或 HTML。由于采用这U方式,Velocity 模板引擎有点儿像 Microsoft Word 的“邮件合q”特性。邮件合q允许您方便地把动态数据(例如姓名、地址和电话号码)合ƈC件中。在早期的日子里Q组l用q项Ҏ生成大型邮件列表ƈ把它们送到邮局Q导致垃N件的产生Q?br />   
  Velocity 是什么?
  
  Velocity 是一个基?Java 的模板引擎,它提供了单的Z模板的语aQ可以用cM脚本的方式引用对象。Velocity 促进了分d队成员之间的责QQ允?Web 设计人员专注于视图(即页面的观感Q,?Java E序员专注于后端代码。把 Java 代码从页面布局中分d来,会让 Web 应用E序未来更易l护。当 Velocity ?Sruts q样?MVC 框架l合Ӟ成?JSP ?PHP 可行的替代?br />   
  ?Web 应用E序中,Velocity 实现的目标与 JSP 相同Q可以用它在?HttpServletResponse ?OutputStream 发送之前生成要发送的 HTML。在 Struts 应用E序中?Velocity 的一U方式是?Struts ?Action 内部写入响应Q然后返?null ?ActionForward。虽然这U技术可行,但却有严重的~陷Q无法?struts-config.xml 文g把响应抽象出来。把视图攑֜ Action 内部Q意味着如果惌修改响应Q就必须修改 Action?br />   
  因ؓq种技术剥Z Struts 最好的一特性(即从视图中抽象出重点的能力)Q所以我更愿意把所有响应指向一?servletQ由它负责访?Velocity 模板Q合q上下文的数据,生成响应Q然后再送回览器。稍后就会学刎ͼVelocity 的设计者们已经把这些步骤全都捆l在了一P您需要做的只是跟着我来看如何一步步地实现它们。如果您q没有访问“下载”一节,现在是访问的时候了?br />   
  Velocity 的五?/strong>
  
  ?Struts ?Velocity 模板引擎l合h很简单,也很直接Q实际上Q只要用五步可以实玎ͼ
  
  1.  ?Velocity JAR 攑֜c\径中?br />   
  2.  修改 web.xml 文g让它识别 Velocity servlet?br />   
  3.  ?Velocity toolbox.xml 攑֜应用E序?WEB-INF 目录下?br />   
  4.  修改 struts-configQ把它的视图指向 Velocity 模板而不?JSP?br />   
  5.  为每个需要显C的面创徏 Velocity 模板?br />   
  我将用一个熟悉的搜烦用例来演C?Struts ?Velocity 的集成。在q个CZ中,一个简单的应用E序允许用户按照图书?ISBN ~号搜烦图书。应用程序的l果面昄?ISBN ~号匚w的图书?br />   
  W?1 步:?Velocity JAR 攑֜ WEB-INF/lib ?br />   
  攑ּ Struts 标记 ?? 不!
  
  现在Q您可能会想Q是不是需要放弃那些过去让您节U了许多~码旉的很好的 Struts 标记。如果不使用 JSPQ那么肯定没有?Struts ?JSP 标记Q幸q的是,您可以?Velocity 工具。Velocity ?Struts 工具提供了所有您熟悉?Struts 方便Ҏ,但是d?Velocity 的灵zL?br />   
  如果您还没下?VelocityQ那么现在需要下载它。Velocity 本n是很的Q但是它的工具包可以帮助您把工作做得更好更快。特别是 Struts 工具模拟了您以前熟悉?Struts 标记。请参阅 下蝲 一节下?Velocity 模板引擎?Velocity 工具?br />   
  h意不同时候,需要的 jar 也会略有不同。在q里我不惛_Z?JAR 列表Q只是想您访?Velocity 的主(请参阅参考资料)q读那里的安装指南。一旦得C需要的 JARQ只需把它们放?WEB-INF\lib 下面卛_?br />   
  W?2 步:修改 web.xmlQ让它识?Velocity ?servlet
  
  下一步是修改 Struts ?web.xml 文gQ让它识?Velocity ?servlet q把所有以 .vm l尾的资源请求定向到 Velocity servletQ如清单 1 所C?br />   
  清单 1. 修改 web.xmlQ声?Velocity servlet
  
  <servlet>
  <servlet-name>velocity</servlet-name> |(1)
  <servlet-class> |(2)
  org.apache.velocity.tools.view.servlet.VelocityViewServlet
  </servlet-class>
  
  <init-param> |(3)
  <param-name>org.apache.velocity.toolbox</param-name>
  <param-value>/WEB-INFtoolbox.xml</param-value>
  </init-param>
  
  <load-on-startup>10</load-on-startup> |(4)
  </servlet>
  
  <!-- Map *.vm files to Velocity -->
  <servlet-mapping> |(5)
  <servlet-name>velocity</servlet-name>
  <url-pattern>*.vm</url-pattern>
  </servlet-mapping>
  
  让我们来看看清单 1 中发生了什么:
  
  Q?Q声明了 Velocity servlet q给了它一?velocity 句柄?br />   
  Q?Q声明了 Velocity servlet 的类名?br />   
  Velocity servlet 接受“toolbox”参数。toolbox 是声明应用程序的可用工具的位|。因此,在清?1 中,我还做了以下工作Q?br />   
  Q?Q告?VelocityServlet 在哪里可以找?toolbox 的配|?br />   
  Q?Q设|了 load-on-startup 标记Q确保在正确的时间装?Velocity servlet。Q何大于或{于 0 的值都会迫使容器通过调用 servlet ?init() Ҏ来装入它。放?load-on-startup 标记体中的值决定了不同?servlet ?init Ҏ调用的次序。例如,0 ?1 之前调用Q?1 ?2 之前调用。缺的标记或负值允?servlet 容器Ҏ自己的选择装入 servlet?br />   
  Q?Q声明了 servlet 映射Q强q所有用 .vm l尾的资源请求定向到 Velocity servlet。请注意Q?Q中?lt;servlet-name> 必须与(1Q中?lt;servlet-name> 匚w。交错的声明和映会在日志中生成错误?br />   
  W?3 步:?toolbox.xml 攑֜ WEB-INF ?br />   
  利用 VelocityQ可以用(或创建)包含许多工具的工L。用来登记类的工L中包含有用的函数Q常怼用到。幸q的是,Velocity 提供了许多预先构建好的工兗还创徏了许?Struts 工具来模拟原始的 Struts 标记。如果发现需要构q工具Q也可以自由地构建。在清单 2 中显C的 toolbox.xml 可以?Velocity 工具下蝲中找到。这个文件应当随 Velocity JAR 一h?WEB-INF 下?br />   
  清单 2. toolbox.xml
  
  <?xml version="1.0"?>
  <toolbox>
  <tool>
  <key>link</key>
  <scope>request</scope>
  <class>
  org.apache.velocity.tools.struts.StrutsLinkTool
  </class>
  </tool>
  <tool>
  <key>msg</key>
  <scope>request</scope>
  <class>
  org.apache.velocity.tools.struts.MessageTool
  </class>
  </tool>
  <tool>
  <key>errors</key>
  <scope>request</scope>
  <class>
  org.apache.velocity.tools.struts.ErrorsTool
  </class>
  </tool>
  <tool>
  <key>form</key>
  <scope>request</scope>
  <class>
  org.apache.velocity.tools.struts.FormTool
  </class>
  </tool>
  <tool>
  <key>tiles</key>
  <scope>request</scope>
  <class>
  org.apache.velocity.tools.struts.TilesTool
  </class>
  </tool>
  <tool>
  <key>validator</key>
  <scope>request</scope>
  <class>
  org.apache.velocity.tools.struts.ValidatorTool
  </class>
  </tool>
  </toolbox>
  
  W?4 步:修改 struts-config
  
  下一步是修改 struts-config.xmlQ指?Velocity 视图而不?JSP。新的配|文件如清单 3 所C?br />   
  清单 3. 针对 Velocity 视图修改后的 struts-config.xml
  
  <?xml version="1.0" encoding="ISO-8859-1" ?>
  
  <!DOCTYPE struts-config PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
  "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
  
  <struts-config>
  <form-beans>
  <form-bean name="searchForm" type="app.SearchForm"/>
  </form-beans>
  
  <global-forwards>
  <forward name="welcome" path="/welcome.do"/>
  </global-forwards>
  
  <action-mappings>
  <action
  path="/welcome"
  type="org.apache.struts.actions.ForwardAction"
  parameter="/pages/search.vm"/> |(1)
  
  <action
  path="/search"
  type="app.SearchAction"
  name="searchForm"
  scope="request"
  input="/pages/search.vm"> |(2)
  <forward name="success"
  path="/pages/results.vm"/> |(3)
  </action>
  </action-mappings>
  </struts-config>
  
  清单 3 看v来就像一个非常典型的 Struts 应用E序Q只有一个小的不同。响应没有把客户转向?JSPQ而直接{向到 .vm 文gQ请参阅清单 3 中的引用 1? ?3Q。在大多数情况下Q把 Struts 应用E序?JSP q移?Velocity 视图Q需要做的仅仅是全局搜烦Q把 .jsp 替换?.vm。其他所有东襉K可以保持不变Q模板可以同样保存在以前保存 JSP 的位|;所需要做的只是用 Velocity 命o代替 JSP 标记?br />   
  W?5 步:创徏 Velocity 模板
  
  在清?4 中,可以看到CZ应用E序搜烦面?Velocity 模板?br />   
  清单 4. 搜烦面?Velocity 模板
  
  <HTML>
  <HEAD>
  <TITLE>Search</TITLE>
  </HEAD>
  <BODY>
  $!errors.msgs()||(1)
  <FORM method="POST"
  action="$link.setAction('/search')"> |(2)
  <h2>Book Search</h2>
  ISBN:<INPUT type="text" name="isbn">
  <INPUT type="submit" value="Submit" name="submit">
  </FORM>
  </BODY>
  </HTML>
  
  清单 4 是一个没?JSP ?Struts 标记的典型的 HTML 面。但是,以下元素看v来可能不是那么熟悉:
  
  Q?Q用 $!errors.msgs() 得到错误消息队列中的错误消息?br />   
  Q?Q用 $link.setAction('/search') 获得搜烦转发?URL?br />   
  q就成功??? 模板剩下的部分看h几乎与以前熟悉的 HTML 文g相同。清?5 昄了应用程序结果页面的模板?br />   
  清单 5. l果面?Velocity 模板
  
  <html>
  <body>
  
  <h1>Book Details</h1>
  <a href="$link.setForward("searchEntry")">Search again</a> |(1)
  
  <h3>$book.title</h3> |(2)
  
  <b>ISBN:</b>$book.isbn<br>|(3)
  <b>Title:</b>$book.title<br>|(4)
  <b>Author:</b>$book.author<br>|(5)
  <b>Price:</b>$book.price<br>|(6)
  <b>No Pages:</b>$book.pages<br>|(7)
  <b>Description:</b>$book.description<br>|(8)
  <b>Publisher:</b>$book.publisher<br>|(9)
  </body>
  <html>
  
  可以注意刎ͼ清单 5 中不包含 JSP 标记?Struts 标记。我们来详细看看它:
  
  Q?Q用 Struts 的链接工h <a> 标记?href 讄?Struts 转发?br />   
  Q?Q访?$book title 属性?br />   
  Q?Q访?$book isbn 属性?br />   
  Q?Q再ơ访?$book title 属性?br />   
  Q?Q访?$book author 属性?br />   
  Q?Q访?$book price 属性?br />   
  Q?Q访?$book pages 属性?br />   
  Q?Q访?$book description 属性?br />   
  Q?Q访?$book publisher 属性?br />   
  讨论
  
  q就是把 Struts ?Velocity 模板引擎集成的全部工作。表面看h非常单(实际上也很简单)Q但是请x是什么让q个集成能够工作的呢Q?br />   
  Struts 动作映射可以定义M视图Q不仅限?JSP。在q篇文章中,我只是把动作映射修改Z vm l尾而不是以 jsp l尾的返回文件。然后,我声明了 Velocity servletQƈ告诉 Servlet 容器把以 vm l尾的文件发送给 VelocityViewServlet?br />   
  VelocityViewServlet ?Velocity 命o表示?HTML 响应。通过q种方式QVelocityViewServlet 充当了视囑֓应的拦截器。Struts 控制器把视图转发l?VelocityViewServletQ后者在向客L发送响应之前处?vm 文g。请参阅参考资?获得关于?Velocity 视图集成q?Struts 应用E序的更多内宏V?br />   
  l束?/strong>
  
  正如在本文中看到的,Struts ?Velocity 的集成很单。只需五个步骤可以把所有东西连在一赗针对不同的引擎和场景,采用模板引擎而不?JSP 的优势各有不同。在 Velocity 的情况下Q优势就是简单性、容易学习以及更好的性能?

~来如此 2007-11-02 17:02 发表评论
]]>
վ֩ģ壺 | ɳ| | | ͨ| н| ¡| ͨ| ʤ| | ۩| | ̩| | ɽ| | | | | | | | | | | ̷| | | | ɽ| | | ŷ| | կ| | ˹| ຣʡ| | ƽ| ɽ|