﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-铁手剑谱-随笔分类-Java</title><link>http://www.blogjava.net/SteelHand/category/1169.html</link><description>&lt;strong&gt;上善若水&lt;/strong&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 08:41:17 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 08:41:17 GMT</pubDate><ttl>60</ttl><item><title>Infragistics的JSF组件</title><link>http://www.blogjava.net/SteelHand/archive/2006/06/12/52126.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Mon, 12 Jun 2006 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2006/06/12/52126.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/52126.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2006/06/12/52126.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/52126.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/52126.html</trackback:ping><description><![CDATA[好久不来写blog了，没时间。总算本期课程结束了好几门，才有时间来写上两句，相信这个假期会多些时间过来。<br /><br />前不久，大牌第三方组件厂商Infragistics终于宣布了其JSF组件，这也是除了标准组件、大厂实现（SUN JSF Web UI、IBM JSF extension以及Oracle ADF Faces）、以及开源项目（典型的Apache Myfaces）之外的第一个比较大型的第三方组件。虽然这之前也有一些小型的项目，但是被这种比较牛的组件厂商进入此领域，还是第一次。当然，这个项目还是收购自Otrix，但是凭借Infragistics在ASP组件上的成功，相信不久就会有一套非常好的组件问世。目前所推出的仅仅包括：Tab、Grid、Navigator、table、Tree、menu、Editor几个组件。JSF组件同样归入其NetAdvantage产品线中，由此可见其目标之一斑。<br /><br /><br />另，《JSF in Action》一书，终于要由人民邮件出版了。请大家再等一段时间。<br /><img src ="http://www.blogjava.net/SteelHand/aggbug/52126.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2006-06-12 10:06 <a href="http://www.blogjava.net/SteelHand/archive/2006/06/12/52126.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss Now in Redhat!</title><link>http://www.blogjava.net/SteelHand/archive/2006/04/11/40383.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Tue, 11 Apr 2006 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2006/04/11/40383.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/40383.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2006/04/11/40383.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/40383.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/40383.html</trackback:ping><description><![CDATA[传了很久的Jboss收购案终于被划上了句号，4月10日签署了被RedHat的收购协议，<a href="http://jboss.org/jbossBlog/blog/mfleury/2006/04/10/RedHat_Signs_Definitive_Agreement_to_Acquire_JBoss.txt">详见此处</a>。<br />收购的金额没什么重要，这仅仅是个交易而已，但是，Jboss最终并没有投向Oracle的怀抱，而是戴上了红帽子（in redhat, right?）。这对于JBoss阵营说明了什么？<br />从RH来说，我记得以前RH有几个很好的应用层的项目，比如CCM和Portal，愿自于著名名的ArcDigi,后来成了RH的CMS和portal项目。其中另外一支随着ArcDigi演变成<a href="www.openacs.org">OpenAcs</a>,也是一个极其优秀的基于Tcl/tk的CMS。不知后来为何RH放弃了CCM，被流放到ObjectWeb之下，名字为<a href="http://forge.objectweb.org/projects/byline">ByLine .</a>好像只是搬了个家，从那时候，2004年底起就没什么动作。<br />其实这是一个非常好的基于XML/XSL的 CMS, 英国的地方政府内容管理标准化开源项目就是采用它，不过名称又变为了<a href="http://www.aplaws.org">APLAWS</a>了。<br />据JBoss的Blog和TSS上的新闻说，RH有心转向SOA。但是，JBOSS也是最近才转向SOA的，其实也不是他的强项，都是收购Drool 和JBPM之后，想要打造所谓的JBoss Enterprise Middleware Suite (JEMS)。<br />不过JBoss.org下面还孵化着很多项目呢，有Messaging, ESB， Remoting，EJB3，WebServices等等。实际上，App server的热潮之后，JBoss已经显得有些落寞。不在其他地方拓展，光靠App Server加上 Hibernate之类的工具性东西，也实在没什么前途。<br /><br />据说SUN为RH开发了官方的RPM格式的JVM，RH却瞧不起。这下，有了一直和SUN对这干的JBOSS的帮助，还不翻天了？RH从此进入应用层面的基础设施行列，具体策略如何，我们拭目以待。<br /><br />倒是Oracle失落吗？也未必。Oralce目前是唯一能够和IBM抗衡的应用级的全线提供者，少了开发工具系列，或者说产品生命周期管理PLM。而且，Oralce对开源和其他技术的宽容性要比任何一个大厂商都要好，照顾到PHP，Python，以及.NET等等。Oracle 真应该收购BEA，好像一直价格谈不拢，据说是34亿美元左右。我倒是觉得值得。否则，Oralce永远会活在自己的DB的阴影之下。<br /><br /><br /><br /><img src ="http://www.blogjava.net/SteelHand/aggbug/40383.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2006-04-11 10:06 <a href="http://www.blogjava.net/SteelHand/archive/2006/04/11/40383.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第一次骑骡子旅行（Mule ESB起步）</title><link>http://www.blogjava.net/SteelHand/archive/2006/03/31/38454.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Fri, 31 Mar 2006 05:04:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2006/03/31/38454.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/38454.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2006/03/31/38454.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/38454.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/38454.html</trackback:ping><description><![CDATA[本文是MULE ESB的起步体验. <br />PDF格式，3个分卷。<br /><a target="" class="" title="" href="/Files/SteelHand/Starup%20for%20Mule.part1.rar">下载1</a><br /><a target="" class="" title="" href="/Files/SteelHand/Starup%20for%20Mule.part2.rar">下载2</a><br /><a target="" class="" title="" href="/Files/SteelHand/Starup%20for%20Mule.part3.rar">下载3</a><br /><img src ="http://www.blogjava.net/SteelHand/aggbug/38454.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2006-03-31 13:04 <a href="http://www.blogjava.net/SteelHand/archive/2006/03/31/38454.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse is Sexy!</title><link>http://www.blogjava.net/SteelHand/archive/2006/03/13/34968.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Mon, 13 Mar 2006 01:46:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2006/03/13/34968.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/34968.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2006/03/13/34968.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/34968.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/34968.html</trackback:ping><description><![CDATA[Playboy居然做了Opensource的镜像，据他们说，是因为Eclipse够Sexy。他们的技术人员称自己为“Playboy "tech nerds"”，不知道是为什么。是不是不如那些性感明星来得安逸风光？不知道，呵呵。<br><br>他们还镜像了Apache, FreeBSD等等。地址是： http://mirrors.playboy.com/,也可以通过ftp访问。目前速度很快。<br><br><br>另,MM的 Flex终于改姓Adobe了，如今叫Adobe Flex 2.0, 发布了Beta版本。可以在<a href="http://www.macromedia.com/cfusion/entitlement/index.cfm?sdid=czce&amp;e=labs">http://www.macromedia.com/cfusion/entitlement/index.cfm?sdid=czce&amp;e=labs</a>&nbsp; 这里下载。在我看来，Flex也是非常的Sexy。<br><br><br><img src ="http://www.blogjava.net/SteelHand/aggbug/34968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2006-03-13 09:46 <a href="http://www.blogjava.net/SteelHand/archive/2006/03/13/34968.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>老马的集成模式之概论篇</title><link>http://www.blogjava.net/SteelHand/archive/2006/03/08/34265.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Wed, 08 Mar 2006 06:16:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2006/03/08/34265.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/34265.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2006/03/08/34265.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/34265.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/34265.html</trackback:ping><description><![CDATA[Martin的EIP之概论：<a HREF="/Files/SteelHand/1%E4%BD%BF%E7%94%A8%E6%A8%A1%E5%BC%8F%E8%A7%A3%E5%86%B3%E9%9B%86%E6%88%90%E9%97%AE%E9%A2%98.rar">使用模式解决集成问题：</a><br><br><img src ="http://www.blogjava.net/SteelHand/aggbug/34265.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2006-03-08 14:16 <a href="http://www.blogjava.net/SteelHand/archive/2006/03/08/34265.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle ADF Faces开源拉</title><link>http://www.blogjava.net/SteelHand/archive/2006/01/25/29175.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Wed, 25 Jan 2006 02:20:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2006/01/25/29175.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/29175.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2006/01/25/29175.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/29175.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/29175.html</trackback:ping><description><![CDATA[Oracle 去年将ADF Faces免费之后，目前又将其捐献出来，给了Apache的Myfaces项目。前些天看到过一些风声，现在<a href="http://www.theserverside.com/news/thread.tss?thread_id=38669">TSS</a>也公布了这一消息。<br><br>这简直是一条很好的消息，这下JSF世界终于可以有丰富的控件使用了。Myfaces本来就非常优秀，整合了Smile之后，如今再得到ADF Faces的Code base，已经兵强马壮，个人认为可以勘作企业应用了。<br><br><br><br><img src ="http://www.blogjava.net/SteelHand/aggbug/29175.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2006-01-25 10:20 <a href="http://www.blogjava.net/SteelHand/archive/2006/01/25/29175.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts Classic 的变迁（下），从1.1到1.2</title><link>http://www.blogjava.net/SteelHand/archive/2005/12/28/25731.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Wed, 28 Dec 2005 07:41:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/12/28/25731.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/25731.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/12/28/25731.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/25731.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/25731.html</trackback:ping><description><![CDATA[


<meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>Untitled Document</title>


<h1>Struts1.2.4</h1>
<h2>新特征</h2>
<h3>主要修改：</h3>
<p><strong>不赞成特征</strong><strong> </strong><br>
  Struts1.1中已经有很多构造不再赞成使用。许多已经被删除了。所以在升级到1.2.4时，请clean-compile 你的应用，并且使deprecation warnings 被打开。在升级到1.2.4之前强烈建议解决所有decprecated 的用法。最可能应用开发人员的用法是： </p>
<ol>
  <ol>
    <li>org.apache.struts.Action  statics: 如今使用org.apache.struts.Global statics </li>
    <li>Action.perform:  如今使用Action.execute</li>
  </ol>
</ol>
<p>虽然没有被删除也没有被标明为不赞成使用，最好还是将ActionErrors 替换为ActionMessages 以确保正确的操作。 <br>
    <strong>TagUtils </strong><strong>和</strong><strong>ModuleUtils</strong><br>
  许多以前在org.apache.struts.utils.RequestUtils中找到的工具方法如今移动到了org.apache.struts.taglibs.TagUtils 或org.apache.struts.utils.ModuleUtils包中。 <br>
  <strong>GenericDataSource  / GenericConnection </strong><strong>实现被删除</strong><strong> </strong><br>
  datasources  manager 仍然支持，但是我们自己的datasource <em>implementation</em>is 并不被支持。很欢迎你插入自己的DataSource 实现，但是我们没有资源来维护我们自己的实现。如果你的容器不支持DataSource实现，推荐使用Jakarta Commons的 DBCP package。 <br>
  <strong>Validator </strong><strong>增强</strong><strong> </strong></p>
<ol>
  <li>ValidWhen </li>
</ol>
<p>Struts Validator 如今支持ValidWhen  规则，以便一个验证可以依赖于另一个验证。</p>
<ol>
  <li>IntRange  现在可以检测select-one 和radio 字段。比如：这使得我们可以使用一些有效的选项加上一个具有诸如"Choose one" 标题并且值为"-1"的附加选项来组装一个组合框。那么当用户试图提交一个表单时，你可以检测值是否为-1，从而决定是否没有选择选项。 </li>
  <li>你现在可以强制进行客户端Javascript  验证来检测所有约束，而不是停留在第一个错误之处。方法是设置Validator PlugIn上的一个新的属性stopOnFirstError为false。<a href="http://struts.apache.org/struts-doc-1.2.4/userGuide/dev_validator.html#stopOnFirstError"></a> </li>
  <li>"required"  验证现在可以检测checkboxes, radio,select-one, 和 select-multiple 字段类型。参见修改后的Validator 示例来看如何使用这些新的特征。 </li>
  <li>一个标准的validateUrl 规则可以让你能够检测某一个属性是否包含一个格式正确的URL。 </li>
</ol>
<p><strong>DigestingPlugIn</strong><br>
  一个新的标准PlugIn 可以帮助你在application范围内创建你自己的对象图（object graph）。这是创建供Action调用的业务对象的快捷方式。请参见最新的MailReader 示例来看如何使用DigestingPlugin。 <br>
  <strong>ModuleConfigVerifier</strong><br>
  虽然不是全新的，一个标准类，用来验证模块配置，位于PlugIn 包。ModuleConfigVerifier  主要确认Struts对象图的各中组件被载入。但是，开发人员可扩展此类来检查确保Struts 配置文件的内部一致性。 <br>
  <strong>提供了支持Maven的项目文件</strong>.<br>
  <strong>新的配置</strong><strong>DTD</strong><br>
  推荐使用<a href="http://struts.apache.org/dtds/struts-config_1_2.dtd">struts-config_1_2.dtd</a>。新的DTD 添加了两个新的元素&lt;display-name&gt;  和 &lt;description&gt; 到struts-config 元素中。这些元素可用于struts配置文件工具和文档产生工具。在Struts 1.2.x 中，已有的Struts 配置文件可以使用两个版本的DTD 都可载入。 <br>
  <strong>新的</strong><strong>Taglib URIs</strong><br>
  标签库的URI已经被修改已反映Struts从Jakarta 移到了Apache  的顶级项目。为了兼容，使用旧的URI的TLD仍然有效，但是鼓励使用新的URI。 <br>
  <strong>Struts-Chain</strong> <br>
  试验性的，这个新的"contrib" package 使用了Jakarta Sandbox中的Responsibilty  package 的Chainin 来创建一个新的RequestProcessor的Breed。未来版本可能会成为默认实现。.<br>
  <strong>MappingDispatchAction</strong><br>
  一个新的标准Action，将控制转发到ActionMapping 参数命名的一个方法。 <br>
  <strong>Cancel  handlers</strong><br>
  DispatchAction,  LookupDispatchAction, 和  MappingDispatchAction ，如今提供了默认的可以覆写的cancel  handler。也可以指定默认的handler name。 <br>
  <strong>Session-scoped  ActionMessages</strong><br>
  现在你可以将ActionMessages 保存在session 中and  have them cleaned up after the first use。现在除了Action.saveMessages() 将消息保存在session中还有了另外一种选择。在消息已经被访问过一次之后ActionMessages.isAccessed() 返回true。RequestProcessor.processCachedMessages()  查询isAccessed() 已决定是否应该将消息从session中删除。 <br>
  <strong>JA Mailreader</strong><br>
  Struts  Mailreader Example 应用现在包含Japanese 资源文件。 <br>
  <strong>Tiles EL</strong><br>
  Tiles tags 如今可以通过Struts EL taglib使用EL，后者基于JSTL。 <br>
  <strong>Wildcard  Mappings</strong><br>
  现在可以在actiponMapping中使用通配符。详细信息参见Struts Mailreader Example application。 <br>
  <strong>Action  attributes</strong><br>
  html img tag 添加了Action 属性，以匹配html link tag。 <br>
  <strong>Module  attribute</strong><br>
  Forward元素以及多个核心标签中新增一个"module" 属性。这个属性允许你通过名称（或者前缀）指定另一个模块来创建模块间的直接链接。新的module 属性优于contextRelative属性，并且可以常用于"SwitchAction"中。 </p>
<h1>Struts 1.2.7</h1>
<h2>主要修改</h2>
<h3>依赖性</h3>
<p>Struts 对下列组件的依赖性发生了改变： </p>
<table border="1" cellpadding="0" cellspacing="0">
  <tbody><tr>
    <td valign="top" width="340"><br>
      依赖性 </td>
    <td valign="top" width="340"><p>新的版本</p></td>
  </tr>
  <tr>
    <td valign="top" width="340"><p>Commons BeanUtils</p></td>
    <td valign="top" width="340"><p>Version 1.7.0</p></td>
  </tr>
  <tr>
    <td valign="top" width="340"><p>Commons Digester</p></td>
    <td valign="top" width="340"><p>Version 1.6</p></td>
  </tr>
  <tr>
    <td valign="top" width="340"><p>Commons Validator</p></td>
    <td valign="top" width="340"><p>Version 1.1.4</p></td>
  </tr>
  <tr>
    <td valign="top" width="340"><p>Commons Collections</p></td>
    <td valign="top" width="340"><p>removed</p></td>
  </tr>
  <tr>
    <td valign="top" width="340"><p>Commons Lang</p></td>
    <td valign="top" width="340"><p>removed</p></td>
  </tr>
</tbody></table>
<h3>Core Struts</h3>
<h4>Saving Messages in the Session</h4>
<p>在action也新增了一个方法[saveErrors(HttpSession, ActionMessages)]来将<em>errors</em> 保存在Session 中，并且在其第一次被访问之后被自动从Session中删除。这是等同于1.2.4 中message上新增的功能。 </p>
<h4>Re-directing ActionForward</h4>
<p><em>ActionRedirect</em> 是ActionForward  的一个子类，其设计来用于重定向请求，支持在运行时添加参数。 </p>
<h4>Download Action</h4>
<p><em>DownloadAction</em> 是一个提供了下载文件的具体细节的抽象Action。 </p>
<h4>Dispatch Helper</h4>
<p><em>ActionDispatcher</em> 是一个提供<em>DispatchAction</em> 类型的行为但是不必继承自<em>DispatchAction</em>。 </p>
<h4><em>Lazy</em> Validator Form</h4>
<p><em>DynaBean</em> 风格的ActionForm，它不需要其属性被定义，并提供<em>Lazy List</em> 和<em>Lazy Map</em> 行为。 </p>
<h4>jars 中的配置文件 </h4>
<p>配置文件(如. Struts config, Validator config 和 Tiles 配置文件)现在可以被保存在jars。Struts 会像以前一样检查servlet context，但是如果没找到， Struts 会尝试classloader 去查找。 </p>
<h3>Tag Library 改变</h3>
<h4>Highlighting Errors</h4>
<p>Struts现在可以使用HTML Input Tags上的<em> errorKey</em>, <em>errorStyle</em>, <em>errorStyleClass</em> 和 <em>errorStyleId</em> 属性自动高亮错误字段。 </p>
<h4>Readonly / Disabled Forms</h4>
<p>现在可以使用&lt;html:form&gt;  tag的<em>readonly</em> 和<em>disabled</em>属性来禁止或者使全部的字段只读。<br>
    <strong>N.B. </strong><em>readonly</em> 属性只影响&lt;html:text&gt;,  &lt;html:textarea&gt; 和 &lt;html:password&gt; as per the HTML 4 specification。 </p>
<h4>HTML Tag Refactoring</h4>
<p>许多<em>HTML</em>标签都被重构了，以便更易使用。</p>
<ol>
  <li><strong>添加了prepareOtherAttributes()</strong> 方法- 刚好在关闭元素之前调用，提供一个地方来渲染额外的属性。</li>
  <li><em>name</em> 属性渲染如今在<strong>prepareName()</strong> 方法中，以便更易提供定制行为。</li>
  <li><em>value</em> 属性如今在<strong>prepareValue()</strong> 方法中以便更易提供定制行为。</li>
  <li>当渲染一个属性时，这些标签现在使用属性的<em>getter</em> 而不是直接使用实际的属性，这意味着如果你想，比如覆盖TextTag的 <em>styleClass</em> ，那么一个选择是覆盖getStyleClass()方法。</li>
  <li>属性的渲染现在使用一个简单的 <strong>prepareAttribute()</strong> 方法来产生<em>name="attribute"</em> 格式，使多数属性渲染一个一行语句。</li>
</ol>
<h4>Bundle Attribute</h4>
<p><em>bundle</em> 属性被添加到了下列标签：ButtonTag, CancelTag,  CheckboxTag, FileTag, FrameTag, HiddenTag, LinkTag, MultiboxTag, PasswordTag,  RadioTag, ResetTag, SelectTag, SubmitTag, TextTag, TextareaTag。 </p>
<h4>ErrorTag</h4>
<p>现在新增了<strong>header</strong>, <strong>footer</strong>, <strong>prefix</strong>, <strong>suffix</strong><strong>属性。</strong> </p>
<h3>Validator</h3>
<h4>Resource Bundle Support</h4>
<p>Validator 配置文件中(e.g. <em>validation.xml</em>)的&lt;msg&gt; 和 &lt;arg&gt; 元素的<em>bundle</em> 属性现在随同&lt;msg&gt; 的<em>resource</em> 属性一起得到支持。 <br>
    <em>struts-examples</em> webapp 中添加了新的页面来展示对<em>Resource Bundle </em><em>的支持。</em> </p>
<h1>Struts1.2.8</h1>
<h2>主要改变</h2>
<p>Struts 1.2.8 的主要改变是修正了<em>Cross Site Scripting</em> (XSS) 弱点。 </p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/SteelHand/aggbug/25731.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-12-28 15:41 <a href="http://www.blogjava.net/SteelHand/archive/2005/12/28/25731.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts Classic 的变迁（上），从1.0到1.1</title><link>http://www.blogjava.net/SteelHand/archive/2005/12/28/25728.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Wed, 28 Dec 2005 07:23:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/12/28/25728.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/25728.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/12/28/25728.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/25728.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/25728.html</trackback:ping><description><![CDATA[

<u><font color="#ff0000"><i>最近在编写Struts教程的时候，把Struts1.1到1.2的个版本变化总结了一下，希望能够从整体上把握它的变迁脉络，在开发和维护的时候也可以参考参考</i>。</font></u><br><br><br><br>


<h1>Struts1.1的修改</h1>
<h2>新特征</h2>
<h3>引入新的配置DTD</h3>
<p>Struts 1.0 的配置DTD 已经不赞成使用，引入了新的struts-config_1_1.dtd。在Struts 1.1 中，已有的Struts 配置文件可以使用这两个版本的DTD载入。 </p>
<h3>新的Commons 包依赖性</h3>
<p>在Struts中使用了多个Apache Jarkarta commons的组件，而Commons组件并不仅仅可以用来构建Struts应用。在Struts1.1中，所使用的Commons组件已经重构来外部依赖于Jarkarta Commons项目，而不是1.0中的内部版本。 <br>
  下面的Commons包包括了对相应的Struts 1.0 中的类的替代： </p>
<ol>
  <li><strong>BeanUtils </strong>[org.apache.commons.beanutils]： </li>
  <ol>
    <li>org.apache.struts.utils.BeanUtils</li>
    <li>org.apache.struts.utils.ConvertUtils</li>
    <li>org.apache.struts.utils.PropertyUtils.</li>
  </ol>
  <li><strong>Collections </strong>[org.apache.commons.collections]</li>
  <ol>
    <li>org.apache.struts.util.ArrayStack</li>
    <li>org.apache.struts.util.FastArrayList</li>
    <li>org.apache.struts.util.FastHashMap</li>
    <li>org.apache.struts.util.FastTreeMap.</li>
  </ol>
  <li><strong>Digester </strong>[org.apache.commons.digester]</li>
  <ol>
    <li>org.apache.struts.digester.*.</li>
  </ol>
</ol>
<p>下面这几个包现在仍然被Struts框架的各种组件使用： </p>
<ol>
  <li><strong>FileUpload </strong>[org.apache.commons.fileupload]</li>
  <li><strong>Logging </strong>[org.apache.commons.logging]</li>
  <li><strong>Validator </strong>[org.apache.commons.validator]</li>
</ol>
<h3>XML解析器</h3>
<p><strong>另外，</strong>Struts 1.1 需要符合JAXP/1.1 (而不是JAXP/1.0)  API的XML解析器，比如JAXP/1.1 参考实现和Xerces 1.3.1+。 </p>
<h3>源代码</h3>
<p>如果需要从源代码开始构建Struts，请使用Ant  1.4 以上版本。 </p>
<h3>集成Struts Validator</h3>
<p>一个新的Commons Validator组件被集成到Struts 1.1中，包含在新的Validator包中。 </p>
<h3>Tiles </h3>
<p>引入了一个新的JSP模板组装机制Tiles，通过标签库提供集成。 </p>
<h3>Nested </h3>
<p>Nested taglib 绑定到了Struts1.1中，增强了现有Struts标签的功能。 </p>
<h3>新的示例应用</h3>
<p>Struts1.1发布包中包括了针对Validator 和Tiles的新的示例。 </p>
<h3>新的可选组件</h3>
<p>CVS源代码库中新增了一个目录contrib，包含了很有用的，但是没有集成到标准代码基中的扩展。 </p>
<ol>
  <li>Scaffold  – 一个对Commons Scaffold 工具包扩展，旨在提供可重用的构建Web应用的类 </li>
  <li>Struts-EL  – 可选的Struts-EL taglib 使得在Struts 中使用JSTL更加容易。(需要Servlet 2.3 +容器支持)</li>
</ol>
<h3>Action 包的增加</h3>
<p>基本的控制器框架 [org.apache.struts.action]新增了一下特征： </p>
<ol>
  <li>ActionServlet  现在提供了对模块化应用的支持，并且新增了多个扩展点。 </li>
  <li>新增了一个ActionMessages 类，支持ActionErrors功能的一个超集，可以用于通用的消息收集传递，不仅仅针对errors。 </li>
</ol>
<h3>Upload 包</h3>
<p>文件上传类[org.apache.struts.upload]新增了一下特征： </p>
<ol>
  <li>CommonsMultipartRequestHandler：这个新类使用Jakarta Commons FileUpload 包实现了文件上传。这也是Struts的默认文件上传实现。 </li>
</ol>
<h3>Util 包</h3>
<p>工具（utility）类  [org.apache.struts.util]新增了以下特征： </p>
<ol>
  <li>LocalStrings:  修正了与可替换参数相关的消息，以便它不会添加一个外来的无关的字符。 </li>
  <li>LabelValueBean:  一个新类，定义了一个名值对的集合，可以用在&lt;html:options&gt; 和&lt;html:optionsCollection&gt;标签，或者其它地方。 </li>
  <li>MessageResources:  转移包含在特定消息字符串中的单引号。 </li>
  <li>computeParameters:  允许事务令牌是唯一的参数。 </li>
  <li>RequestUtils:  在构建一个查询字符串时，修改来编码一个&amp;号。 </li>
</ol>
<h3>Bean Taglib </h3>
<p><em>struts-bean</em> 标签库[org.apache.struts.taglib.bean]中新增了以下特征： </p>
<ol>
  <li>&lt;bean:write&gt;：加入了format, locale 和  bundle 属性以支持根据用户当前场所进行格式化的功能，格式化来自属性或者来自字符串资源的字符串。 </li>
  <li>&lt;bean:cookie&gt;,  &lt;bean:header&gt;, 或&lt;bean:parameter&gt;：纠正了在标签使用"multiple"属性时，所产生的脚本变量类型。 </li>
  <li>&lt;bean:message&gt;：加入了name, property, 和scope  属性，以便消息资源key 可以动态地从一个bean 或者bean 属性获得。 </li>
</ol>
<h3>HTML Taglib</h3>
<p><em>struts-html</em> [org.apache.struts.taglib.html]加入了如下新特征： </p>
<ol>
  <li>&lt;html:link&gt;:  添加了'action' 属性 </li>
  <li>&lt;html:options&gt;:  如果'property' 属性制定的属性（property）返回null，现在标签将抛出一个错误消息指名实际问题而不是造成NPE。 </li>
  <li>&lt;html:option&gt;  和 &lt;html:options&gt;：添加了'style' 和'styleClass'  属性。 </li>
  <li>&lt;html:optionsCollection&gt;：新标签。提供了一个更清晰的方式来从集合组装HTML options。 </li>
  <li>&lt;bean:message&gt;：添加了'name', 'property' 和'scope'  属性，以便消息资源key 可以动态地从bean获得。 </li>
  <li>&lt;html:messages&gt;：新标签。可以通过新的ActionMessages 类中的一个消息集合进行迭代。 </li>
  <li>ActionForm：现在，此标签在它初始化ActionForm Bean的时候会调用reset() 方法。它也要求被标签所实例化的bean 是ActionForm  的一个子类。 </li>
  <li>&lt;html:image&gt;：添加了'align' attribute。 </li>
  <li>&lt;html:img&gt;：添加了mouse 事件属性('onclick',  'ondblclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmousemove',  'onmouseout')。 </li>
  <li>SubmitTag,  SelectTag, LinkTag.java, CheckboxTag, ButtonTag, ImageTag, RadioTag, 和TextArea 标签： 添加了indexed 属性。 </li>
</ol>
<h3>Logic Taglib</h3>
<p><em>struts-logic</em> 标签库[org.apache.struts.taglib.logic]加入了如下新特征： </p>
<ol>
  <li>&lt;logic:empty&gt;  和&lt;logic:notEmpty&gt;：新标签。类似于&lt;logic:present&gt; 和&lt;logic:notPresent&gt;，但对空字符串的处理不同。 </li>
</ol>
<h3>Template Taglib </h3>
<p>无变化，但无赞成使用。推荐使用Tiles.<strong> </strong></p>
<h2>运性层面的改变</h2>
<h3>加入了Config Package</h3>
<ol>
  <li>ControllerConfig：添加了inputForward 属性以指示ActionMapping.input是一个forward 而不是URI。 </li>
  <li>ControllerConfig：添加了forwardPattern 和inputPattern  到help 应用面模块的管理页面目录 </li>
  <li>添加了一个新的包以提供更多的灵活性来支持控制器配置和多模块应用的支持。 </li>
</ol>
<h3>Action 包<br></h3>
<p>基本框架(org.apache.struts.action)进行了如下修改或者修正： </p>
<ol>
  <li>Action  类中的所有常数：不赞成使用。提取到新的Globals类中。 </li>
  <li>ActionMapping：如果模块的ControllerConfig bean  [org.apache.struts.config.ControllerConfig]的inputForward  设置为true，input  属性将引用一个ActionForward 而不是模块相对的路径。 </li>
  <li>ActionServlet：添加了convertNull 参数以在组装Form时仿真Struts 1.0 行为。如果设置为true，数值numeric Java  wrapper 类类型 (如java.lang.Integer)  将默认为null (而不是0)。 </li>
  <li>ActionServlet：添加了"config/$foo" 参数，不赞成使用包中的其他参数。 </li>
  <li>ActionForms  和相关类：为了保存资源，现在在响应toString请求的时候使用一个StringBuffer。 </li>
  <li>LookupDispatchAction：添加的新的标准Action，以帮助在国际化的按钮之间进行选择。 </li>
  <li>ActionForm  类：修改来使用ActionServletWrapper 而不是暴露ActionServlet。 </li>
  <li>ActionServletWrapper  类：添加的新类，用于ActionForm，以防止ActionServlet 的公开字符串属性被通过查询字符串改写。 </li>
  <li>Action.MAPPING_KEY的 request 属性： 如果没有指定form bean，无条件地将选择的mapping 传递为请求属性("org.apache.struts.action.mapping.instance")。 </li>
  <li>ActionServlet:避免了在初始化Servlet失败的时候导致的NullPointerException。 </li>
  <li>ActionForm  类：现在是真正的serializable，因为两个非serializable 的实例变量(servlet 和multipartRequestHandler) 已经成为transient。但是，如果你的确需要序列化和解序列化这个实例，你要自己负责重设这两个属性。 </li>
  <li>ActionMessages  和ActionErrors：The initial order a property/key is added in is  now retained.</li>
  <li>processActionForward():  不赞成，推荐使用processForwardConfig</li>
</ol>
<h3>Upload包</h3>文件上传 (package org.apache.struts.upload) [ Upload 应用的一部分]作了如下修改和修正： 
<ol>
  <li>CommonsMultipartRequestHandler：基于Jakarta Commons FileUpload 包的文件上传的新实现。这个新实现如今是默认实现。 </li>
  <li>BufferedMultipartInputStream：解决了丢失字节的问题。 </li>
  <li>ArrayIndexOutOfBoundsException：解决了已知的错误。 </li>
  <li>Multipart  requests：Better reporting for premature closing  of input streams while reading multipart requests.</li>
  <li>新行字符（New line  characters）：解决了上传和新换行字符时导致的文件损坏问题。 </li>
</ol>
<h3>Utility包</h3><p>utilities  (package org.apache.struts.util)发生如下修改和修正： </p>
<ol>
  <li>RequestUtils：添加了对ControllerConfig 的forwardPattern,  pagePattern, 和inputForward 属性的支持。 </li>
  <li>GenericDataSource：不赞成。修改为作为[org.apache.commons.dbpc.BasicDataSource]的一个薄的Wrapper。建议直接使用BasicDataSource 或其它兼容组件。 </li>
  <li>RequestUtils  类：修改为使用ActionServletWrapper而不是暴露 ActionServlet。 </li>
  <li>为getActionErrors 和 getActionMessages 方法添加了错误消息。 </li>
  <li>getActionErrors  和 getActionMessages：添加了根据基于传入的消息关键字从Request范围获取的对象来产生正确的相应对象的方法。 </li>
  <li>ActionErrors  或 ActionMessages：创建一个这种对象的逻辑被移到了RequestUtils中的一个工具方法。.</li>
  <li>JspException  消息：现在在RequestUtils中生成。 </li>
  <li>ConvertUtils.convertCharacter()：现在将检测空字符串并返回默认值。 </li>
</ol>
<h3>Bean Taglib包</h3><em>struts-bean</em> c标签库  [org.apache.struts.taglib.bean]发生了如下修改和修正： 
<ol>
  <li>&lt;html:errors&gt;：当指定了属性标签时，如果指定的属性没有发生错误，则不会输出错误。而前面的错误将总是会被输出。未来的增强版本将包括额外的属性来关闭header 或  footer。 </li>
  <li>将helper 方法从"private"改为  "protected" 。 </li>
</ol>
<h3>HTML Taglib 包</h3>
<p><em>struts-html</em> 标签库(package  org.apache.struts.taglib.html)发生了如下修改和修正： </p>
<ol>
  <li>FormTag：修正为，当指定了action mapping的名称时，要排除查询字符串。 </li>
  <li>ImgTag：如果只有一个参数，能正确地URLEncode 查询字符串参数。 </li>
  <li>MultiboxTag.doAfterBody():：修正为返回SKIP_BODY 而不是SKIP_PAGE。 </li>
  <li>Errortag：不赞成使用defaultLocale方法。 </li>
</ol>
<h3>Documentation 示例应用</h3>
<p>Struts  Documentation 应用(对应Struts  网站的内容)发生了如下修改： </p>
<ol>
  <li>重新组织了资源到单独的页面中。 </li>
  <li>在Tag Developers Guide中，添加了更详细的文件上传要求。 </li>
  <li>在Building View  Components，澄清了额外的i18n 支持可以由浏览器提供，并且超出了框架的范围。 </li>
  <li>在Building Controller  Components一节，文档 'validating' init-param，添加了各种参数的默认值，澄清了某些web.xml 设置不是Struts特定的。 </li>
  <li>Tag  library 文档：移到User's Guide下。 </li>
</ol>
<h3>MailReader 示例应用</h3>
<p>Struts  MailReader Example Application 发生如下修改和修正： </p>
<ol>
  <li>添加了应用资源的 Russian 和Japanese 翻译，并且设置JSP的字符集为"UTF-8"以便其可以显示English 或Japanese。 </li>
  <li>在Struts配置文件中交换了Edit mappings的"attribute"  属性的"name" 。 </li>
  <li>删除了对"tour"文档中的保存的数据库数据的引用，因为这个功能已经被删除。 </li>
</ol>
<h3>Exercise Taglib 示例应用</h3>
<p>Struts Exercise  Taglib Example Application 发生了如下修改和修正： </p>
<ol>
  <li>添加了针对使用了"action"属性的&lt;html:link&gt; 的test  case 。 </li>
  <li>添加了针对基于保存在page上下文中的集合使用&lt;html:options&gt; 和 &lt;html:optionsCollection&gt;的&lt;html:select&gt; 的test  case。 </li>
</ol>
<h2>不同之处</h2>
<p>这里列出1.0到1.1中新增的类和已经不赞成使用的类： </p>
<h3>1.0中不赞成使用，1.1中已经删除的类。</h3>
<ol>
  <li>删除：org.apache.struts.utils.BeanUtils,  org.apache.struts.utils.ConvertUtils, and org.apache.struts.utils.PropertyUtils  – 替换为org.apache.commons.beanutils </li>
  <li>删除：org.apache.struts.util.ArrayStack,  org.apache.struts.util.FastArrayList, org.apache.struts.util.FastHashMap,  org.apache.struts.util.FastTreeMap – 替换为org.apache.commons.collections </li>
  <li>删除：  org.apache.struts.digester.* - 替换为org.apache.commons.digester </li>
  <li>删除：struts-config.dtd –  替换为struts-config_1_1.dtd.</li>
  <li>删除：omnibus  "struts" taglib 和其相应的TLD – 替换为bean, logic, 和html  taglib。 </li>
  <li>删除："form"  taglib 和其相应的TLD – 替换为html  taglib.</li>
</ol>
<h3>Struts 1.1新增的包</h3>
<ol>
  <li>config</li>
  <li>taglib.nested</li>
  <li>taglib.nested.bean</li>
  <li>taglib.nested.html</li>
  <li>taglib.nested.logic</li>
  <li>validator</li>
</ol>
<h3>Struts 1.1新增的类</h3>
<p><strong>action</strong></p>
<ol>
  <li>ActionMessage</li>
  <li>ActionMessages</li>
  <li>DynaActionForm</li>
  <li>DynaActionFormClass</li>
  <li>ExceptionHandler</li>
  <li>RequestProcessor</li>
</ol>
<p><strong>actions</strong></p>
<ol>
  <li>LookupDispatchAction</li>
</ol>
<p><strong>taglib.html</strong></p>
<ol>
  <li>FrameTag</li>
  <li>JavascriptValidatorTag</li>
  <li>MessagesTag</li>
  <li>OptionsCollectionTag</li>
</ol>
<p><strong>taglib.logic</strong></p>
<ol>
  <li>EmptTag</li>
  <li>MessagesNotPresentTag</li>
  <li>MessagesPresentTag</li>
  <li>NotEmptyTag</li>
</ol>
<p><strong>upload</strong></p>
<ol>
  <li>CommonsMultipartRequestHandler</li>
</ol>
<p><strong>util</strong></p>
<ol>
  <li>LabelValueBean</li>
</ol>
<h3>Struts 1.1中新增的类成员</h3>
<p><strong>action.Action</strong></p>
<ol>
  <li>ACTION_SERVLET_KEY</li>
  <li>APPLICATION_KEY</li>
  <li>MESSAGE_KEY</li>
  <li>PLUG_INS_KEY</li>
  <li>REQUEST_PROCESSOR_KEY</li>
  <li>execute</li>
  <li>getResources(javax.servlet.http.HttpServletRequest)</li>
  <li>saveMessages</li>
</ol>
<p><strong>action.A<u>ctionServlet</u></strong></p>
<ol>
  <li>configDigester</li>
  <li>convertHack</li>
  <li>log</li>
  <li>processor</li>
  <li>getInternal</li>
  <li>destroyApplications</li>
  <li>destroyConfigDigester</li>
  <li>getApplicationConfig</li>
  <li>getRequestProcessor</li>
  <li>initApplicationConfig</li>
  <li>initApplicationDataSources</li>
  <li>initApplicationPlugIns</li>
  <li>initApplicationMessageResources</li>
  <li>initConfigDigester</li>
  <li>methods  created for backward-compatiblity only </li>
  <ol>
    <li>defaultControllerConfig</li>
    <li>defaultFormBeansConfig</li>
    <li>defaultForwardsConfig</li>
    <li>defaultMappingsConfig</li>
    <li>defaultMessageResourcesConfig</li>
  </ol>
</ol>
<p><strong><u>taglib.html.BaseHandlerTag</u></strong><strong> </strong></p>
<ol>
  <li>indexed</li>
  <li>setIndexed</li>
  <li>getIndexed</li>
</ol>
<h3>Struts 1.0 到Struts 1.1不赞成的类</h3>
<p><strong>action</strong></p>
<ol>
  <li>ActionException</li>
  <li>ActionFormBeans</li>
  <li>ActionForwards</li>
  <li>ActionMappings</li>
</ol>
<h3>Struts 1.0 不赞成的类成员</h3>
<p><strong>action.Action</strong></p>
<ol>
  <li>FORM_BEANS_KEY</li>
  <li>FORWARDS_KEY</li>
  <li>MAPPINGS_KEY</li>
  <li>getResources()</li>
  <li>perform</li>
</ol>
<p><strong>ActionServlet</strong></p>
<ol>
  <li>findDataSource</li>
  <li>findFormBean</li>
  <li>findForward</li>
  <li>findMapping</li>
  <li>initDataSources</li>
  <li>methods  created for backward-compatiblity only </li>
  <ol>
    <li>defaultControllerConfig</li>
    <li>defaultFormBeansConfig</li>
    <li>defaultForwardsConfig</li>
    <li>defaultMappingsConfig</li>
    <li>defaultMessageResourcesConfig</li>
  </ol>
</ol>
<img src ="http://www.blogjava.net/SteelHand/aggbug/25728.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-12-28 15:23 <a href="http://www.blogjava.net/SteelHand/archive/2005/12/28/25728.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WW与Struts的合并</title><link>http://www.blogjava.net/SteelHand/archive/2005/11/29/21789.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Tue, 29 Nov 2005 02:38:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/11/29/21789.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/21789.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/11/29/21789.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/21789.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/21789.html</trackback:ping><description><![CDATA[<P>近两天WW并入Struts的事情也可算是比较激烈的一件事情了。从TSS上的讨论来说，90%以上的人还是认为是好事情的。<BR>其实，不久前，Struts规划的路线中，1.2.8可能是最后一个Classic的版本了，并且改版本比1.2.7之前的变化还分出了Struts <BR>Core和扩展， 象 EL， Tag， Tiles, Validation等等几乎都已经是独立模块了。<BR><BR>至于下一代的走向，原来规划的是2个方向&nbsp;， Action Framework和Shale. 其中Shale相对独立，即以JSF为中心，补充和完善JSF框架之不足，我看倒是有些与ADF Faces在有些地方相似，当然是指前端。<BR><BR>只是，ActionFramework的核心原来是<!--StartFragment --> COR 模式为基础，并且可能还未决断。如今，WW带着Xwork加入，可算是解决了这个问题。从Struts Wiki中，这两个项目还是分开的，从Ted的邮件和WW的消息看来，新项目已经决定是Struts Ti了， 可能会合并成Action Framework,成一个东西。是啊，搞那么多干吗？<BR><BR>说到Struts Ti，我才想起来，原来有一个项目是Struts Ti，是从BaseBean的BasicPortals发展起来的，今天再去看看，那个项目已经不能访问了，Sf上的BasciPortal也不能下载了。纳闷！我还没研究这个这个Ti有什么关系。<BR><BR>直接影响我的一个问题是，我一本以Struts 1.2.X为基础的书是继续写还是不写？下一版变化太大了。<BR><BR></P><img src ="http://www.blogjava.net/SteelHand/aggbug/21789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-11-29 10:38 <a href="http://www.blogjava.net/SteelHand/archive/2005/11/29/21789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IBM发布免费Websphere，剑指JBOSS</title><link>http://www.blogjava.net/SteelHand/archive/2005/11/16/20017.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Wed, 16 Nov 2005 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/11/16/20017.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/20017.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/11/16/20017.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/20017.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/20017.html</trackback:ping><description><![CDATA[日前IBM发布了免费的Websphere应用服务器,Websphere Community Edtion（Websphere CE）。该App server基于Apache的Geronimo，并且附带了Glucode的管理平台Bundle。Gluecode是IBM之前收购的一家商业开源厂商。<BR><BR>&nbsp;并且它还可以与Tomcat和IBM的Java 内存数据库Cloudscape集成。<BR><BR>这活脱脱是 Tomcat + JBOSS + HSQL的翻版，或者针锋相对的举动？<BR><BR>IBM这家大佬将PC这些边缘产业甩给联想这后，潜心发展软件和服务，已经基本可以说是全球第一大软件厂商了。不过，如今Java开源领域的更加繁荣，轻量级技术、方法和框架的流行，确是不争的事实。不管如何，这些巨头都想在这方面染指，插上一腿。<BR><BR>比如，首先，除了Oracle之外，几个重要的Java IDE纷纷转向eclispe平台。然后，BEA宣布支持Spring，hibernate等轻量技术; SUN 开放了Saloris 和 Openoffice, 松动了原来的许可证策略，培育了Java.net这个不断壮大的社区。<BR><BR>而JBOSS确是吸收了JBPM以及开发了portal之后，潜心打造 JEMS（Jboss Enterprise Middleware Sysytem）,已经初具形象。另一家强大的开源老大ObjectWeb，虽然产品线很长，但是剑走偏锋，远远不得Jboss风光。<BR><BR><BR>详细信息，可以访问 <A href="http://www-306.ibm.com/software/webservers/appserv/community/">Websphere CE的站点。</A><BR><BR><img src ="http://www.blogjava.net/SteelHand/aggbug/20017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-11-16 10:52 <a href="http://www.blogjava.net/SteelHand/archive/2005/11/16/20017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IBM RFID Toolkit</title><link>http://www.blogjava.net/SteelHand/archive/2005/10/26/16841.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Wed, 26 Oct 2005 02:37:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/10/26/16841.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/16841.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/10/26/16841.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/16841.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/16841.html</trackback:ping><description><![CDATA[

<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">IBM AlphaWorks</span><span style="font-size: 12pt; font-family: 宋体;">有一个<span lang="EN-US">RFID Device
Development Kit</span>，由一些基于<span lang="EN-US">OSGi</span>（</span><span style="font-size: 10pt;" lang="EN-US">Open Service Gateway Initiative</span><span style="font-size: 12pt; font-family: 宋体;">）的基础架构，工具和示例，这些一起来构成<span lang="EN-US">IBM</span>的<span lang="EN-US">RFID </span>网络边缘解决方案。它可以与<span lang="EN-US">IBM Workplace Client Technology ME,</span>进行集成，这时，用户可以在一个完整的开发平台上进行开发，使用其基础架构和所包含的技术、<span lang="EN-US">API</span>来对新设备进行支持。其中还包括仿真器和教程。用户可以扩展基础架构从而支持特定模型的业务应用需求。 <span lang="EN-US"><o:p></o:p></span></span></p>


<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">该技术是属于<span lang="EN-US">IBM</span>的<span lang="EN-US"><a href="http://www.alphaworks.ibm.com/ettk">Emerging Technologies Toolkit (ETTK)</a></span>的一个组件。<span lang="EN-US"><o:p></o:p></span></span></p>


<p class="MsoNormal"><span style="font-size: 12pt; font-family: 宋体;">它所提供的<span lang="EN-US"> API</span>和协议规范被映射到<span lang="EN-US">XML</span>，可以用来产生和开发设备的<span lang="EN-US">Java</span>接口。最高层的接口提供了设备，比如<span lang="EN-US">RFID</span>阅读器，的通用<span lang="EN-US">Java</span>模型。工具包中的指南将指导用户构建与<span lang="EN-US">IBM</span>的<span lang="EN-US">Sensors </span>和<span lang="EN-US">
Actuators</span>中间件新的代理类。这允许用户将<span lang="EN-US">RFID</span>支持插入到现有的应用中，并且为应用开发者提供一个新的设备模型。<br>
</span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: 宋体;">详细信息可访问：http://www.alphaworks.ibm.com/tech/rfiddevice?open&amp;S_TACT=105AGX59&amp;S_CMP=GR&amp;ca=dgr-jw01awrfiddevice<br>
<br>
</span></p>

<img src ="http://www.blogjava.net/SteelHand/aggbug/16841.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-10-26 10:37 <a href="http://www.blogjava.net/SteelHand/archive/2005/10/26/16841.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts 秘籍（CookBook）索引</title><link>http://www.blogjava.net/SteelHand/archive/2005/10/18/15825.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Tue, 18 Oct 2005 08:50:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/10/18/15825.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/15825.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/10/18/15825.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/15825.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/15825.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>应<A href="/calvin/">白衣</A>之请，将以前发的所谓Struts秘籍作了个索引在此。本系列源改编自O'Reily的Strus Cookbook，后因时间关系没再进行。如果以后有时间还需继续，可能会更简化一些&nbsp;。<A href="/SteelHand/archive/2005/05/10/4132.html"><BR><BR></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/10/4132.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>1<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：配置</SPAN></SPAN>Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>应用</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/04/26/3825.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之起式：第</SPAN></SPAN>1.2<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：部署</SPAN></SPAN>Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>示例应用</SPAN></SPAN></A> </SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/04/27/3835.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之起式：第</SPAN></SPAN>1.3<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：迁移至</SPAN></SPAN>Struts 1.1</A> </SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/04/28/3876.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之起式：第</SPAN></SPAN>1.4<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：升级至</SPAN></SPAN>Struts 1.2</A> </SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/04/29/3930.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之起式：第</SPAN></SPAN>1.5<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式</SPAN></SPAN>:<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>将</SPAN></SPAN>JSP <SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>应用转到</SPAN></SPAN>Struts</A> </SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/04/30/3960.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之起式：第</SPAN></SPAN>1.6<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：管理</SPAN></SPAN>Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>配置文件</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/08/4077.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之起式：第</SPAN></SPAN>1.7<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：使用</SPAN></SPAN>Ant<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>进行构建和部署</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/09/4110.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之起式：第</SPAN></SPAN>1.8<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：用</SPAN></SPAN>XDoclet <SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>产生</SPAN></SPAN>Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>配置文件</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/25/5148.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>2<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：</SPAN></SPAN>UI</A> </SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/10/4136.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>1<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>2.1<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：用插件来进行应用初始化</SPAN></SPAN></A> </SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/11/4159.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>1<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>2.1<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：关于标签库声明</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/12/4211.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>1<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>2.3<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：在</SPAN></SPAN>JSP<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>中使用常数</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/13/4247.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>1<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>2.4<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：多配置文件</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/17/4423.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>1<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>2.5<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式</SPAN></SPAN>. <SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>将应用重构为模块</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/17/4426.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>1<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>2.6<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式</SPAN></SPAN>. <SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>使用多个资源束</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/18/4474.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>1<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>2.7<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式</SPAN></SPAN>. <SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>访问来自于数据库中的消息资源</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/19/4867.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>1<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>2.8<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式</SPAN></SPAN>. <SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>有选择地禁止</SPAN></SPAN>Action</A> </SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/27/5265.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>2<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>3.1<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：</SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US> </SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>使用</SPAN></SPAN>JSTL</A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/27/5266.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>2<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>3.2<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：使用</SPAN></SPAN>Struts-EL <SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>标签</SPAN></SPAN></A> </SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/30/5324.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>2<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>3.3<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：显示索引属性</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/05/31/5368.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>2<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>3.4<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：在表单中使用索引属性</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/06/01/5413.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>2<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>3.5<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：</SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US> </SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>在</SPAN></SPAN>JSTL<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>循环中使用索引属性</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/06/03/5506.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>2<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>3.6<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：</SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US> </SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>从图像提交表单</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/06/07/5654.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>2<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>3.7<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：</SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US> </SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>动态产生</SPAN></SPAN>JavaScript</A> </SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/06/08/5723.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>2<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>3.8<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式：使用</SPAN></SPAN>JavaScript<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>动态改变选择项</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/06/29/6861.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>2<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段，第</SPAN></SPAN> 3.9<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式，产生动态选择列表项目</SPAN></SPAN></A></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A HREF="/SteelHand/archive/2005/07/01/6974.html">Struts<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>秘籍之第</SPAN></SPAN>2<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>段：第</SPAN></SPAN>3.10<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>式</SPAN></SPAN>:<SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><SPAN lang=EN-US>过滤文本输入</SPAN></SPAN></A> </SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p>&nbsp;</o:p></SPAN></P></P><img src ="http://www.blogjava.net/SteelHand/aggbug/15825.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-10-18 16:50 <a href="http://www.blogjava.net/SteelHand/archive/2005/10/18/15825.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BEA收购M7</title><link>http://www.blogjava.net/SteelHand/archive/2005/10/13/15398.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Thu, 13 Oct 2005 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/10/13/15398.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/15398.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/10/13/15398.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/15398.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/15398.html</trackback:ping><description><![CDATA[我一直喜欢的M7 Nitrox终于被BEA收购了。这下，不久的将来Nitrox就可以成为eclipse-based的Workshop的一部分。<BR>Nitrox算是eclipse插件中可视化做的非常好的工具了，而workshop则在Java控件、Web Services、Portal等方面的功能非常强大而直观。二者结合在一起，应该效果不错。<BR><BR>一直认为憾事的BEA Workshop对JSF的支持，这下也有了。<BR><BR>前些日子，BEA还推出了对Spring 的支持包，这下，Weblogic 9和eclipse 的Workshop非常值得期待。<BR><img src ="http://www.blogjava.net/SteelHand/aggbug/15398.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-10-13 10:48 <a href="http://www.blogjava.net/SteelHand/archive/2005/10/13/15398.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Struts in Action中文版》完整版</title><link>http://www.blogjava.net/SteelHand/archive/2005/10/12/15329.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Wed, 12 Oct 2005 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/10/12/15329.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/15329.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/10/12/15329.html#Feedback</comments><slash:comments>164</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/15329.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/15329.html</trackback:ping><description><![CDATA[分卷压缩后，终于上传完了。<BR>下载地址分别是：<BR><A href="/Files/SteelHand/Struts%20in%20Action%20%E4%B8%AD%E6%96%87%E7%89%88.part01.rar">Part1</A>&nbsp;<BR><A href="/Files/SteelHand/Struts%20in%20Action%20%E4%B8%AD%E6%96%87%E7%89%88.part02.rar">Part2</A><BR><A href="/Files/SteelHand/Struts%20in%20Action%20%E4%B8%AD%E6%96%87%E7%89%88.part03.rar">Part3</A><BR><A href="/Files/SteelHand/Struts%20in%20Action%20%E4%B8%AD%E6%96%87%E7%89%88.part04.rar">Part4</A><BR><A href="/Files/SteelHand/Struts%20in%20Action%20%E4%B8%AD%E6%96%87%E7%89%88.part05.rar">Part5</A><BR><A href="/Files/SteelHand/Struts%20in%20Action%20%E4%B8%AD%E6%96%87%E7%89%88.part06.rar">Part6</A><BR><BR><BR><EM><FONT style="BACKGROUND-COLOR: #ffffff" color=#ff0000>下载是正常的，如果不能请检查你的网络。解压时需要全部下载完成后进行。</FONT></EM><img src ="http://www.blogjava.net/SteelHand/aggbug/15329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-10-12 15:00 <a href="http://www.blogjava.net/SteelHand/archive/2005/10/12/15329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Struts in Action 完整版</title><link>http://www.blogjava.net/SteelHand/archive/2005/10/11/15264.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Tue, 11 Oct 2005 08:27:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/10/11/15264.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/15264.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/10/11/15264.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/15264.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/15264.html</trackback:ping><description><![CDATA[<a title="" href="http://struts.apache.org" >Struts</a> in Action 终于整理完了。并且我根据这里的朋友们提供的意见和指出的错误进行了修改，也根据原书的勘误作了修改。<br>
我将原来的分章节的文章删除了，准备上传完整版。可是文件太大，而且系统将Size限制在2M.又是一阵忙活，压缩了，减小PDF文件的大小了....最后的压缩包到1.8M左右。可是网络太慢，还是上传不成功。郁闷！<br>
只好等网络不忙的时候再上传，分开打包总不太好。<br>
<br>
<br>
昨天到学校报到了。拿到课表，居然本学期每周居然1-4晚上，周六全天上课，又郁闷！那里忙得过来！看来得好好盘算一下怎么办了？<br>
<br>
而且，以后可能到这里的时间少了，我准备的一些文档的推出速度则更加慢了。<br>
<br>
<br><img src ="http://www.blogjava.net/SteelHand/aggbug/15264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-10-11 16:27 <a href="http://www.blogjava.net/SteelHand/archive/2005/10/11/15264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Struts in Action》中文版 第15章</title><link>http://www.blogjava.net/SteelHand/archive/2005/09/27/14211.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Tue, 27 Sep 2005 07:56:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/09/27/14211.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/14211.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/09/27/14211.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/14211.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/14211.html</trackback:ping><description><![CDATA[最近简直没有时间，可能笔误和错误颇多。请在这里指出来，一并在完整版中改正。谢谢！<BR><A href="http://www.blogjava.net/SteelHand/SteelHand/Files/SteelHand/StrutsInAction_Chinese(15).rar">这里下载</A></A>。<BR><BR><EM><FONT style="BACKGROUND-COLOR: #ffffff" color=#ff0000><STRONG>&nbsp;不知为什么提交后连接地址的上下文根会变。如果上面连接不行，请直接使用这个地址：<BR></STRONG></FONT></EM><EM><FONT style="BACKGROUND-COLOR: #ffffff" color=#ff0000><STRONG>http://www.blogjava.net/Files/SteelHand/StrutsInAction_Chinese(15).rar</STRONG></FONT></EM><img src ="http://www.blogjava.net/SteelHand/aggbug/14211.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-09-27 15:56 <a href="http://www.blogjava.net/SteelHand/archive/2005/09/27/14211.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EXADEL STUDIO 3.0 RELEASED</title><link>http://www.blogjava.net/SteelHand/archive/2005/09/09/12524.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Fri, 09 Sep 2005 03:30:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/09/09/12524.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/12524.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/09/09/12524.html#Feedback</comments><slash:comments>82</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/12524.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/12524.html</trackback:ping><description><![CDATA[<P> <A href="http://www.exadel.com/">EXADEL</A> Studio的3.0发布了，我个人认为这是eclipse平台的轻量IDE中比较好的了。<A href="http://www.m7.com/">M7的Nitrox</A>不错，但是很贵哦。而且............加密做的不错，很难找到CRACK的。<BR><BR>从2.5版本开始，他就分为了标准版和Pro版，前者是免费的，后者收费。3.0Pro版本同样为＄99，可以说非常便宜了。而Nitrox同时支持JSF和Struts的版本居然是$699。<BR><BR>关于其新特征，可以查看：Pro版：<A href="http://www.exadel.com/products_exadelstudiopro.htm">http://www.exadel.com/products_exadelstudiopro.htm</A>  标准版：<A href="http://www.exadel.com/products_exadelstudio.htm">http://www.exadel.com/products_exadelstudio.htm</A>。<BR><BR>有几个特征值得一提：<BR></P>
<UL>
<LI><A href="http://www.exadel.com/exadelstudio/help/projectTemplates.html">支持自定义的项目模板。</A></LI>
<LI><A href="http://www.exadel.com/exadelstudio/help/jsfConfigEditor.html">JSF配置文件的可视化编辑：</A>，包括：</LI></UL>
<P>导航图：</P>
<P><A href="http://www.exadel.com/exadelstudio/help/images/facesConfigDiagram.gif"><IMG height=380 alt=1 src="http://www.exadel.com/exadelstudio/help/images/facesConfigDiagram.gif" width=554 border=0></A>Tree视图编辑器：</P>
<P><A href="http://www.exadel.com/exadelstudio/help/images/facesConfigTree.gif"><IMG height=445 alt=2 src="http://www.exadel.com/exadelstudio/help/images/facesConfigTree.gif" width=554 border=0></A></P>
<UL>
<UL>
<LI><STRONG>JSF</STRONG><STRONG>内容助理：</STRONG></LI></UL></UL>
<P><A href="http://www.exadel.com/exadelstudio/help/jsfContentAssist.html">特别是支持表达式的帮助：</A></P>
<P><A href="http://www.exadel.com/exadelstudio/help/images/jsfContentAssistProject1.gif"><IMG height=295 alt=3 src="http://www.exadel.com/exadelstudio/help/images/jsfContentAssistProject1.gif" width=502 border=0></A></P>
<P>这点非常不错，看好！</P>
<P> </P>
<P>对Struts的支持，除了常规的导航流图，配置编辑，可视化验证，之类，还直<A href="http://www.exadel.com/exadelstudio/help/tilesEditor.html">支持TILES的可视化</A>，这点有很大进步，但是和Nitrox比还是有些差距，后者能够支持JSP编辑器中的TILES WYSWYG效果。</P>
<P>还有个有趣的特征是<A href="http://www.exadel.com/exadelstudio/help/strutsConfigDebug.html">Struts配置文件的Debug</A>, 直接在图形上就可以设置断点。</P>
<P> </P>
<P>另外的改进就是支持JSP 的WYSWYG编辑。</P>
<P> </P>
<P>PRO版与标准版的支持在于对Hibernate 和Spring 的支持，以及JSP的可视化编辑。其中Hibernate 支持可视化MAP编辑。Spring 则是有Spring IDE提供，无新意。</P>
<P> </P>
<P>哈哈，我决定在我后面的Spring 和struts的书中，以它作为演示工具。</P><img src ="http://www.blogjava.net/SteelHand/aggbug/12524.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-09-09 11:30 <a href="http://www.blogjava.net/SteelHand/archive/2005/09/09/12524.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java IDE的未来</title><link>http://www.blogjava.net/SteelHand/archive/2005/09/07/12295.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Wed, 07 Sep 2005 02:23:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/09/07/12295.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/12295.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/09/07/12295.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/12295.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/12295.html</trackback:ping><description><![CDATA[<!--StartFragment -->&nbsp;<SPAN class=artText> 
<P class=ArticleBody page="1"><SPAN class=autoLinked><B>Borland 最近宣布了将要升级</B></SPAN>JBuilder IDE的相关信息。基于Eclipse平台，Borland JBuilder 2006 将提供端对端的开发人员协作功能，以提高对标准的支持和生产力增强。但是这恐怕不是令大家关注的地方，大家感兴趣的还是Eclipse平台。<BR><BR>BEA公司也意图将其IDE Workshop的未来版本转向Eclipse平台，在加上IBM Websphere Studio(现在叫Rational Software Architect和Rational Application Developer)，似乎eclipse的势力在妄图一统天下。著名的Java IDE只剩下Oracle 的JDeveloper和IDEA了。但是实际上Java IDE 却是阴云密布，不容乐观。<BR><BR><BR>基于Eclipse的 JBuilder，代号为Peloton。大约会在明年中期发布。它将会包含 JBuilder的可用性和协作特征，加上应用生命周期管理。</P>
<P class=ArticleBody page="1">近两年Eclipse社区不断发展壮大，以致在Eclipse3发布的时候，疯狂下载造成服务器几乎瘫痪。因此，在Java IDE市场上， Eclipse估计占到20-30%的市场分额。.</P>
<P class=ArticleBody page="1">因此，这种增长令商业的专用IDE厂商非常不安，前不久 <SPAN class=autoLinked><B>Oracle终于宣布其</B></SPAN>JDeveloper向开发人员免费，仅对支持收费。就是一种无可奈何的反应。它们认为，Eclipse （包括商业和开源平台）的开发工具已经占据了50%的半壁江山，Oracle在J2EE方面一直不太理想，还不如让JDeveloper免费，也好做为Oracle Java的形象大使，赚回些关注。</P>
<P class=ArticleBody page="1">但是实际上，Eclipse提供的是一个骨架平台，当然Eclipse本身也提供一些开源的Plugins,也有其他一些厂商在提供商业的插件支持，比如MyEclipse, Lomboz, Exadel等等。还有其它一些开源的专用插件，层出不穷。<BR><BR>因此，Eclipse-Based IDE实际上成为两种派系：OS和商业的。就商业来说，IBM是最嬉笑颜开的，Eclipse本身就是它鼎力支持的，从WSAD到RAD和RSA，IBM成功地将Rational 品牌产品和Websphere进行了整合，Rational体系如今专注软件开发生产和测试，而RAD和RSA则提供了业界最高标准的，包含基本IDE支持，标准支持，协作，软件生命周期（甚至集成了RUP），MDA等功能为一体的开发平台。<BR><BR>当然，基于Eclipse的商业IDE和开源IDE会否共存？答案当然是肯定的。最简单的原因就是，Java虽然是标准，但是厂商自有独门功夫，因此，IDE商业平台自然带有一定的专有性。如果是大型的企业应用，需要优化等等，则非商业IDE莫属。<BR><BR>另外一个就是Java本身的未来，轻量架构和方法的发展，比如如火如荼的IoC，MetaFramework等等，则又大大促进了开源IDE的发展。<BR><BR>因此，一定时期内，这两种肯定会共存。IDE的较量，背后还是AS和基础平台的较量。<BR><BR>Borland的未来核心是构建一个 Borland Core Software Delivery Platform (SDP), 也都基于Eclipse。JB只是其中一个组件。 </P>
<P class=ArticleBody page="1">SUN的IDE则有些尴尬，NetBeans 一直没什么人感兴趣。现在，SUN的另一个IDE， Java Creator则让人摸不清到底是何意思。Creator的意图是想借JSF的组件架构，构造一个轻量的开发环境，并且还苦心构造了一个轻量的后台的数据支持。这明显和SUN的J2EE架构矛盾，真是搞不懂。不过，Creator对快速开发（RAD）倒是颇有点像VS.NET的那么点样子，可惜是SUN在经营，恐怕也不会对MS造成什么威胁。<BR><BR>另外一个IDEA则也有一大帮拥甭。IDEA有些地方却有独到之处。其它倒是不说，不过IDEA的下一版（恐怕不妥）fabrique倒是非常有意思，它在常规的IDE之上构建了一个专门的应用框架，并且在IDE（应该说是RAD开发平台）提供了业务对象框架，Web应用框架，以及通用的服务（称为Active Libraries）（Forum,Email,...）的支持。非常具有特色。我个人十分欣赏。这点恐怕只是Oracle ADF可以与之一比。<BR><BR>呵呵，先说这么多。</SPAN></P><img src ="http://www.blogjava.net/SteelHand/aggbug/12295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-09-07 10:23 <a href="http://www.blogjava.net/SteelHand/archive/2005/09/07/12295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java在线教程</title><link>http://www.blogjava.net/SteelHand/archive/2005/09/06/12219.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Tue, 06 Sep 2005 06:36:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/09/06/12219.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/12219.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/09/06/12219.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/12219.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/12219.html</trackback:ping><description><![CDATA[有一个免费的Java在线教程，看样子是一个SUN的专家掌控的，名字<!--StartFragment --> <SMALL><A href="mailto:sang.shin@sun.com">sang.shin</A></SMALL> ，中国人？韩国人？<BR>其中有很多非常好的材料，有详细的课程表，还包括PPT材料，讲课录音，实验材料等等。我觉得非常有价值。<BR>你还可以注册到一个相关的yahoo群组参与到课程中。初学者不妨试试。虽然是英文的，不过也不要怕，还可以学习英文，岂不更好？<BR><BR>地址是：<A href="http://www.javapassion.com">http://www.<A href="http://www.javapassion">javapassion</A>.com</A><img src ="http://www.blogjava.net/SteelHand/aggbug/12219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-09-06 14:36 <a href="http://www.blogjava.net/SteelHand/archive/2005/09/06/12219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SUN JSF RI Opensource 以及JSF新特征</title><link>http://www.blogjava.net/SteelHand/archive/2005/08/29/11413.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Mon, 29 Aug 2005 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/08/29/11413.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/11413.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/08/29/11413.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/11413.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/11413.html</trackback:ping><description><![CDATA[<P>Roger Kitain （ JavaServer Faces co-specification lead&nbsp;）在其blog宣布了开源的 "Open JavaServer Faces" ，并且在基于OSI-approved CDDL许可之下。</P>
<P>&nbsp;</P>
<P>原来SUN JSF&nbsp;RI 是基于 Sun Java Research License [Sun, JRL]对”开放开发”发布。基本上，这意味着你可以免费获得它的代码和源代码，并且你可以修改和分发它，只要你不是用作商业目的, 或者用作内部非生产之用。如果你修改了二进制代码和源代码用作商业用途或者内部生产之用，你必须使用商业许可证并且通过 JSF 技术兼容包 (TCK)的测试。你也可以提交补丁给 JSF RI 代码基。</P>
<P>&nbsp;</P>
<P>并且在Java.net社区也launch了一个专门的项目Javaserver Faces，地址是：https://javaserverfaces.dev.java.net/</P>
<P>&nbsp;</P>
<P>Ed Burns&nbsp;也在其BLog中公布了 JavaServer Faces 1.2 和 JavaServer Pages 2.1 Proposed Final Draft Specification的一些细节：</P>
<P>&nbsp;</P>
<UL>
<LI>统一 EL。</LI></UL>
<P>将JSP，JSTL和Faces EL统一起来，并且类似于 OGNL 的使用方式。这将极度方便表现层之间的整合，和MVC之间的简化。</P>
<UL>
<LI>针对JSP/JSF应用的新的Tree 创建和内容交织模型（Content Interweaving Model）。</LI></UL>
<P>虽然可以不用JSP而使用Faces，但是因为技术、技能和各种生产开发环境的支持，JSP/JSF应用确实最现实和富有效率的。当然，这里还有一些集成问题，比如OnJava中的 Hans Bergsten 的这篇文章所述。&nbsp;所以规范中将修改针对JSP的Faces ViewHandler 的实现，以及所有Faces组件标签所用的JSP定制标签句柄的基类的实现来解决这些问题。</P>
<UL>
<LI>集成JSTL。</LI></UL>
<P>有一个问题是JSTL不支持PostBack，所以使用 JSTL的 &lt;c:forEach&gt; 包含Faces 输入组件会出现问题。所以需要在JSTL中引入类似于PostBack的新概念，将在下一个版本中发布，并且更好地支持所有Faces组件。</P>
<UL>
<LI>Back Button 问题和多 Frame 或Multi Window Faces 应用。</LI></UL>
<P>因为在Multi Frame 或者 Multi Window 应用中使用Facesa在State Management API方面会出问题，即浏览器的Back按钮会造成状态错误。这个问题已经解决。&nbsp;</P>
<UL>
<LI>将消息与页面中的某个特定的组件相关联。</LI>
<LI>AJAX support</LI>
<LI>暴露一个application 层面的 ResourceBundle 给 EL.</LI></UL>
<P>添加了一个新的 &lt;resource-bundle&gt;到 faces-config 中，列出应该暴露给使用ELResolver 链的EL的资源束。这样可以优化性能。</P>
<UL>
<LI>API classes use generics</LI></UL>
<P>&nbsp;</P>
<P>原文见：http://weblogs.java.net/blog/edburns/archive/2005/08/javaserver_face_3.html</P>
<P>&nbsp;</P><img src ="http://www.blogjava.net/SteelHand/aggbug/11413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-08-29 10:51 <a href="http://www.blogjava.net/SteelHand/archive/2005/08/29/11413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java i18n的一个很好的文章</title><link>http://www.blogjava.net/SteelHand/archive/2005/08/29/11409.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Mon, 29 Aug 2005 02:05:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/08/29/11409.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/11409.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/08/29/11409.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/11409.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/11409.html</trackback:ping><description><![CDATA[前些日子说要整理一下Java中文字编码的处理的文章，今天早上发现一篇比较好的材料，从各个角度都讨论了有关编码处理的问题。其实其基础和我想的一样，尽量在各个环节都统一成Unicode，而不是到处进行修修补补的转码。<BR><BR>作者说将不时更新，而且其中有些示例不时基于最广泛的Tomcat，不过基本上都差不多，涉及到这些环节。<BR><BR>他强调不要Copy文章，可以Link，以便获得最新的Update，所以，我们就link一下，地址是：<BR><BR><A href="http://tomi.panula-ont.to/i18n/">http://tomi.panula-ont.to/i18n/</A><BR><BR><img src ="http://www.blogjava.net/SteelHand/aggbug/11409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-08-29 10:05 <a href="http://www.blogjava.net/SteelHand/archive/2005/08/29/11409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TOP Java Books</title><link>http://www.blogjava.net/SteelHand/archive/2005/08/24/10864.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Wed, 24 Aug 2005 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/08/24/10864.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/10864.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/08/24/10864.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/10864.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/10864.html</trackback:ping><description><![CDATA[前面有个朋友说看书总是希望要看4 Star以上的（Amazon Reviewed），一直想拟一个Book List，不过一直没有付诸行动。不过大家可以先看看这些数据排名：<BR><BR><STRONG>1 TOP Java Books:<BR></STRONG>
<HR>
<BR><EM>(Head First系列非常之好，可是也很难以搞到。不知为什么一直没有引进中文的计划。)</EM><BR><!--StartFragment -->&nbsp;<TR class=itemListRow><TD class=itemListCell> 
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0596007124 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0596007124/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0596007124.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0596007124/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Head First Design Patterns </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0596009208 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0596009208/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0596009208.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0596009208/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Head First Java, 2nd Edition </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0131483986 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0131483986/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0131483986.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0131483986/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Java How to Program (6th Edition) (How to Program (Deitel)) </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=193239415X method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/193239415X/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/193239415X.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/193239415X/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Hibernate in Action (In Action series) </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0131482025 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0131482025/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0131482025.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0131482025/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Core Java(TM) 2, Volume I--Fundamentals (7th Edition) (Core Java 2) </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0201310058 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0201310058/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0201310058.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0201310058/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Effective Java Programming Language Guide </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0596005407 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0596005407/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0596005407.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0596005407/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Head First SCWCD </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0072226846 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0072226846/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0072226846.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0072226846/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Sun Certified Programmer &amp; Developer for Java 2 Study Guide (Exam 310-035 &amp; 310-027) </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0764574833 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0764574833/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0764574833.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0764574833/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Professional Java Development with the Spring Framework </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0131492020 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0131492020/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0131492020.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0131492020/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Java : An Introduction to Problem Solving and Programming (4th Edition) </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><STRONG>2 TOP Selling J2EE Book</STRONG><BR><BR><!--StartFragment -->&nbsp;<TR class=itemListRow><TD class=itemListCell> 
<HR>

<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0764543857 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0764543857/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0764543857.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0764543857/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Expert One-on-One J2EE Design and Development (Programmer to Programmer) </A></TD></TR>
<TR>
<TD vAlign=center noWrap>Avg. Review: <IMG alt="Avg. Rating: 5.0" src="http://g-images.amazon.com/images/G/01/detail/stars-5-0.gif"> </TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0131422464 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0131422464/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0131422464.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0131422464/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Core J2EE Patterns: Best Practices and Design Strategies, Second Edition </A></TD></TR>
<TR>
<TD vAlign=center noWrap>Avg. Review: <IMG alt="Avg. Rating: 5.0" src="http://g-images.amazon.com/images/G/01/detail/stars-5-0.gif"> </TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0764558315 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0764558315/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0764558315.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0764558315/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Expert One-on-One J2EE Development without EJB </A></TD></TR>
<TR>
<TD vAlign=center noWrap>Avg. Review: <IMG alt="Avg. Rating: 4.5" src="http://g-images.amazon.com/images/G/01/detail/stars-4-5.gif"> </TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0321146182 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0321146182/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0321146182.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0321146182/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>J2EE Web Services </A></TD></TR>
<TR>
<TD vAlign=center noWrap>Avg. Review: <IMG alt="Avg. Rating: 4.0" src="http://g-images.amazon.com/images/G/01/detail/stars-4-0.gif"> </TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=1590593413 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/1590593413/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/1590593413.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/1590593413/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Beginning J2EE 1.4: From Novice to Professional (Apress Beginner Series) </A></TD></TR>
<TR>
<TD vAlign=center noWrap>Avg. Review: <IMG alt="Avg. Rating: 4.5" src="http://g-images.amazon.com/images/G/01/detail/stars-4-5.gif"> </TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0131480103 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0131480103/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0131480103.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0131480103/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>J2EE 1.4 : The Big Picture </A></TD></TR>
<TR>
<TD vAlign=center noWrap>Avg. Review: <IMG alt="Avg. Rating: 5.0" src="http://g-images.amazon.com/images/G/01/detail/stars-5-0.gif"> </TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0130449164 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0130449164/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0130449164.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0130449164/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Sun Certified Enterprise Architect for J2EE Technology Study Guide </A></TD></TR>
<TR>
<TD vAlign=center noWrap>Avg. Review: <IMG alt="Avg. Rating: 3.0" src="http://g-images.amazon.com/images/G/01/detail/stars-3-0.gif"> </TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=047128128X method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/047128128X/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/047128128X.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/047128128X/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Mastering BEA WebLogic Server: Best Practices for Building and Deploying J2EE Applications </A></TD></TR>
<TR>
<TD vAlign=center noWrap>Avg. Review: <IMG alt="Avg. Rating: 4.5" src="http://g-images.amazon.com/images/G/01/detail/stars-4-5.gif"> </TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0972954899 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0972954899/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0972954899.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0972954899/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>The J2EE Architect's Handbook </A></TD></TR>
<TR>
<TD vAlign=center noWrap>Avg. Review: <IMG alt="Avg. Rating: 4.0" src="http://g-images.amazon.com/images/G/01/detail/stars-4-0.gif"> </TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=073571195X method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/073571195X/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/073571195X.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/073571195X/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Java for the Web with Servlets, JSP, and EJB: A Developer's Guide to J2EE Solutions </A></TD></TR>
<TR>
<TD vAlign=center noWrap>Avg. Review: <IMG alt="Avg. Rating: 4.5" src="http://g-images.amazon.com/images/G/01/detail/stars-4-5.gif"><BR></TD></TR></TBODY></TABLE></FORM></TD></TR><STRONG>3&nbsp; 8月TOP　Selling:</STRONG><BR><!--StartFragment -->&nbsp;<TR class=itemListRow><TD class=itemListCell> 
<HR>

<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0321349806 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0321349806/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0321349806.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0321349806/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Java(TM) Programming Language, The (4th Edition) (Java Series) </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0596100655 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0596100655/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0596100655.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0596100655/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Eclipse IDE Pocket Guide </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=1932394419 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/1932394419/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/1932394419.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/1932394419/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Hibernate Quickly </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0471738840 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0471738840/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0471738840.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0471738840/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Data Structures and Algorithms in Java </A></TD></TR>
<TR>
<TD vAlign=center noWrap>Avg. Review: <IMG alt="Avg. Rating: 2.0" src="http://g-images.amazon.com/images/G/01/detail/stars-2-0.gif"> </TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0262693259 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0262693259/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0262693259.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0262693259/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Java Precisely : Second Edition </A></TD></TR>
<TR>
<TD vAlign=center noWrap>Avg. Review: <IMG alt="Avg. Rating: 4.5" src="http://g-images.amazon.com/images/G/01/detail/stars-4-5.gif"> </TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0596007345 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0596007345/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0596007345.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0596007345/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Making Jboss Work </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=354027992X method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/354027992X/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/354027992X.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/354027992X/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>ECOOP 2005 - Object Oriented Programming : 19th European Conference, Glasgow, UK, July 25-29, 2005. </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0975913565 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0975913565/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0975913565.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0975913565/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Easy Java Debugging : Java Testing &amp; Development for Speed and Quality </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=0672327635 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0672327635/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/0672327635.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/0672327635/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Code First : Java </A></TD></TR>
<TR>
<TD vAlign=center noWrap></TD>
<TD vAlign=center align=right>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></FORM></TD></TR><TR class=itemListRow><TD class=itemListCell>
<FORM action=http://buybox.amazon.com/o/dt/assoc/handle-buy-box=1418859834 method=post target=blank>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD width=52 rowSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/1418859834/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top><IMG alt="Average review:  stars" hspace=2 src="http://images.amazon.com/images/P/1418859834.01.THUMBZZZ.jpg" vspace=2 border=0> </A></TD>
<TD style="FONT-WEIGHT: 700; TEXT-ALIGN: left" colSpan=2><A href="http://www.amazon.com/exec/obidos/ASIN/1418859834/ref=nosim/javacrawlcom-20?dev-t=D68HUNXKLHS4J" target=_top>Java Programming: Introductory Concepts and Techniques, Third Edition </A></TD></TR>
<TR>
<TD vAlign=center noWrap>Avg. Review: <IMG alt="Avg. Rating: 1.0" src="http://g-images.amazon.com/images/G/01/detail/stars-1-0.gif"></TD></TR></TBODY></TABLE><BR></FORM></TD></TR>JavaOne 2005大会上的书店有一个临时排行榜。以在此看到这些书的情况，<A href="http://jroller.com/resources/h/habuma/j1sia.jpg">http://jroller.com/resources/h/habuma/j1sia.jpg</A><BR><BR>列出这些书由什么意义？我也不知道。不过找得到的话，可以看看。好不好，你自己说了算。<BR><BR><img src ="http://www.blogjava.net/SteelHand/aggbug/10864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-08-24 10:33 <a href="http://www.blogjava.net/SteelHand/archive/2005/08/24/10864.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TOP 10 Resesons to Perfer JSF on Struts</title><link>http://www.blogjava.net/SteelHand/archive/2005/08/24/10856.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Wed, 24 Aug 2005 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/08/24/10856.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/10856.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/08/24/10856.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/10856.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/10856.html</trackback:ping><description><![CDATA[&nbsp;David Geary （何许人也？Core JSF的作者之一）有一篇BLog，建议新项目都最好采用JSF而不是Struts，并且列出了10大理由，分别是：<BR><BR><!--StartFragment -->&nbsp; 
<LI>Components </LI>
<P><EM>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;组件组件，JAVA一直希望有.NET和Delphi的RAD和拖放式开发，虽然现在和那两种还有差距，但毕竟已经是开始了。第3方组件厂商也开始出现萌芽的态势。另外一个值得注意的趋势就是，Apple，这个艺术与技术的完美缔造者，其WebObject，作为Web的组建式框架的祖宗，也准备开放了。而且，按照Apple也转向Intel平台的介绍来看，也许不久的一天，它就可以完美地运行在WinTel架构下了。</EM><BR>&nbsp;&nbsp;&nbsp;</P>
<LI>Render Kits </LI>
<P><EM>&nbsp;&nbsp; 支持渲染包可以是一个非常重要的特征，这样可以支持不同的显示技术。移植性很好。针对XML， PDF， VML等等。不需要改动其它的东西。</EM></P>
<LI>Renderers </LI>
<LI>Value Binding Expressions </LI>
<P><EM>&nbsp;&nbsp; 其实比较特色的是Method Binding,这点在其他EL或者类似的技术上还没有。</EM></P>
<LI>Event Model </LI>
<LI>Extensibility </LI>
<LI>Managed Beans (Dependency Injection) </LI>
<P><EM>&nbsp; 只有Spring 才IoC吗？不是的，其实现在IoC无处不在。</EM></P>
<LI>POJO Action Methods </LI>
<LI>JSF is the standard Java-based web app framework </LI>
<LI>There's only one <a title="" href="http://struts.apache.org" >Struts</a></LI>
<P><EM>&nbsp;&nbsp;&nbsp;Struts是一个产品，而JSF是一个标准。二者层面不一样。有很多优秀的实现会出现的。</EM></P>
<P>甚以为是，故摘录于此。原文见：<A href="http://jroller.com/page/dgeary?entry=top_ten_reasons_to_prefer">http://jroller.com/page/dgeary?entry=top_ten_reasons_to_prefer</A><BR><BR>其实，JSF的学习曲线非常之低，呵呵。<BR></P><img src ="http://www.blogjava.net/SteelHand/aggbug/10856.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-08-24 09:47 <a href="http://www.blogjava.net/SteelHand/archive/2005/08/24/10856.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Liferay 3.60 Released and BEA Acquired Plumtree</title><link>http://www.blogjava.net/SteelHand/archive/2005/08/23/10786.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Tue, 23 Aug 2005 04:37:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/08/23/10786.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/10786.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/08/23/10786.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/10786.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/10786.html</trackback:ping><description><![CDATA[<P>Liferay这帮家伙干的真漂亮，自从使用了Spring之后，事情好像变得容易多了似的。16日又放出了一个小升级，新的特征支持包括：<BR><BR>Portlet拖放；<BR>声明性事务（Spring Based）;<BR>Layout热部署；<BR><BR>虽然这不是实质性的改变，但是对Portal的可用性倒是很有帮助的。<BR><BR>看它们的<A href="http://www.liferay.com/web/guest/products/road_map">Roadmap</A>,下一版本的Release会增强安全方面的问题，以及支持JSR170 CMS。我一直期待的Workflow要到明年才能出来。<BR><BR><BR>另外，BEA居然收购了Plumtree，看得出BEA在这方面的决心。Plumtree原来提供非常优秀的中立性的Portal解决方案，这下BEA花费2亿美元其实很划算的。<BR><BR>都知道BEA的portal虽然比起IBM的Portal轻便，但是这是因为它在Portal中的应用方面非常的薄弱，一直赖于定制或者第3方提供应用支持。IBM WAS6之后，将Client和Portal整合Workplace之上，更显得BEA在这方面的差距之大。而且IBM的下一代WTTK平台已经在AlphaWorks中跃跃欲出，显示出无比的霸王之气，欲将Portal与client融合，只有取代Desktop之意。<BR><BR>收购Plumtree之后，BEA会在协作、CMS方面充实其Portal产品，估计将作为Weblogic 9的平台发布出来。但是，就在这一步上说，它还比IBM差的地方，就是wireless部分，不知道用什么来补。<BR><BR><BR><BR></P><img src ="http://www.blogjava.net/SteelHand/aggbug/10786.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-08-23 12:37 <a href="http://www.blogjava.net/SteelHand/archive/2005/08/23/10786.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java EE5(JSR224)  passes public review ballot</title><link>http://www.blogjava.net/SteelHand/archive/2005/08/18/10397.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Thu, 18 Aug 2005 02:59:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/08/18/10397.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/10397.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/08/18/10397.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/10397.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/10397.html</trackback:ping><description><![CDATA[<p>&nbsp;<a href="http://jcp.org/en/jsr/detail?id=244" target="_blank">JSR 244</a>,
the umbrella spec that defines what other specs and capabilities will
be included as part of Java EE 5 (formerly J2EE 1.5), has had it's
public review spec approved by the JCP EC. The theme of the release is
ease of development, focused on redefining the platform in light of
annotations and pojo-driven development, with major additions including
the Java Persistence API 1.0 (EJB 3 entities), JSF, JSTL, and
more.&nbsp;<br><br><!--StartFragment -->The specific API's mandated for Java EE 5 are:<br><br>Enterprise JavaBeans (EJB) 3.0<br>Servlet 2.4 <br>JavaServer Pages (JSP) 2.1 <br>Java Message Service (JMS) 1.1<br>Java Transaction API (JTA) 1.0 <br>JavaMail 1.3<br>JavaBeans Activation Framework 1.1 <br>J2EE Connector Architecture 1.5 <br>Web Services for J2EE 1.1 <br>Java API for XML-based RPC (JAX-RPC) 1.1 <br>Java API for XML Web Services (JAX-WS) 2.0 <br>Java Architecture for XML Binding (JAXB) 2.0 <br>SOAP with Attachments API for Java (SAAJ) 1.3<br>Java API for XML Registries (JAXR) 1.0<br>Java 2 Platform, Enterprise Edition Management API 1.0<br>Java 2 Platform, Enterprise Edition Deployment API 1.1<br>Java Authorization Service Provider Contract for Containers 1.0<br>Debugging Support for Other Languages (JSR-45) <br>Standard Tag Library for JavaServer Pages (JSTL) 1.1<br>Web Services Metadata for the Java Platform 1.0<br>JavaServer Faces 1.2 Requirements<br>Common Annotations for the Java Platform 1.0 <br>Streaming API for XML (StAX) 1.0<br>Java Persistence API 1.0 <br><br>恐
怕其中最引入注目的就是EJB3了。 这期间一直争论不休。而且这里还增加了一个新的Java Persistence API 1.0
，可能是需要将EJB以前的广受BS的CMP与JDO结合起来还是怎么？而且，对于EJB3,由于Oracle的加入，可能会偏向TopLink，再加上
Hibernate学来的一些内容好了。<br><br>另外就是，JSF仍然需要加强，还没与看过规范，这其间和JSP之间的融合会怎样。总之，JSF是基于Servlet的，JSP是主要表现技术，这核心还是要看Servlet有何实质性的改变。<br><br>Java EE5，听起来还是不习惯，还没叫习惯嘛，估计很快就会适应的。到底它是让开发简单了吗？简单在哪里？<!--StartFragment --> </p>
<p><!--StartFragment -->Debu Panda有篇小文章倒是可以看看，也可以参与到其中讨论一下： <b><a class="weblogItemTitle" href="http://radio.weblogs.com/0135826/2005/08/17.html">Is Java EE 5.0 really simplifying development?</a></b> <br>也可以看一下TSS的讨论：<a href="http://www.theserverside.com/news/thread.tss?thread_id=35945">http://www.theserverside.com/news/thread.tss?thread_id=35945</a>。<br><br>不过，趋势总是这样，现在是一个纷乱的时代，一方面重型技术往完全精确的工业化目标MDA发展，另一方面却层出不穷的个人英雄式的轻量方法。但是不管哪一个，单方面都不时软件工业的救星。<br><br>简单是美，壮观也是美。当然，对于应用来说，简单地解决复杂问题那才是美。<br></p><img src ="http://www.blogjava.net/SteelHand/aggbug/10397.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-08-18 10:59 <a href="http://www.blogjava.net/SteelHand/archive/2005/08/18/10397.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Struts in Action》中文修订版 第14章</title><link>http://www.blogjava.net/SteelHand/archive/2005/08/17/10360.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Wed, 17 Aug 2005 09:24:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/08/17/10360.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/10360.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/08/17/10360.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/10360.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/10360.html</trackback:ping><description><![CDATA[<font color="#006400"><em><strong>最近忙于修订《Javaserver Faces in Action》，都没有时间来修改这个文档了。我发现校对文稿真的是一个非常辛苦的事情，比起写来，要麻烦得多。何况我又不是一个细致的人。真是有些痛苦。今天抽点时间来继续将这部分发点出来。</strong></em><br><br></font>很多人都问，Struts中用什么处理模型和数据。<br><br>
我以前总说，这和Struts有什么关系？<br>从实际上来说，这的确和他没什么关系，因为他是M中立的。你可以使用你自己喜欢的任何M实现。但是正因如此，其实也还是和她有关系的，那就是它本质上的MVC的分层设计。<br>
<br>对Struts本身来说，作为最成功的一个MVC框架，实际上其最成功之处和精彩之处就是其中的C，即它是一个比较好的Front
Controller 模式的实现。&nbsp;很多地方，特别是其它利用了它的大型框架，都利用了他的这个优点。比如Oracle 的ADF。<br>
<br>但是对小型应用来说，很多人在争论，Action到底是M还是C。其实这并不重要，如果应用小型，你尽管可以在其中实现你的Biz Logic。这样的话，它就是M。否则，稍大型一些的应用，最好还是作为一个C来使用，至少是C的一个helper。<br>
<br>那么，具体的M怎么办呢？常规的做法是委托给POJO或者EJB。但是基于分层的目的，这中间通常是需要一个缓冲，那就是Facade。SUN的
官方Facade实现原来推荐的是Session
EJB，这感情好，如果你能搞定它，业务和实体也可以尽管使用EJB。如果你不能负担EJB之痛，你可以使用POJO
Facade来访问你的POJO实现的逻辑。<br>
<br>那么你的POJO生长在哪里？目前的Spring 等IoC容器正是一个好地方。实际上我想将Spring 成为是“框架之框架”。<br>OK，那么数据层又如何？嘿嘿，实际上离Struts太远啦，严格说起来他不想知道，也不用知道。你可以使用任何需要的持久实现，关键是作为DTO传递给C和V的结果，以及它们之间的转换。<br><br>本书中的ProcessBean是早期的一个POJO Facade，非常不错。但是不知为和这个包一直在Apache Commons的沙坑中跳不出来。而且如今有些陈旧了。<br>不过，本章其中的RSS和Lucene的讲述倒是不错。值得参考。<br><br><A href="http://www.blogjava.net/Files/SteelHand/StrutsInAction_Chinese%2814%29.rar">这里下载</a>。<br><br><img src ="http://www.blogjava.net/SteelHand/aggbug/10360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-08-17 17:24 <a href="http://www.blogjava.net/SteelHand/archive/2005/08/17/10360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Struts in Action》中文修订版 第13章</title><link>http://www.blogjava.net/SteelHand/archive/2005/08/04/9199.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Thu, 04 Aug 2005 06:01:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/08/04/9199.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/9199.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/08/04/9199.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/9199.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/9199.html</trackback:ping><description><![CDATA[一直以为，国际化是个问题，本地化不是问题。<BR>但是，老是有人层出不穷地问中文的问题，真是生生被他们气死。<BR><BR>有时间的时候准备写一篇文档，彻彻底底的描述一下Java的文字处理问题。不过这里先说几点最重要的：<BR><BR>1 先要搞清除字符集（CharacterSet）和编码方案(Encoding Schema)的意思；<BR>2 Java系统内置Unicode的问题处理方式，这点是最基本的前提，不要忘了；<BR>3 操作系统的代码页（CodePage）和字符集的关系；<BR>4 JSP中，注意page指令的charset不是字符集的意思，实际上是一中Java内置的字符集和编码方案结合的编码；<BR>5 不知道为什么总有人喜欢GB2312，记住：<FONT face=Arial><STRONG>早过时了</STRONG></FONT>；<BR>6 解决编码问题的方法就是尽量统一到Java系统的编码上；<BR>7 只有国际化才能彻底解决中文化的问题。尽量不要强行转码，如果每一个字符都转码，效率如何不用说了吧？<BR>8 学会使用Local<BR><BR>好了，先说这么多。<BR><BR><A href="http://www.blogjava.net/Files/SteelHand/StrutsInAction_Chinese(13).rar">下载这一章</A>。<img src ="http://www.blogjava.net/SteelHand/aggbug/9199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-08-04 14:01 <a href="http://www.blogjava.net/SteelHand/archive/2005/08/04/9199.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Struts in Action》中文修订版 第12章</title><link>http://www.blogjava.net/SteelHand/archive/2005/08/02/8985.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Tue, 02 Aug 2005 01:39:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/08/02/8985.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/8985.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/08/02/8985.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/8985.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/8985.html</trackback:ping><description><![CDATA[<P>据Struts声称， Validator是从Struts0.5就开始使用了。从Struts1.1开始，Validator就成为Jarkarta Commons的一个组件。从而成为一个非常有用的通用工具。<BR>关于Commons Validator的地址，可以访问：<A href="http://jakarta.apache.org/commons/validator/">http://jakarta.apache.org/commons/validator/</A>&nbsp; 。Struts发行包中带有这个包，也可以单独在此处进行下载。<BR><BR>Validator应用的Struts官方指南参见：<A href="http://struts.apache.org/userGuide/dev_validator.html">http://struts.apache.org/userGuide/dev_validator.html</A>&nbsp;其中也有几个相关资源。</P>
<UL>使用中要注意的有几点：<BR><BR>
<LI>注意DynaValidator的使用与常规ActionForm的校验</LI>
<LI>注意mapping中validate的配置</LI>
<LI>注意action中validate方法与validator的关系</LI></UL>
<P>Validator是一个同用框架，你可以使用在很多地方，包括最近流行的Spring 之中。<BR><BR><A href="http://www.blogjava.net/Files/SteelHand/StrutsInAction_Chinese(12).rar">本章下载</A>。<BR></P>
<P></P><img src ="http://www.blogjava.net/SteelHand/aggbug/8985.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-08-02 09:39 <a href="http://www.blogjava.net/SteelHand/archive/2005/08/02/8985.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>liferay Portal 3.5 </title><link>http://www.blogjava.net/SteelHand/archive/2005/08/01/8889.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Mon, 01 Aug 2005 01:54:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/08/01/8889.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/8889.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/08/01/8889.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/8889.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/8889.html</trackback:ping><description><![CDATA[<P>Liferay Portal 3.5发布了。仍然是Pro版和Enterprise版。<BR>比上一版本相比，增加了几个显著的特色是：</P>
<UL>
<LI>支持JSF,Myface的Portlet 
<LI>对Portlet URL进行了优化 
<LI>动态热部署的theme<BR></LI></UL>
<P>其实我最喜欢的是他能够内建一个WorkFlow引擎，这样就非常完美了。<BR>它的Pro版从3.0开始就该成Struts + Spring的架构，企业版中似乎也紧紧是使用了Session Bean作为Facede.那么在Pro版本中Spring 是如何使用的，倒要仔细研究。J2EE官方模式已近在提 POJO Facede的概念了（见J2EE Core Pattern, 2nd Ed.）。这里是否就是这种用法。因为，其后端业务部分几乎不用修改的。<BR><BR>这是其登录后的主页面：<BR><BR><IMG height=675 alt=liferayhome.jpg src="http://www.blogjava.net/images/blogjava_net/steelhand/liferayhome.jpg" width=776 border=0><BR><BR>我没注意到，页面上部右边有个下拉列表框，支持多个工作区的选择，这是否是上一个版本就有的功能。这个倒是非常不错。<BR>它的CMS做得基础还可以，但是做得不是很友好。需要比较麻烦的定义。如果支持分类学（<A href="http://drupal.org/project/taxonomy_access">Taxonomy</A>）<BR>就好了。一种以为，CMS不支持MetaDate和Taxnomy根本算不上content Management。这点，还不如PHP的<A href="http://www.drupal.org">Drupal</A>做得好。最近SpringFramework网站的改版就是使用了Drupal框架。我觉得，就PHP阵营来说，Drupal比<A href="http://www.mamboportal.com">Mambo</A>还要好些。不过后者似乎运作的很好，连国内也有很多FANS。<BR><BR>他的HOT THEME的功能，发行包中带了四个Theme，Liferay网站上一个很COOL的并没有随之发行，需要另外下载。而且原来的很多配色方案，也只有几种了。<BR><BR>另外就是，原来支持认为他的i18n中中文做得不好，有很多奇怪的翻译，而据说他们的核心团队还有中国人的。这次我选择中文Local，居然没反应，仍然是英文界面。不是是何原因？我使用的是Pro版本，不知Ent是否有此问题。<BR><BR>这是一个theme：<BR><IMG height=616 alt=liferaytheme.jpg src="http://www.blogjava.net/images/blogjava_net/steelhand/liferaytheme.jpg" width=1082 border=0></P><img src ="http://www.blogjava.net/SteelHand/aggbug/8889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-08-01 09:54 <a href="http://www.blogjava.net/SteelHand/archive/2005/08/01/8889.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Struts in Action》中文修订版 第11章</title><link>http://www.blogjava.net/SteelHand/archive/2005/07/29/8718.html</link><dc:creator>铁手</dc:creator><author>铁手</author><pubDate>Fri, 29 Jul 2005 02:30:00 GMT</pubDate><guid>http://www.blogjava.net/SteelHand/archive/2005/07/29/8718.html</guid><wfw:comment>http://www.blogjava.net/SteelHand/comments/8718.html</wfw:comment><comments>http://www.blogjava.net/SteelHand/archive/2005/07/29/8718.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/SteelHand/comments/commentRss/8718.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SteelHand/services/trackbacks/8718.html</trackback:ping><description><![CDATA[<P>我一直认为tiles应该从Struts中独立出来，成为一个单独的项目。至少也应该放入Commons之中。不过，到Struts1.2版本中仍然没有动静。Shale对此也没有明确的说法。<BR><BR>两大主要的布局工具，相比而言，我还是觉得Tiles要好用一些，而且方式优雅。对此，Struts分发包所带的例子tiles-Document就是一个非常有用的学习例子。（很多人来消息说，想要通过例子学习Struts，那么朋友，你可曾研究过Struts的自带例子？如果没有，那就好好看一看吧。关于Struts中的示例程序，大家可以参考我前面所写的“Struts秘籍”中的一篇。）。Tiles不仅是对布局，而且本身还自带对菜单的支持。而且，著名的开源门户项目 <A href="www.liferay.com">liferay&nbsp; </A>就是使用的Tiles作为布局工具，实现了portlet的表现，甚是了得。（另一个很好的portal <A href="http://www.exoplatform.org">ExoPlatform</A>则是使用了JSF。）<BR>当然，<A href="http://www.opensymphony.com/sitemesh/">Sitemesh</A>也非常不错，而且由于使用了装饰器模式和Servlet Filter，灵活性更高。你可以用它做你爱做的事情，做你想做的事情。不过，似乎因为Sitemesh是<!--StartFragment --><A href="www.opensymphony.com"> <FONT size=-1><FONT color=#008000>opensymphony</FONT></FONT> </A>的项目，好像大家就以为它只能与<A href="http://www.opensymphony.com/webwork">WebWork</A>配对使用，或者心存这种假设。其实不然，呵呵，这种假设不成立。它们两个都是中立的。完全可以根据你的需要选择使用。SiteMesh也完全可以用于Struts项目。<BR>还有一个项目是<A href="http://struts.application-servers.com"><A title="" href="http://struts.apache.org"><A title="" href="http://struts.apache.org"><A title="" href="http://struts.apache.org"><a title="" href="http://struts.apache.org" >Struts</a></A></A></A>-Layout,</A>这个项目则主要偏重于细微的表现，比如树型，面板之类的。较少用于总体布局。不过这些对JSF来说都是小Case了。<BR><BR>IBM WSAD本身支持一种模板的布局处理方式，大家可以参考。它实际上是一套可以由IDE管理的代码复制和重用机制。对整体布局和网站基础，比如导航、菜单、面包屑、SiteMap等支持也非常不错。大家也可以研究一下。<BR><BR>开发工具来说，最好的Struts开发工具还是<A href="http://www.m7.com">M7</A>的Nitrox，对Tiles的支持也非常之棒。可惜不是免费的。也鲜见破解版本。另外就是<A href="http://www.exadel.com">Exadel Studio</A>，也非常不错，这方面好像是在学习M7。而且它前些时候刚推出免费版本。<BR>当然，各个商业IDE还是对其支持的不错。<BR><BR>这一章感觉并为把Tiles讲解够深。至于Tiles的高级应用，在Tiles-Document示例应用中，可以找到一个相关的链接。<BR><A href="http://www.blogjava.net/Files/SteelHand/StrutsInAction_Chinese(11).rar"><BR>在这里下载</A>这一章。</P><img src ="http://www.blogjava.net/SteelHand/aggbug/8718.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SteelHand/" target="_blank">铁手</a> 2005-07-29 10:30 <a href="http://www.blogjava.net/SteelHand/archive/2005/07/29/8718.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>