<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>wiwolf</title>
    <description></description>
    <link>http://wiwolf.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>一个Spring 2.5 版本的Spring MVC应用 Hello world! </title>
        <author>wiwolf</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wiwolf.javaeye.com">wiwolf</a>&nbsp;
          链接：<a href="http://wiwolf.javaeye.com/blog/162525" style="color:red;">http://wiwolf.javaeye.com/blog/162525</a>&nbsp;
          发表时间: 2008年02月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          由于Spring 2.5全面支持annotation方式，因此大大减少了XML的配置，提高了程序代码的维护和生产效率。下面是我做的一个简单的Hello World!，使用Spring mvc。所有配置全部用annotation，大家可以看看是多么的简单。<br /><br />首先还是配置好web.xml文件，主要添加的代码有：<br /><pre name="code" class="java">
&lt;listener>
		&lt;listener-class>
			org.springframework.web.util.Log4jConfigListener
		&lt;/listener-class>
	&lt;/listener>

	&lt;listener>
		&lt;listener-class>
			org.springframework.web.context.ContextLoaderListener
		&lt;/listener-class>
	&lt;/listener>

	&lt;welcome-file-list>
		&lt;welcome-file>index.jsp&lt;/welcome-file>
	&lt;/welcome-file-list>

	&lt;servlet>
		&lt;servlet-name>sim&lt;/servlet-name>
		&lt;servlet-class>
			org.springframework.web.servlet.DispatcherServlet
		&lt;/servlet-class>
	&lt;/servlet>

	&lt;servlet-mapping>
		&lt;servlet-name>sim&lt;/servlet-name>
		&lt;url-pattern>*.html&lt;/url-pattern>
	&lt;/servlet-mapping>
</pre><br /><br />以上的配置和以前是一样的，所以没什么好说的。<br />然后接着我们建立一个applicationContext.xml，作为SPRING的配置文件。以往版本里面SPRING的这个配置文件往往随着程序的增加而越来越臃肿，就我本人来说就十分不喜欢这种方式。因为程序员需要花费大量的时间去管理和维护自己的XML文件，大大的减少了程序员的生产效率。并且由于大量的XML文件，使得新加入团队的人员学习成本的增加，往往造成了很多工时上的浪费。终于，2.5版本开始支持了annotation，使得这个问题可以得到一定的解决。那么好，下面我们来看看现在的配置文件。<br /><pre name="code" class="xml">
&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd">
	&lt;context:annotation-config />
&lt;/beans>
</pre><br />很好，很强大，简单一句话搞定。<br />搞定了IOC的配置文件，那么我们需要一个MVC的配置XML，如果没有annotation，那么这个文件一样会越来越臃肿。然后现在呢？<br />sim-servlet.xml<br /><pre name="code" class="xml">
&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
		xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
				http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
	
	&lt;!--
		- The controllers are autodetected POJOs labeled with the @Controller annotation.
	-->
	&lt;context:component-scan base-package="com.sofmit.sim.wr.web"/>
	
	&lt;!--
		- This bean configures the 'prefix' and 'suffix' properties of 
		- InternalResourceViewResolver, which resolves logical view names 
		- returned by Controllers. For example, a logical view name of "vets" 
		- will be mapped to "/WEB-INF/jsp/vets.jsp".
	-->
	&lt;bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver"
		p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
&lt;/beans>
</pre><br />同样十分简单，在这里只需要指定好CONTROLLER的包就可以了。<br /><br />现在配置已经全部OK了，是不是感觉很轻松？哈哈，原来annotation真是如此美妙，为我们节约了大量的配置XML的时间。<br />下面就只需要一个controller和一个JSP页面就可以完成我们这儿APPLICATION了，那么我们继续。<br />首先就是controller的定义。<br /><pre name="code" class="java">
/**
 * com.sofmit.sim.wr.web
 * Hello.java
 */
package com.sofmit.sim.wr.web;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * @author TianYe
 * 2008-2-14
 */
@Controller
@RequestMapping("/hello.html")
public class Hello {

	@RequestMapping(method = RequestMethod.GET)
	public String sayHello(Model model){
		model.addAttribute("say","hello");
		return "test";
	}
}
</pre><br />在这里面，使用@Controller定义此类是一个Spring MVC的controller。然后定义好访问的路径"/hello.html"。在方法上面定义好通过GET方式访问时调用我们的sayHello方法，在方法中定义好要传给JSP页面的变量"say"以及内容"hello"，然后定位到页面"test"。<br />一个简单的controller就实现了。<br /><br />剩下的就没有什么技术含量了，就是一个简单的JSP页面。<br /><pre name="code" class="java">
&lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
&lt;h2>Test Page say:${say}&lt;/h2>
</pre><br /><br />然后我们跑跑程序，看看页面，耶！！结果出来了！真爽！<br /><br />作者：WIWolf 2008-2-15
          <br/>
          <span style="color:red;">
            <a href="http://wiwolf.javaeye.com/blog/162525#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 15 Feb 2008 17:01:25 +0800</pubDate>
        <link>http://wiwolf.javaeye.com/blog/162525</link>
        <guid>http://wiwolf.javaeye.com/blog/162525</guid>
      </item>
      <item>
        <title>Spring2.5全面支持JEE5的实现</title>
        <author>wiwolf</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wiwolf.javaeye.com">wiwolf</a>&nbsp;
          链接：<a href="http://wiwolf.javaeye.com/blog/162517" style="color:red;">http://wiwolf.javaeye.com/blog/162517</a>&nbsp;
          发表时间: 2008年02月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp; Spring 2.5 发布已经有一段时间了，一直没有时间研究一下，只是听说有很多方面的提升。有一点十分重要的就是全面支持JEE5风格的annotation。这一两天没多少事，研究了一下，感觉使用annotation，在很多地方方便了不少。</p><p>首先是BEAN的配置，以前需要些XML，现在只需要定义一句话就可以！</p><pre name="code" class="xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
       xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
       xmlns:context=&quot;http://www.springframework.org/schema/context&quot;
       xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd&quot;&gt;
               
     &lt;context:annotation-config/&gt;
     
&lt;/beans&gt;</pre><p>然后在BEAN里面使用@Autowired 声明植入点，只要接口一致，那么Spring就可以自动给你注入需要的实现类了。</p><pre name="code" class="java">private MovieFinder movieFinder;

    @Autowired
    public void setMovieFinder(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }
</pre><p>&nbsp;</p><p>&nbsp;</p><p>真是简单了很多。</p>
          <br/>
          <span style="color:red;">
            <a href="http://wiwolf.javaeye.com/blog/162517#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 15 Feb 2008 16:37:09 +0800</pubDate>
        <link>http://wiwolf.javaeye.com/blog/162517</link>
        <guid>http://wiwolf.javaeye.com/blog/162517</guid>
      </item>
      <item>
        <title>RAILS网站上线了</title>
        <author>wiwolf</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wiwolf.javaeye.com">wiwolf</a>&nbsp;
          链接：<a href="http://wiwolf.javaeye.com/blog/120758" style="color:red;">http://wiwolf.javaeye.com/blog/120758</a>&nbsp;
          发表时间: 2007年09月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>我的RAILS网站终于上线了，欢迎大家来看看</p>
<p><font face="Arial">WEB2.0网站&ldquo;我友友社交网络&rdquo;(www.woygo.com)</font></p>
          <br/>
          <span style="color:red;">
            <a href="http://wiwolf.javaeye.com/blog/120758#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 05 Sep 2007 20:44:49 +0800</pubDate>
        <link>http://wiwolf.javaeye.com/blog/120758</link>
        <guid>http://wiwolf.javaeye.com/blog/120758</guid>
      </item>
      <item>
        <title>第一部分：核心引擎</title>
        <author>wiwolf</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wiwolf.javaeye.com">wiwolf</a>&nbsp;
          链接：<a href="http://wiwolf.javaeye.com/blog/92490" style="color:red;">http://wiwolf.javaeye.com/blog/92490</a>&nbsp;
          发表时间: 2007年07月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>核心引擎负责处理所有的数据和状态逻辑，此核心可以完全独立于Rails框架而自成体系。</p>
<p>主引擎：</p>
<div class="code_title">ruby 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-rb">
    <li class="alt"><span><span class="comment">#2007-5-30&nbsp;wiwolf@126.com </span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="comment">#&nbsp;Homepage&nbsp;&nbsp;http://eve.woygo.com </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">#&nbsp;Support&nbsp;http://rails.woygo.com </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="comment">#Copyright&nbsp;(c)&nbsp;2007&nbsp;Ye&nbsp;Tian </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">#&nbsp;Licensed&nbsp;under&nbsp;the&nbsp;Apache&nbsp;License,&nbsp;Version&nbsp;2.0&nbsp;(the&nbsp;&quot;License&quot;); </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="comment">#&nbsp;you&nbsp;may&nbsp;not&nbsp;use&nbsp;this&nbsp;file&nbsp;except&nbsp;in&nbsp;compliance&nbsp;with&nbsp;the&nbsp;License. </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">#&nbsp;You&nbsp;may&nbsp;obtain&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;License&nbsp;at </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="comment">#&nbsp; </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.apache.org/licenses/LICENSE-2.0 </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="comment">#&nbsp; </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">#&nbsp;Unless&nbsp;required&nbsp;by&nbsp;applicable&nbsp;law&nbsp;or&nbsp;agreed&nbsp;to&nbsp;in&nbsp;writing,&nbsp;software </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="comment">#&nbsp;distributed&nbsp;under&nbsp;the&nbsp;License&nbsp;is&nbsp;distributed&nbsp;on&nbsp;an&nbsp;&quot;AS&nbsp;IS&quot;&nbsp;BASIS, </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">#&nbsp;WITHOUT&nbsp;WARRANTIES&nbsp;OR&nbsp;CONDITIONS&nbsp;OF&nbsp;ANY&nbsp;KIND,&nbsp;either&nbsp;express&nbsp;or&nbsp;implied. </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="comment">#&nbsp;See&nbsp;the&nbsp;License&nbsp;for&nbsp;the&nbsp;specific&nbsp;language&nbsp;governing&nbsp;permissions&nbsp;and </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">#&nbsp;limitations&nbsp;under&nbsp;the&nbsp;License. </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">#This&nbsp;is&nbsp;base&nbsp;for&nbsp;engine. </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>require&nbsp;</span><span class="builtin">File</span><span>.join(</span><span class="builtin">File</span><span>.dirname(__FILE__),'logger') &nbsp;&nbsp;</span> </li>
    <li class=""><span>require&nbsp;</span><span class="builtin">File</span><span>.join(</span><span class="builtin">File</span><span>.dirname(__FILE__),'online') &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>require&nbsp;</span><span class="builtin">File</span><span>.join(</span><span class="builtin">File</span><span>.dirname(__FILE__),'eve') &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">class</span><span>&nbsp;Eden &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">#Include&nbsp;log&nbsp;module </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;include&nbsp;EdenLogger &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comment">#Include&nbsp;onlie&nbsp;module </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;include&nbsp;OnlineModule &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">#Include&nbsp;eve&nbsp;module </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;include&nbsp;Eve &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comment">#initialize </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;private_class_method&nbsp;</span><span class="symbol">:new</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;@</span><span class="variable">@eden</span><span>&nbsp;=&nbsp;</span><span class="keyword">nil</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">def</span><span>&nbsp;Eden.create &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;@</span><span class="variable">@eden</span><span>&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;</span><span class="keyword">unless</span><span>&nbsp;@</span><span class="variable">@eden</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;@</span><span class="variable">@eden</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">end</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">def</span><span>&nbsp;initialize &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;engine_config&nbsp;=&nbsp;YAML.load_file('lib/eden/config/config.yml') &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">#initialize&nbsp;logger </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;init_logger_module&nbsp;engine_config['logger_file'],engine_config['logger_file_dir'],engine_config['logger_level'] &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">#initialize&nbsp;eve </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;init_eve_module &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">#start&nbsp;maintenance&nbsp;thread </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;init_online_module &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="variable">@logger</span><span>.info&nbsp;'Eden&nbsp;was&nbsp;initialized.' &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">end</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">end</span><span>&nbsp;&nbsp;</span> </li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://wiwolf.javaeye.com/blog/92490#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 12 Jul 2007 19:17:00 +0800</pubDate>
        <link>http://wiwolf.javaeye.com/blog/92490</link>
        <guid>http://wiwolf.javaeye.com/blog/92490</guid>
      </item>
      <item>
        <title>发布即时通讯系统的所有代码</title>
        <author>wiwolf</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wiwolf.javaeye.com">wiwolf</a>&nbsp;
          链接：<a href="http://wiwolf.javaeye.com/blog/100487" style="color:red;">http://wiwolf.javaeye.com/blog/100487</a>&nbsp;
          发表时间: 2007年07月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>最近在做一个网站，没时间继续开发，现在先把所有代码发布出来，大家一起看看。</p>
          <br/>
          <span style="color:red;">
            <a href="http://wiwolf.javaeye.com/blog/100487#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 12 Jul 2007 19:17:00 +0800</pubDate>
        <link>http://wiwolf.javaeye.com/blog/100487</link>
        <guid>http://wiwolf.javaeye.com/blog/100487</guid>
      </item>
      <item>
        <title>ROR的AJAX心得</title>
        <author>wiwolf</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wiwolf.javaeye.com">wiwolf</a>&nbsp;
          链接：<a href="http://wiwolf.javaeye.com/blog/100488" style="color:red;">http://wiwolf.javaeye.com/blog/100488</a>&nbsp;
          发表时间: 2007年07月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">ROR的AJAX心得</font></p>
<p><font face="Arial">最近用ROR做了一个网站(http://www.bladearena.com)，全部采用了AJAX来处理数据。在这个<br />
过程中积累了一些心得，在这里总结一下。一方面可以与大家分享，另外也让自己不要那么快忘记了：)</font></p>
<p><font face="Arial">首先还是要赞一下ROR，感觉使用起来入行云流水一般，一发不可收拾。在编码的时候经常一上去就觉得<br />
这个怎么简单，那个怎么那样容易。自己的想法往往一出现，就可以马上实现。似乎在一夜之间编程变成了<br />
一件简单而愉快的事情。呵呵，感觉虽然有点夸张，但实际上也差不多就是。</font></p>
<p><font face="Arial">说了那么多，还是来说说具体的一些心得体会吧。<br />
1.关于页面刷新<br />
&nbsp;&nbsp;&nbsp; AJAX一个重要的用户体验就是页面不会刷新。所以在程序中如果要更新页面上的数据，就只能更新页面某一<br />
部分，而要保持其它部分不动。要怎么实现呢？这就需要把页面分成很多的小块，具体到ROR上就是把页面分成<br />
很多个.rhtml模板。根据我的经验，在一个功能中需要3样东西。一个ACTION，一个.rjs,一个.rhtml。<br />
&nbsp;&nbsp;&nbsp; (1)ACTION用来处理逻辑，分析提取数据，然后把需要的数据作为类变量(例如：@user)公开出来。<br />
&nbsp;&nbsp;&nbsp; (2).rjs用来处理页面表现方式。这里面一般用模板替换比较方便。<br />
&nbsp;&nbsp;&nbsp; （例如：page[:user].replace_html :partial=&gt;'ui/user')<br />
&nbsp;&nbsp;&nbsp; (3).rhtml用来表现数据。把ACTION公开的数据用HTML方式表示出来。<br />
&nbsp;&nbsp;&nbsp; (例如：用户：<!--user.nam-->)<br />
&nbsp;&nbsp;&nbsp; 如上所述，在编程的时候就把很多小的功能通过以上方式一组一组的完成好，然后把它们全部一起镶嵌到<br />
一个页面里，这样就可以很方便的实现了我们的整个系统。</font></p>
<p><font face="Arial">2.关于数据传输的问题<br />
&nbsp;&nbsp;&nbsp; 大家都知道AJAX也是通过HTTP传输数据的，所以数据量的大小也直接决定了页面反应的快慢。因此，在设计<br />
页面的时候就应该尽可能小的划分各个区块，这样在更新数据的时候，只把需要更新的区块更新，不需要的千万不要<br />
多加。</font></p>
<p><font face="Arial">3.div+css<br />
&nbsp;&nbsp;&nbsp; 这要提一下DIV+CSS，它的主要思想是把网页所要表现的内容和风格互相分离。这十分符合AJAX网页<br />
的设计风格。把需要更新的模块分成不同的DIV,让后通过ID进行区分，这样就可以很方便的用我上面说的<br />
方式来处理数据。</font></p>
<p><font face="Arial">4.AJAX分页<br />
&nbsp;&nbsp;&nbsp; 虽然ROR提供了分页，但很明显的是它不是AJAX的使用用的。所以这里就需要自己来做个，就我使用的方法来说。<br />
分成2个部分，数据的显示和分页按钮。<br />
&nbsp;&nbsp;&nbsp; (1)数据显示就是一个.rhtml，在这里我设置了一个SESSION[:page]变量来存放页码，取数据的时候就通过<br />
这个:page到数据库里面去取，然后把结果显示出来。这个模板很简单，就是一个MODEL的FIND，然后EACH出来就可以<br />
了，其它根本不用管。<br />
&nbsp;&nbsp;&nbsp; (2)分页按钮对应一个ACTION，这个ACTION的主要作用就处理:page变量，比如增加一页就加1，跳转到第5页<br />
就直接设置成5.然后就是对应这个ACTION的.rjs。这个.rjs其实也就很简单了，就是我上面所说的替换一下数据显示<br />
模板就可以了。这样数据显示模板就会根据新的:page去查询新页面的数据。<br />
&nbsp;&nbsp;&nbsp; 一个AJAX分页也就这样实现了。<br />
&nbsp;&nbsp;&nbsp; <br />
(这篇文章由风北狼完成于2007-7-11)</font></p>
          <br/>
          <span style="color:red;">
            <a href="http://wiwolf.javaeye.com/blog/100488#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 12 Jul 2007 19:17:00 +0800</pubDate>
        <link>http://wiwolf.javaeye.com/blog/100488</link>
        <guid>http://wiwolf.javaeye.com/blog/100488</guid>
      </item>
      <item>
        <title>logger.rb 一个Logger代理器</title>
        <author>wiwolf</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wiwolf.javaeye.com">wiwolf</a>&nbsp;
          链接：<a href="http://wiwolf.javaeye.com/blog/92862" style="color:red;">http://wiwolf.javaeye.com/blog/92862</a>&nbsp;
          发表时间: 2007年06月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="code_title">ruby 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-rb">
    <li class="alt"><span><span class="comment">#Logger&nbsp;module&nbsp; </span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="comment">#&nbsp;Homepage&nbsp;&nbsp;http://eve.woygo.com </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">#&nbsp;Support&nbsp;http://rails.woygo.com </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comment">#Copyright&nbsp;(c)&nbsp;2007&nbsp;Ye&nbsp;Tian </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">#&nbsp;Licensed&nbsp;under&nbsp;the&nbsp;Apache&nbsp;License,&nbsp;Version&nbsp;2.0&nbsp;(the&nbsp;&quot;License&quot;); </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comment">#&nbsp;you&nbsp;may&nbsp;not&nbsp;use&nbsp;this&nbsp;file&nbsp;except&nbsp;in&nbsp;compliance&nbsp;with&nbsp;the&nbsp;License. </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">#&nbsp;You&nbsp;may&nbsp;obtain&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;License&nbsp;at </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comment">#&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.apache.org/licenses/LICENSE-2.0 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comment">#&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">#&nbsp;Unless&nbsp;required&nbsp;by&nbsp;applicable&nbsp;law&nbsp;or&nbsp;agreed&nbsp;to&nbsp;in&nbsp;writing,&nbsp;software </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comment">#&nbsp;distributed&nbsp;under&nbsp;the&nbsp;License&nbsp;is&nbsp;distributed&nbsp;on&nbsp;an&nbsp;&quot;AS&nbsp;IS&quot;&nbsp;BASIS, </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">#&nbsp;WITHOUT&nbsp;WARRANTIES&nbsp;OR&nbsp;CONDITIONS&nbsp;OF&nbsp;ANY&nbsp;KIND,&nbsp;either&nbsp;express&nbsp;or&nbsp;implied. </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comment">#&nbsp;See&nbsp;the&nbsp;License&nbsp;for&nbsp;the&nbsp;specific&nbsp;language&nbsp;governing&nbsp;permissions&nbsp;and </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">#&nbsp;limitations&nbsp;under&nbsp;the&nbsp;License. </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">#2007-4-20&nbsp;wiwolf@126.com </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>require&nbsp;'logger' &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comment">#class&nbsp;Logger </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">#&nbsp;&nbsp;private </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comment">#&nbsp;&nbsp;#&nbsp;customize&nbsp;the&nbsp;format&nbsp;of&nbsp;it's&nbsp;logs. </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">#&nbsp;&nbsp;def&nbsp;format_message(*args) </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comment">#&nbsp;&nbsp;&nbsp;&nbsp;old_format_message(*args) </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">#&nbsp;&nbsp;end </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comment">#end </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">module</span><span>&nbsp;EdenLogger &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">#Initilize&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">def</span><span>&nbsp;init_logger_module(logger_file,logger_file_dir,logger_level) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;logger_file&nbsp;==&nbsp;'1' &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="variable">@logger</span><span>&nbsp;=&nbsp;Logger.</span><span class="keyword">new</span><span>(logger_file_dir&nbsp;+&nbsp;'helium.log',&nbsp;10&nbsp;,&nbsp;1024000) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="variable">@logger</span><span>&nbsp;=&nbsp;Logger.</span><span class="keyword">new</span><span>(STDOUT) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">end</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="variable">@logger</span><span>.datetime_format&nbsp;=&nbsp;</span><span class="string">&quot;%Y-%m-%d&nbsp;%H:%M:%S&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span>&nbsp;logger_level &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">when</span><span>&nbsp;'INFO' &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="variable">@logger</span><span>.level&nbsp;=&nbsp;Logger::INFO &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">when</span><span>&nbsp;'DEBUG' &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="variable">@logger</span><span>.level&nbsp;=&nbsp;Logger::DEBUG &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">when</span><span>&nbsp;'WARN' &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="variable">@logger</span><span>.level&nbsp;=&nbsp;Logger::WARN &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">when</span><span>&nbsp;'ERROR' &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="variable">@logger</span><span>.level&nbsp;=&nbsp;Logger::ERROR &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">when</span><span>&nbsp;'FATAL' &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="variable">@logger</span><span>.level&nbsp;=&nbsp;Logger::FATAL &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="variable">@logger</span><span>.level&nbsp;=&nbsp;Logger::UNKNOWN &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">end</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">end</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">end</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://wiwolf.javaeye.com/blog/92862#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Jun 2007 19:34:42 +0800</pubDate>
        <link>http://wiwolf.javaeye.com/blog/92862</link>
        <guid>http://wiwolf.javaeye.com/blog/92862</guid>
      </item>
      <item>
        <title>开源发布EVE即时通讯系统</title>
        <author>wiwolf</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wiwolf.javaeye.com">wiwolf</a>&nbsp;
          链接：<a href="http://wiwolf.javaeye.com/blog/92489" style="color:red;">http://wiwolf.javaeye.com/blog/92489</a>&nbsp;
          发表时间: 2007年06月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial">
<p><font face="Arial">欢迎选择EVE即时通讯系统，本系统全部采用AJAX技术开发，可以让您体验到新一代的网络技术的强大威力。<br />
本系统遵从&quot;Apache License&quot;，本系统全部开源和免费，所以在使用前请确定您已经认真阅读和理解了&quot;License&quot;，否者请再次认真阅读。</font></p>
<p><font face="Arial">本系统作者为--田野(昵称：风北狼[WIWolf])，如果您遇到任何问题，欢迎来邮件与我交流。</font></p>
<p><font face="Arial">由于一个人的限制，所以在这里我希望有喜欢Rails和Ruby的朋友加入我的开发，让我们一起把此系统完善起来。<br />
联系我请使用：<a href="mailto:WIWolf@126.com">WIWolf@126.com</a></font></p>
<p>完整的系统可以在这里看到：<font face="Arial"><a href="http://eve.woygo.com">http://eve.woygo.com</a></font></p>
</font>
          <br/>
          <span style="color:red;">
            <a href="http://wiwolf.javaeye.com/blog/92489#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 20 Jun 2007 20:13:01 +0800</pubDate>
        <link>http://wiwolf.javaeye.com/blog/92489</link>
        <guid>http://wiwolf.javaeye.com/blog/92489</guid>
      </item>
      <item>
        <title>好久没开过博客了，今天没事干，开始JAVAEYE的博客</title>
        <author>wiwolf</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wiwolf.javaeye.com">wiwolf</a>&nbsp;
          链接：<a href="http://wiwolf.javaeye.com/blog/92488" style="color:red;">http://wiwolf.javaeye.com/blog/92488</a>&nbsp;
          发表时间: 2007年06月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp; 想一下上一次开博，都是几年前了。那个时候流行呗，所以没有坚持多久就放弃了。但现在想想开博还是挺有意思的，可以记录一些自己的人生吧！<img src="/javascripts/fckeditor/editor/images/smiley/msn/wink_smile.gif" alt="" />
          <br/>
          <span style="color:red;">
            <a href="http://wiwolf.javaeye.com/blog/92488#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 20 Jun 2007 20:13:00 +0800</pubDate>
        <link>http://wiwolf.javaeye.com/blog/92488</link>
        <guid>http://wiwolf.javaeye.com/blog/92488</guid>
      </item>
  </channel>
</rss>