﻿<?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-Android-jwebee</title><link>http://www.blogjava.net/zhouxing/</link><description>对IT人来说，要成为一个优秀的技术型管理者，除了需要具备扎实的技术基础之外，还应该培养良好的人际关系能力、谈判与沟通技能、客户关系与咨询技能、商业头脑和财务技能以及创新意识，此外还要有巧妙的激励技巧和化解冲突与解决突发问题的能力.</description><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2026 13:04:03 GMT</lastBuildDate><pubDate>Thu, 30 Apr 2026 13:04:03 GMT</pubDate><ttl>60</ttl><item><title>(6)ViewGroup-Android示例大全教学视频 </title><link>http://www.blogjava.net/zhouxing/archive/2011/01/19/343233.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Wed, 19 Jan 2011 09:57:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2011/01/19/343233.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/343233.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2011/01/19/343233.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/343233.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/343233.html</trackback:ping><description><![CDATA[<embed src="http://player.56.com/v_56499606.swf"  type="application/x-shockwave-flash" width="480" height="395"></embed><img src ="http://www.blogjava.net/zhouxing/aggbug/343233.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2011-01-19 17:57 <a href="http://www.blogjava.net/zhouxing/archive/2011/01/19/343233.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(5)View-Android示例大全教学视频</title><link>http://www.blogjava.net/zhouxing/archive/2011/01/19/343232.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Wed, 19 Jan 2011 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2011/01/19/343232.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/343232.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2011/01/19/343232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/343232.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/343232.html</trackback:ping><description><![CDATA[<embed src="http://player.56.com/v_56498904.swf"  type="application/x-shockwave-flash" width="480" height="395"></embed><img src ="http://www.blogjava.net/zhouxing/aggbug/343232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2011-01-19 17:56 <a href="http://www.blogjava.net/zhouxing/archive/2011/01/19/343232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(3)Android应用程序基础-Android示例大全教学视频</title><link>http://www.blogjava.net/zhouxing/archive/2011/01/19/343230.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Wed, 19 Jan 2011 09:55:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2011/01/19/343230.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/343230.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2011/01/19/343230.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/343230.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/343230.html</trackback:ping><description><![CDATA[<embed src="http://player.56.com/v_56543375.swf"  type="application/x-shockwave-flash" width="480" height="395"></embed><img src ="http://www.blogjava.net/zhouxing/aggbug/343230.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2011-01-19 17:55 <a href="http://www.blogjava.net/zhouxing/archive/2011/01/19/343230.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(4)Activity-Android示例大全教学视频</title><link>http://www.blogjava.net/zhouxing/archive/2011/01/19/343231.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Wed, 19 Jan 2011 09:55:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2011/01/19/343231.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/343231.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2011/01/19/343231.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/343231.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/343231.html</trackback:ping><description><![CDATA[<embed src="http://player.56.com/v_56433062.swf"  type="application/x-shockwave-flash" width="480" height="395"></embed><img src ="http://www.blogjava.net/zhouxing/aggbug/343231.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2011-01-19 17:55 <a href="http://www.blogjava.net/zhouxing/archive/2011/01/19/343231.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(2)Android开发环境-Android示例大全教学视频</title><link>http://www.blogjava.net/zhouxing/archive/2011/01/19/343229.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Wed, 19 Jan 2011 09:54:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2011/01/19/343229.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/343229.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2011/01/19/343229.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/343229.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/343229.html</trackback:ping><description><![CDATA[<embed src="http://player.56.com/v_56543135.swf"  type="application/x-shockwave-flash" width="480" height="395"></embed><img src ="http://www.blogjava.net/zhouxing/aggbug/343229.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2011-01-19 17:54 <a href="http://www.blogjava.net/zhouxing/archive/2011/01/19/343229.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(1)Android介绍-Android示例大全教学视频</title><link>http://www.blogjava.net/zhouxing/archive/2011/01/19/343228.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Wed, 19 Jan 2011 09:53:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2011/01/19/343228.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/343228.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2011/01/19/343228.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/343228.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/343228.html</trackback:ping><description><![CDATA[<embed src="http://player.56.com/v_56542753.swf"  type="application/x-shockwave-flash" width="480" height="395"></embed><img src ="http://www.blogjava.net/zhouxing/aggbug/343228.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2011-01-19 17:53 <a href="http://www.blogjava.net/zhouxing/archive/2011/01/19/343228.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsf-Managed Beans -Beans 上的 List、Map </title><link>http://www.blogjava.net/zhouxing/archive/2008/05/26/BeanWithListMap.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Mon, 26 May 2008 04:39:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/05/26/BeanWithListMap.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/202880.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/05/26/BeanWithListMap.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/202880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/202880.html</trackback:ping><description><![CDATA[<div id="wikitext">如果您的Bean上有接受List或Map型態的屬性，則您也可以在組態檔案中直接設定這些屬性的值，一個例子如下：<br />
<pre> <br />
....<br />
&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;someBean&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
onlyfun.caterpillar.SomeBean<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
<br />
&lt;managed-property&gt;<br />
&lt;property-name&gt;someProperty&lt;/property-name&gt;<br />
&lt;list-entries&gt;<br />
&lt;value-class&gt;java.lang.Integer&lt;/value-class&gt;<br />
&lt;value&gt;1&lt;/value&gt;<br />
&lt;value&gt;2&lt;/value&gt;<br />
&lt;value&gt;3&lt;/value&gt;<br />
&lt;/list-entries&gt;<br />
&lt;/managed-property&gt;<br />
&lt;/managed-bean&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
這是一個設定接受List型態的屬性，我們使用&lt;list-entries&gt;標籤指定將設定一個List物件，其中&lt;value-class&gt;指定將存入List的型態，而&lt;value&gt;指定其值，如果是基本型態，則會嘗試使用指定的 &lt;value-class&gt;來作Wrapper類別。<br />
<p>&nbsp;</p>
設定Map的話，則是使用&lt;map-entries&gt;標籤，例如：<br />
<pre> <br />
....<br />
&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;someBean&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
onlyfun.caterpillar.SomeBean<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
<br />
&lt;managed-property&gt;<br />
&lt;property-name&gt;someProperty&lt;/property-name&gt;<br />
&lt;map-entries&gt;<br />
&lt;value-class&gt;java.lang.Integer&lt;/value-class&gt;<br />
&lt;map-entry&gt;<br />
&lt;key&gt;someKey1&lt;/key&gt;<br />
&lt;value&gt;100&lt;/value&gt;<br />
&lt;/map-entry&gt;<br />
&lt;map-entry&gt;<br />
&lt;key&gt;someKey2&lt;/key&gt;<br />
&lt;value&gt;200&lt;/value&gt;<br />
&lt;/map-entry&gt;<br />
&lt;/map-entries&gt;<br />
&lt;/managed-property&gt;<br />
&lt;/managed-bean&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
由於Map物件是以key-value對的方式來存入，所以我們在每一個&lt;map-entry&gt;中使用&lt;key&gt;與&lt; value&gt;標籤來分別指定。<br />
<p>&nbsp;</p>
您也可以直接像設定Bean一樣，設定一個List或Map物件，例如在JSF附的範例中，有這樣的設定：<br />
<pre> <br />
....<br />
&lt;managed-bean&gt;<br />
&lt;description&gt;<br />
Special expense item types<br />
&lt;/description&gt;<br />
&lt;managed-bean-name&gt;specialTypes&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
java.util.TreeMap<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;application&lt;/managed-bean-scope&gt;<br />
&lt;map-entries&gt;<br />
&lt;value-class&gt;java.lang.Integer&lt;/value-class&gt;<br />
&lt;map-entry&gt;<br />
&lt;key&gt;Presentation Material&lt;/key&gt;<br />
&lt;value&gt;100&lt;/value&gt;<br />
&lt;/map-entry&gt;<br />
&lt;map-entry&gt;<br />
&lt;key&gt;Software&lt;/key&gt;<br />
&lt;value&gt;101&lt;/value&gt;<br />
&lt;/map-entry&gt;<br />
&lt;map-entry&gt;<br />
&lt;key&gt;Balloons&lt;/key&gt;<br />
&lt;value&gt;102&lt;/value&gt;<br />
&lt;/map-entry&gt;<br />
&lt;/map-entries&gt;<br />
&lt;/managed-bean&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
而範例中另一個設定List的例子如下：<br />
<pre> <br />
....<br />
&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;statusStrings&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
java.util.ArrayList<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;request&lt;/managed-bean-scope&gt;<br />
&lt;list-entries&gt;<br />
&lt;null-value/&gt;<br />
&lt;value&gt;Open&lt;/value&gt;<br />
&lt;value&gt;Submitted&lt;/value&gt;<br />
&lt;value&gt;Accepted&lt;/value&gt;<br />
&lt;value&gt;Rejected&lt;/value&gt;<br />
&lt;/list-entries&gt;<br />
&lt;/managed-bean&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
</div>
<div id="printfoot"><br />
</div><img src ="http://www.blogjava.net/zhouxing/aggbug/202880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-26 12:39 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/26/BeanWithListMap.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsf-Managed Beans-Beans 的組態與設定 </title><link>http://www.blogjava.net/zhouxing/archive/2008/05/26/ConfigBeans.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Mon, 26 May 2008 04:37:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/05/26/ConfigBeans.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/202879.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/05/26/ConfigBeans.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/202879.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/202879.html</trackback:ping><description><![CDATA[JSF預設會讀取faces-config.xml中關於Bean的定義，如果想要自行設置定義檔的名稱，我們是在web.xml中提供javax.faces.CONFIG_FILES參數，例如：<br />
<pre> <br />
&lt;web-app&gt;<br />
&lt;context-param&gt;<br />
&lt;param-name&gt;javax.faces.CONFIG_FILES&lt;/param-name&gt;<br />
&lt;param-value&gt;/WEB-INF/beans.xml&lt;/param-value&gt;<br />
&lt;/context-param&gt;<br />
<br />
...<br />
&lt;/web-app&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
定義檔可以有多個，中間以 "," 區隔，例如：<br />
<pre> <br />
/WEB-INF/navigation.xml,/WEB-INF/beans.xml<br />
<br />
</pre>
<p>&nbsp;</p>
一個Bean最基本要定義Bean的名稱、類別與存活範圍，例如：<br />
<pre> <br />
....<br />
&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;user&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
onlyfun.caterpillar.UserBean<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
&lt;/managed-bean&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
如果要在其它類別中取得Bean物件，則可以先取得javax.faces.context.FacesContext，它代表了JSF目前的執行環境物件，接著嘗試取得javax.faces.el.ValueBinding物件，從中取得指定的Bean物件，例如：<br />
<pre> <br />
FacesContext context = FacesContext.getCurrentInstance();<br />
ValueBinding binding = <br />
context.getApplication().createValueBinding("#{user}");<br />
UserBean user = (UserBean) binding.getValue(context); <br />
<br />
</pre>
<p>&nbsp;</p>
如果只是要嘗試取得Bean的某個屬性，則可以如下：<br />
<pre> <br />
FacesContext context = FacesContext.getCurrentInstance();<br />
ValueBinding binding = <br />
context.getApplication().createValueBinding(<br />
"#{user.name}");<br />
String name = (String) binding.getValue(context);<br />
<br />
</pre>
<p>&nbsp;</p>
如果有必要在啟始Bean時，自動設置屬性的初始值，則可以如下設定：<br />
<pre> <br />
....<br />
&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;user&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
onlyfun.caterpillar.UserBean<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
&lt;managed-property&gt;<br />
&lt;property-name&gt;name&lt;/property-name&gt;<br />
&lt;value&gt;caterpillar&lt;/value&gt;<br />
&lt;/managed-property&gt;<br />
&lt;managed-property&gt;<br />
&lt;property-name&gt;password&lt;/property-name&gt;<br />
&lt;value&gt;123456&lt;/value&gt;<br />
&lt;/managed-property&gt;<br />
&lt;/managed-bean&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
如果要設定屬性為 null 值，則可以使用&lt;null-value/&gt;標籤，例如：<br />
<pre> <br />
....<br />
&lt;managed-property&gt;<br />
&lt;property-name&gt;name&lt;/property-name&gt;<br />
&lt;null-value/&gt;<br />
&lt;/managed-property&gt;<br />
&lt;managed-property&gt;<br />
&lt;property-name&gt;password&lt;/property-name&gt;<br />
&lt;null-value/&gt;<br />
&lt;/managed-property&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
當然，您的屬性不一定是字串值，也許會是int、float、boolean等等型態，您可以設定&lt;value&gt; 值時指定這些值的字串名稱，JSF會嘗試進行轉換，例如設定為true時，會嘗試使用Boolean.valueOf()方法轉換為boolean的 true，以下是一些可能進行的轉換：<br />
<p>&nbsp;</p>
<table width="100%" border="1">
    <tbody>
        <tr>
            <td valign="top" align="left">型態 </td>
            <td valign="top" align="left">轉換 </td>
        </tr>
        <tr>
            <td valign="top" align="left">short、int、long、float、double、byte，或相應的Wrapper類別 </td>
            <td valign="top" align="left">嘗試使用Wrapper的valueOf()進行轉換，如果沒有設置，則設為 0 </td>
        </tr>
        <tr>
            <td valign="top" align="left">boolean 或 Boolean </td>
            <td valign="top" align="left">嘗試使用Boolean.valueOf()進行轉換，如果沒有設置，則設為 false </td>
        </tr>
        <tr>
            <td valign="top" align="left">char 或 Character </td>
            <td valign="top" align="left">取設置的第一個字元，如果沒有設置，則設為0 </td>
        </tr>
        <tr>
            <td valign="top" align="left">String 或 Object </td>
            <td valign="top" align="left">即設定的字串值，如果沒有設定，則為空字串new String("") </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
您也可以將其它產生的Bean設定給另一個Bean的屬性，例如：<br />
<pre> <br />
....<br />
&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;user&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
onlyfun.caterpillar.UserBean<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
&lt;/managed-bean&gt;<br />
<br />
&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;other&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
onlyfun.caterpillar.OtherBean<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
&lt;managed-property&gt;<br />
&lt;property-name&gt;user&lt;/property-name&gt;<br />
&lt;value&gt;#{user}&lt;/value&gt;<br />
&lt;/managed-property&gt;<br />
&lt;/managed-bean&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
在上面的設定中，在OtherBean中的user屬性，接受一個UserBean型態的物件，我們設定為前一個名稱為user的UserBean物件。<br /><img src ="http://www.blogjava.net/zhouxing/aggbug/202879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-26 12:37 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/26/ConfigBeans.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsf-Managed Beans-Backing Beans </title><link>http://www.blogjava.net/zhouxing/archive/2008/05/26/BackingBeans.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Mon, 26 May 2008 04:36:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/05/26/BackingBeans.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/202878.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/05/26/BackingBeans.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/202878.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/202878.html</trackback:ping><description><![CDATA[<div id="wikitext">JSF使用 <a class="wikilink" href="http://caterpillar.onlyfun.net/PmWiki/pmwiki.php/JSPServlet/JavaBeanABC">JavaBean</a> 來達到程式邏輯與視圖分離的目的，在JSF中的Bean其角色是屬於Backing Bean，又稱之為Glue Bean，其作用是在真正的業務邏輯Bean及UI元件之間搭起橋樑，在Backing Bean中會呼叫業務邏輯Bean處理使用者的請求，或者是將業務處理結果放置其中，等待UI元件取出當中的值並顯示結果給使用者。<br />
<p>&nbsp;</p>
JSF將Bean的管理集中在faces-config.xml中，一個例子如下：<br />
<pre> <br />
....<br />
&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;user&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
onlyfun.caterpillar.UserBean<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
&lt;/managed-bean&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
這個例子我們在 <a class="wikilink" href="http://www.1cn.biz/docs/LanguageTech/JavaServerFaces/FirstJSF.htm">第一個JSF程式</a> 看過，&lt;managed-bean-class&gt;設定所要使用的Bean類別，&lt;managed-bean-name&gt;設定之名稱，可供我們在JSF頁面上使用Expression Language來取得或設定Bean的屬性，例如：<br />
<pre> <br />
&lt;h:inputText value="#{user.name}"/&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
&lt;managed-bean-scope&gt;設定Bean的存活範圍，您可以設定為request、session 與application，設定為request時，Bean的存活時間為請求階最，設定為session則在使用者應用程式交互開始，直到關閉瀏覽器或顯式的結束會話為止（例如登出程式），設定為application的話，則Bean會一直存活，直到應用程式關閉為止。<br />
<p>&nbsp;</p>
您還可以將存活範圍設定為none，當設定為none時會在需要的時候生成一個新的Bean，例如您在一個method中想要生成一個臨時的Bean，就可以將之設定為none。<br />
<p>&nbsp;</p>
在JSF頁面上要取得Bean的屬性，是使用 <a class="wikilink" href="http://www.1cn.biz/docs/LanguageTech/JavaServerFaces/JSFExpressionLanguage.htm">JSF表示語言（Expression Language）</a>，要注意到的是，JSF表示語言是寫成 #{expression}，而 <a class="wikilink" href="http://caterpillar.onlyfun.net/PmWiki/pmwiki.php/JSPServlet/ExpressioLanguage">JSP 表示語言</a> 是寫成 ${expression}，因為表示層可能是使用JSP，所以必須特別區分，另外要注意的是，JSF的標籤上之屬性設定時，只接受JSF表示語言。<br />
<p>&nbsp;</p>
</div>
<div id="printfoot"><br />
</div><img src ="http://www.blogjava.net/zhouxing/aggbug/202878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-26 12:36 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/26/BackingBeans.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsf-國際化訊息 </title><link>http://www.blogjava.net/zhouxing/archive/2008/05/22/I18NMessages.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Thu, 22 May 2008 04:39:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/05/22/I18NMessages.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/202138.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/05/22/I18NMessages.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/202138.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/202138.html</trackback:ping><description><![CDATA[<div id="wikitext">JSF的國際化（Internnationalization）訊息處理是基於Java對國際化的支援，您可以在一個訊息資源檔中統一管理訊息資源，資源檔的名稱是.properties，而內容是名稱與值的配對，例如：<br />
<ul>
    <li>messages.properties </li>
</ul>
<pre> <br />
titleText=JSF Demo<br />
hintText=Please input your name and password<br />
nameText=name<br />
passText=password<br />
commandText=Submit<br />
<br />
</pre>
<p>&nbsp;</p>
資源檔名稱由basename加上語言與地區來組成，例如：<br />
<ul>
    <li>basename.properties
    <li>basename_en.properties
    <li>basename_zh_TW.properties </li>
</ul>
<p>&nbsp;</p>
沒有指定語言與地區的basename是預設的資源檔名稱，JSF會根據瀏覽器送來的Accept-Language header中的內容來決定該使用哪一個資源檔名稱，例如：<br />
<p>&nbsp;</p>
<em><strong>Accept-Language: zh_TW, en-US, en</strong></em><br />
<p>&nbsp;</p>
如果瀏覽器送來這些header，則預設會使用繁體中文，接著是美式英文，再來是英文語系，如果找不到對應的訊息資源檔，則會使用預設的訊息資源檔。<br />
<p>&nbsp;</p>
由於訊息資源檔必須是ISO-8859-1編碼，所以對於非西方語系的處理，必須先將之轉換為Java Unicode Escape格式，例如您可以先在訊息資源檔中寫下以下的內容：<br />
<ul>
    <li>messages_zh_TW.txt </li>
</ul>
<pre> <br />
titleText=JSF示範<br />
hintText=請輸入名稱與密碼<br />
nameText=名稱<br />
passText=密碼<br />
commandText=送出<br />
<br />
</pre>
<p>&nbsp;</p>
然後使用JDK的工具程式native2ascii來轉換，例如：<br />
<p>&nbsp;</p>
<em><strong>native2ascii -encoding Big5 messages_zh_TW.txt messages_zh_TW.properties</strong></em><br />
<p>&nbsp;</p>
轉換後的內容會如下：<br />
<ul>
    <li>messages_zh_TW.properties </li>
</ul>
<pre> <br />
titleText=JSF\u793a\u7bc4<br />
hintText=\u8acb\u8f38\u5165\u540d\u7a31\u8207\u5bc6\u78bc<br />
nameText=\u540d\u7a31<br />
passText=\u5bc6\u78bc<br />
commandText=\u9001\u51fa<br />
<br />
</pre>
<p>&nbsp;</p>
接下來您可以使用&lt;f:loadBundle&gt;標籤來指定載入訊息資源，一個例子如下：<br />
<ul>
    <li>index.jsp </li>
</ul>
<pre> <br />
&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;<br />
&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;<br />
&lt;%@page contentType="text/html;charset=UTF-8"%&gt;<br />
<br />
&lt;f:view&gt;<br />
&lt;f:loadBundle basename="messages" var="msgs"/&gt;<br />
<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;&lt;h:outputText value="#{msgs.titleText}"/&gt;&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
<br />
&lt;h:form&gt;<br />
&lt;h3&gt;&lt;h:outputText value="#{msgs.hintText}"/&gt;&lt;/h3&gt;<br />
&lt;h:outputText value="#{msgs.nameText}"/&gt;:<br />
&lt;h:inputText value="#{user.name}"/&gt;&lt;p&gt;<br />
&lt;h:outputText value="#{msgs.passText}"/&gt;: <br />
&lt;h:inputSecret value="#{user.password}"/&gt;&lt;p&gt; <br />
&lt;h:commandButton value="#{msgs.commandText}" <br />
actionListener="#{user.verify}"<br />
action="#{user.outcome}"/&gt;<br />
&lt;/h:form&gt;<br />
<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
&lt;/f:view&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
如此一來，如果您的瀏覽器預設接受zh_TW語系的話，則頁面上就可以顯示中文，否則預設將以英文顯示，也就是messages.properties的內容，為了能顯示多國語系，我們設定網頁編碼為UTF8。<br />
<p>&nbsp;</p>
&lt;f:view&gt;可以設定locale屬性，直接指定所要使用的語系，例如：<br />
<pre> <br />
&lt;f:view locale="zh_TW"&gt;<br />
&lt;f:loadBundle basename="messages" var="msgs"/&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
直接指定以上的話，則會使用繁體中文來顯示，JSF會根據&lt;f:loadBundle&gt;的basename屬性加上&lt;f:view&gt;的locale屬性來決定要使用哪一個訊息資源檔，就上例而言，就是使用 messages_zh_TW.properties，如果設定為以下的話，就會使用messages_en.properties：<br />
<pre> <br />
&lt;f:view locale="en"&gt;<br />
&lt;f:loadBundle basename="messages" var="msgs"/&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
您也可以在faces-config.xml中設定語系，例如：<br />
<pre> <br />
&lt;faces-config&gt;<br />
&lt;application&gt;<br />
&lt;local-config&gt;<br />
&lt;default-locale&gt;en&lt;/default-locale&gt;<br />
&lt;supported-locale&gt;zh_TW&lt;/supported-locale&gt;<br />
&lt;/local-config&gt;<br />
&lt;/application&gt;<br />
<br />
.....<br />
&lt;/faces-config&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
在&lt;local-config&gt;一定有一個&lt;default-locale&gt;，而&lt;supported- locale&gt;可以有好幾個，這告訴JSF您的應用程式支援哪些語系。<br />
<p>&nbsp;</p>
當然，如果您可以提供一個選項讓使用者選擇自己的語系會是更好的方式，例如根據user這個Bean的locale屬性來決定頁面語系：<br />
<pre> <br />
&lt;f:view locale="#{user.locale}"&gt;<br />
&lt;f:loadBundle basename="messages" var="msgs"/&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
在頁面中設定一個表單，可以讓使用者選擇語系，例如設定單選鈕：<br />
<pre> <br />
&lt;h:selectOneRadio value="#{user.locale}"&gt;<br />
&lt;f:selectItem itemValue="zh_TW" <br />
itemLabel="#{msgs.zh_TWText}"/&gt;<br />
&lt;f:selectItem itemValue="en" <br />
itemLabel="#{msgs.enText}"/&gt;<br />
&lt;/h:selectOneRadio&gt;<br />
<br />
</pre>
</div><img src ="http://www.blogjava.net/zhouxing/aggbug/202138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:39 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/I18NMessages.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF Expression Language </title><link>http://www.blogjava.net/zhouxing/archive/2008/05/22/JSFExpressionLanguage.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Thu, 22 May 2008 04:38:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/05/22/JSFExpressionLanguage.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/202137.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/05/22/JSFExpressionLanguage.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/202137.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/202137.html</trackback:ping><description><![CDATA[<div id="wikitext">JSF Expression Language 搭配 JSF 標籤來使用，是用來存取資料物件的一個簡易語言。<br />
<p>&nbsp;</p>
JSF EL是以#開始，將變數或運算式放置在 { 與 } 之間，例如：<br />
<pre> <br />
#{someBeanName}<br />
<br />
</pre>
<p>&nbsp;</p>
變數名稱可以是faces-config.xml中定義的名稱，如果是Bean的話，可以透過使用 '.' 運算子來存取它的屬性，例如：<br />
<pre> <br />
...<br />
&lt;f:view&gt;<br />
&lt;h:outputText value="#{userBean.name}"/&gt;<br />
&lt;/f:view&gt;<br />
...<br />
<br />
</pre>
<p>&nbsp;</p>
在JSF標籤的屬性上，" 與 " （或'與'）之間如果含有EL，則會加以運算，您也可以這麼使用它：<br />
<pre> <br />
...<br />
&lt;f:view&gt;<br />
名稱, 年齡：&lt;h:outputText <br />
value="#{userBean.name}, #{userBean.age}"/&gt;<br />
&lt;/f:view&gt;<br />
...<br />
<br />
</pre>
<p>&nbsp;</p>
一個執行的結果可能是這樣顯示的：<br />
<pre> <br />
名稱, 年齡：Justin, 29<br />
<br />
</pre>
<p>&nbsp;</p>
EL的變數名也可以程式執行過程中所宣告的名稱，或是JSF EL預設的隱含物件，例如下面的程式使用param隱含物件來取得使用者輸入的參數：<br />
<pre> <br />
&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;<br />
&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;<br />
&lt;%@page contentType="text/html; charset=Big5"%&gt;<br />
<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;f:view&gt;<br />
&lt;b&gt; 您好, &lt;h:outputText value="#{param.name}"/&gt; &lt;/b&gt;<br />
&lt;/f:view&gt;<br />
<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
param是JSF EL預設的隱含物件變數，它代表request所有參數的集合，實際是一個java.util.Map型態物件，JSF所提供的隱含物件，大致上對應於 <a class="wikilink" href="http://caterpillar.onlyfun.net/PmWiki/pmwiki.php/JSPServlet/ELImplicitObject">JSP 隱含物件</a>，不過JSF隱含物件移除了pageScope與pageContext，而增加了facesContext與view，它們分別對應於 javax.faces.context.FacesContext與javax.faces.component.UIViewRoot。<br />
<p>&nbsp;</p>
對於Map型態物件，我們可以使用 '.' 運算子指定key值來取出對應的value，也可以使用 [ 與 ] 來指定，例如：<br />
<pre> <br />
...<br />
&lt;f:view&gt;<br />
&lt;b&gt; 您好, &lt;h:outputText value="#{param['name']}"/&gt; &lt;/b&gt;<br />
&lt;/f:view&gt;<br />
...<br />
<br />
</pre>
<p>&nbsp;</p>
在 [ 與 ] 之間，也可以放置其它的變數值，例如：<br />
<pre> <br />
...<br />
&lt;f:view&gt;<br />
&lt;h:outputText value="#{someBean.someMap[user.name]}"/&gt; <br />
&lt;/f:view&gt;<br />
...<br />
<br />
</pre>
<p>&nbsp;</p>
如果變數是List型態或陣列的話，則可以在 [] 中指定索引，例如：<br />
<pre> <br />
....<br />
&lt;f:view&gt;<br />
&lt;h:outputText value="#{someBean.someList[0]}"/&gt; <br />
&lt;h:outputText value="#{someBean.someArray[1]}"/&gt;<br />
&lt;h:outputText<br />
value="#{someBean.someListOrArray[user.age]}"/&gt;  <br />
&lt;/f:view&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
您也可以指定字面常數，對於true、false、字串、數字，JSF EL會嘗試進行轉換，例如：<br />
<pre> <br />
....<br />
&lt;h:outputText value="#{true}"/&gt;<br />
....<br />
<br />
&lt;h:outputText value="#{'This is a test'}"/&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
如果要輸出字串，必須以單引號 ' 或雙引數 " 括住，如此才不會被認為是變數名稱。<br />
<p>&nbsp;</p>
在宣告變數名稱時，要留意不可與JSF的保留字或關鍵字同名，例如不可取以下這些名稱：<br />
<pre> <br />
true false null div mod and or not eq ne lt gt le ge instanceof empty<br />
<br />
</pre>
<p>&nbsp;</p>
使用EL，您可以直接實行一些算術運算、邏輯運算與關係運算，其使用就如同在一般常見的程式語言中之運算。 <br />
<p>&nbsp;</p>
算術運算子有：加法 (+), 減法 (-), 乘法 (*), 除法 (/ or div) 與餘除 (% or mod) 。下面是算術運算的一些例子： <br />
<table width="50%" border="1">
    <tbody>
        <tr>
            <td valign="top" align="left">運算式 </td>
            <td valign="top" align="left">結果 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1} </td>
            <td valign="top" align="left">1 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1 + 2} </td>
            <td valign="top" align="left">3 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1.2 + 2.3} </td>
            <td valign="top" align="left">3.5 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1.2E4 + 1.4} </td>
            <td valign="top" align="left">12001.4 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{-4 - 2} </td>
            <td valign="top" align="left">-6 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{21 * 2} </td>
            <td valign="top" align="left">42 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{3/4} </td>
            <td valign="top" align="left">0.75 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{3 div 4} </td>
            <td valign="top" align="left">0.75，除法 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{3/0} </td>
            <td valign="top" align="left">Infinity </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{10%4} </td>
            <td valign="top" align="left">2 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{10 mod 4} </td>
            <td valign="top" align="left">2，也是餘除 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{(1==2) ? 3 : 4} </td>
            <td valign="top" align="left">4 </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
如同在Java語法一樣 ( expression ? result1 : result2）是個三元運算，expression為true顯示result1，false顯示result2。 <br />
<p>&nbsp;</p>
邏輯運算有：and(或&amp;&amp;)、or(或!!)、not(或!)。一些例子為： <br />
<table width="50%" border="1">
    <tbody>
        <tr>
            <td valign="top" align="left">運算式 </td>
            <td valign="top" align="left">結果 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{true and false} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{true or false} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{not true} </td>
            <td valign="top" align="left">false </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
關係運算有：小於Less-than (&lt; or lt)、大於Greater-than (&gt; or gt)、小於或等於Less-than-or-equal (&lt;= or le)、大於或等於Greater-than-or-equal (&gt;= or ge)、等於Equal (== or eq)、不等於Not Equal (!= or ne)，由英文名稱可以得到lt、gt等運算子之縮寫詞，以下是Tomcat的一些例子： <br />
<table width="50%" border="1">
    <tbody>
        <tr>
            <td valign="top" align="left">運算式 </td>
            <td valign="top" align="left">結果 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1 &lt; 2} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1 lt 2} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1 &gt; (4/2)} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1 &gt; (4/2)} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{4.0 &gt;= 3} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{4.0 ge 3} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{4 &lt;= 3} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{4 le 3} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{100.0 == 100} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{100.0 eq 100} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{(10*10) != 100} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{(10*10) ne 100} </td>
            <td valign="top" align="left">false </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
左邊是運算子的使用方式，右邊的是運算結果，關係運算也可以用來比較字元或字串，按字典順序來決定比較結果，例如： <br />
<table width="50%" border="1">
    <tbody>
        <tr>
            <td valign="top" align="left">運算式 </td>
            <td valign="top" align="left">結果 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{'a' &lt; 'b'} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{'hip' &gt; 'hit'} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{'4' &gt; 3} </td>
            <td valign="top" align="left">true </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
EL運算子的執行優先順序與Java運算子對應，如果有疑慮的話，也可以使用括號()來自行決定先後順序。 <br />
<p>&nbsp;</p>
</div>
<div id="printfoot"><br />
</div><img src ="http://www.blogjava.net/zhouxing/aggbug/202137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:38 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/JSFExpressionLanguage.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsf-導航規則設置 </title><link>http://www.blogjava.net/zhouxing/archive/2008/05/22/ConfigNavigationRule.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Thu, 22 May 2008 04:36:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/05/22/ConfigNavigationRule.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/202136.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/05/22/ConfigNavigationRule.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/202136.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/202136.html</trackback:ping><description><![CDATA[<div id="wikitext">在JSF中是根據faces-config.xml中&lt;navigation-rule&gt;設定，以決定在符合的條件成立時，該連結至哪一個頁面，一個基本的設定如下：<br />
<pre> <br />
....<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/pages/index.jsp&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-outcome&gt;success&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/welcome.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-outcome&gt;failure&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/index.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
&lt;/navigation-rule&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
對於JSF，每一個視圖（View）都有一個獨特的識別（identifier），稱之為View ID，在JSF中的View ID是從Web應用程式的環境相對路徑開始計算，設定時都是以/作為開頭，如果您請求時的路徑是/pages/index.faces，則JSF會將副檔名改為/pages/index.jsp，以此作為view-id。<br />
<p>&nbsp;</p>
在&lt;navigation-rule&gt;中的&lt;from-view-id&gt;是個選擇性的定義，它規定了來源頁面的條件，&lt;navigation-case&gt;中定義各種導覽條件，&lt;from-outcome&gt;定義當表單結果符合的條件時，各自改導向哪一個目的頁面，目的頁面是在&lt;to-view-id&gt;中定義。<br />
<p>&nbsp;</p>
您還可以在&lt;navigation-case&gt;中加入&lt;from-action&gt;，進一步規範表單結果必須根據哪一個動作方法（action method），當中是使用 <a class="wikilink" href="http://www.1cn.biz/docs/LanguageTech/JavaServerFaces/JSFExpressionLanguage.htm">JSF Expression Language</a> 來設定，例如：<br />
<pre> <br />
....<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/pages/index.jsp&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-action&gt;#{user.verify}&lt;/from-action&gt;<br />
&lt;from-outcome&gt;success&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/welcome.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
....<br />
&lt;/navigation-rule&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
在導航時，預設都是使用forward的方式，您可以在&lt;navigation-case&gt;中加入一個&lt;redirect/&gt;，讓JSF發出讓瀏覽器重新導向（redirect）的header，讓瀏覽器主動要求新網頁，例如：<br />
<pre> <br />
....<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/pages/index.jsp&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-outcome&gt;success&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/welcome.jsp&lt;/to-view-id&gt;<br />
&lt;redirect/&gt;<br />
&lt;/navigation-case&gt;<br />
....<br />
&lt;/navigation-rule&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
您的來源網頁可能是某個特定模組，例如在/admin/下的頁面，您可以在&lt;from-view-id&gt;中使用wildcards，也就是使用 * 字元，例如：<br />
<pre> <br />
....<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/admin/*&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-action&gt;#{user.verify}&lt;/from-action&gt;<br />
&lt;from-outcome&gt;success&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/welcome.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
....<br />
&lt;/navigation-rule&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
在上面的設定中，只要來源網頁是從/admin來的，都可以開始測試接下來的&lt;navigation-case&gt;。<br />
<p>&nbsp;</p>
&lt;from-view-id&gt;如果沒有設定，表示來源網頁不作限制，您也可以使用 * 顯式的在定義檔中表明，例如：<br />
<pre> <br />
....<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/*&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
....<br />
&lt;/navigation-rule&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
或者是這樣：<br />
<pre> <br />
....<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;*&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
....<br />
&lt;/navigation-rule&gt;<br />
....<br />
<br />
</pre>
</div>
<div id="printfoot"><br />
</div><img src ="http://www.blogjava.net/zhouxing/aggbug/202136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:36 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/ConfigNavigationRule.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsf-簡單的導航（Navigation） </title><link>http://www.blogjava.net/zhouxing/archive/2008/05/22/SimpleNavigation.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Thu, 22 May 2008 04:35:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/05/22/SimpleNavigation.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/202134.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/05/22/SimpleNavigation.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/202134.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/202134.html</trackback:ping><description><![CDATA[<div id="wikitext">在 <a class="wikilink" href="http://www.1cn.biz/docs/LanguageTech/JavaServerFaces/FirstJSF.htm">第一個JSF程式</a> 中，我們簡單的定義了頁面的流程由 index.jsp 到 welcome.jsp，接下來我們擴充程式，讓它可以根據使用者輸入的名稱與密碼是否正確，決定要顯示歡迎訊息或是將使用者送回原頁面進行重新登入。<br />
<p>&nbsp;</p>
首先我們修改一下UserBean：<br />
<ul>
    <li>UserBean.java </li>
</ul>
<pre> <br />
package onlyfun.caterpillar;<br />
<br />
public class UserBean {<br />
private String name;<br />
private String password;<br />
private String errMessage;<br />
<br />
public void setName(String name) {<br />
this.name = name;<br />
}<br />
<br />
public String getName() {<br />
return name;<br />
}<br />
<br />
public void setPassword(String password) {<br />
this.password = password;<br />
}<br />
<br />
public String getPassword() {<br />
return password;<br />
}<br />
<br />
public void setErrMessage(String errMessage) {<br />
this.errMessage = errMessage;<br />
}<br />
<br />
public String getErrMessage() {<br />
return errMessage;<br />
}<br />
<br />
public String verify() {<br />
if(!name.equals("justin") ||<br />
!password.equals("123456")) {<br />
errMessage = "名稱或密碼錯誤";<br />
return "failure";<br />
}<br />
else {<br />
return "success";<br />
}<br />
}<br />
}<br />
<br />
</pre>
<p>&nbsp;</p>
在UserBean中，我們增加了密碼與錯誤訊息屬性，在verify()方法中，我們檢查使用者名稱與密碼，它傳回一個字串，"failure"表示登入錯誤，並會設定錯誤訊息，而"success"表示登入正確，這個傳回的字串將決定頁面的流程。<br />
<p>&nbsp;</p>
接下來我們修改一下 faces-config.xml 中的頁面流程定義：<br />
<ul>
    <li>faces-config.xml </li>
</ul>
<pre> <br />
&lt;?xml version="1.0"?&gt;<br />
&lt;!DOCTYPE faces-config PUBLIC<br />
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"<br />
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"&gt;<br />
<br />
&lt;faces-config&gt;<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/pages/index.jsp&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-outcome&gt;success&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/welcome.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-outcome&gt;failure&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/index.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
&lt;/navigation-rule&gt;<br />
<br />
&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;user&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
onlyfun.caterpillar.UserBean<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
&lt;/managed-bean&gt;<br />
&lt;/faces-config&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
根據上面的定義，當傳回的字串是"success"時，將前往 welcome.jsp，如果是"failure"的話，將送回 index.jsp。<br />
<p>&nbsp;</p>
接下來告訴網頁設計人員Bean名稱與相關屬性，以及決定頁面流程的verify名稱，我們修改 index.jsp 如下：<br />
<ul>
    <li>index.jsp </li>
</ul>
<pre> <br />
&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;<br />
&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;<br />
&lt;%@page contentType="text/html;charset=Big5"%&gt; <br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;第一個JSF程式&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;f:view&gt;<br />
&lt;h:form&gt;<br />
&lt;h3&gt;請輸入您的名稱&lt;/h3&gt;<br />
&lt;h:outputText value="#{user.errMessage}"/&gt;&lt;p&gt;<br />
名稱: &lt;h:inputText value="#{user.name}"/&gt;&lt;p&gt;<br />
密碼: &lt;h:inputSecret value="#{user.password}"/&gt;&lt;p&gt; <br />
&lt;h:commandButton value="送出" <br />
action="#{user.verify}"/&gt;<br />
&lt;/h:form&gt;<br />
&lt;/f:view&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
當要根據verify運行結果來決定頁面流程時，action屬性中使用 <a class="wikilink" href="http://www.1cn.biz/docs/LanguageTech/JavaServerFaces/JSFExpressionLanguage.htm">JSF Expression Language</a> "#{user.verify}"，如此JSF就知道必須根據verify傳回的結果來導航頁面。<br />
<p>&nbsp;</p>
&lt;h:outputText&gt;可以取出指定的Bean之屬性值，當使用者因驗證錯誤而被送回原頁面時，這個錯誤訊息就可以顯示在頁面上。<br />
</div><img src ="http://www.blogjava.net/zhouxing/aggbug/202134.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:35 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/SimpleNavigation.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第一個 JSF 程式 </title><link>http://www.blogjava.net/zhouxing/archive/2008/05/22/FirstJSF.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Thu, 22 May 2008 04:34:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/05/22/FirstJSF.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/202133.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/05/22/FirstJSF.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/202133.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/202133.html</trackback:ping><description><![CDATA[<div id="wikitext">現在可以開發一個簡單的程式了，我們將設計一個簡單的登入程式，使用者送出名稱，之後由程式顯示使用者名稱及歡迎訊息。<br />
<p>&nbsp;</p>
<h2>程式開發人員</h2>
先看看應用程式開發人員要作些什麼事，我們撰寫一個簡單的JavaBean：<br />
<ul>
    <li>UserBean.java </li>
</ul>
<pre> <br />
package onlyfun.caterpillar;<br />
<br />
public class UserBean {<br />
private String name;<br />
<br />
public void setName(String name) {<br />
this.name = name;<br />
}<br />
<br />
public String getName() {<br />
return name;<br />
}<br />
}<br />
<br />
</pre>
<p>&nbsp;</p>
這個Bean將儲存使用者的名稱，編譯好之後放置在/WEB-INF/classes下。<br />
<p>&nbsp;</p>
接下來設計頁面流程，我們將先顯示一個登入網頁/pages/index.jsp，使用者填入名稱並送出表單，之後在 /pages/welcome.jsp中顯示Bean中的使用者名稱與歡迎訊息。<br />
<p>&nbsp;</p>
為了讓JSF知道我們所設計的Bean以及頁面流程，我們定義一個/WEB-INF/faces-config.xml：<br />
<ul>
    <li>faces-config.xml </li>
</ul>
<pre> <br />
&lt;?xml version="1.0"?&gt;<br />
&lt;!DOCTYPE faces-config PUBLIC<br />
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"<br />
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"&gt;<br />
<br />
&lt;faces-config&gt;<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/pages/index.jsp&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-outcome&gt;login&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/welcome.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
&lt;/navigation-rule&gt;<br />
<br />
&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;user&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
onlyfun.caterpillar.UserBean<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
&lt;/managed-bean&gt;<br />
&lt;/faces-config&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
在&lt;navigation-rule&gt;中，我們定義了頁面流程，當請求來自&lt;from-view- id&gt;中指定的頁面，並且指定了&lt;navigation-case&gt;中的&lt;from-outcome&gt;為login時，則會將請求導向至&lt;to-view-id&gt;所指定的頁面。<br />
<p>&nbsp;</p>
在&lt;managed-bean&gt;中我們可以統一管理我們的Bean，我們設定Bean物件的存活範圍是session，也就是使用者開啟瀏覽器與程式互動過程中都存活。<br />
<p>&nbsp;</p>
接下來要告訴網頁設計人員的資訊是，他們可以使用的Bean名稱，即&lt;managed-bean-name&gt;中設定的名稱，以及上面所定義的頁面流程。<br />
<p>&nbsp;</p>
<h2>網頁設計人員</h2>
<p>&nbsp;</p>
首先網頁設計人員撰寫index.jsp網頁：<br />
<ul>
    <li>index.jsp </li>
</ul>
<pre> <br />
&lt;%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;<br />
&lt;%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;<br />
&lt;%@page contentType="text/html;charset=Big5"%&gt; <br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;第一個JSF程式&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;f:view&gt;<br />
&lt;h:form&gt;<br />
&lt;h3&gt;請輸入您的名稱&lt;/h3&gt;<br />
名稱: &lt;h:inputText value="#{user.name}"/&gt;&lt;p&gt;<br />
&lt;h:commandButton value="送出" action="login"/&gt;<br />
&lt;/h:form&gt;<br />
&lt;/f:view&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
我們使用了JSF的core與html標籤庫，core是有關於UI元件的處理，而html則是有關於HTML的進階標籤。<br />
<p>&nbsp;</p>
&lt;f:view&gt;與&lt;html&gt;有類似的作用，當您要開始使用JSF元件時，這些元件一定要在&lt;f: view&gt;與&lt;/f:view&gt;之間，就如同使用HTML時，所有的標籤一定要在&lt;html&gt;與&lt; /html&gt;之間。<br />
<p>&nbsp;</p>
html標籤庫中幾乎都是與HTML標籤相關的進階標籤，&lt;h:form&gt;會產生一個表單，我們使用&lt;h: inputText&gt;來顯示user這個Bean物件的name屬性，而&lt;h:commandButton&gt;會產生一個提交按鈕，我們在action屬性中指定將根據之前定義的login頁面流程中前往welcome.jsp頁面。<br />
<p>&nbsp;</p>
網頁設計人員不必理會表單傳送之後要作些什麼，他只要設計好歡迎頁面就好了：<br />
<ul>
    <li>welcome.jsp </li>
</ul>
<pre> <br />
&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;<br />
&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;<br />
&lt;%@page contentType="text/html;charset=Big5"%&gt; <br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;第一個JSF程式&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;f:view&gt;<br />
&lt;h:outputText value="#{user.name}"/&gt; 您好！<br />
&lt;h3&gt;歡迎使用 JavaServer Faces！&lt;/h3&gt;<br />
&lt;/f:view&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
這個頁面沒什麼需要解釋的了，如您所看到的，在網頁上沒有程式邏輯，網頁設計人員所作的就是遵照頁面流程，使用相關名稱取出資料，而不用擔心實際上程式是如何運作的。<br />
<p>&nbsp;</p>
接下來啟動Container，連接上您的應用程式網址，例如：http://localhost: 8080/jsfDemo/pages/index.faces，填入名稱並送出表單，您的歡迎頁面就會顯示了。<br />
</div><img src ="http://www.blogjava.net/zhouxing/aggbug/202133.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:34 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/FirstJSF.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>簡介 JSF </title><link>http://www.blogjava.net/zhouxing/archive/2008/05/22/IntroduceJSF.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Thu, 22 May 2008 04:32:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/05/22/IntroduceJSF.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/202132.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/05/22/IntroduceJSF.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/202132.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/202132.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/05/22/IntroduceJSF.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/202132.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:32 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/IntroduceJSF.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaServer Faces</title><link>http://www.blogjava.net/zhouxing/archive/2008/05/22/javaserverfaces.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Thu, 22 May 2008 04:31:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/05/22/javaserverfaces.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/202130.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/05/22/javaserverfaces.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/202130.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/202130.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JavaServer Faces [http://java.sun.com/j2ee/javaserverfaces/] 於2004年三月1.0版正式提出，清楚的將Web應用程式的開發者劃分了三個角色：網頁設計人員、應用程式設計人員以及UI元件開發人員。從使用的角度來看，網頁設計人員與應用程式設計人員可以他們所熟悉的方式開發程式，而不用侵入彼此的工作範圍，而UI元件開發人員可以獨立的開發個別元件，細節的部份留給了他們來處理。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/05/22/javaserverfaces.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/202130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:31 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/javaserverfaces.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>架构师</title><link>http://www.blogjava.net/zhouxing/archive/2008/05/20/201614.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Tue, 20 May 2008 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/05/20/201614.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/201614.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/05/20/201614.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/201614.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/201614.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 软件架构师是软件行业中一种新兴职业，工作职责是在一个软件项目开发过程中，将客户的需求转换为规范的开发计划及文本，并制定这个项目的总体架构，指导整个开发团队完成这个计划。架构师的主要任务不是从事具体的软件程序的编写，而是从事更高层次的开发构架工作。他必须对开发技术非常了解，并且需要有良好的组织管理能力。可以这样说，一个架构师工作的好坏决定了整个软件开发项目的成败。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/05/20/201614.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/201614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-20 12:42 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/20/201614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件架构</title><link>http://www.blogjava.net/zhouxing/archive/2008/05/12/software_architecture.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Mon, 12 May 2008 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/05/12/software_architecture.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/200053.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/05/12/software_architecture.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/200053.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/200053.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 软件架构（software architecture）是一系列相关的抽象模式，用于指导大型软件系统各个方面的设计。 软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段，这些抽象组件被细化为实际的组件，比如具体某个类或者对象。在面向对象领域中，组件之间的连接通常用接口(计算机科学)来实现。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/05/12/software_architecture.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/200053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-12 17:01 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/12/software_architecture.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringSource新应用服务器发布 摒弃Java EE</title><link>http://www.blogjava.net/zhouxing/archive/2008/05/07/198884.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Wed, 07 May 2008 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/05/07/198884.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/198884.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/05/07/198884.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/198884.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/198884.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 从获得一千万美元风投开始算起刚满一年，如今SpringSource（Spring框架背后的公司）摇身一变，成为应用服务器提供商，并且举着SpringSource应用平台（SpringSource Application Platform）的黄钺白旄对现有的Java EE服务器阵营发起挑战。SpringSource应用平台是构建在Spring、OSGi和Apache Tomcat之上的应用服务器，这个新的应用服务器摒弃了原有的Java EE服务器标准，自然而然地将Spring编程模型展现其中，随之而来的还有一套基于OSGi内核构建的全新部署和打包系统。今天是该项目在SpringSource评估许可下Beta发布版发布的重要里程碑。在随后一个月内会有基于开源许可（GPLv3）版本和订阅版本的通用发布版（General Availability，GA）放出。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/05/07/198884.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/198884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-07 10:33 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/07/198884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>构建高性能J2EE应用的五种核心策略 </title><link>http://www.blogjava.net/zhouxing/archive/2008/04/25/196052.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Fri, 25 Apr 2008 11:59:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/04/25/196052.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/196052.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/04/25/196052.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/196052.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/196052.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 对于J2EE，我们知道当开发应用时，在架构设计阶段的决定将对应用的性能和可扩展性产生深远的影响。现在当开发一个应用项目时，我们越来越多地注意到了性能和可扩展性的问题。应用性能的问题比应用功能的不丰富问题往往更为严重，前者会影响到所有用户，而后者只会影响到碰巧使用该功能的那些用户。 &nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/04/25/196052.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/196052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-04-25 19:59 <a href="http://www.blogjava.net/zhouxing/archive/2008/04/25/196052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提高Java水平的十大技术</title><link>http://www.blogjava.net/zhouxing/archive/2008/04/15/193162.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Tue, 15 Apr 2008 09:24:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/04/15/193162.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/193162.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/04/15/193162.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/193162.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/193162.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文列出了当今计算机软件开发和应用领域最重要十种关键技术排名，如果你想保证你现在以及未来的几年不失业，那么你最好跟上这些技术的发展。虽然你不必对这十种技术样样精通，但至少应该对它们非常熟悉。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/04/15/193162.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/193162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-04-15 17:24 <a href="http://www.blogjava.net/zhouxing/archive/2008/04/15/193162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有可能挑战Java开发优势的四种技术</title><link>http://www.blogjava.net/zhouxing/archive/2008/04/03/190696.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Thu, 03 Apr 2008 12:12:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/04/03/190696.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/190696.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/04/03/190696.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/190696.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/190696.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Java是一种杰出的产业开发语言,这是因为它带来了伟大的统一和对事实上以前并不存在的重要标准的关注。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/04/03/190696.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/190696.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-04-03 20:12 <a href="http://www.blogjava.net/zhouxing/archive/2008/04/03/190696.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2008年中国通信与网络市场10大预测</title><link>http://www.blogjava.net/zhouxing/archive/2008/04/02/190456.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Wed, 02 Apr 2008 13:10:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/04/02/190456.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/190456.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/04/02/190456.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/190456.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/190456.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文是In-Stat咨询公司基于对供应商的研究。该公司的预测分析结合了2007年中实施的几十个项目总结出的经验和专业的洞察力，全面的讨论这些预测的趋势将怎样影响和改变整个产业的发展，提出了对中国2008年通信和互联网市场的10个预测。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/04/02/190456.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/190456.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-04-02 21:10 <a href="http://www.blogjava.net/zhouxing/archive/2008/04/02/190456.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 7的并行支持：Fork/Join</title><link>http://www.blogjava.net/zhouxing/archive/2008/03/24/188331.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Mon, 24 Mar 2008 11:33:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/03/24/188331.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/188331.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/03/24/188331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/188331.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/188331.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天，处理器的内核数量在不断增加，以什么样的方法开发程序才能发挥出新硬件的效能呢？这正变成一个愈发重要的问题摆在了开发者面前。IBM Developerworks已经发布了一篇介绍Fork-Join并发类库的连载文章，Fork-Join类库会作为即将来到的Java 7的一部分进行发布。InfoQ以前也报道过Java 7中最初的fork/join提案，其中还包含来自最初创建者Doug Lea的反馈。Doug Lea在他的论文“Fork/Join Parallelism in Java”中，首次把fork/join的概念引入到Java中。Doug Lea的util.concurrent包是JSR-166的基础，后者是发布在Java 5中的java.util.concurrentl类库。Fork/Join是对JSR-166的简单修订。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/03/24/188331.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/188331.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-03-24 19:33 <a href="http://www.blogjava.net/zhouxing/archive/2008/03/24/188331.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Java实现内部领域特定语言</title><link>http://www.blogjava.net/zhouxing/archive/2008/03/17/186825.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Mon, 17 Mar 2008 11:03:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/03/17/186825.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/186825.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/03/17/186825.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/186825.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/186825.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 领域特定语言（DSL）通常被定义为一种特别针对某类特殊问题的计算机语言，它不打算解决其领域外的问题。对于DSL的正式研究已经持续很多年，直到最近，在程序员试图采用最易读并且简炼的方法来解决他们的问题的时候，内部DSL意外地被写入程序中。近来，随着关于Ruby和其他一些动态语言的出现，程序员对DSL的兴趣越来越浓。这些结构松散的语言给DSL提供某种方法，使得DSL允许最少的语法以及对某种特殊语言最直接的表现。但是，放弃编译器和使用类似Eclipse这样最强大的现代集成开发环境无疑是该方式的一大缺点。然而，作者终于成功地找到了这两个方法的折衷解决方式，并且，他们将证明该折衷方法不但可能，而且对于使用Java这样的结构性语言从面向DSL的方式来设计API很有帮助。本文将描述怎样使用Java语言来编写领域特定语言，并将建议一些组建DSL语言时可采用的模式。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/03/17/186825.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/186825.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-03-17 19:03 <a href="http://www.blogjava.net/zhouxing/archive/2008/03/17/186825.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>领域模型管理与AOP</title><link>http://www.blogjava.net/zhouxing/archive/2008/03/11/185457.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Tue, 11 Mar 2008 11:01:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/03/11/185457.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/185457.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/03/11/185457.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/185457.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/185457.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 正如从像《领域驱动设计》[Evans DDD]和《领域驱动设计和模式应用》[Nilsson ADDDP]这些书中学到的一样，在应用架构中引入领域模型模式（《企业应用架构模式》[Fowler PoEAA]）一定会有很多益处，但是它们并不是无代价的。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/03/11/185457.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/185457.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-03-11 19:01 <a href="http://www.blogjava.net/zhouxing/archive/2008/03/11/185457.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java远程通讯可选技术及原理 </title><link>http://www.blogjava.net/zhouxing/archive/2008/03/06/184130.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Thu, 06 Mar 2008 01:07:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/03/06/184130.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/184130.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/03/06/184130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/184130.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/184130.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在分布式服务框架中，一个最基础的问题就是远程服务是怎么通讯的，在Java领域中有很多可实现远程通讯的技术，例如：RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等，这些名词之间到底是些什么关系呢，它们背后到底是基于什么原理实现的呢，了解这些是实现分布式服务框架的基础知识，而如果在性能上有高的要求的话，那深入了解这些技术背后的机制就是必须的了，在这篇blog中我们将来一探究竟，抛砖引玉，欢迎大家提供更多的实现远程通讯的技术和原理的介绍。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/03/06/184130.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/184130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-03-06 09:07 <a href="http://www.blogjava.net/zhouxing/archive/2008/03/06/184130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IBM、BEA和JBoss应用服务器采用OSGi</title><link>http://www.blogjava.net/zhouxing/archive/2008/02/27/182413.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Wed, 27 Feb 2008 02:38:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/02/27/182413.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/182413.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/02/27/182413.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/182413.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/182413.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: OSGi联盟是由包括爱立信、IBM、Oracle和Sun Microsystems在内的多个厂商于1999年成立的，OSGi联盟负责管理和开发OSGi规范。OSGi规范是一个Java环境的组件模型，它定义了组件封装、生命周期管理和服务注册。应用程序或组件（以bundle的方式进行部署）不需要重启就可以远程安装、启动、停止、更新和卸载。生命周期管理通过API来完成，API允许远程下载管理策略。OSGi最初侧重于移动及嵌入领域，现已运用在大型桌面应用程序上，其中最引人注目的是Eclipse IDE。近来成立的OSGi企业专家小组正在寻求扩展OSGi规范，以支持企业级Java厂商和开发者的需求。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/02/27/182413.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/182413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-02-27 10:38 <a href="http://www.blogjava.net/zhouxing/archive/2008/02/27/182413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>集成Java内容仓库和Spring</title><link>http://www.blogjava.net/zhouxing/archive/2008/02/19/180733.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Tue, 19 Feb 2008 10:12:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/02/19/180733.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/180733.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/02/19/180733.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/180733.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/180733.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 集成Java内容仓库和Spring&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/02/19/180733.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/180733.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-02-19 18:12 <a href="http://www.blogjava.net/zhouxing/archive/2008/02/19/180733.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java是否应该停止增加新特性</title><link>http://www.blogjava.net/zhouxing/archive/2008/01/30/178451.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Wed, 30 Jan 2008 01:12:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/01/30/178451.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/178451.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/01/30/178451.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/178451.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/178451.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近，关于Java平台的未来有许多辩论，有些人认为Java应该加入更多的特征，这样才能与C#、Ruby这样的语言竞争，另一些人认为应该保持Java的稳定，以免变的过于复杂以至于难以使用。Bruce Eckel认为应该彻底停止往Java中增加新特性，这引起了一场新的辩论。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/01/30/178451.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/178451.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-01-30 09:12 <a href="http://www.blogjava.net/zhouxing/archive/2008/01/30/178451.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JPA框架比较</title><link>http://www.blogjava.net/zhouxing/archive/2008/01/21/176660.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Mon, 21 Jan 2008 01:30:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/01/21/176660.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/176660.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/01/21/176660.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/176660.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/176660.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: java.net刊登了一篇由Sharad Acharya所写的名为Java Persistence Framework: Which, When, and What?的文章，文中比较了四种流行的持久化框架：CMP Entity EJBs、JPA、Hibernate和TopLink。Acharya讨论了每种技术并在一个表格中总结了他的结论&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/01/21/176660.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/176660.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-01-21 09:30 <a href="http://www.blogjava.net/zhouxing/archive/2008/01/21/176660.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss，Geronimo还是Tomcat？</title><link>http://www.blogjava.net/zhouxing/archive/2008/01/08/173681.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Tue, 08 Jan 2008 08:45:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2008/01/08/173681.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/173681.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2008/01/08/173681.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/173681.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/173681.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 像JBoss、Tomcat和Apache Geronimo这样的开源Java EE应用服务器轻松地立足于同类商业产品之中，并且真正地在技术革新中处于市场领先地位。但是这些开源Java EE应用服务器并不完全等同。在这篇文章中作者将从特性、部署和性能方面对JBoss 4.2，Geronimo 2和Tomcat 6三种服务器进行了比较。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/01/08/173681.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/173681.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-01-08 16:45 <a href="http://www.blogjava.net/zhouxing/archive/2008/01/08/173681.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>InfoQ中文站架构社区2007年度十大新闻</title><link>http://www.blogjava.net/zhouxing/archive/2007/12/31/171912.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Mon, 31 Dec 2007 13:52:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2007/12/31/171912.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/171912.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2007/12/31/171912.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/171912.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/171912.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: InfoQ中文站架构社区2007年度十大新闻&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2007/12/31/171912.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/171912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2007-12-31 21:52 <a href="http://www.blogjava.net/zhouxing/archive/2007/12/31/171912.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>InfoQ中文站Ruby社区2007年度十大新闻</title><link>http://www.blogjava.net/zhouxing/archive/2007/12/31/171911.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Mon, 31 Dec 2007 13:51:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2007/12/31/171911.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/171911.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2007/12/31/171911.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/171911.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/171911.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: InfoQ中文站Ruby社区2007年度十大新闻&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2007/12/31/171911.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/171911.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2007-12-31 21:51 <a href="http://www.blogjava.net/zhouxing/archive/2007/12/31/171911.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>InfoQ中文站SOA社区2007年度十大新闻</title><link>http://www.blogjava.net/zhouxing/archive/2007/12/31/171910.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Mon, 31 Dec 2007 13:49:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2007/12/31/171910.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/171910.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2007/12/31/171910.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/171910.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/171910.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: InfoQ中文站SOA社区2007年度十大新闻&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2007/12/31/171910.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/171910.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2007-12-31 21:49 <a href="http://www.blogjava.net/zhouxing/archive/2007/12/31/171910.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>InfoQ中文站Java社区2007年度十大新闻</title><link>http://www.blogjava.net/zhouxing/archive/2007/12/31/171908.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Mon, 31 Dec 2007 13:48:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2007/12/31/171908.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/171908.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2007/12/31/171908.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/171908.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/171908.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: InfoQ中文站Java社区2007年度十大新闻&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2007/12/31/171908.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/171908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2007-12-31 21:48 <a href="http://www.blogjava.net/zhouxing/archive/2007/12/31/171908.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>07年25大IT创新</title><link>http://www.blogjava.net/zhouxing/archive/2007/12/31/171892.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Mon, 31 Dec 2007 12:58:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2007/12/31/171892.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/171892.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2007/12/31/171892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/171892.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/171892.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 07年25大IT创新 Google Gears打败iPhone/图&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2007/12/31/171892.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/171892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2007-12-31 20:58 <a href="http://www.blogjava.net/zhouxing/archive/2007/12/31/171892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>性能测试</title><link>http://www.blogjava.net/zhouxing/archive/2007/12/19/168725.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Wed, 19 Dec 2007 05:29:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2007/12/19/168725.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/168725.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2007/12/19/168725.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/168725.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/168725.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试，两者可以结合进行。通过负载测试，确定在各种工作负载下系统的性能，目标是测试当负载逐渐增加时，系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点，来获得系统能提供的最大服务级别的测试。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2007/12/19/168725.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/168725.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2007-12-19 13:29 <a href="http://www.blogjava.net/zhouxing/archive/2007/12/19/168725.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>垂直搜索引擎</title><link>http://www.blogjava.net/zhouxing/archive/2007/12/14/167864.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Fri, 14 Dec 2007 13:51:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2007/12/14/167864.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/167864.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2007/12/14/167864.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/167864.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/167864.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: google的目标是让用户尽快离开google，而垂直搜索引擎应该粘住用户。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2007/12/14/167864.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/167864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2007-12-14 21:51 <a href="http://www.blogjava.net/zhouxing/archive/2007/12/14/167864.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高并发高流量网站架构</title><link>http://www.blogjava.net/zhouxing/archive/2007/12/12/167282.html</link><dc:creator>周行</dc:creator><author>周行</author><pubDate>Wed, 12 Dec 2007 09:27:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxing/archive/2007/12/12/167282.html</guid><wfw:comment>http://www.blogjava.net/zhouxing/comments/167282.html</wfw:comment><comments>http://www.blogjava.net/zhouxing/archive/2007/12/12/167282.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxing/comments/commentRss/167282.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxing/services/trackbacks/167282.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Web2.0的兴起，掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念，细分了网站功能和用户群，不仅成功的造就了一大批新生的网站，也极大的方便了上网的人们。但Web2.0以用户为导向的理念，使得新生的网站有了新的特点——高并发，高流量，数据量大，逻辑复杂等，对网站建设也提出了新的要求。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2007/12/12/167282.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/167282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2007-12-12 17:27 <a href="http://www.blogjava.net/zhouxing/archive/2007/12/12/167282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>