<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>小兵从这里开始</title>
    <description>小兵目标将军</description>
    <link>http://wangxin0072000.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>CSS 之 伪类与伪元素</title>
        <author>wangxin0072000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangxin0072000.javaeye.com">wangxin0072000</a>&nbsp;
          链接：<a href="http://wangxin0072000.javaeye.com/blog/204437" style="color:red;">http://wangxin0072000.javaeye.com/blog/204437</a>&nbsp;
          发表时间: 2008年06月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Pseudo-Classes and Pseudo-Elements<br />常用的伪类：<br />链接：<br /><pre name="code" class="java">
a:link 表示普通的链接
a:visited 是根据网页浏览历史 判断的浏览过的链接
a:hover 鼠标滑过时的链接
a:active 被鼠标点击瞬间的链接
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://wangxin0072000.javaeye.com/blog/204437#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Jun 2008 22:40:27 +0800</pubDate>
        <link>http://wangxin0072000.javaeye.com/blog/204437</link>
        <guid>http://wangxin0072000.javaeye.com/blog/204437</guid>
      </item>
      <item>
        <title>Lightweight Class In Hibernate3</title>
        <author>wangxin0072000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangxin0072000.javaeye.com">wangxin0072000</a>&nbsp;
          链接：<a href="http://wangxin0072000.javaeye.com/blog/195016" style="color:red;">http://wangxin0072000.javaeye.com/blog/195016</a>&nbsp;
          发表时间: 2008年05月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>Lightweight Class In Hibernate3</strong><br /><br /><br />Suppose I have the following persistent class:<br />假如有这样一个持久化类：<br /><pre name="code" class="java">public class Document implements Node {
   private Long _key;
   private String _name;
   private Calendar _created;
   private Calendar _updated;
   private Folder _folder;
   private Clob _text;
   public String getKey() { return _key; }
   public void setKey(Long key) { _key = key; }
   public String getName() { return _name; }
   public void setName(String name) { _name = name; }
   public Calendar getCreated() { return _created; }
   public void setCreated(Calendar created) { _created = created; }
   public Calendar getUpdated() { return _updated; }
   public void setUpdated(Calendar updated) { _updated = updated; }
   public Folder getFolder() { return _folder; }
   public void setFolder(Folder folder) { _folder = folder; }
   public Clob getText() { return _text; }
   public void setText(Clob text) { _text = text; }
}</pre><br />这个类中的所有属性都与数据库中的DOCUMENTS表中的某一列对应。<br />但是实例化这个类中的_text字段要消耗很大的内存。所以如果我要对这个表进行操作比如列出所有document的名字，或者给某个docuemnt改名。那么我又不想load出Clob类型的_text这个属性。那么怎么做呢？当然，有很多方法，而下面的方法是Hibernate官方网站<br />推荐的方法：<br />我们可以把这个持久化类分为"lightweight" superclass和 "heavyweight" subclass<br />如下：<br /><br /><pre name="code" class="java">public class DocumentInfo implements Node {
   private Long _key;
   private String _name;
   private Calendar _created;
   private Calendar _updated;
   private Folder _folder;
   private Clob _text;
   public String getKey() { return _key; }
   public void setKey(Long key) { _key = key; }
   public String getName() { return _name; }
   public void setName(String name) { _name = name; }
   public Calendar getCreated() { return _created; }
   public void setCreated(Calendar created) { _created = created; }
   public Calendar getUpdated() { return _updated; }
   public void setUpdated(Calendar updated) { _updated = updated; }
   public Folder getFolder() { return _folder; }
   public void setFolder(Folder folder) { _folder = folder; }
}</pre><pre name="code" class="java">public class Document extends DocumentInfo {
   private Clob _text;
   public Clob getText() { return _text; }
   public void setText(Clob text) { _text = text; }
}</pre><br />We use the following mapping:<br /><br /><pre name="code" class="xml">&lt;class name="DocumentInfo" table="DOCUMENTS">
   &lt;id name="key" type="long" column="ID">
       &lt;generator class="native"/>
   &lt;/id>
   &lt;property name="name"/>
   &lt;property name="created"/>
   &lt;property name="updated"/>
   &lt;many-to-one name="folder"/>
&lt;/class>

&lt;class name="Document" table="DOCUMENTS" polymorphism="explicit">
   &lt;id name="key" type="long" column="ID">
       &lt;generator class="native"/>
   &lt;/id>
   &lt;property name="name"/>
   &lt;property name="created"/>
   &lt;property name="updated"/>
   &lt;many-to-one name="folder"/>
   &lt;property name="text"/>
&lt;/class></pre><br />ok，如果我们要得到一个不包含_text属性的持久化对象，可以这样：<br /><pre name="code" class="java">from DocumentInfo
from Node
from java.lang.Object</pre>同样由于我们在mapping 文件中设置了polymorphism="explicit"，所以如果我们希望得到包含_text属性的持久化对象<br />只要这样（注意hibernate2不支持）<br /><pre name="code" class="java">from d in class Document
DocumentInfo info = (DocumentInfo) session.load(DocumentInfo.class, new Long(1));
Document doc = (Document) session.load(Document.class, new Long(1));</pre><br />如果你希望同时查询出同一个id的DocumentInfo 和 Document两个对象，你需要在load DocumentInfo 之后<br />使用session.evict（）或者在mapping文件中设置polymorphism="explicit"
          <br/>
          <span style="color:red;">
            <a href="http://wangxin0072000.javaeye.com/blog/195016#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 20 May 2008 20:49:41 +0800</pubDate>
        <link>http://wangxin0072000.javaeye.com/blog/195016</link>
        <guid>http://wangxin0072000.javaeye.com/blog/195016</guid>
      </item>
      <item>
        <title>javascript drag&amp;drop beginning</title>
        <author>wangxin0072000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangxin0072000.javaeye.com">wangxin0072000</a>&nbsp;
          链接：<a href="http://wangxin0072000.javaeye.com/blog/191903" style="color:red;">http://wangxin0072000.javaeye.com/blog/191903</a>&nbsp;
          发表时间: 2008年05月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>javascript drag&drop beginning</strong><br />首先我不赞成自己实现拖拽功能，因为比较麻烦，<br />建议用当下比较流行的一些库，用什么那就看项目需要了，<br />但是即便用别人的东西也只至少知道原理，所以我们先看看原理吧<br />如果想自己手动实现拖拽，那么我们先看看都要有哪些工作要做。<br />1 至少要获得鼠标的坐标吧，不然还干个屁。<br />2 至少要获得鼠标的动作吧，不然我怎么知道什么时候拖。什么时候停<br />3 在页面上拖动一个目标实际上就是，改变某个标签的坐标，当然一般也要适当改变<br />也些样式。所以你至少要知道一些css方面的知识。<br /><br />1 鼠标坐标：look：<br /><pre name="code" class="java">function mouseCoords(ev){
    if (ev.pageX || ev.pageY) {
        return {
            x: ev.pageX,
            y: ev.pageY
        };
    }
    return {
        x: ev.clientX + document.body.scrollLeft - document.body.clientLeft,
        y: ev.clientY + document.body.scrollTop - document.body.clientTop
    };
}</pre>唯一要解释的就是型参ev：ev实际就是windows.even:<br />调用这个函数：<br /><pre name="code" class="java">document.onmousemove = mouseMove;
function mouseMove(ev){
	ev           = ev || window.event;
	var mousePos = mouseCoords(ev);
} // mousePos.x就是横坐标，mousePos.y就是纵坐标</pre>好了，就到这吧。<br />2 复习一下doument下面的都鼠标动作吧（当然只列出我们用的到的）<br />onmousedown:当焦点停留在当前元素上并且按下鼠标键时触发<br />onmousemove:当光标在当前元素上并且光标在当前元素上面移动时触发<br />onmouseout:当光标移出某个元素时触发<br />onmouseover:当贯标移动到某个元素上面时触发<br />onmouseup:当焦点在当前元素上并松开鼠标键时触发<br />下一步：搞清楚流程：<br />拖拽的流程：<br />捕获鼠标按下动作，之后判断鼠标按下所在的坐标是不是你想要的DOM对象，<br />如果是那么让这个对象的坐标跟着鼠标移动而改变，直到鼠标松开（onmouseup）。<br />根据这个流程，我们第一步要先把我们想要移动的DOM对象<br />记录下拉，而且我们必须把这个对象的style position <br />设置为absolute。<br /><pre name="code" class="java">//定义监听函数
document.onmousemove = mouseMove;
document.onmouseup   = mouseUp;
//存放我们想要拖动的DOM对象
var dragObject  = null;
var mouseOffset = null;
function mouseMove(ev){
	ev           = ev || window.event;
	//这里用到了上面第一点写的函数（mouseCoords）
	var mousePos = mouseCoords(ev);

	if(dragObject){
		dragObject.style.position = 'absolute';
		dragObject.style.top      = mousePos.y;
		dragObject.style.left     = mousePos.x;

		return false;
	}
}
function mouseUp(){
	dragObject = null;
}

function makeDraggable(item){
	if(!item) return;
	item.onmousedown = function(ev){
		dragObject  = this;
		mouseOffset = getMouseOffset(this, ev);
		return false;
	}
}</pre>这段代码的意思就是告诉浏览器页面上的哪些元素可以被拖动。<br />然后如果捕获的元素是允许被拖动的（即鼠标所在的区域<br />是这个元素的范围内），那么这个元素的坐标就<br />随着鼠标变化，直到鼠标弹起。<br />那么为了让鼠标知道哪些元素可以被拖动，我们需要制作<br />一个容器，盛放这些元素，并且写一个注册函数，把可以拖动<br />的元素注册到容器中：<br /><pre name="code" class="java">
var dropTargets = [];

function addDropTarget(dropTarget){
	dropTargets.push(dropTarget);
}

function mouseUp(ev){
	ev           = ev || window.event;
	var mousePos = mouseCoords(ev);

	for(var i=0; i&lt;dropTargets.length; i++){
		var curTarget  = dropTargets[i];
		var targPos    = getPosition(curTarget);
		var targWidth  = parseInt(curTarget.offsetWidth);
		var targHeight = parseInt(curTarget.offsetHeight);
		
		if(
			(mousePos.x > targPos.x)                &&
			(mousePos.x &lt; (targPos.x + targWidth))  &&
			(mousePos.y > targPos.y)                &&
			(mousePos.y &lt; (targPos.y + targHeight))){
				// dragObject was dropped onto curTarget!
		}
	}
	dragObject   = null;
}</pre>所以如果你使用javascript lib，那么如果给某个元素增加拖动<br />属性，那么一般都可以捕获到 up 和 down事件，并可以在这些<br />事件中增加自己的动作。
          <br/>
          <span style="color:red;">
            <a href="http://wangxin0072000.javaeye.com/blog/191903#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 11 May 2008 11:26:37 +0800</pubDate>
        <link>http://wangxin0072000.javaeye.com/blog/191903</link>
        <guid>http://wangxin0072000.javaeye.com/blog/191903</guid>
      </item>
      <item>
        <title>Apache Commons-configuration 学习笔记4</title>
        <author>wangxin0072000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangxin0072000.javaeye.com">wangxin0072000</a>&nbsp;
          链接：<a href="http://wangxin0072000.javaeye.com/blog/186113" style="color:red;">http://wangxin0072000.javaeye.com/blog/186113</a>&nbsp;
          发表时间: 2008年04月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          再来个更加复杂一点的XML<br /><pre name="code" class="java">&lt;?xml version="1.0" encoding="ISO-8859-1" ?>
&lt;database>
  &lt;tables>
    &lt;table tableType="system">
      &lt;name>users&lt;/name>
      &lt;fields>
        &lt;field>
          &lt;name>uid&lt;/name>
          &lt;type>long&lt;/type>
        &lt;/field>
        &lt;field>
          &lt;name>uname&lt;/name>
          &lt;type>java.lang.String&lt;/type>
        &lt;/field>
        &lt;field>
          &lt;name>firstName&lt;/name>
          &lt;type>java.lang.String&lt;/type>
        &lt;/field>
        &lt;field>
          &lt;name>lastName&lt;/name>
          &lt;type>java.lang.String&lt;/type>
        &lt;/field>
        &lt;field>
          &lt;name>email&lt;/name>
          &lt;type>java.lang.String&lt;/type>
        &lt;/field>
      &lt;/fields>
    &lt;/table>
    &lt;table tableType="application">
      &lt;name>documents&lt;/name>
      &lt;fields>
        &lt;field>
          &lt;name>docid&lt;/name>
          &lt;type>long&lt;/type>
        &lt;/field>
        &lt;field>
          &lt;name>name&lt;/name>
          &lt;type>java.lang.String&lt;/type>
        &lt;/field>
        &lt;field>
          &lt;name>creationDate&lt;/name>
          &lt;type>java.util.Date&lt;/type>
        &lt;/field>
        &lt;field>
          &lt;name>authorID&lt;/name>
          &lt;type>long&lt;/type>
        &lt;/field>
        &lt;field>
          &lt;name>version&lt;/name>
          &lt;type>int&lt;/type>
        &lt;/field>
      &lt;/fields>
    &lt;/table>
  &lt;/tables>
&lt;/database></pre>这个XML的结构是根节点为database<br /><br /><pre name="code" class="java">
database
  |-table
     |-name
     |-fields
         |-field
         |-field
  |-table
     |-name
     |-fields
         |-field
         |-field
</pre>眼尖的一眼就能看穿这是一个数据库的定义文件<br />那么我们如何读取呢？<br />好吧，我们接上文，来看看吧<br /><pre name="code" class="java">XMLConfiguration config = new XMLConfiguration();
		config.setDelimiterParsingDisabled(true);
		config.setFileName("tt/test2.xml");
		config.load();
		Object prop = config.getProperty("tables.table.name");
		if(prop instanceof Collection)
		{
			System.out.println("Number of tables: " + ((Collection) prop).size());
		}</pre>前面的我就不说了，看看这句<br />Object prop = config.getProperty("tables.table.name");<br />		if(prop instanceof Collection)<br />		{<br />			System.out.println("Number of tables: " + ((Collection) prop).size());<br />		}<br />config读取属性的时候，会去看得到的是否是多个值，如果是，则把这些值存为一个Collection<br />对象。<br />所以会打印出<br /><pre name="code" class="java">Number of tables: 2</pre>在使用getProperty方法时，我们给不同的节点路径会给我们不同的值，直接看例子：<br /><pre name="code" class="java">//return users
System.out.println(config.getProperty("tables.table(0).name"));
//return system
System.out.println(config.getProperty("tables.table(0)[@tableType]"));
//return documents
System.out.println(config.getProperty("tables.table(1).name"));
//return null,因为只有两个table所以这个值为null
System.out.println(config.getProperty("tables.table(2).name"));
//return [docid, name, creationDate, authorID, version]
//如果所要找的节点不存在唯一值，则返回Collection类型
System.out.println(config.getProperty("tables.table(1).fields.field.name"));
//[long, long]
//与上面的相同，返回值不唯一
System.out.println(config.getProperty("tables.table.fields.field(0).type"));
//return creationDate
System.out.println(config.getProperty("tables.table(1).fields.field(2).name"));</pre>
          <br/>
          <span style="color:red;">
            <a href="http://wangxin0072000.javaeye.com/blog/186113#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Apr 2008 00:04:44 +0800</pubDate>
        <link>http://wangxin0072000.javaeye.com/blog/186113</link>
        <guid>http://wangxin0072000.javaeye.com/blog/186113</guid>
      </item>
      <item>
        <title>Apache Commons-configuration 学习笔记3</title>
        <author>wangxin0072000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangxin0072000.javaeye.com">wangxin0072000</a>&nbsp;
          链接：<a href="http://wangxin0072000.javaeye.com/blog/186109" style="color:red;">http://wangxin0072000.javaeye.com/blog/186109</a>&nbsp;
          发表时间: 2008年04月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          读取XML<br />假如有个XML，名叫：XMLtest.xml如下：<br /><pre name="code" class="java">&lt;?xml version="1.0" encoding="ISO-8859-1" ?>
&lt;gui-definition>
  &lt;colors>
    &lt;background>#808080&lt;/background>
    &lt;text>#000000&lt;/text>
    &lt;header>#008000&lt;/header>
    &lt;link normal="#000080" visited="#800080"/>
    &lt;default>${colors.header}&lt;/default>
  &lt;/colors>
  &lt;rowsPerPage>15&lt;/rowsPerPage>
  &lt;buttons>
    &lt;name>OK,Cancel,Help&lt;/name>
    &lt;name>Yes,No,Cancel&lt;/name>
  &lt;/buttons>
  &lt;numberFormat pattern="###\,###.##"/>
&lt;/gui-definition>	</pre><br />标准的XML文件都会有一个跟标签包裹住所有内容，这个标签的子标签认为是顶级名字空间<br />（这个说法可能不准确）不多说了看代码吧<br /><pre name="code" class="java">XMLConfiguration config = new XMLConfiguration("XMLtest.xml");
/**
	*&lt;colors>
  *  &lt;background>#808080&lt;/background>
  *  &lt;text>#000000&lt;/text>
  *  &lt;header>#008000&lt;/header>
  *  &lt;link normal="#000080" visited="#800080"/>
  *  &lt;default>${colors.header}&lt;/default>
  *&lt;/colors>
	*这是从上面的xml中摘抄的一段，我们现在来解析它，
	*colors是根标签下的直接子标签，所以是顶级名字空间
	*/
String backColor = config.getString("colors.background");
String textColor = config.getString("colors.text");
//现在我们知道了如何读取标签下的数据，那么如何读标签中的属性呢？看下面
//&lt;link normal="#000080" visited="#800080"/>
String linkNormal = config.getString("colors.link[@normal]");
//还支持引用呢！
//&lt;default>${colors.header}&lt;/default>
String defColor = config.getString("colors.default");
//也支持其他类型，但是一定要确定类型正确，否则要报异常哦
//&lt;rowsPerPage>15&lt;/rowsPerPage>
int rowsPerPage = config.getInt("rowsPerPage");</pre><br /><pre name="code" class="java">/**
	*但是我们如何读取List呢
	*看这里:
	*&lt;buttons>
  *  &lt;name>OK,Cancel,Help&lt;/name>
  *  &lt;name>Yes,No,Cancel&lt;/name>
  *&lt;/buttons>
  */
  这时我们可以用：
  List buttons = config.getList("buttons.name");
  for(String button:buttons){
			System.out.println(button);
		}</pre>但是显示的是<br /><pre name="code" class="java">OK
Cancel
Help
Yes
No
Cancel</pre>我们想要的是<br /><pre name="code" class="java">OK,Cancel,Help
Yes,No,Cancel</pre>如果看过之前的文章就会知道，我们有一些设置没有设<br />也就是我们要禁用List分隔符delimiter.在AbstractionConfiguration<br />这个类中（XMLConfiguration的父类）有这个setDelimiterParsingDisabled方法可以<br />禁用分隔符。但是要在读取XML文件之前设置这个属性。所以代码改为<br /><pre name="code" class="java">XMLConfiguration config = new XMLConfiguration();
		config.setDelimiterParsingDisabled(true);
		config.setFileName("XMLtest.xml");
		config.load();
		List&lt;String> buttons = config.getList("buttons.name");
		for(String button:buttons){
			System.out.println(button);
		}</pre>		这就可以了。
          <br/>
          <span style="color:red;">
            <a href="http://wangxin0072000.javaeye.com/blog/186109#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 23 Apr 2008 23:27:18 +0800</pubDate>
        <link>http://wangxin0072000.javaeye.com/blog/186109</link>
        <guid>http://wangxin0072000.javaeye.com/blog/186109</guid>
      </item>
      <item>
        <title>Apache Commons-configuration 学习笔记2</title>
        <author>wangxin0072000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangxin0072000.javaeye.com">wangxin0072000</a>&nbsp;
          链接：<a href="http://wangxin0072000.javaeye.com/blog/186089" style="color:red;">http://wangxin0072000.javaeye.com/blog/186089</a>&nbsp;
          发表时间: 2008年04月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          如果你确定要解析的文件是properties<br />那么你完全可以使用<br /><pre name="code" class="java">PropertiesConfiguration config = new PropertiesConfiguration("tt/t.properties");  </pre> <br />代替<br /><pre name="code" class="java">Configuration config = new PropertiesConfiguration("tt/t.properties");</pre><br />这么写似乎不符合面向接口编程，但是它可以使用PropertiseConfiguration中特殊的方法。<br />比如，你如果你想修改propertise文件，那么可以这样：<br />		<pre name="code" class="java">config.setProperty("id", "sss");
		config.save();  </pre> <br />当然，你还可以使用isAutoSave这个方法：<br />		<pre name="code" class="java">config.isAutoSave();
		config.setProperty("tttt", "sss");</pre>properties这个类还支持文件的继承，比如在test.properties这个文件中有<br />		<pre name="code" class="java">include = test1.properties</pre>同时在classpath中又有test1.properties这个文件，那么PropertiesConfiguration类就可以<br />从test1.properties文件中读取信息。
          <br/>
          <span style="color:red;">
            <a href="http://wangxin0072000.javaeye.com/blog/186089#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 23 Apr 2008 22:26:10 +0800</pubDate>
        <link>http://wangxin0072000.javaeye.com/blog/186089</link>
        <guid>http://wangxin0072000.javaeye.com/blog/186089</guid>
      </item>
      <item>
        <title>Apache Commons-configuration 学习笔记</title>
        <author>wangxin0072000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangxin0072000.javaeye.com">wangxin0072000</a>&nbsp;
          链接：<a href="http://wangxin0072000.javaeye.com/blog/186009" style="color:red;">http://wangxin0072000.javaeye.com/blog/186009</a>&nbsp;
          发表时间: 2008年04月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Apache Commons-configuration 学习笔记<br />1 如果要使用configuration这个包，首先要保证使用JDK1.2以上，还要引入如下jar包<br /><ul><li>commons-beanutils</li><li>commons-lang</li><li>commons-logging</li><li>commons-collections</li><li>commons-digester</li><li>commons-codec</li><li>commons-jxpath</li></ul><br />2 commons-configuration最新的版本是1.5，最主要的作用是读取资源文件，每一种文件格式都有一个对应的类，如下<br /><ul><li>properties文件--PropertiesConfiguration类 </li><li>xml文件--XMLConfiguration </li><li>.ini文件--INIConfiguration </li><li>.plist文件--PropertyListConfiguration </li><li>还可以从JNDI中读取properties--JNDIConfiguration </li><li>当然还可以使用system的properties--SystemConfiguration </li><li>等等...</li></ul><br />3 上面已经对它做了基本的介绍，下面看看这个包怎么用吧<br />比如我们要读一个properties文件：在classpath下面建立目录te,之后在te下面建立<br />test.properties<br /><pre name="code" class="java">
ip=127.0.0.1
port=8080
id=111
application.name = Killer App
application.version = 1.6.2
application.title = ${application.name} ${application.version}
keys=cn,com,org,uk,edu,jp,hk</pre><br />java：<br /><pre name="code" class="java">//注意路径默认指向的是classpath的根目录
Configuration config = new PropertiesConfiguration("te/test.properties");
String ip=config.getString("ip");
int port=config.getInt("port");
String title=config.getString("application.title");
//再举个Configuration的比较实用的方法吧,在读取配置文件的时候有可能这个键值对应的值为空，那么在下面这个方法中
//你就可以为它设置默认值。比如下面这个例子就会在test.properties这个文件中找id的值，如果找不到就会给id设置值为123
//这样就保证了java的包装类不会返回空值。虽然功能很简单，但是很方便很实用。
Integer id=config.getInteger("id", new Integer(123));
//如果在properties 文件中有如下属性keys=cn,com,org,uk,edu,jp,hk
//可以实用下面的方式读取：
String[] keys1=config.getStringArray("keys");
	List keys2=config.getList("keys");</pre>首先要把这个文件读到程序中，我们可以用上面的类，所有的读取文件的类都 继承自AbstractConfiguration类，<br />而这个类实现了Configuration接口，如果我们只有比较简单的需求，那么可以直接向上转型为Configuration类型，如果向上<br />转型为AbstractConfiguration类，那么可以做一些配置工作。<br />比如刚刚看到的 keys=cn,com,org,uk,edu,jp,hk这个例子中如果是keys=cn/com/org/uk/edu/jp/hk<br />那么如果还按照原来的方式读取，读到的将是"cn/com/org/uk/edu/jp/hk"这个字符串，所以要先改变分割符之后在读<br />即<br /><pre name="code" class="java">AbstractConfiguration.setDefaultListDelimiter('/');
Configuration config = new PropertiesConfiguration("te/Vasp.properties");
String[] keys=config.getStringArray("keys");
List key2=config.getList("keys");</pre>如果你看它的源码，你会在 AbstractConfiguration这个类中找到：<br /><pre name="code" class="java">private static char defaultListDelimiter = ',';</pre>这下你明白了吧！
          <br/>
          <span style="color:red;">
            <a href="http://wangxin0072000.javaeye.com/blog/186009#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 23 Apr 2008 17:02:48 +0800</pubDate>
        <link>http://wangxin0072000.javaeye.com/blog/186009</link>
        <guid>http://wangxin0072000.javaeye.com/blog/186009</guid>
      </item>
      <item>
        <title>Ext核心代码分析之Function.createDelegate</title>
        <author>wangxin0072000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangxin0072000.javaeye.com">wangxin0072000</a>&nbsp;
          链接：<a href="http://wangxin0072000.javaeye.com/blog/147596" style="color:red;">http://wangxin0072000.javaeye.com/blog/147596</a>&nbsp;
          发表时间: 2007年12月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          前一段一直在用Ext，可是在扩展的时候总是遇到问题，索性看Ext的源码，但是发现有很多createDelegate这个方法、一直不解，最近经高人点播，了解一二。<br />所属类：Function<br />createDelegate( [Object obj], [Array args], [Boolean/Number appendArgs] ) :这个函数的目的是创建委托。<br />功能：什么都不多说了。看例子<br /><pre name="code" class="java">Ext.onReady(function(){
Ext.QuickTips.init()
var myclass=new Object();
//myclass并没有alert方法,我们也不打算为它写一个alert方法
//我们希望它和window.alert有一样的行为,所以我们委托window来做
myclass.alert=window.alert.createDelegate(window);
//我们还希望他有个更漂亮的show方法和Ext.MessageBox的show功能一样
//所以我们又得委托给Ext.MessageBox来做这事了
myclass.show=Ext.MessageBox.show.createDelegate(Ext.MessageBox);
//我们的myclass也有alert和show方法了
myclass.alert('alert1');
myclass.show({title:'title',msg:'message'});
});</pre><br />原来就这么简单。
          <br/>
          <span style="color:red;">
            <a href="http://wangxin0072000.javaeye.com/blog/147596#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 11 Dec 2007 16:24:32 +0800</pubDate>
        <link>http://wangxin0072000.javaeye.com/blog/147596</link>
        <guid>http://wangxin0072000.javaeye.com/blog/147596</guid>
      </item>
      <item>
        <title>Ext与JavaEE之我见(第一部显示层部分)</title>
        <author>wangxin0072000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangxin0072000.javaeye.com">wangxin0072000</a>&nbsp;
          链接：<a href="http://wangxin0072000.javaeye.com/blog/143484" style="color:red;">http://wangxin0072000.javaeye.com/blog/143484</a>&nbsp;
          发表时间: 2007年11月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本人最近分别用Ext1.1与Ext2.0开发了两个小规模的java web系统,主要目的是验证Ext作为J2EE前端显示层的可能性.我以前对YUI有一定了解,所以很快就能入手,在开发前对系统有一些构想(主要从Ext的例子与Ext官方论坛中其他同行的demo得到的灵感).当时对ajax并不了解,对js也使用不多.但是折服与Ext的UI效果,所以开始了对Ext的探索.主要有一下构想</p>
<p>1 尝试是否可以抛弃使用web前端框架比如struts等.原因是希望减少页面的跳转,改变原有的用户使用体验,另外是对本人对struts的不喜欢.</p>
<p>2 真正的实现OPOA的页面架构.原因时看到了Ext的tab效果.本人在之前开发的一个项目中得到了一个很大的教训:尽量不要让用户的页面有跳转.其原因是用户在跳转的时候往往希望看到之前页面的某些内容.所以如果以tab页的形式展现,就可以保留原有的页面内容.即当用户提交请求时让用户保留原有内容,同时在新的tab业中打开用户希望看到的内容.</p>
<p>3 使用layout布局,全局使用Ext的UI效果,提高系统显示层的视觉冲击力.</p>
<p>4 在看时,知道了一种技术是comet推的技术,希望可以通过Ext的某些控件模拟出这种效果.其实利用js原生语句也可实现部分效果.但是希望结合Ext UI,给用户更好的体验.</p>
<p>具体的实现方法与问题:</p>
<p>1针对第一点: 如果直接使用Servlet处理数据那么要写许多json对象与java对象转换的代码.但是可以使用json-lib减少部分工作,但是还是比较麻烦.所以在后期就全部专为使用DWRproxy.但是Ext.data.DWRproxy(本人是通过论坛找到的)的使用很难找到比较详细的样例,只能根据代码便用边体会.总之是以个很好的解决方案.个人感觉最好还是根据需求结合Servlet与DWR联合使用比较好.</p>
<p>2在这我遇到了一些问题，最初在center layout中嵌套tabpanel时总是发现有问题。之后改为使用多个center layout contentpanel时，解决了这个问题。但是在tab中嵌套grid的时候发现grid不能自动识别cm，所以必须为每一个视图配置一个cm，所以本人想扩展一个可以自动从代理数据源中识别出cm的组件，这样前端显示层的数据展现就可以不必考虑业务逻辑了。但是可能会丧失一些功能，因为很难自定义每个字段的renderer句柄函数。最后说明：根据本人的经验，目前Ext还不太适合开发单frame的OPOA系统，所以最好在tab中再嵌套其他页面，这样会比较易于开发，但是frame中嵌套的页面与外部的框架页面的交互又不太好。所以要根据具体需求选择具体方法。</p>
<p>3 在2.0中变化最大的就是layout部分了，记得在1.1时为了实现outlookbar的效果，我不得不在官方论坛找ux.accordion组件。而在新版本中有n多种layout的效果可供选择，而且嵌套也非常方便。另外提一句。在1.1版本中我们扩展Ext组件往往是先建立要扩展的类，之后这个类继承Objectable这个对象。而在新版本中有更好的方法，大家可以根据它的例子好好研究一下，你就会发现原来js还是真的很深奥</p>
<p>4 针对设想第四点：在于服务器的交互方面还是那两种方式Ext.data.Connection这个对象，或者使用DWR。没有什么新东西。友情提示：Ext组件中有很多控件本身提供了Ajax的连接接口比如Ext.form.Form中的submit方法中config中就有sccuss等句柄方法暴露给开发者，使用很方便。但是缺点也显而易见。就是不灵活。所以笔者建议大家如果有特殊需求时可以在button的电击事件或提交事件中使用Ext.data.Connection类或者使用Ext.Ajax.request方法（注意：这两者的区别是Ext.data.connection对象可以创建而Ext.Ajax对象不能创建，而只能使用其中的方法，因为它是单例的。具体请看Ext的api）。</p>
<p>其他心得体会会陆续提供，欢迎大家批评指正。</p>
          <br/>
          <span style="color:red;">
            <a href="http://wangxin0072000.javaeye.com/blog/143484#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 25 Nov 2007 23:36:00 +0800</pubDate>
        <link>http://wangxin0072000.javaeye.com/blog/143484</link>
        <guid>http://wangxin0072000.javaeye.com/blog/143484</guid>
      </item>
      <item>
        <title>Yahoo! UI（YUI） 学习笔记 之 EVENT and DOM</title>
        <author>wangxin0072000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangxin0072000.javaeye.com">wangxin0072000</a>&nbsp;
          链接：<a href="http://wangxin0072000.javaeye.com/blog/111274" style="color:red;">http://wangxin0072000.javaeye.com/blog/111274</a>&nbsp;
          发表时间: 2007年08月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp; 小弟最近学习javascript,继而学习了一个js类库---YUI。</p>
<p>先总体说一下YUI的类库。YUI是一个基于事件和DOM的库。所以要学习它必须首先学习EVENT和DOM两个主要的组件。</p>
<p>1.event 库</p>
<p>yui捕捉事件是依赖于event组件。而几乎所有的web操作都是基于事件的。所以要想使用yui最好先看event库。</p>
<p>首先从一个简单的例子开始。我们的需求是：点击一个div区域。返回一个对话框显示HelloWorld。根据需求我们发现这个需求很简单，就是处理一个click事件。处理分为一下3步：</p>
<p>1导入依赖包</p>
<div class="code_title">
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-c">
    <li class="alt"><span><span>&lt;script&nbsp;type=</span><span class="string">&quot;text/javascript&quot;</span><span>&nbsp;src=</span><span class="string">&quot;../../build/yahoo/yahoo.js&quot;</span><span>&gt;&lt;/script&gt; &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&lt;script&nbsp;type=</span><span class="string">&quot;text/javascript&quot;</span><span>&nbsp;src=</span><span class="string">&quot;../../build/event/event.js&quot;</span><span>&gt;&lt;/script&gt; &nbsp;&nbsp;</span></li>
</ol>
</div>
</div>
<p>2编写响应事件的function</p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-c">
    <li class="alt"><span><span class="comment">//A&nbsp;function&nbsp;that&nbsp;pops&nbsp;up&nbsp;a&nbsp;&quot;Hello&nbsp;World&quot;&nbsp;alert: </span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="keyword">var</span><span>&nbsp;helloWorld&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(e)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">&quot;Hello&nbsp;World!&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class=""><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>3处理事件(div 区域的id是container)</p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-c">
    <li class="alt"><span><span><!--其中container 就是所要响应事件的那个div区域 -->&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>YAHOO.util.Event.addListener(</span><span class="string">&quot;container&quot;</span><span>,&nbsp;</span><span class="string">&quot;click&quot;</span><span>,&nbsp;helloWorld); &nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;</p>
<p>使用这个代码就可以实现了事件响应，但是假如我希望在触发这个事件之前先判断这个区域是否包含名为test的class呢，比如</p>
<p>这个div为：</p>
<div class="code_title">
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-c">
    <li class="alt"><span><span>&lt;div&nbsp;</span><span class="string">&quot;container&quot;</span><span>&nbsp;</span><span class="keyword">class</span><span>=</span><span class="string">&quot;yui&nbsp;test&quot;</span><span>&gt;&nbsp;&nbsp;&lt;/div&gt;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</div>
<span><span>
<p>&nbsp;这时我们就要向web中导入dom组件了</p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-c">
    <li class="alt"><span><span>&lt;script&nbsp;type=</span><span class="string">&quot;text/javascript&quot;</span><span>&nbsp;src=</span><span class="string">&quot;../../build/dom/dom.js&quot;</span><span>&gt;&lt;/script&gt; &nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>之后再修改click的响应function</p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;helloWorld&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(e)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="keyword">if</span><span>(YAHOO.util.Dom.hasClass('container',&nbsp;'test'))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>alert(</span><span class="string">&quot;Hello&nbsp;World!&quot;</span><span>);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
<div class="code_title"></div>
<div></div>
<p>&nbsp;这样就基本实现了我们的功能。也基本了解了yui的处理机制。它的处理机制就是根据你的不同需求调用不同的组件，在每个组件中都有一个全局的对象:YAHOO.util.XXX 其中XXX就是你调用的组件，而组件中的方法我们可以从帮助文件中方便的获得。</p>
</span></span>
          <br/>
          <span style="color:red;">
            <a href="http://wangxin0072000.javaeye.com/blog/111274#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 11 Aug 2007 19:14:00 +0800</pubDate>
        <link>http://wangxin0072000.javaeye.com/blog/111274</link>
        <guid>http://wangxin0072000.javaeye.com/blog/111274</guid>
      </item>
      <item>
        <title>关于WEB标准</title>
        <author>wangxin0072000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangxin0072000.javaeye.com">wangxin0072000</a>&nbsp;
          链接：<a href="http://wangxin0072000.javaeye.com/blog/108552" style="color:red;">http://wangxin0072000.javaeye.com/blog/108552</a>&nbsp;
          发表时间: 2007年08月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp; 前几天有个同学问我什么是web标准，我立刻懵了，所以马上把它加在blog里，防止再有人故意刁难。</p>
<p>（出自<font face="Arial"><a href="http://www.w3cn.org/what/index.html">http://www.w3cn.org/what/index.html</a></font>）</p>
<h3>WEB标准</h3>
<p>WEB标准不是某一个标准，而是一系列标准的集合。网页主要由三部分组成：结构（Structure）、表现（Presentation）和行为（Behavior）。对应的标准也分三方面：结构化标准语言主要包括XHTML和XML，表现标准语言主要包括CSS，行为标准主要包括对象模型（如W3C DOM）、ECMAScript等。这些标准大部分由W3C起草和发布，也有一些是其他标准组织制订的标准，比如ECMA（European Computer Manufacturers Association）的ECMAScript标准。我们来简单了解一下这些标准：</p>
<h4>1．结构标准语言</h4>
<p>（1）XML </p>
<p>XML是The Extensible Markup Language(可扩展标识语言)的简写。目前推荐遵循的是W3C于2000年10月6日发布的XML1.0，参考（<a href="http://www.w3.org/TR/2000/REC-XML-20001006" title="链接到w3.org网站" rel="external">www.w3.org/TR/2000/REC-XML-20001006</a>）。和HTML一样，XML同样来源于SGML，但XML是一种能定义其他语言的语。XML最初设计的目的是弥补HTML的不足，以强大的扩展性满足网络信息发布的需要，后来逐渐用于网络数据的转换和描述。关于XML的好处和技术规范细节这里就不多说了，网上有很多资料，也有很多书籍可以参考。</p>
<p>（2）XHTML </p>
<p>XHTML是The Extensible HyperText Markup Language可扩展标识语言的缩写。目前推荐遵循的是W3C于2000年1月26日推荐XML1.0（参考http://www.w3.org/TR/xhtml1）。XML虽然数据转换能力强大，完全可以替代HTML，但面对成千上万已有的站点，直接采用XML还为时过早。因此，我们在HTML4.0的基础上，用XML的规则对其进行扩展，得到了XHTML。简单的说，建立XHTML的目的就是实现HTML向XML的过渡。</p>
<h4>2. 表现标准语言</h4>
<p>CSS是Cascading Style Sheets层叠样式表的缩写。目前推荐遵循的是W3C于1998年5月12日推荐CSS2（参考<a href="http://www.w3.org/TR/CSS2/" title="链接到w3.org网站" rel="external">http://www.w3.org/TR/CSS2/</a>）。W3C创建CSS标准的目的是以CSS取代HTML表格式布局、帧和其他表现的语言。纯CSS布局与结构式XHTML相结合能帮助设计师分离外观与结构，使站点的访问及维护更加容易。</p>
<h4>3.行为标准</h4>
<p>（1）DOM</p>
<p>DOM是Document Object Model文档对象模型的缩写。根据W3C DOM规范（<a href="http://www.w3.org/DOM/" title="链接到w3.org网站" rel="external">http://www.w3.org/DOM/</a>），DOM是一种与浏览器，平台，语言的接口，使得你可以访问页面其他的标准组件。简单理解，DOM解决了Netscaped的Javascript和Microsoft的Jscript之间的冲突，给予web设计师和开发者一个标准的方法，让他们来访问他们站点中的数据、脚本和表现层对像。</p>
<p>(2) ECMAScript</p>
<p>ECMAScript是ECMA(European Computer Manufacturers Association)制定的标准脚本语言（JAVAScript）。目前推荐遵循的是ECMAScript 262（<a href="http://www.ecma.ch/ecma1/STAND/ECMA-262.HTM" title="链接到ecma网站" rel="external">http://www.ecma.ch/ecma1/STAND/ECMA-262.HTM</a>）。</p>
          <br/>
          <span style="color:red;">
            <a href="http://wangxin0072000.javaeye.com/blog/108552#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 03 Aug 2007 13:34:12 +0800</pubDate>
        <link>http://wangxin0072000.javaeye.com/blog/108552</link>
        <guid>http://wangxin0072000.javaeye.com/blog/108552</guid>
      </item>
      <item>
        <title>java io 类图</title>
        <author>wangxin0072000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangxin0072000.javaeye.com">wangxin0072000</a>&nbsp;
          链接：<a href="http://wangxin0072000.javaeye.com/blog/106483" style="color:red;">http://wangxin0072000.javaeye.com/blog/106483</a>&nbsp;
          发表时间: 2007年07月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp; 以下是java io 类图， 出自《java核心技术》。有了它，我就不再为io操作而发愁了。</p>
<p><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/fenglian521/javaio2.bmp" height="851" alt="" style="WIDTH: 758px; HEIGHT: 717px" width="906" /></p>
          <br/>
          <span style="color:red;">
            <a href="http://wangxin0072000.javaeye.com/blog/106483#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 28 Jul 2007 23:57:42 +0800</pubDate>
        <link>http://wangxin0072000.javaeye.com/blog/106483</link>
        <guid>http://wangxin0072000.javaeye.com/blog/106483</guid>
      </item>
      <item>
        <title>Struts内置Action类</title>
        <author>wangxin0072000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangxin0072000.javaeye.com">wangxin0072000</a>&nbsp;
          链接：<a href="http://wangxin0072000.javaeye.com/blog/105307" style="color:red;">http://wangxin0072000.javaeye.com/blog/105307</a>&nbsp;
          发表时间: 2007年07月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp; 有一些常用的Action类Struts 已经帮你写好了，如果有不知道的可以来这里看看。</p>
<p>1 org.apache.struts.actions.ForwardAction</p>
<p>forwardAction的特点是利用控制器转发请求。 这样做比直接用链接转向的好处是控制器能够创建和这个表单对应的ActionForm对象，把用户输入表单数据组装到ActionForm中。</p>
<p>具体操作也很简单 比如：</p>
<p>页面：</p>
<p>
<html:link page="/forword.do">
</html:link></p>
<p>
<html:link page="/forward.do">
</html:link></p>
<p>html:link page=&quot;/forword.do&quot;</p>
<p>struts-config.xml 的mapping：</p>
<p>action path=&quot;/forword&quot; <strong>parameter=&quot;next.jsp&quot; type=org.apache.struts.actions.ForwordAction</strong></p>
<p><action path="/forward"></action><action parameter="next.jsp" p="" type="org.apache.struts.actions.ForwardAction" path="/forword"></action></p>
<p>scope=&quot;request&quot; name=&quot;nextActionForm&quot; validate=&quot;ture&quot; input=&quot;/firstjsp.jsp&quot;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>当点击页面链接之后，ActionServlet就把请求转发给ForwardAction了，ForwardAction再把请求转发给parameter元素中的next,jsp 页面。</p>
<p>2&nbsp; org.apache.struts.actions.IncludeAction</p>
<p>这个类的功能其实没有太多的优势所以笔者不推荐使用</p>
<p>3&nbsp;&nbsp;org.apache.struts.actions.DispatchAction</p>
<p>这个类的用途是实现了按业务实体划分类，比如以前想要实现对一个Object进行update与insert操作，实际是建立两个操作类，而现在可以将这些类合并，并且将相同的部分提出来，简化了编程。</p>
<p>4 &nbsp;org.apache.struts.actions.LookupDispatchAction</p>
<p>这个类是笔者重点推荐的类。这个类最大的特点可以在一个表单中轻松实现多个Submit按钮。</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://wangxin0072000.javaeye.com/blog/105307#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 25 Jul 2007 11:11:00 +0800</pubDate>
        <link>http://wangxin0072000.javaeye.com/blog/105307</link>
        <guid>http://wangxin0072000.javaeye.com/blog/105307</guid>
      </item>
  </channel>
</rss>