<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>权记 &#187; web</title>
	<atom:link href="http://www.quanlei.com/tag/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.quanlei.com</link>
	<description>一个关于我们生活点滴的网站，一个记录我们酸甜苦辣的日志。</description>
	<lastBuildDate>Sun, 06 Jun 2010 01:10:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>利用JSON插件进行数据交换格式(includeProperties和excludeProperties用法)</title>
		<link>http://www.quanlei.com/2010/06/struts2-json/</link>
		<comments>http://www.quanlei.com/2010/06/struts2-json/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 15:58:22 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[编程相关]]></category>
		<category><![CDATA[excludeProperties]]></category>
		<category><![CDATA[includeProperties]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[struts]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/2010/06/%e5%88%a9%e7%94%a8json%e6%8f%92%e4%bb%b6%e8%bf%9b%e8%a1%8c%e6%95%b0%e6%8d%ae%e4%ba%a4%e6%8d%a2%e6%a0%bc%e5%bc%8f/</guid>
		<description><![CDATA[JSON（Java Script Object Notation），是一种语言无关的数据交换格式。 JSON插件是Structs 2 的Ajax插件，通过利用JSON插件，开发者可以很方便，灵活的利用Ajax进行开发。 Json是一种轻量级的数据交换格式，JSon插件提供了一种名为json的Action ResultType 。一旦为Action指定了该结果处理类型，JSON插件就会自动将Action里的数据序列化成JSON格式的数据，并返回给客户端物理视图的JavaScript。简单的说，JSON插件允许我们在JavaScript中异步的调用Action。 而且Action不需要指定视图来显示Action的信息显示而是由JSON插件来负责具体将Action里面具体的信息返回给调用页面。Json的数据格式可简单如下形式： person = { name: &#8216;Jim&#8217;,age: 18,gender: &#8216;man&#8217;}。 如果action的属性很多，我们想要从Action返回到调用页面的数据。这个时候配置includeProperties或者 excludeProperties拦截器即可。而这2个拦截器的定义都在struts2的json-default包内，所以要使用该拦截器的包都要继承自json-default。 &#60;struts&#62; &#60;constant value=&#34;spring&#34; name=&#34;struts.objectFactory&#34; /&#62; &#60;include file=&#34;struts-admin.xml&#34;&#62;&#60;/include&#62; &#60;package name=&#34;default&#34; extends=&#34;json-default&#34;&#62; &#60;action class=&#34;com.person.PersonAction&#34; name=&#34;person&#34; method=&#34;view&#34;&#62; &#60;result type=&#34;json&#34;&#62; &#60;param name=&#34;includeProperties&#34;&#62;person\.name,persoon\.age,person\.gender &#60;/param&#62; &#60;/result&#62; &#60;/action&#62; &#60;/package&#62; &#60;/struts&#62; 经过测试，下面的设置也是可以的，就是在includeProperties里面直接写你所在Action的属性 &#60;struts&#62; &#60;constant value=&#34;spring&#34; name=&#34;struts.objectFactory&#34; /&#62; &#60;include file=&#34;struts-admin.xml&#34;&#62;&#60;/include&#62; &#60;package name=&#34;default&#34; extends=&#34;json-default&#34;&#62; &#60;action [...]]]></description>
			<content:encoded><![CDATA[<p>JSON（Java Script Object Notation），是一种语言无关的数据交换格式。 JSON插件是Structs 2 的Ajax插件，通过利用JSON插件，开发者可以很方便，灵活的利用Ajax进行开发。</p>
<p>Json是一种轻量级的数据交换格式，JSon插件提供了一种名为json的Action ResultType 。一旦为Action指定了该结果处理类型，JSON插件就会自动将Action里的数据序列化成JSON格式的数据，并返回给客户端物理视图的JavaScript。简单的说，JSON插件允许我们在JavaScript中异步的调用Action。</p>
<p>而且Action不需要指定视图来显示Action的信息显示而是由JSON插件来负责具体将Action里面具体的信息返回给调用页面。Json的数据格式可简单如下形式： person = { name: &#8216;Jim&#8217;,age: 18,gender: &#8216;man&#8217;}。</p>
<p>如果action的属性很多，我们想要从Action返回到调用页面的数据。这个时候配置includeProperties或者 excludeProperties拦截器即可。而这2个拦截器的定义都在struts2的json-default包内，所以要使用该拦截器的包都要继承自json-default。</p>
<pre class="brush: xml;">
&lt;struts&gt;
    &lt;constant value=&quot;spring&quot; name=&quot;struts.objectFactory&quot; /&gt;
    &lt;include file=&quot;struts-admin.xml&quot;&gt;&lt;/include&gt;
    &lt;package name=&quot;default&quot; extends=&quot;json-default&quot;&gt;
        &lt;action class=&quot;com.person.PersonAction&quot; name=&quot;person&quot; method=&quot;view&quot;&gt;
            &lt;result type=&quot;json&quot;&gt;
                &lt;param name=&quot;includeProperties&quot;&gt;person\.name,persoon\.age,person\.gender &lt;/param&gt;
            &lt;/result&gt;
        &lt;/action&gt;
    &lt;/package&gt;
&lt;/struts&gt;
</pre>
<p><span id="more-1626"></span><br />
<span style="color: #800000;">经过测试，下面的设置也是可以的，就是在includeProperties里面直接写你所在Action的属性</span></p>
<pre class="brush: xml;">
&lt;struts&gt;
    &lt;constant value=&quot;spring&quot; name=&quot;struts.objectFactory&quot; /&gt;
    &lt;include file=&quot;struts-admin.xml&quot;&gt;&lt;/include&gt;
    &lt;package name=&quot;default&quot; extends=&quot;json-default&quot;&gt;
        &lt;action class=&quot;com.person.PersonAction&quot; name=&quot;person&quot; method=&quot;view&quot;&gt;
            &lt;result type=&quot;json&quot;&gt;
                &lt;param name=&quot;includeProperties&quot;&gt;name,age,gender &lt;/param&gt;
            &lt;/result&gt;
        &lt;/action&gt;
    &lt;/package&gt;
&lt;/struts&gt;
</pre>
<p>利用Struts 2的支持的可配置结果，可以达到过滤器的效果。Action的处理结果配置支持正则表达式。但是如果返回的对象是一个数组格式的Json数据。比如 peson Bean中有对象persion1&#8230;person9，而我只要JSON插件，则可以用如下的正则表达式。</p>
<pre class="brush: xml;">
&lt;struts&gt;
    &lt;constant value=&quot;spring&quot; name=&quot;struts.objectFactory&quot; /&gt;
    &lt;include file=&quot;struts-admin.xml&quot;&gt;&lt;/include&gt;
    &lt;package name=&quot;default&quot; extends=&quot;json-default&quot;&gt;
        &lt;action class=&quot;com.person.PersonAction&quot; name=&quot;person&quot; method=&quot;view&quot;&gt;
            &lt;result type=&quot;json&quot;&gt;
                &lt;param name=&quot;includeProperties&quot;&gt;person\.name,persoon\.age,person\.gender &lt;/param&gt;
            &lt;/result&gt;
        &lt;/action&gt;
    &lt;/package&gt;
&lt;/struts&gt;
&lt;!--利用Struts 2的支持的可配置结果，可以达到过滤器的效果。Action的处理结果配置支持正则表达式。 但是如果返回的对象是一个数组格式的Json数据。比如peson Bean中有对象persion1...person9，而我只要person1的json数据， 则可以用如下的正则表达式。 --&gt;
&lt;struts&gt;
    &lt;constant value=&quot;spring&quot; name=&quot;struts.objectFactory&quot; /&gt;
    &lt;include file=&quot;struts-admin.xml&quot;&gt;&lt;/include&gt;
    &lt;package name=&quot;default&quot; extends=&quot;json-default&quot;&gt;
        &lt;action class=&quot;com.person.PersonAction&quot; name=&quot;person&quot; method=&quot;view&quot;&gt;
            &lt;result type=&quot;json&quot;&gt;
                &lt;param name=&quot;includeProperties&quot;&gt;person\[\d+\]\.person1 &lt;/param&gt;
            &lt;/result&gt;
        &lt;/action&gt;
    &lt;/package&gt;
&lt;/struts&gt;
&lt;!--excludeProperties拦截器的用法与此类同，如果拦截的仅仅是一个对象，如果拦截掉person Bean的整个对象。 --&gt;
&lt;struts&gt;
    &lt;constant value=&quot;spring&quot; name=&quot;struts.objectFactory&quot; /&gt;
    &lt;include file=&quot;struts-admin.xml&quot;&gt;&lt;/include&gt;
    &lt;package name=&quot;default&quot; extends=&quot;json-default&quot;&gt;
        &lt;action class=&quot;com.person.PersonAction&quot; name=&quot;person&quot; method=&quot;view&quot;&gt;
            &lt;result type=&quot;json&quot;&gt;
                &lt;param name=&quot;excludeProperties&quot;&gt;person &lt;/param&gt;
            &lt;/result&gt;
        &lt;/action&gt;
    &lt;/package&gt;
&lt;/struts&gt;
</pre>
<p>需要注意的是,如果用JSON插件把返回结果定为JSON。而JSON的原理是在ACTION中的get方法都会序列化，所以前面是get的方法只要没指定不序列化，都会执行，那么可以在该方法的前面加注解声明该方法不做序列化。</p>
<pre class="brush: java;">
    @JSON(serialize = false)
    public User getUser() {
        return this.User;
    }

    @JSON(format = &quot;yyyy-MM-dd&quot;)
    public Date getStartDate() {
        return this.startDate;
    }
</pre>
<p>原文出处：http://developer.51cto.com/art/201001/176090.htm</p>
<p>Apache Struts Json 介绍：http://struts.apache.org/2.1.8/docs/json-plugin.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/06/struts2-json/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[10/17 周主题] – Axure入项目</title>
		<link>http://www.quanlei.com/2010/05/1017-week-subject-axure-quick-start/</link>
		<comments>http://www.quanlei.com/2010/05/1017-week-subject-axure-quick-start/#comments</comments>
		<pubDate>Tue, 04 May 2010 13:44:01 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[周主题]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[Axure]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[原型]]></category>
		<category><![CDATA[框架]]></category>
		<category><![CDATA[界面]]></category>
		<category><![CDATA[项目]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1563</guid>
		<description><![CDATA[很早就关注和试用Axure了，但是没在之前的项目中使用过，因为一些原因，借这次的这个web项目开始在公司推广Axure的使用，不过说到推广，现在也就我一人的用，其他项目要用还未知呢！ 先看看Axure的Demo吧：http://www.axure.org/demo/ 做过前端的人应该会更有感觉，操作上不会感觉太难，很快就可以上手，这要得益于Axure强大的组件库，基本上常用的组件都有，另外还有其他一些特殊的第三方组件提供下载。 这次项目中用Axure主要原因是界面框架的原因，如果UI和前端(我做)做完页面，把网页给客户看，那估计要费时不少，加上随时的改动，到后面会越做越忙，越做改动越大，所以就早动手，先用Axure把网站的各个页面框架和页码流程搭起来，跟客户一一确认，尽快完成这块的内容，再由UI去跟客户确认配色的问题，前端这个时候就可以开工了，跟之前的项目流程比，至少框架不会大动了！ 第一次拿做好的页面框架给客户看，客户以为这么快页面就出来啦，很有兴趣，当然我就得必须解释解释了，这个只是框架图，和最终的效果图是有些距离的，这些页面只是将页面框架和流程展示下。 学习Axure，最主要就是多用，多看别人的Axure例子，如果一个效果自己一下子无法实现，可以在网上找别人的rp文件，仔细研究下，很快就可以自己做出来了！ 再者Axure现在有好些模板，不一定就得自己去实现，Axure只是个工具，不管从哪个方面入手，达到你要的效果即可。 推荐区国内Axure推广比较有名的网站：http://www.axure.org/ 上面有很多教程和例子，可以进一步帮助学习Axure的使用。]]></description>
			<content:encoded><![CDATA[<p>很早就关注和试用Axure了，但是没在之前的项目中使用过，因为一些原因，借这次的这个web项目开始在公司推广Axure的使用，不过说到推广，现在也就我一人的用，其他项目要用还未知呢！</p>
<p style="text-align: center;"><a href="http://www.quanlei.com/wp-content/uploads/2010/05/axure.gif"><img class="aligncenter size-full wp-image-1589" title="axure" src="http://www.quanlei.com/wp-content/uploads/2010/05/axure.gif" alt="" width="589" height="346" /></a></p>
<p>先看看Axure的Demo吧：<a href="http://www.axure.org/demo/">http://www.axure.org/demo/</a></p>
<p>做过前端的人应该会更有感觉，操作上不会感觉太难，很快就可以上手，这要得益于Axure强大的组件库，基本上常用的组件都有，另外还有其他一些特殊的第三方组件提供下载。</p>
<p>这次项目中用Axure主要原因是界面框架的原因，如果UI和前端(我做)做完页面，把网页给客户看，那估计要费时不少，加上随时的改动，到后面会越做越忙，越做改动越大，所以就早动手，先用Axure把网站的各个页面框架和页码流程搭起来，跟客户一一确认，尽快完成这块的内容，再由UI去跟客户确认配色的问题，前端这个时候就可以开工了，跟之前的项目流程比，至少框架不会大动了！</p>
<p>第一次拿做好的页面框架给客户看，客户以为这么快页面就出来啦，很有兴趣，当然我就得必须解释解释了，这个只是框架图，和最终的效果图是有些距离的，这些页面只是将页面框架和流程展示下。</p>
<p>学习Axure，最主要就是多用，多看别人的Axure例子，如果一个效果自己一下子无法实现，可以在网上找别人的rp文件，仔细研究下，很快就可以自己做出来了！</p>
<p>再者Axure现在有好些模板，不一定就得自己去实现，Axure只是个工具，不管从哪个方面入手，达到你要的效果即可。</p>
<p>推荐区国内Axure推广比较有名的网站：http://www.axure.org/ 上面有很多教程和例子，可以进一步帮助学习Axure的使用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/05/1017-week-subject-axure-quick-start/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>本地图片预览(支持IE6，IE7，IE8， Firefox3)</title>
		<link>http://www.quanlei.com/2010/01/view-picture-on-local-machine/</link>
		<comments>http://www.quanlei.com/2010/01/view-picture-on-local-machine/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 14:11:09 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[本地图片预览]]></category>
		<category><![CDATA[浏览器]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1162</guid>
		<description><![CDATA[最近在Web项目开发过程中遇到的本地图片预览的需求，虽然最后因为其他原因没能使用，但是也算有些了解，整理出来。 这里我们按浏览器分，主要包括IE6，IE7/8 和Firefox3， 不包含Opera，Safari和Chrome，这三个基本上需求很小，没有研究。 总结一下就是： IE6下可以直接从file的value获取图片路径来显示预览。 IE7和IE8下通过select获取file的图片路径，再用滤镜来显示预览。 FireFox下调用file的getAsDataURL方法获取Data URI数据来显示预览。 下面是一个完整的Demo： &#60;html&#62; &#60;head&#62; &#60;script src=&#34;http://deepliquid.com/projects/Jcrop/js/jquery.min.js&#34;&#62;&#60;/script&#62; &#60;/head&#62; &#60;body&#62; &#60;input type=&#34;file&#34; id=&#34;picture&#34; name=&#34;picture&#34; size=&#34;35&#34; value=&#34;&#34; onchange=&#34;setImg(this)&#34;/&#62; &#60;div id=&#34;preview_fake&#34; style=&#34;margin-left: 50px&#34;&#62; &#60;/div&#62; &#60;img id=&#34;preview_size_fake&#34;/&#62; &#60;style type=&#34;text/css&#34;&#62; #preview_fake{ /* 该对象用于在IE下显示预览图片 */ filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale); } #preview_size_fake{ /* 该对象只用来在IE下获得图片的原始尺寸，无其它用途 */ filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image); visibility:hidden; } &#60;/style&#62; &#60;script type=&#34;text/javascript&#34;&#62; function setImg(obj){ if( !obj.value.match( /.jpg&#124;.gif&#124;.png&#124;.bmp/i ) ){ [...]]]></description>
			<content:encoded><![CDATA[<p>最近在Web项目开发过程中遇到的本地图片预览的需求，虽然最后因为其他原因没能使用，但是也算有些了解，整理出来。</p>
<p>这里我们按浏览器分，主要包括IE6，IE7/8 和Firefox3， 不包含Opera，Safari和Chrome，这三个基本上需求很小，没有研究。</p>
<h3>总结一下就是：</h3>
<blockquote><p>IE6下可以直接从file的value获取图片路径来显示预览。<br />
IE7和IE8下通过select获取file的图片路径，再用滤镜来显示预览。<br />
FireFox下调用file的getAsDataURL方法获取Data URI数据来显示预览。</p></blockquote>
<h3>下面是一个完整的Demo：</h3>
<div class="runcode">
<p><textarea name="runcode" style="overflow-y:visible;width:610px;font-size:12px" class="runcode_text" id="runcode_POkErP">
&lt;html&gt;
&lt;head&gt;
&lt;script src=&quot;http://deepliquid.com/projects/Jcrop/js/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;input type=&quot;file&quot; id=&quot;picture&quot; name=&quot;picture&quot; size=&quot;35&quot; value=&quot;&quot; onchange=&quot;setImg(this)&quot;/&gt;
&lt;div id=&quot;preview_fake&quot; style=&quot;margin-left: 50px&quot;&gt;
&lt;/div&gt;
&lt;img id=&quot;preview_size_fake&quot;/&gt;
&lt;style type=&quot;text/css&quot;&gt;
        #preview_fake{
            /* 该对象用于在IE下显示预览图片
            */
            filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);
        }
        #preview_size_fake{
            /* 该对象只用来在IE下获得图片的原始尺寸，无其它用途
            */
            filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);
            visibility:hidden;
        }
&lt;/style&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
    function setImg(obj){
        if( !obj.value.match( /.jpg|.gif|.png|.bmp/i ) ){
            alert('图片格式无效！');
            return false;
        }
        $(&quot;#preview_fake&quot;).empty();
        var img = document.createElement(&quot;img&quot;);
        img.setAttribute(&quot;src&quot;, &quot;&quot;);
        img.setAttribute(&quot;id&quot;, &quot;preview&quot;);
        document.getElementById(&quot;preview_fake&quot;).appendChild(img);
        if($.browser.msie){
           if($.browser.version == 6.0){
              $(&quot;#preview&quot;).attr(&quot;src&quot;,obj.value);
           }else{
              var objPreview = document.getElementById('preview' );
              var objPreviewFake = document.getElementById('preview_fake' );
              var objPreviewSizeFake = document.getElementById('preview_size_fake' );
              obj.select();
              var imgSrc =document.selection.createRange().text;
              objPreviewFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src= imgSrc;
              objPreviewSizeFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src= imgSrc;
              autoSizePreview(objPreviewFake,objPreviewSizeFake.offsetWidth,objPreviewSizeFake.offsetHeight );
              objPreview.style.display ='none';
           }
        }
        if($.browser.mozilla){
            $(&quot;#preview&quot;).attr(&quot;src&quot;,obj.files[0].getAsDataURL());
        }
        if($.browser.opera){
            alert(&quot;暂时不支持Opera浏览器&quot;);
        }
        if($.browser.safari){
            alert(&quot;暂时不支持Safari浏览器&quot;);
        }
    }
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</textarea></p>
<script type="text/javascript">function changeTsize(){document.getElementById("runcode_POkErP").style.height = document.getElementById("runcode_POkErP").scrollHeight + "px";}window.setTimeout(changeTsize,0);</script><p><input type="button" value="Run" class="runcode_button" onclick="runcode_open_new('runcode_POkErP');"/> <input type="button" value="Copy" class="runcode_button" onclick="runcode_copy('runcode_POkErP');"/> <input type="button" value="Save As" class="runcode_button" onclick="saveCode('runcode_POkErP','runcode_POkErP');"/> Tips:You can change the code before run.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/01/view-picture-on-local-machine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[10/01周主题] – Web 项目开发中的常见问题</title>
		<link>http://www.quanlei.com/2010/01/1001-week-subject-web-project-problems/</link>
		<comments>http://www.quanlei.com/2010/01/1001-week-subject-web-project-problems/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 08:32:40 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[周主题]]></category>
		<category><![CDATA[编程相关]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[乱码]]></category>
		<category><![CDATA[测试]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[表单]]></category>
		<category><![CDATA[项目]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1149</guid>
		<description><![CDATA[这周来一直在赶一个Web项目，没多少时间focus到其他上面，于是这周的主题就干脆做个整理，整理下web项目开发时遇到的一些问题和解决办法。 本周主题：Web 项目开发中的常见问题 一、中文乱码 建议统一使用UTF8，或者全局做个filter处理。 二、表单校验 使用第三方校验框架， 而非自己去写，可以减少很多工作量。 三、Ajax的使用 首页尽量少用ajax，页面初次加载时常会加载不上来，尤其多个Ajax实例同时运行。 四、UI 规范 UI最好是出Demo，跟客户确认，定终稿，然后开发按最终效果图实现页面最好，否则没有页面或者效果图，即使有统一的规范，还是会浪费很多时间去调UI问题。 五、浏览器的兼容问题 虽然IE6基本上淘汰了，可老机器上使用IE6的还是不少的，Css 在处理兼容问题时，建议分开处理，在页面进行浏览器version判断，读取不同的css，这样管理和调整起来都方便。 六、比较完整的测试数据 页面框架搭完了，看着效果不错，可是填完数据后会发现和想象的不太一样。 七、用JPA Or JDBC 与数据库交互 JPA与JDBC相比之下，使用JPA大大减少了编程人员的工作量，因此还是偏向使用JPA，特殊环境下再选择JDBC]]></description>
			<content:encoded><![CDATA[<p>这周来一直在赶一个Web项目，没多少时间focus到其他上面，于是这周的主题就干脆做个整理，整理下web项目开发时遇到的一些问题和解决办法。</p>
<h1>本周主题：Web 项目开发中的常见问题</h1>
<h3>一、中文乱码</h3>
<blockquote><p>建议统一使用UTF8，或者全局做个filter处理。</p></blockquote>
<h3>二、表单校验</h3>
<blockquote><p>使用第三方校验框架， 而非自己去写，可以减少很多工作量。</p></blockquote>
<h3>三、Ajax的使用</h3>
<blockquote><p>首页尽量少用ajax，页面初次加载时常会加载不上来，尤其多个Ajax实例同时运行。</p></blockquote>
<h3>四、UI 规范</h3>
<blockquote><p>UI最好是出Demo，跟客户确认，定终稿，然后开发按最终效果图实现页面最好，否则没有页面或者效果图，即使有统一的规范，还是会浪费很多时间去调UI问题。</p></blockquote>
<h3>五、浏览器的兼容问题</h3>
<blockquote><p>虽然IE6基本上淘汰了，可老机器上使用IE6的还是不少的，Css 在处理兼容问题时，建议分开处理，在页面进行浏览器version判断，读取不同的css，这样管理和调整起来都方便。</p></blockquote>
<h3>六、比较完整的测试数据</h3>
<blockquote><p>页面框架搭完了，看着效果不错，可是填完数据后会发现和想象的不太一样。</p></blockquote>
<h3>七、用JPA Or JDBC 与数据库交互</h3>
<blockquote><p>JPA与JDBC相比之下，使用JPA大大减少了编程人员的工作量，因此还是偏向使用JPA，特殊环境下再选择JDBC</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/01/1001-week-subject-web-project-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下QQ的新选择：WebQQ桌面化</title>
		<link>http://www.quanlei.com/2009/11/webqq-desktop-integration/</link>
		<comments>http://www.quanlei.com/2009/11/webqq-desktop-integration/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 09:25:01 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[Linux服务器相关]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[QQ]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=842</guid>
		<description><![CDATA[今天发现了这个好玩的东西，让本来在Linux就不咋用QQ的我有重拾QQ的冲动，感觉很不错，分享给大家，先看图吧，借用LinuxToy的图片。 原文在这里：WebQQ 桌面化 我简要表述下主要做法： 1、安装allTray，版本0.69，最新版的貌似不行，还是安装0.69版的比较好。 2、创建WebQQ的桌面应用，具体看WebQQ 桌面化的做法。 3、按照WebQQ 桌面化的格式，编辑WebQQ的属性。 4、注意，一定要注意，图标地址别用错了，一定是你自己的图标，不要直接拷贝过来使用，检查检查是否格式正确。 allTray一直在用，但是没有发现其还有这么好用的命令，正如作者所说用 Alltray 创建系统托盘提示功能才是那篇文章的精华！]]></description>
			<content:encoded><![CDATA[<p><span style="color: #000000;"><span style="color: #800000;"><span style="font-size: xx-large;">今</span></span>天发现了这个好玩的东西，让本来在Linux就不咋用QQ的我有重拾QQ的冲动，感觉很不错，分享给大家，先看图吧，借用LinuxToy的图片。</span></p>
<p><span style="color: #000000;"><img class="aligncenter size-full wp-image-843" title="webqq-message-400x84" src="http://www.quanlei.com/wp-content/uploads/2009/11/webqq-message-400x84.png" alt="webqq-message-400x84" width="400" height="84" /><br />
</span></p>
<p><span style="color: #000000;">原文在这里：<a href="http://linuxtoy.org/archives/webqq-desktop-integration.html">WebQQ 桌面化</a></span></p>
<p><span style="color: #000000;">我简要表述下主要做法：</span></p>
<p><span style="color: #000000;">1、安装allTray，版本0.69，最新版的貌似不行，还是安装0.69版的比较好。</span></p>
<p><span style="color: #000000;">2、创建WebQQ的桌面应用，具体看<a href="http://linuxtoy.org/archives/webqq-desktop-integration.html">WebQQ 桌面化</a>的做法。</span></p>
<p><span style="color: #000000;">3、按照<a href="http://linuxtoy.org/archives/webqq-desktop-integration.html">WebQQ 桌面化</a>的格式，编辑WebQQ的属性。</span></p>
<p><span style="color: #000000;">4、注意，一定要注意，图标地址别用错了，一定是你自己的图标，不要直接拷贝过来使用，检查检查是否格式正确。</span></p>
<p><span style="color: #000000;"><span style="color: #000000;">allTray一直在用，但是没有发现其还有这么好用的命令，正如作者所说用 Alltray 创建系统托盘提示功能才是那篇文章的精华！</span><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2009/11/webqq-desktop-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
