﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Sealyu-随笔分类-web</title><link>http://www.blogjava.net/sealyu/category/30676.html</link><description>--- 博客已迁移至: &lt;a href="http://blog.sealyu.com"&gt;http://blog.sealyu.com&lt;/a&gt;
</description><language>zh-cn</language><lastBuildDate>Tue, 28 Dec 2010 02:07:09 GMT</lastBuildDate><pubDate>Tue, 28 Dec 2010 02:07:09 GMT</pubDate><ttl>60</ttl><item><title>Apache HttpClient模拟登录（转）</title><link>http://www.blogjava.net/sealyu/archive/2010/12/28/341648.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Tue, 28 Dec 2010 01:05:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/12/28/341648.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/341648.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/12/28/341648.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/341648.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/341648.html</trackback:ping><description><![CDATA[<div>HttpClient 是 Apache Jakarta Common 下的子项目，可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包，并且它支持 HTTP 协议最新的版本和建议。</div>
<div>
<p><a><span style="font-family: Arial; color: #000000; font-size: medium;">HttpClient 功能介绍</span></a></p>
<p>以下列出的是 HttpClient 提供的主要的功能，要知道更多详细的功能可以参见 HttpClient 的主页。</p>
<ul>
    <li>实现了所有 HTTP 的方法（GET,POST,PUT,HEAD 等）</li>
    <li>支持自动转向</li>
    <li>支持 HTTPS 协议</li>
    <li>支持代理服务器等</li>
</ul>
<p>下面将逐一介绍怎样使用这些功能。首先，我们必须安装好 HttpClient。</p>
<ul>
    <li>HttpClient 可以在<a href="http://jakarta.apache.org/commons/httpclient/downloads.html"><span style="color: #5c81a7;"><span style="text-decoration: underline;">http://jakarta.apache.org/commons/httpclient/downloads.html</span></span></a>下载</li>
    <li>HttpClient 用到了 Apache Jakarta common 下的子项目 logging，你可以从这个地址<a href="http://jakarta.apache.org/site/downloads/downloads_commons-logging.cgi"><span style="color: #5c81a7;"><span style="text-decoration: underline;">http://jakarta.apache.org/site/downloads/downloads_commons-logging.cgi</span></span></a>下载到 common logging，从下载后的压缩包中取出 commons-logging.jar 加到 CLASSPATH 中</li>
    <li>HttpClient 用到了 Apache Jakarta common 下的子项目 codec，你可以从这个地址<a href="http://jakarta.apache.org/site/downloads/downloads_commons-codec"><span style="color: #5c81a7;"><span style="text-decoration: underline;">http://jakarta.apache.org/site/downloads/downloads_commons-codec</span></span></a>.cgi 下载到最新的 common codec，从下载后的压缩包中取出 commons-codec-1.x.jar 加到 CLASSPATH 中</li>
</ul>
<p>下面是个我写的程序:</p>
</div>
<div>
<div>
<pre style="font-family: monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.newpalm.unicomfetch.threads</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Vector</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.commons.httpclient.Cookie</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.commons.httpclient.HttpClient</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.commons.httpclient.NameValuePair</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.commons.httpclient.cookie.CookiePolicy</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.commons.httpclient.cookie.CookieSpec</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.commons.httpclient.methods.GetMethod</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.commons.httpclient.methods.PostMethod</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.htmlparser.Node</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.htmlparser.Parser</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.htmlparser.tags.TableColumn</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.htmlparser.tags.TableRow</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.htmlparser.tags.TableTag</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.htmlparser.visitors.ObjectFindingVisitor</span><span style="color: #339933;">;</span><br />
<span style="color: #008000; font-style: italic; font-weight: bold;">/**<br />
* 用来演示登录表单的示例<br />
* @author Liudong<br />
*/</span><br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> FormLoginDemo <span style="color: #009900;">{</span><br />
&nbsp;<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">(</span><span style="color: #003399;">String</span><span style="color: #009900;">[</span><span style="color: #009900;">]</span> args<span style="color: #009900;">)</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">Exception</span><span style="color: #009900;">{</span><br />
<span style="color: #003399;">Parser</span> parser <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
ObjectFindingVisitor visitor <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
HttpClient client <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HttpClient<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
&nbsp;<br />
<span style="color: #666666; font-style: italic;">//模拟登录页面</span><br />
PostMethod post <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PostMethod<span style="color: #009900;">(</span><span style="color: #0000ff;">"&lt;a href="</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//211.90.119.58:9999/SPLogin.aspx"&gt;&lt;span style="color: #78ba00;"&gt;http://211.90.119.58:9999/SPLogin.aspx&lt;/span&gt;&lt;/a&gt;");</span><br />
<span style="color: #003399;">NameValuePair</span> name <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"txtHandsetNumber"</span>, <span style="color: #0000ff;">"123456"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">NameValuePair</span> pass <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"txtPassword"</span>, <span style="color: #0000ff;">"123456"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">NameValuePair</span> __VIEWSTATE <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"__VIEWSTATE"</span>,  <span style="color: #0000ff;">"dDwtMTUxMzkxNTQ0Mzt0PDtsPGk8MT47PjtsPHQ8O2w8aTwxPjs+O2w8dDxwPGw8VGV4dDs+O2w8XDxtYXJxdWVlIERpcmVjdGlvbj0idXAiIGJlaGF2aW9yPSJzY3JvbGwiICBoZWlnaHQ9JzE1MCcgc2Nyb2xsZGVsYXk9MzAwIG9ubW91c2VvdmVyPSd0aGlzLnN0b3AoKScgb25tb3VzZW91dD0ndGhpcy5zdGFydCgpJ1w+XDxpbWcgc3JjPSJpbWFnZS9kZWZhdWx0X2NhbGxfaWNvbi5naWYiIHdpZHRoPSI0IiBoZWlnaHQ9IjciXD4mbmJzcFw7Jm5ic3BcO1w8YSBocmVmID0iIyIgb25jbGljaz0ib3BlbldpbmRvdygnL0J1bGxldGluLmFzcHg/QnVsbGV0aW5JZD0yMycpIlw+c3DkuJrliqHmjqXlhaXms6jmhI/kuovpoblcPC9hXD4KXDxiclw+XDxiclw+XDwvbWFycXVlZVw+Oz4+Ozs+Oz4+Oz4+O2w8YnRuTG9naW47Pj4pKEgdIvj1JmRdgJaS7sGzD39jZg=="</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">NameValuePair</span> btnLoginx <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"btnLogin.x"</span>, <span style="color: #0000ff;">"0"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">NameValuePair</span> btnLoginy <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"btnLogin.y"</span>, <span style="color: #0000ff;">"5"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
post.<span style="color: #006633;">setRequestBody</span><span style="color: #009900;">(</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">[</span><span style="color: #009900;">]</span><span style="color: #009900;">{</span>name,pass,__VIEWSTATE,btnLoginx,btnLoginy<span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #000066; font-weight: bold;">int</span> status <span style="color: #339933;">=</span> client.<span style="color: #006633;">executeMethod</span><span style="color: #009900;">(</span>post<span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
&nbsp;<br />
post.<span style="color: #006633;">releaseConnection</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">//查看cookie信息</span><br />
CookieSpec cookiespec <span style="color: #339933;">=</span> CookiePolicy.<span style="color: #006633;">getDefaultSpec</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
Cookie<span style="color: #009900;">[</span><span style="color: #009900;">]</span> cookies <span style="color: #339933;">=</span> client.<span style="color: #006633;">getState</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span>.<span style="color: #006633;">getCookies</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">(</span>cookies.<span style="color: #006633;">length</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"None"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">}</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">{</span><br />
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">(</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> cookies.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">(</span>cookies<span style="color: #009900;">[</span>i<span style="color: #009900;">]</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">}</span><br />
<span style="color: #009900;">}</span><br />
&nbsp;<br />
<span style="color: #666666; font-style: italic;">//访问所需的页面</span><br />
GetMethod get <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> GetMethod<span style="color: #009900;">(</span><span style="color: #0000ff;">"&lt;a href="</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//211.90.119.58:9999/PhoneSearch/PhoneSearch.aspx"&gt;&lt;span style="color: #78ba00;"&gt;http://211.90.119.58:9999/PhoneSearch/PhoneSearch.aspx&lt;/span&gt;&lt;/a&gt;");</span><br />
client.<span style="color: #006633;">executeMethod</span><span style="color: #009900;">(</span>get<span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
visitor <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ObjectFindingVisitor<span style="color: #009900;">(</span>TableTag.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
parser <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Parser</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
parser.<span style="color: #006633;">setInputHTML</span><span style="color: #009900;">(</span>get.<span style="color: #006633;">getResponseBodyAsString</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
parser.<span style="color: #006633;">setEncoding</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"GBK"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
parser.<span style="color: #006633;">visitAllNodesWith</span><span style="color: #009900;">(</span>visitor<span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
&nbsp;<br />
<span style="color: #666666; font-style: italic;">//取得要解析的页面数</span><br />
Node<span style="color: #009900;">[</span><span style="color: #009900;">]</span> tables <span style="color: #339933;">=</span> visitor.<span style="color: #006633;">getTags</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
TableTag tableTag <span style="color: #339933;">=</span> <span style="color: #009900;">(</span>TableTag<span style="color: #009900;">)</span> tables<span style="color: #009900;">[</span>tables.<span style="color: #006633;">length</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">]</span><span style="color: #339933;">;</span><br />
TableRow<span style="color: #009900;">[</span><span style="color: #009900;">]</span> rows <span style="color: #339933;">=</span> tableTag.<span style="color: #006633;">getRows</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
TableRow row <span style="color: #339933;">=</span> rows<span style="color: #009900;">[</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">]</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">TableColumn</span><span style="color: #009900;">[</span><span style="color: #009900;">]</span> col <span style="color: #339933;">=</span> row.<span style="color: #006633;">getColumns</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #000066; font-weight: bold;">int</span> pageNumber <span style="color: #339933;">=</span> <span style="color: #003399;">Integer</span>.<span style="color: #006633;">parseInt</span><span style="color: #009900;">(</span>col<span style="color: #009900;">[</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">]</span>.<span style="color: #006633;">getChildrenHTML</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span>.<span style="color: #006633;">substring</span><span style="color: #009900;">(</span><span style="color: #cc66cc;">25</span>, <span style="color: #cc66cc;">29</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
get.<span style="color: #006633;">releaseConnection</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
&nbsp;<br />
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">(</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>pageNumber<span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span><br />
PostMethod pt <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PostMethod<span style="color: #009900;">(</span><span style="color: #0000ff;">"&lt;a href="</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//211.90.119.58:9999/PhoneSearch/PhoneSearch.aspx"&gt;&lt;span style="color: #78ba00;"&gt;http://211.90.119.58:9999/PhoneSearch/PhoneSearch.aspx&lt;/span&gt;&lt;/a&gt;");</span><br />
<span style="color: #003399;">NameValuePair</span> txtPage <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"txtPage"</span>,<span style="color: #003399;">Integer</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">(</span>i<span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
__VIEWSTATE <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"__VIEWSTATE"</span>,&nbsp;<span style="color: #0000ff;">""</span><span style="color: #009900;">)</span><br />
<span style="color: #003399;">NameValuePair</span> __EVENTTARGET <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"__EVENTTARGET"</span>, <span style="color: #0000ff;">""</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">NameValuePair</span> __EVENTARGUMENT <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"__EVENTARGUMENT"</span>, <span style="color: #0000ff;">""</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">NameValuePair</span> TBMDN <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"TBMDN"</span>, <span style="color: #0000ff;">""</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">NameValuePair</span> TBServiceType <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"TBServiceType"</span>, <span style="color: #0000ff;">""</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">NameValuePair</span> TBStartTime <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"TBStartTime"</span>, <span style="color: #0000ff;">""</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">NameValuePair</span> TBEndTime <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"TBEndTime"</span>, <span style="color: #0000ff;">""</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">NameValuePair</span> btnGotox <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"btnGoto.x"</span>, <span style="color: #0000ff;">"26"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">NameValuePair</span> btnGotoy <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"btnGoto.y"</span>, <span style="color: #0000ff;">"13"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
pt.<span style="color: #006633;">setRequestBody</span><span style="color: #009900;">(</span><span style="color: #000000; font-weight: bold;">new</span>  <span style="color: #003399;">NameValuePair</span><span style="color: #009900;">[</span><span style="color: #009900;">]</span><span style="color: #009900;">{</span>__EVENTTARGET,__EVENTARGUMENT,__VIEWSTATE,TBMDN,TBServiceType,TBStartTime,TBEndTime,txtPage,btnGotox,btnGotoy<span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #000066; font-weight: bold;">int</span> a <span style="color: #339933;">=</span> client.<span style="color: #006633;">executeMethod</span><span style="color: #009900;">(</span>pt<span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
&nbsp;<br />
&nbsp;<br />
parser.<span style="color: #006633;">setInputHTML</span><span style="color: #009900;">(</span>pt.<span style="color: #006633;">getResponseBodyAsString</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
parser.<span style="color: #006633;">setEncoding</span><span style="color: #009900;">(</span><span style="color: #0000ff;">"GBK"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
parser.<span style="color: #006633;">visitAllNodesWith</span><span style="color: #009900;">(</span>visitor<span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
&nbsp;<br />
tables <span style="color: #339933;">=</span> visitor.<span style="color: #006633;">getTags</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
tableTag <span style="color: #339933;">=</span> <span style="color: #009900;">(</span>TableTag<span style="color: #009900;">)</span> tables<span style="color: #009900;">[</span>tables.<span style="color: #006633;">length</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">]</span><span style="color: #339933;">;</span><br />
&nbsp;<br />
rows <span style="color: #339933;">=</span> tableTag.<span style="color: #006633;">getRows</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
row <span style="color: #339933;">=</span> rows<span style="color: #009900;">[</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">]</span><span style="color: #339933;">;</span><br />
col <span style="color: #339933;">=</span> row.<span style="color: #006633;">getColumns</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">(</span>col<span style="color: #009900;">[</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">]</span>.<span style="color: #006633;">getChildrenHTML</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
get.<span style="color: #006633;">releaseConnection</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">}</span><br />
&nbsp;<br />
<span style="color: #009900;">}</span><br />
<span style="color: #009900;">}</span></pre>
</div>
</div>
<p><a><span style="font-family: Arial; color: #000000; font-size: medium;">使用HttpClient过程中常见的一些问题</span></a></p>
<p>下面介绍在使用HttpClient过程中常见的一些问题。</p>
<p><a><strong><span style="font-family: Arial; color: #000000; font-size: small;">字符编码</span></strong></a></p>
<p>某目标页的编码可能出现在两个地方，第一个地方是服务器返回的http头中，另外一个地方是得到的html/xml页面中。</p>
<ul>
    <li>在http头的Content-Type字段可能会包含字符编码信息。例如可能返回的头会包含这样子的信息：Content-Type:
    text/html;
    charset=UTF-8。这个头信息表明该页的编码是UTF-8，但是服务器返回的头信息未必与内容能匹配上。比如对于一些双字节语言国家，可能服务
    器返回的编码类型是UTF-8，但真正的内容却不是UTF-8编码的，因此需要在另外的地方去得到页面的编码信息；但是如果服务器返回的编码不是UTF-
    8，而是具体的一些编码，比如gb2312等，那服务器返回的可能是正确的编码信息。通过method对象的getResponseCharSet()方
    法就可以得到http头中的编码信息。</li>
    <li>对于象xml或者html这样的文件，允许作者在页面中直接指定编码类型。比如在html中会有&lt;meta
    http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html;
    charset=gb2312&#8243;/&gt;这样的标签；或者在xml中会有&lt;?xml version=&#8221;1.0&#8243;
    encoding=&#8221;gb2312&#8243;?&gt;这样的标签，在这些情况下，可能与http头中返回的编码信息冲突，需要用户自己判断到底那种编码类型应该
    是真正的编码。</li>
</ul>
<p><a><strong><span style="font-family: Arial; color: #000000; font-size: small;">自动转向</span></strong></a></p>
<p>根据RFC2616中对自动转向的定义，主要有两种：301和302。301表示永久的移走（Moved
Permanently），当返回的是301，则表示请求的资源已经被移到一个固定的新地方，任何向该地址发起请求都会被转到新的地址上。302表示暂时
的转向，比如在服务器端的servlet程序调用了sendRedirect方法，则在客户端就会得到一个302的代码，这时服务器返回的头信息中
location的值就是sendRedirect转向的目标地址。</p>
<p>HttpClient支持自动转向处理，但是象POST和PUT方式这种要求接受后继服务的请求方式，暂时不支持自动转向，因此如果碰到POST方
式提交后返回的是301或者302的话需要自己处理。就像刚才在POSTMethod中举的例子：如果想进入登录BBS后的页面，必须重新发起登录的请
求，请求的地址可以在头字段location中得到。不过需要注意的是，有时候location返回的可能是相对路径，因此需要对location返回的
值做一些处理才可以发起向新地址的请求。</p>
<p>另外除了在头中包含的信息可能使页面发生重定向外，在页面中也有可能会发生页面的重定向。引起页面自动转发的标签是：&lt;meta
http-equiv=&#8221;refresh&#8221; content=&#8221;5;
url=http://www.ibm.com/us&#8221;&gt;。如果你想在程序中也处理这种情况的话得自己分析页面来实现转向。需要注意的是，在上面那
个标签中url的值也可以是一个相对地址，如果是这样的话，需要对它做一些处理后才可以转发。</p>
<p><a><strong><span style="font-family: Arial; color: #000000; font-size: small;">处理HTTPS协议</span></strong></a></p>
<p>HttpClient提供了对SSL的支持，在使用SSL之前必须安装JSSE。在Sun提供的1.4以后的版本中，JSSE已经集成到JDK中，
如果你使用的是JDK1.4以前的版本则必须安装JSSE。JSSE不同的厂家有不同的实现。下面介绍怎么使用HttpClient来打开Https连
接。这里有两种方法可以打开https连接，第一种就是得到服务器颁发的证书，然后导入到本地的keystore中；另外一种办法就是通过扩展
HttpClient的类来实现自动接受证书。</p>
<p>方法1，取得证书，并导入本地的keystore：</p>
<ul>
    <li>安装JSSE
    （如果你使用的JDK版本是1.4或者1.4以上就可以跳过这一步）。本文以IBM的JSSE为例子说明。先到IBM网站上下载JSSE的安装包。然后解
    压开之后将ibmjsse.jar包拷贝到&lt;java-home&gt;"lib"ext"目录下。</li>
    <li>取得并且导入证书。证书可以通过IE来获得：1． 用IE打开需要连接的https网址，会弹出如下对话框：<br />
    <br />
    <img src="http://www-128.ibm.com/developerworks/cn/opensource/os-httpclient/images/image001.png" alt="" height="301" width="384" border="0" />
    <p>2． 单击&#8221;View Certificate&#8221;，在弹出的对话框中选择&#8221;Details&#8221;，然后再单击&#8221;Copy to File&#8221;，根据提供的向导生成待访问网页的证书文件<br />
    <br />
    <img src="http://www-128.ibm.com/developerworks/cn/opensource/os-httpclient/images/image003.png" alt="" height="476" width="409" border="0" /></p>
    <p>3． 向导第一步，欢迎界面，直接单击&#8221;Next&#8221;，<br />
    <br />
    <img src="http://www-128.ibm.com/developerworks/cn/opensource/os-httpclient/images/image005.png" alt="" height="386" width="503" border="0" /></p>
    <p>4． 向导第二步，选择导出的文件格式，默认，单击&#8221;Next&#8221;，<br />
    <br />
    <img src="http://www-128.ibm.com/developerworks/cn/opensource/os-httpclient/images/image007.png" alt="" height="386" width="503" border="0" /></p>
    <p>5． 向导第三步，输入导出的文件名，输入后，单击&#8221;Next&#8221;，<br />
    <br />
    <img src="http://www-128.ibm.com/developerworks/cn/opensource/os-httpclient/images/image009.png" alt="" height="454" width="506" border="0" /></p>
    <p>6． 向导第四步，单击&#8221;Finish&#8221;，完成向导<br />
    <br />
    <img src="http://www-128.ibm.com/developerworks/cn/opensource/os-httpclient/images/image011.png" alt="" height="386" width="503" border="0" /></p>
    <p>7． 最后弹出一个对话框，显示导出成功<br />
    <br />
    <img src="http://www-128.ibm.com/developerworks/cn/opensource/os-httpclient/images/image013.png" alt="" height="100" width="183" border="0" />
    </p>
    </li>
    <li>用keytool工具把刚才导出的证书倒入本地keystore。Keytool命令在&lt;java-home&gt;"bin"下，打开命令行窗口，并到&lt;java-home&gt;"lib"security"目录下，运行下面的命令：<br />
    <table width="100%" bgcolor="#eeeeee" border="1" cellpadding="5" cellspacing="0">
        <tbody>
            <tr>
                <td>
                <pre><code><br />
                <span style="font-family: Lucida Console;">keytool -import -noprompt -keystore cacerts -storepass changeit -alias yourEntry1 -file your.cer<br />
                </span></code></pre>
                </td>
            </tr>
        </tbody>
    </table>
    <p>其中参数alias后跟的值是当前证书在keystore中的唯一标识符，但是大小写不区分；参数file后跟的是刚才通过IE导出的证书所在的路径和文件名；如果你想删除刚才导入到keystore的证书，可以用命令：</p>
    <table width="100%" bgcolor="#eeeeee" border="1" cellpadding="5" cellspacing="0">
        <tbody>
            <tr>
                <td>
                <pre><code><br />
                <span style="font-family: Lucida Console;">keytool -delete -keystore cacerts -storepass changeit -alias yourEntry1<br />
                </span></code></pre>
                </td>
            </tr>
        </tbody>
    </table>
    </li>
    <li>写程序访问https地址。如果想测试是否能连上https，只需要稍改一下GetSample例子，把请求的目标变成一个https地址。<br />
    <table width="100%" bgcolor="#eeeeee" border="1" cellpadding="5" cellspacing="0">
        <tbody>
            <tr>
                <td>
                <pre><code><br />
                <span style="font-family: Lucida Console;">GetMethod getMethod = new GetMethod("https://www.yourdomain.com");<br />
                </span></code></pre>
                </td>
            </tr>
        </tbody>
    </table>
    <p>运行该程序可能出现的问题：</p>
    <p>1. 抛出异常java.net.SocketException: Algorithm SSL not available。出现这个异常可能是因为没有加JSSEProvider，如果用的是IBM的JSSE Provider，在程序中加入这样的一行：</p>
    <table width="100%" bgcolor="#eeeeee" border="1" cellpadding="5" cellspacing="0">
        <tbody>
            <tr>
                <td>
                <pre><code><br />
                <span style="font-family: Lucida Console;"> if(Security.getProvider("com.ibm.jsse.IBMJSSEProvider") == null)<br />
                Security.addProvider(new IBMJSSEProvider());<br />
                </span></code></pre>
                </td>
            </tr>
        </tbody>
    </table>
    <p>或者也可以打开&lt;java-home&gt;"lib"security"java.security，在行</p>
    <table width="100%" bgcolor="#eeeeee" border="1" cellpadding="5" cellspacing="0">
        <tbody>
            <tr>
                <td>
                <pre><code><br />
                <span style="font-family: Lucida Console;">security.provider.1=sun.security.provider.Sun<br />
                security.provider.2=com.ibm.crypto.provider.IBMJCE<br />
                </span></code></pre>
                </td>
            </tr>
        </tbody>
    </table>
    <p>后面加入security.provider.3=com.ibm.jsse.IBMJSSEProvider</p>
    <p>2. 抛出异常java.net.SocketException: SSL implementation not available。出现这个异常可能是你没有把ibmjsse.jar拷贝到&lt;java-home&gt;"lib"ext"目录下。</p>
    <p>3. 抛出异常javax.net.ssl.SSLHandshakeException: unknown
    certificate。出现这个异常表明你的JSSE应该已经安装正确，但是可能因为你没有把证书导入到当前运行JRE的keystore中，请按照前
    面介绍的步骤来导入你的证书。
    </p>
    </li>
</ul>
<p>方法２，扩展HttpClient类实现自动接受证书</p>
<p>因为这种方法自动接收所有证书，因此存在一定的安全问题，所以在使用这种方法前请仔细考虑您的系统的安全需求。具体的步骤如下：</p>
<ul>
    <li>提供一个自定义的socket
    factory（test.MySecureProtocolSocketFactory）。这个自定义的类必须实现接口
    org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory，在实现接口
    的类中调用自定义的X509TrustManager(test.MyX509TrustManager)，这两个类可以在随本文带的附件中得到</li>
    <li>创建一个org.apache.commons.httpclient.protocol.Protocol的实例，指定协议名称和默认的端口号<br />
    <table width="100%" bgcolor="#eeeeee" border="1" cellpadding="5" cellspacing="0">
        <tbody>
            <tr>
                <td>
                <pre><code><br />
                <span style="font-family: Lucida Console;">Protocol myhttps = new Protocol("https", new MySecureProtocolSocketFactory (), 443);<br />
                </span></code></pre>
                </td>
            </tr>
        </tbody>
    </table>
    </li>
    <li>注册刚才创建的https协议对象<br />
    <table width="100%" bgcolor="#eeeeee" border="1" cellpadding="5" cellspacing="0">
        <tbody>
            <tr>
                <td>
                <pre><code><br />
                <span style="font-family: Lucida Console;">Protocol.registerProtocol("https ", myhttps);<br />
                </span></code></pre>
                </td>
            </tr>
        </tbody>
    </table>
    </li>
    <li>然后按照普通编程方式打开https的目标地址，代码请参见test.NoCertificationHttpsGetSample</li>
</ul>
<p><a><strong><span style="font-family: Arial; color: #000000; font-size: small;">处理代理服务器</span></strong></a></p>
<p>HttpClient中使用代理服务器非常简单，调用HttpClient中setProxy方法就可以，方法的第一个参数是代理服务器地址，第二个参数是端口号。另外HttpClient也支持SOCKS代理。</p>
<img src ="http://www.blogjava.net/sealyu/aggbug/341648.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-12-28 09:05 <a href="http://www.blogjava.net/sealyu/archive/2010/12/28/341648.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>75个最佳Web设计资源（转）</title><link>http://www.blogjava.net/sealyu/archive/2010/09/21/332606.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Tue, 21 Sep 2010 06:52:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/09/21/332606.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/332606.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/09/21/332606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/332606.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/332606.html</trackback:ping><description><![CDATA[<p>今天，<a title="我爱互联网" href="http://www.woiweb.net/" target="_blank"><strong>我爱互联网</strong></a> 为大家准备了一组Web 设计资源大全，包括字体，<a href="http://www.woiweb.net/category/css" rel="nofollow" target="_blank">css</a> 资源，Logo 设计资源，图标，设计启发，教程，Photoshop 素材下载，以及 <a href="http://www.woiweb.net/tag/wordpress">wordpress</a> 资源。每个类别又包含数十套该类别下的具体资源，可能是有关Web 设计的终极资源了。强烈推荐！</p>
<h3>字体</h3>
<p><img title="Typography Resources" src="http://www.woiweb.net/wp-content/uploads/2010/09//020635w7h.jpg" alt="Typography Resources" height="63" width="450" /></p>
<p>- <a href="http://www.smashingmagazine.com/2008/03/20/60-brilliant-typefaces-for-corporate-design/" target="_blank">60 套公司用设计字体</a> [Smashing Magazine]</p>
<p>- <a href="http://www.fuelyourcreativity.com/20-free-handwritten-fonts-and-resources/" target="_blank">20 套免费手写字体与资源</a> [Fuel Your Creativity]</p>
<p>- <a href="http://www.noupe.com/fonts/50-free-fonts-for-professional-designs.html" target="_blank">50 套专业Web设计与印刷用字体</a> [Noupe]</p>
<p>- <a href="http://www.smashingmagazine.com/2008/11/24/15-beautiful-high-quality-free-fonts/" target="_blank">15 套漂亮的高质量免费字体</a> [Smashing Magazine]</p>
<p>- <a href="http://www.designflavr.com/resources/21-Inspirational-Typography-Artworks--from-DeviantArt-i116/" target="_blank">21 套来自 DeviantArt 的艺术字体</a> [Designflavr]</p>
<p>- <a href="http://justcreativedesign.com/2008/09/23/top-7-fonts-used-by-professionals-in-graphic-design-2/" target="_blank">设计专业人士使用的7套最佳字体</a> [Just Creative <a href="http://www.woiweb.net/category/design">design</a>]</p>
<p>- <a href="http://sixrevisions.com/graphics-design/45-beautiful-free-fonts-for-modern-design-trends/" target="_blank">45 套符合现代设计趋势的免费漂亮字体</a> [Six Revisions]</p>
<h3><a href="http://www.woiweb.net/category/css" rel="nofollow" target="_blank">css</a></h3>
<p><img style="display: inline;" title="CSS Resources" src="http://www.woiweb.net/wp-content/uploads/2010/09//02063607p.jpg" alt="CSS Resources" height="53" width="450" /></p>
<p>- <a href="http://www.smashingmagazine.com/2008/12/09/50-really-useful-css-tools/" target="_blank">50 个强大的 CSS 实用工具</a> [Smashing Magazine]</p>
<p>- <a href="http://www.allwebdesignresources.com/webdesignblogs/graphics/30-css-cheat-sheets-quick-reference-guides/" target="_blank">30 套 CSS 小炒资料</a> [All Web <a href="http://www.woiweb.net/category/design">design</a> Resources]</p>
<p>- <a href="http://www.smashingmagazine.com/2008/06/19/css-editors-reviewed/" target="_blank">CSS 编辑器评测</a> [Smashing Magazine]</p>
<p>- <a href="http://nettuts.com/html-css-techniques/10-principles-of-the-css-masters/" target="_blank">CSS 高手的 10 个原则</a> [NETTUTS]</p>
<p>- <a href="http://www.webdesignerwall.com/trends/best-of-css-design-2008/" target="_blank">2008 最佳 CSS 设计</a>（<a href="http://eroading.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K651.aspx">中文</a>） [Web Designer Wall]</p>
<p>- <a href="http://www.allwebdesignresources.com/webdesignblogs/graphics/40-css-generators-creators-and-makers/" target="_blank">40 个 CSS 生成器</a> [All Web <a href="http://www.woiweb.net/category/design">design</a> Resources]</p>
<p>- <a href="http://sixrevisions.com/css/css-tips/css-tip-1-resetting-your-styles-with-css-reset/" target="_blank">重置你的CSS</a> [Six Revisions]</p>
<p>- <a href="http://www.smashingmagazine.com/2008/11/12/12-principles-for-keeping-your-code-clean/" target="_blank">实现干净代码的12条定律</a>（<a href="http://eroading.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K621.aspx">中文</a>） [Smashing Magazine]</p>
<h3>Logo 设计</h3>
<p><img style="display: inline;" title="Logo Design Resources" src="http://www.woiweb.net/wp-content/uploads/2010/09//020642xdb.jpg" alt="Logo Design Resources" height="93" width="450" /></p>
<p>- <a href="http://www.logodesignlove.com/best-logo-design-resources" target="_blank">81 个最佳 Logo 设计资源</a> [Logo <a href="http://www.woiweb.net/category/design">design</a> Love]</p>
<p>- <a href="http://justcreativedesign.com/2008/12/02/logo-design-resources/" target="_blank">最佳Logo设计资源</a> [Just Creative <a href="http://www.woiweb.net/category/design">design</a>]</p>
<p>- <a href="http://elitebydesign.com/105-logo-design-tuts-and-resources/" target="_blank">105 个Logo设计资源</a> [Elite By <a href="http://www.woiweb.net/category/design">design</a>]</p>
<p>- <a href="http://siahdesign.com/archives/448" target="_blank">35 个令人目眩的黑白 Logo</a> [Siah <a href="http://www.woiweb.net/category/design">design</a>]</p>
<p>- <a href="http://www.fuelyourcreativity.com/50-kick-ass-logos-for-inspiration/" target="_blank">50 套能够带来启发的 Logo</a> [Fuel Your Creativity]</p>
<p>- <a href="http://www.smashingapps.com/2008/11/13/33-exceptional-logo-rebranding-in-2008-for-your-inspiration.html" target="_blank">2008 年 33 个不俗的 Logo 重设计</a> [Smashing Apps]</p>
<p>- <a href="http://vectortuts.com/designing/30-brilliant-vector-logo-designs-deconstructed/" target="_blank">30 个精彩的矢量 Logo 设计</a> [VECTORTUTS]</p>
<p>- <a href="http://www.logodesignlove.com/10-successful-logo-redesigns" target="_blank">10 个成功的 Logo 设计</a> [Logo <a href="http://www.woiweb.net/category/design">design</a> Love]</p>
<h3>图标</h3>
<p><img style="display: inline;" title="Icons" src="http://www.woiweb.net/wp-content/uploads/2010/09//020643a3g.jpg" alt="Icons" height="80" width="450" /></p>
<p>- <a href="http://www.noupe.com/icons/50-most-beautiful-icon-sets-created-in-2008.html" target="_blank">2008年50套最漂亮的图标</a> [Noupe]</p>
<p>- <a href="http://sixrevisions.com/resources/40-beautiful-free-icon-sets/" target="_blank">40 套漂亮的免费图标</a> [Six Revisions]</p>
<p>- <a href="http://elitebydesign.com/free-high-quality-icons-sets/" target="_blank">22 套全新高品质免费图标</a> [Elite By <a href="http://www.woiweb.net/category/design">design</a>]</p>
<p>- <a href="http://www.noupe.com/freebie/40-extremely-beautifull-icon-sets-hand-picked-from-deviantart.html" target="_blank">40 套超漂亮的图标</a> [Noupe]</p>
<h3>设计启发</h3>
<p><img style="display: inline;" title="Inspiration Resources" src="http://www.woiweb.net/wp-content/uploads/2010/09//020644ack.jpg" alt="Inspiration Resources" height="102" width="450" /></p>
<p>- <a href="http://www.smashingmagazine.com/2008/10/23/50-beautiful-blog-designs/" target="_blank">50 个漂亮的博客设计</a> [Smashing Magazine]</p>
<p>- <a href="http://psdtuts.com/articles/inspiration/40-creative-courageous-and-campy-buttons/" target="_blank">40 个有创意的按钮</a> [PSDTUTS]</p>
<p>- <a href="http://www.hongkiat.com/blog/60-really-cool-and-creative-error-404-pages/" target="_blank">60 个非常 Cool 非常有创意的 404 页面</a> [Hongkiat]</p>
<p>- <a href="http://sixrevisions.com/web_design/30-beautiful-examples-of-grunge-in-web-design/" target="_blank">30 个漂亮的 Web 设计例子</a> [Six Revisions]</p>
<p>- <a href="http://www.crazyleafdesign.com/blog/top-40-beautiful-and-inspirational-website-designs-of-2008/" target="_blank">2008年40个具有启发性的 Web 设计</a> [CrazyLeaf <a href="http://www.woiweb.net/category/design">design</a> Blog]</p>
<p>- <a href="http://vandelaydesign.com/blog/galleries/inspirationalnavigation-menus/" target="_blank">50 个漂亮的导航菜单</a> [Vandelay Website <a href="http://www.woiweb.net/category/design">design</a>]</p>
<p>- <a href="http://www.cssleak.com/Category/Character-Illustrations-in-Web-Design.html" target="_blank">Web 设计中的57个矢量字符</a> [CSSLeak]</p>
<p>- <a href="http://www.smashingmagazine.com/2008/11/26/50-beautiful-and-creative-portfolio-designs/" target="_blank">50 个漂亮的，有创意的展示类站点设计</a> [Smashing Magazine]</p>
<p>- <a href="http://www.toxel.com/design/2008/12/07/40-beautiful-dark-css-website-designs/" target="_blank">40 个漂亮的暗色系 CSS 设计</a> [Toxel]</p>
<p>- <a href="http://cssbuilt.com/2008/11/40-beautiful-hand-drawn-websites/" target="_blank">40 个漂亮的手画 Web 设计</a> [CSSBuilt]</p>
<p>- <a href="http://inspiredology.com/another-79-amazing-album-covers/" target="_blank">79 个精彩的专辑封面</a> [Inspiredology]</p>
<p>- <a href="http://www.toxel.com/inspiration/2008/12/09/40-creative-business-card-designs/" target="_blank">40 套有创意的名片设计</a> [Toxel]</p>
<p>- <a href="http://www.smashingmagazine.com/2008/07/09/textures-and-patterns-design-showcase/" target="_blank">纹理与图样设计展示</a> [Smashing Magazine]</p>
<p>- <a href="http://psdtuts.com/articles/web/54-mind-blowing-digital-paintings/" target="_blank">54 幅令人灵魂出窍的数字画</a> [PSDTUTS]</p>
<p>- <a href="http://www.hongkiat.com/blog/50-excellent-blog-footer-designs/" target="_blank">50 个出色的博客页脚设计</a> [Hongkiat]</p>
<p>- <a href="http://www.toxel.com/design/2008/11/26/24-beautiful-and-creative-website-headers/" target="_blank">24 个漂亮的，有创意的网站 Header 设计</a> [Toxel]</p>
<p>- <a href="http://www.smashingmagazine.com/2008/04/22/inspirational-pdf-magazines/" target="_blank">富有灵感的 PDF 杂志设计</a> [Smashing Magazine]</p>
<h3>教程</h3>
<p><img style="display: inline;" title="Tutorials" src="http://www.woiweb.net/wp-content/uploads/2010/09//02064580u.jpg" alt="Tutorials" height="102" width="450" /></p>
<p>- <a href="http://www.hongkiat.com/blog/41-nicest-photoshop-photo-effects-photoshop-tutorials/" target="_blank">41 个最好的 Photoshop 效果教程</a> [Hongkiat]</p>
<p>- <a href="http://sixrevisions.com/graphics-design/photoshop_text_effect_tutorials/" target="_blank">30 个漂亮的 Photoshop 文字效果教程</a> [Six Revisions]</p>
<p>- <a href="http://www.smashingmagazine.com/2008/07/15/70-beauty-retouching-photoshop-tutorials/" target="_blank">70 个 Photoshop 美容教程</a> [Smashing Magazine]</p>
<p>- <a href="http://psdtuts.com/articles/web/50-great-photoshop-tutorials-for-clever-beginners/" target="_blank">50 个很棒的 Photoshop 教程</a> [PSDTUTS]</p>
<p>- <a href="http://arbent.net/blog/30-tutorials-that-will-teach-you-fireworks" target="_blank">30 个 Fireworks 教程</a> [Arbent]</p>
<p>- <a href="http://www.smashingmagazine.com/2008/03/18/adobe-fireworks-tutorials-and-downloads-best-of/" target="_blank">Adobe Fireworks 教程与下载</a> [Smashing Magazine]</p>
<p>- <a href="http://designm.ag/tutorials/wacom-tutorials/" target="_blank">40 个 Wacom 数字画板教程</a> [DesignM.ag]</p>
<p>- <a href="http://www.smashingmagazine.com/2008/10/16/50-excellent-ajax-tutorials/" target="_blank">50 个出色的 AJAX 教程</a> [Smashing Magazine]</p>
<p>- <a href="http://psdtuts.com/tutorials/tutorials-effects/50-creative-photoshop-text-effects/" target="_blank">50 个富有创意的 Photoshop 文字效果教程</a> [PSDTUTS]</p>
<p>- <a href="http://elitebydesign.com/23-most-incredible-photoshop-tutorials/" target="_blank">23 个不可思议的 Photoshop 教程</a> [Elite By <a href="http://www.woiweb.net/category/design">design</a>]</p>
<p>- <a href="http://www.smashingmagazine.com/2008/02/05/illustrator-tutorials-best-of/" target="_blank">Adobe Illustrator 教程</a> [Smashing Magazine]</p>
<h3>Photoshop 资源下载</h3>
<p><img style="display: inline;" title="Photoshop Downloads" src="http://www.woiweb.net/wp-content/uploads/2010/09//020646bk8.jpg" alt="Photoshop Downloads" height="102" width="450" /></p>
<p>- <a href="http://www.smashingmagazine.com/2008/12/11/the-ultimate-collection-of-photoshop-custom-shapes/" target="_blank">Photoshop Custom Shapes 集</a> [Smashing Magazine]</p>
<p>- <a href="http://psdtuts.com/articles/inspiration/20-photoshop-painted-inspiration-and-brush-resources/" target="_blank">20 个 Photoshop 印刷作品与画笔资源</a> [PSDTUTS]</p>
<p>- <a href="http://elitebydesign.com/75-insane-high-res-photoshop-brushes/" target="_blank">75 个超高分辨率 Photoshop 画笔</a> [Elite By <a href="http://www.woiweb.net/category/design">design</a>]</p>
<p>- <a href="http://www.smashingmagazine.com/2008/11/10/50-must-have-photoshop-brushes/" target="_blank">50 个不可或缺的 Photoshop 画笔</a> [Smashing Magazine]</p>
<p>- <a href="http://www.youthedesigner.com/2008/07/28/200-free-grunge-photoshop-brushes/" target="_blank">200 套 Photoshop 画笔</a> [You the Designer]</p>
<p>- <a href="http://www.emmaalvarez.com/2008/09/50-free-photoshop-pattern-sets.html" target="_blank">50 套免费的 Photoshop Pattern</a> [Emma Alvarez]</p>
<p>- <a href="http://www.webresourcesdepot.com/free-human-brush-sets-and-human-vector-images/" target="_blank">55 套免费的画笔与矢量图</a> [Web Resources Depot]</p>
<p>- <a href="http://psdfan.com/freebies/40-halloween-and-gore-themed-photoshop-brushes/" target="_blank">40 套 Photoshop 万圣节主题画笔</a> [PSDFan]</p>
<h3><a href="http://www.woiweb.net/tag/wordpress">wordpress</a></h3>
<p><img style="display: inline;" title="WordPress Resources" src="http://www.woiweb.net/wp-content/uploads/2010/09//020646inf.jpg" alt="WordPress Resources" height="80" width="450" /></p>
<p>- <a href="http://www.smashingmagazine.com/2008/01/08/100-excellent-free-high-quality-wordpress-themes/" target="_blank">100 出色的 Wordpress 免费主题</a> [Smashing Magazine]</p>
<p>- <a href="http://www.hongkiat.com/blog/30-more-most-wanted-wordpress-tips-tricks-and-hacks/" target="_blank">30 个最实用的 Wordpress 技巧</a> [Hongkiat]</p>
<p>- <a href="http://www.wpzoom.com/wordpress-themes-sets/45-free-premium-wordpress-themes-with-magazine-or-grid-layouts/" target="_blank">45 套免费的 Wordpress 网格布局主题</a> [WPZOOM]</p>
<p>- <a href="http://www.noupe.com/wordpress/outstanding-free-and-premium-wordpress-themes.html" target="_blank">45 套必须要看到 WordPress 主题</a> [Noupe]</p>
<p>- <a href="http://blogsessive.com/blogging-tips/20-corporate-free-wordpress-themes/" target="_blank">20 套 Wordpress 公司网站主题</a> [Blogsessive]</p>
<p>- <a href="http://www.toxel.com/design/2008/08/06/24-high-quality-free-wordpress-themes/" target="_blank">24 套高质量免费 Wordpress 主题</a> [Toxel]</p>
<p>- <a href="http://www.smashingapps.com/2008/08/20/21-mindblowing-premium-like-free-wordpress-themes.html" target="_blank">21 套令人耳目一新的免费Wordpress主题</a> [Smashing Apps]</p>
<p>- <a href="http://sixrevisions.com/resources/50-beautiful-free-wordpress-themes/" target="_blank">50 套漂亮的免费 Wordpress 主题</a> [Six Revisions]</p>
<p>- <a href="http://blog.uprinting.com/10-places-for-free-wordpress-themes/" target="_blank">10 个寻找免费 Wordpress 主题的地方</a> [UPrinting]</p>
<p>- <a href="http://www.crazyleafdesign.com/blog/top-50-free-wordpress-themes/" target="_blank">50 个最好的 Wordpress 主题</a> [CrazyLeaf <a href="http://www.woiweb.net/category/design">design</a> Blog]</p>
<p>- <a href="http://www.smashingmagazine.com/2008/12/02/10-useful-rss-hacks-for-wordpress/" target="_blank">10 个 Wordpress 实用 RSS 技巧</a> [Smashing Magazine]</p>
<p>- <a href="http://dzineblog.com/2008/12/45-excellent-free-wordpress-templates.html" target="_blank">45 个出色的免费 Wordpress 主题</a> [DzineBlog]</p>
<img src ="http://www.blogjava.net/sealyu/aggbug/332606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-09-21 14:52 <a href="http://www.blogjava.net/sealyu/archive/2010/09/21/332606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>80+ Useful PSD Templates For Web Designers</title><link>http://www.blogjava.net/sealyu/archive/2010/09/16/332136.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Thu, 16 Sep 2010 01:22:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/09/16/332136.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/332136.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/09/16/332136.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/332136.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/332136.html</trackback:ping><description><![CDATA[<h3>Icons, buttons &amp; badges</h3>
<p><a href="http://birofunk.deviantart.com/art/Glass-Video-Playback-Buttons-94624733">Glass Video Playback Buttons</a><br />
via <a href="http://birofunk.deviantart.com/">Birofunk</a></p>
<p><a href="http://birofunk.deviantart.com/art/Glass-Video-Playback-Buttons-94624733"><img src="http://media.smashingmagazine.com/cdn_noupe/wp-content/uploads/2010/08/design_ps_templates_2.jpg" alt="Design Ps Templates 2 in 80+ Useful PSD Templates For Web Designers" height="299" width="540" /></a><br />
<a href="http://vicing.deviantart.com/art/windows-button-psd-95123438">Windows buttons PSD</a><br />
via <a href="http://vicing.deviantart.com/">Vicing</a></p>
<p><a href="http://vicing.deviantart.com/art/windows-button-psd-95123438"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_3.jpg" alt="Design Ps Templates 3 in 80+ Useful PSD Templates For Web Designers" height="405" width="540" /></a><br />
<a href="http://vathanx.deviantart.com/art/PSDFox-88452554">PSDFox</a><br />
via <a href="http://vathanx.deviantart.com/">Vathanx</a></p>
<p><a href="http://vathanx.deviantart.com/art/PSDFox-88452554"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_4.jpg" alt="Design Ps Templates 4 in 80+ Useful PSD Templates For Web Designers" height="405" width="540" /></a><br />
<a href="http://celerayted.deviantart.com/art/Free-Button-Pack-107736852">Free Button Pack</a><br />
via <a href="http://celerayted.deviantart.com/">Celerayted</a></p>
<p><a href="http://celerayted.deviantart.com/art/Free-Button-Pack-107736852"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_19.jpg" alt="Design Ps Templates 19 in 80+ Useful PSD Templates For Web Designers" height="810" width="540" /></a><br />
<a href="http://fastnfurious.deviantart.com/art/Aero-Avatar-and-SIG-52393274?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=146">Aero Avatar and SIG</a><br />
via <a href="http://fastnfurious.deviantart.com/">FastNFurious</a></p>
<p><a href="http://fastnfurious.deviantart.com/art/Aero-Avatar-and-SIG-52393274?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=146"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_46.jpg" alt="Design Ps Templates 46 in 80+ Useful PSD Templates For Web Designers" height="390" width="491" /></a><br />
<a href="http://giannisgx89.deviantart.com/art/Win7-Taskbar-Buttons-PSD-105881939?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=165">Win7 Taskbar Buttons .PSD</a><br />
via <a href="http://giannisgx89.deviantart.com/">Giannisgx89</a></p>
<p><a href="http://giannisgx89.deviantart.com/art/Win7-Taskbar-Buttons-PSD-105881939?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=165"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_47.jpg" alt="Design Ps Templates 47 in 80+ Useful PSD Templates For Web Designers" height="312" width="540" /></a><br />
<a href="http://bobbyperux.deviantart.com/art/Customizable-Folders-58267574?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=217">Customizable Folders</a><br />
via <a href="http://bobbyperux.deviantart.com/">Bobbyperux</a></p>
<p><a href="http://bobbyperux.deviantart.com/art/Customizable-Folders-58267574?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=217"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_56.jpg" alt="Design Ps Templates 56 in 80+ Useful PSD Templates For Web Designers" height="532" width="532" /></a><br />
<a href="http://juliusx.deviantart.com/art/Twitter-Icons-PSD-117644880?qj=1&amp;q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=316">Twitter Icons .PSD</a><br />
via <a href="http://juliusx.deviantart.com/">JuliusX</a></p>
<p><a href="http://juliusx.deviantart.com/art/Twitter-Icons-PSD-117644880?qj=1&amp;q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=316"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_59.jpg" alt="Design Ps Templates 59 in 80+ Useful PSD Templates For Web Designers" height="540" width="540" /></a><br />
<a href="http://annatreter.deviantart.com/art/Customizable-Pins-Buttons-113621779?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd+buttons&amp;qo=7">Customizable Pins Buttons</a><br />
via <a href="http://annatreter.deviantart.com/">Annatreter</a></p>
<p><a href="http://annatreter.deviantart.com/art/Customizable-Pins-Buttons-113621779?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd+buttons&amp;qo=7"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_65.jpg" alt="Design Ps Templates 65 in 80+ Useful PSD Templates For Web Designers" height="405" width="540" /></a><br />
<a href="http://el3ment4l.deviantart.com/art/Buttons-PSD-71698930?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd+buttons&amp;qo=1">Buttons PSD</a><br />
via <a href="http://el3ment4l.deviantart.com/">El3ment4l</a></p>
<p><a href="http://el3ment4l.deviantart.com/art/Buttons-PSD-71698930?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd+buttons&amp;qo=1"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_66.jpg" alt="Design Ps Templates 66 in 80+ Useful PSD Templates For Web Designers" height="200" width="500" /></a><br />
<a href="http://manicho.deviantart.com/art/Badge-it-Yourself-43423542">Badge-it Yourself</a><br />
via <a href="http://manicho.deviantart.com/">Manicho</a></p>
<p><a href="http://manicho.deviantart.com/art/Badge-it-Yourself-43423542"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_72.jpg" alt="Design Ps Templates 72 in 80+ Useful PSD Templates For Web Designers" height="530" width="460" /></a><br />
<a href="http://tlmedia.deviantart.com/art/stiker-PSD-70477387">Stiker PSD</a><br />
via <a href="http://tlmedia.deviantart.com/">TLMedia</a></p>
<p><a href="http://tlmedia.deviantart.com/art/stiker-PSD-70477387"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_82.jpg" alt="Design Ps Templates 82 in 80+ Useful PSD Templates For Web Designers" height="680" width="476" /></a><br />
<a href="http://www.photoshopstar.com/web-graphics/nice-simple-subscribe-badges/">Nice &#8216;n&#8217; Simple Subscribe Badges</a><br />
via <a href="http://www.photoshopstar.com/">PhotoshopStar</a></p>
<p><a href="http://www.photoshopstar.com/web-graphics/nice-simple-subscribe-badges/"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_102.jpg" alt="Design Ps Templates 102 in 80+ Useful PSD Templates For Web Designers" height="182" width="500" /></a><br />
<a href="http://wearwolfaa.deviantart.com/art/9-PSD-Icons-Vol-1-74134030">6 .PSD Icons Vol. 1</a><br />
via <a href="http://wearwolfaa.deviantart.com/">Wearwolfaa</a></p>
<p><a href="http://wearwolfaa.deviantart.com/art/9-PSD-Icons-Vol-1-74134030"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_101.jpg" alt="Design Ps Templates 101 in 80+ Useful PSD Templates For Web Designers" height="500" width="400" /></a><br />
<a href="http://wearwolfaa.deviantart.com/art/6-PSD-Icons-Vol-3-74135458">6 .PSD Icons Vol. 3</a><br />
via <a href="http://wearwolfaa.deviantart.com/">Wearwolfaa</a></p>
<p><a href="http://wearwolfaa.deviantart.com/art/6-PSD-Icons-Vol-3-74135458"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_77.jpg" alt="Design Ps Templates 77 in 80+ Useful PSD Templates For Web Designers" height="500" width="400" /></a><br />
<a href="http://wearwolfaa.deviantart.com/art/6-PSD-Icons-Vol-4-74136013">6 .PSD Icons Vol. 4</a><br />
via <a href="http://wearwolfaa.deviantart.com/">Wearwolfaa</a></p>
<p><a href="http://wearwolfaa.deviantart.com/art/6-PSD-Icons-Vol-4-74136013"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_76.jpg" alt="Design Ps Templates 76 in 80+ Useful PSD Templates For Web Designers" height="500" width="400" /></a></p>
<h3>Simple objects</h3>
<p><a href="http://jean31.deviantart.com/art/Magnifa-Pro-58693924">Magnifa Pro</a><br />
via <a href="http://jean31.deviantart.com/">Jean31</a></p>
<p><a href="http://jean31.deviantart.com/art/Magnifa-Pro-58693924"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_5.jpg" alt="Design Ps Templates 5 in 80+ Useful PSD Templates For Web Designers" height="578" width="540" /></a><br />
<a href="http://nunosk8.deviantart.com/art/NEW-skateboard-template-79021200">NEW skateboard template</a><br />
via <a href="http://nunosk8.deviantart.com/">Nunosk8</a></p>
<p><a href="http://nunosk8.deviantart.com/art/NEW-skateboard-template-79021200"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_6.jpg" alt="Design Ps Templates 6 in 80+ Useful PSD Templates For Web Designers" height="540" width="540" /></a><br />
<a href="http://lemex.deviantart.com/art/stratocaster-Classic-psd-116798426">Stratocaster Classic psd</a><br />
via <a href="http://lemex.deviantart.com/">LeMex</a></p>
<p><a href="http://lemex.deviantart.com/art/stratocaster-Classic-psd-116798426"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_9.jpg" alt="Design Ps Templates 9 in 80+ Useful PSD Templates For Web Designers" height="435" width="540" /></a><br />
<a href="http://flahorn.deviantart.com/art/Battery-PSD-93299332">Battery PSD</a><br />
via <a href="http://flahorn.deviantart.com/">Flahorn</a></p>
<p><a href="http://flahorn.deviantart.com/art/Battery-PSD-93299332"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_15.jpg" alt="Design Ps Templates 15 in 80+ Useful PSD Templates For Web Designers" height="650" width="450" /></a><br />
<a href="http://tlmedia.deviantart.com/art/knife-party-PSD-140169546">knife party PSD</a><br />
via <a href="http://tlmedia.deviantart.com/">TLMedia</a></p>
<p><a href="http://tlmedia.deviantart.com/art/knife-party-PSD-140169546"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_20.jpg" alt="Design Ps Templates 20 in 80+ Useful PSD Templates For Web Designers" height="399" width="540" /></a><br />
<a href="http://thedevstudio.deviantart.com/art/Photoshop-3D-Cube-75033695">Photoshop 3D Cube</a><br />
via <a href="http://thedevstudio.deviantart.com/">Thedevstudio</a></p>
<p><a href="http://thedevstudio.deviantart.com/art/Photoshop-3D-Cube-75033695"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_27.jpg" alt="Design Ps Templates 27 in 80+ Useful PSD Templates For Web Designers" height="537" width="540" /></a><br />
<a href="http://psd.tutsplus.com/freebies/psd/office-resources-psd-freebie/">Office Resources</a><br />
via <a href="http://psd.tutsplus.com/">PSDTuts</a></p>
<p><a href="http://psd.tutsplus.com/freebies/psd/office-resources-psd-freebie/"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_50.jpg" alt="Design Ps Templates 50 in 80+ Useful PSD Templates For Web Designers" height="720" width="540" /></a><br />
<a href="http://funkyfreshfab.deviantart.com/art/Sweet-Cakes-PNG-s-111292973?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=169">Sweet Cakes PNG&#8217;s</a><br />
via <a href="http://funkyfreshfab.deviantart.com/">Funkyfreshfab</a></p>
<p><a href="http://funkyfreshfab.deviantart.com/art/Sweet-Cakes-PNG-s-111292973?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=169"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_52.jpg" alt="Design Ps Templates 52 in 80+ Useful PSD Templates For Web Designers" height="400" width="400" /></a><br />
<a href="http://manicho.deviantart.com/art/Cassette-PSD-File-86548493">Cassette &#8211; PSD File</a><br />
via <a href="http://manicho.deviantart.com/">Manicho</a></p>
<p><a href="http://manicho.deviantart.com/art/Cassette-PSD-File-86548493"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_73.jpg" alt="Design Ps Templates 73 in 80+ Useful PSD Templates For Web Designers" height="440" width="540" /></a><br />
<a href="http://auroradesign.deviantart.com/art/Item-Coffee-PSD-File-80327833">Item Coffee PSD File</a><br />
via <a href="http://auroradesign.deviantart.com/">AuroraDesign</a></p>
<p><a href="http://auroradesign.deviantart.com/art/Item-Coffee-PSD-File-80327833"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_74.jpg" alt="Design Ps Templates 74 in 80+ Useful PSD Templates For Web Designers" height="405" width="540" /></a><br />
<a href="http://flahorn.deviantart.com/art/Apple-PSD-75454438">Apple PSD</a><br />
via <a href="http://flahorn.deviantart.com/">Flahorn</a></p>
<p><a href="http://flahorn.deviantart.com/art/Apple-PSD-75454438"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_14.jpg" alt="Design Ps Templates 14 in 80+ Useful PSD Templates For Web Designers" height="650" width="450" /></a></p>
<h3>Electornics</h3>
<p><a href="http://snicket32.deviantart.com/art/Macbook-Air-PSD-96424255">Macbook Air PSD</a><br />
via <a href="http://snicket32.deviantart.com/">Snicket32</a></p>
<p><a href="http://snicket32.deviantart.com/art/Macbook-Air-PSD-96424255"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_7.jpg" alt="Design Ps Templates 7 in 80+ Useful PSD Templates For Web Designers" height="394" width="540" /></a><br />
<a href="http://ddrdark.deviantart.com/art/Airport-Express-PSD-Included-107242403">Airport Express</a><br />
via <a href="http://ddrdark.deviantart.com/">DDrDark</a></p>
<p><a href="http://ddrdark.deviantart.com/art/Airport-Express-PSD-Included-107242403"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_8.jpg" alt="Design Ps Templates 8 in 80+ Useful PSD Templates For Web Designers" height="379" width="540" /></a><br />
<a href="http://mppagano.deviantart.com/art/iPad-PSD-152052141">iPad PSD</a><br />
via <a href="http://mppagano.deviantart.com/">Mppagano</a></p>
<p><a href="http://mppagano.deviantart.com/art/iPad-PSD-152052141"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_10.jpg" alt="Design Ps Templates 10 in 80+ Useful PSD Templates For Web Designers" height="540" width="540" /></a><br />
<a href="http://jbensch.deviantart.com/art/PSP-psd-template-95443724">PSP psd template</a><br />
via <a href="http://jbensch.deviantart.com/">Jbensch</a></p>
<p><a href="http://jbensch.deviantart.com/art/PSP-psd-template-95443724"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_12.jpg" alt="Design Ps Templates 12 in 80+ Useful PSD Templates For Web Designers" height="360" width="540" /></a><br />
<a href="http://obsilion.deviantart.com/art/Macbook-PSD-125968880">Macbook PSD</a><br />
via <a href="http://obsilion.deviantart.com/">Obsilion</a></p>
<p><a href="http://obsilion.deviantart.com/art/Macbook-PSD-125968880"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_13.jpg" alt="Design Ps Templates 13 in 80+ Useful PSD Templates For Web Designers" height="500" width="500" /></a><br />
<a href="http://joelatlas.deviantart.com/art/iphone-3g-PSD-HD-94206586">Iphone 3g PSD HD</a><br />
via <a href="http://joelatlas.deviantart.com/">JoelAtlas</a></p>
<p><a href="http://joelatlas.deviantart.com/art/iphone-3g-PSD-HD-94206586"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_18.jpg" alt="Design Ps Templates 18 in 80+ Useful PSD Templates For Web Designers" height="343" width="540" /></a><br />
<a href="http://zandog.deviantart.com/art/Sony-Playstation-3-Slim-PSD-153482011">Sony Playstation 3 Slim .PSD</a><br />
via <a href="http://zandog.deviantart.com/">Zandog</a></p>
<p><a href="http://zandog.deviantart.com/art/Sony-Playstation-3-Slim-PSD-153482011"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_21.jpg" alt="Design Ps Templates 21 in 80+ Useful PSD Templates For Web Designers" height="428" width="540" /></a><br />
<a href="http://zandog.deviantart.com/art/Apple-iPhone-4G-PSD-161681253">Apple iPhone 4G .PSD</a><br />
via <a href="http://zandog.deviantart.com/">Zandog</a></p>
<p><a href="http://zandog.deviantart.com/art/Apple-iPhone-4G-PSD-161681253"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_22.jpg" alt="Design Ps Templates 22 in 80+ Useful PSD Templates For Web Designers" height="720" width="540" /></a><br />
<a href="http://djeric.deviantart.com/art/free-psd-apple-display-123035073">free psd apple display</a><br />
via <a href="http://djeric.deviantart.com/">Djeric</a></p>
<p><a href="http://djeric.deviantart.com/art/free-psd-apple-display-123035073"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_23.jpg" alt="Design Ps Templates 23 in 80+ Useful PSD Templates For Web Designers" height="540" width="540" /></a><br />
<a href="http://bobbyperux.deviantart.com/art/PLASMA-TV-87058167">PLASMA TV</a><br />
via <a href="http://bobbyperux.deviantart.com/">Bobbyperux</a></p>
<p><a href="http://bobbyperux.deviantart.com/art/PLASMA-TV-87058167"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_29.jpg" alt="Design Ps Templates 29 in 80+ Useful PSD Templates For Web Designers" height="404" width="540" /></a><br />
<a href="http://bobbyperux.deviantart.com/art/Apple-remote-83571585">Apple remote</a><br />
via <a href="http://bobbyperux.deviantart.com/">Bobbyperux</a></p>
<p><a href="http://bobbyperux.deviantart.com/art/Apple-remote-83571585"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_30.jpg" alt="Design Ps Templates 30 in 80+ Useful PSD Templates For Web Designers" height="252" width="540" /></a><br />
<a href="http://djeric.deviantart.com/art/free-psd-ipod-touch-139664482">Psd ipod touch</a><br />
via <a href="http://djeric.deviantart.com/">Djeric</a></p>
<p><a href="http://djeric.deviantart.com/art/free-psd-ipod-touch-139664482"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_31.jpg" alt="Design Ps Templates 31 in 80+ Useful PSD Templates For Web Designers" height="540" width="540" /></a><br />
<a href="http://digitalphenom.deviantart.com/art/RIM-Blackberry-PSD-111857107">RIM Blackberry PSD</a><br />
via <a href="http://digitalphenom.deviantart.com/">DigitalPhenom</a></p>
<p><a href="http://digitalphenom.deviantart.com/art/RIM-Blackberry-PSD-111857107"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_36.jpg" alt="Design Ps Templates 36 in 80+ Useful PSD Templates For Web Designers" height="450" width="540" /></a><br />
<a href="http://digitalphenom.deviantart.com/art/Microsoft-ZUNE-PSD-111589472">Microsoft ZUNE PSD</a><br />
via <a href="http://digitalphenom.deviantart.com/">DigitalPhenom</a></p>
<p><a href="http://digitalphenom.deviantart.com/art/Microsoft-ZUNE-PSD-111589472"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_37.jpg" alt="Design Ps Templates 37 in 80+ Useful PSD Templates For Web Designers" height="486" width="540" /></a><br />
<a href="http://digitalphenom.deviantart.com/art/Dell-Vostro-psd-112765830">Dell Vostro psd</a><br />
via <a href="http://digitalphenom.deviantart.com/">DigitalPhenom</a></p>
<p><a href="http://digitalphenom.deviantart.com/art/Dell-Vostro-psd-112765830"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_38.jpg" alt="Design Ps Templates 38 in 80+ Useful PSD Templates For Web Designers" height="341" width="540" /></a><br />
<a href="http://kamikaze00x.deviantart.com/art/The-MacBook-In-Black-93545166">The MacBook In Black.</a><br />
via <a href="http://kamikaze00x.deviantart.com/">Kamikaze00X</a></p>
<p><a href="http://kamikaze00x.deviantart.com/art/The-MacBook-In-Black-93545166"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_39.jpg" alt="Design Ps Templates 39 in 80+ Useful PSD Templates For Web Designers" height="270" width="540" /></a><br />
<a href="http://manicho.deviantart.com/art/iPhone-PSD-file-Updated-46318275?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=37">iPhone PSD file &#8211; Updated</a><br />
via <a href="http://manicho.deviantart.com/">Manicho</a></p>
<p><a href="http://manicho.deviantart.com/art/iPhone-PSD-file-Updated-46318275?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=37"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_41.jpg" alt="Design Ps Templates 41 in 80+ Useful PSD Templates For Web Designers" height="566" width="352" /></a><br />
<a href="http://psd.tutsplus.com/freebies/psd/freebie-vector-iphone-4-psd-file/">Vector iPhone 4</a><br />
via <a href="http://psd.tutsplus.com/">PSDTuts</a></p>
<p><a href="http://psd.tutsplus.com/freebies/psd/freebie-vector-iphone-4-psd-file/"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_49.jpg" alt="Design Ps Templates 49 in 80+ Useful PSD Templates For Web Designers" height="810" width="540" /></a><br />
<a href="http://jbensch.deviantart.com/art/PSP-psd-template-95443724?qj=1&amp;q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=284">PSP psd template</a><br />
via <a href="http://jbensch.deviantart.com/">Jbensch</a></p>
<p><a href="http://jbensch.deviantart.com/art/PSP-psd-template-95443724?qj=1&amp;q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=284"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_57.jpg" alt="Design Ps Templates 57 in 80+ Useful PSD Templates For Web Designers" height="360" width="540" /></a><br />
<a href="http://zikkzak.deviantart.com/art/iPod-nano-chromatic-Apple-111115606?qj=1&amp;q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=315">iPod nano-chromatic &#8211; Apple</a><br />
via <a href="http://zikkzak.deviantart.com/">Zikkzak</a></p>
<p><a href="http://zikkzak.deviantart.com/art/iPod-nano-chromatic-Apple-111115606?qj=1&amp;q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=315"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_60.jpg" alt="Design Ps Templates 60 in 80+ Useful PSD Templates For Web Designers" height="382" width="540" /></a><br />
<a href="http://www.adobetutorialz.com/articles/30970310/1/ipad-gui-psd">iPad GUI PSD</a><br />
via <a href="http://www.adobetutorialz.com/">AdobeTutorialz</a></p>
<p><a href="http://www.adobetutorialz.com/articles/30970310/1/ipad-gui-psd"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_63.jpg" alt="Design Ps Templates 63 in 80+ Useful PSD Templates For Web Designers" height="568" width="540" /></a></p>
<h3>Illustrations</h3>
<p><a href="http://sneakytomato.deviantart.com/art/Globe-Resource-88621801">Globe Resource</a><br />
via <a href="http://sneakytomato.deviantart.com/">SneakyTomato</a></p>
<p><a href="http://sneakytomato.deviantart.com/art/Globe-Resource-88621801"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_1.jpg" alt="Design Ps Templates 1 in 80+ Useful PSD Templates For Web Designers" height="439" width="540" /></a><br />
<a href="http://xjesx.deviantart.com/art/PSD-man-65738735">PSD man</a><br />
via <a href="http://xjesx.deviantart.com/">Xjesx</a></p>
<p><a href="http://xjesx.deviantart.com/art/PSD-man-65738735"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_11.jpg" alt="Design Ps Templates 11 in 80+ Useful PSD Templates For Web Designers" height="867" width="540" /></a><br />
<a href="http://seizure.deviantart.com/art/Breathe-psd-1860936">Breathe psd</a><br />
via <a href="http://seizure.deviantart.com/">Seizure</a></p>
<p><a href="http://seizure.deviantart.com/art/Breathe-psd-1860936"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_35.jpg" alt="Design Ps Templates 35 in 80+ Useful PSD Templates For Web Designers" height="720" width="540" /></a><br />
<a href="http://coreaux.deviantart.com/art/Oh-my-eyes-86524895?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=77">Oh, my eyes</a><br />
via <a href="http://coreaux.deviantart.com/">Coreaux</a></p>
<p><a href="http://coreaux.deviantart.com/art/Oh-my-eyes-86524895?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=77"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_45.jpg" alt="Design Ps Templates 45 in 80+ Useful PSD Templates For Web Designers" height="298" width="295" /></a><br />
<a href="http://edubz02.deviantart.com/art/High-Res-PSD-Planets-61034951?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=46">High Res PSD Planets</a><br />
via <a href="http://edubz02.deviantart.com/">Edubz02</a></p>
<p><a href="http://edubz02.deviantart.com/art/High-Res-PSD-Planets-61034951?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=46"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_43.jpg" alt="Design Ps Templates 43 in 80+ Useful PSD Templates For Web Designers" height="756" width="540" /></a><br />
<a href="http://melzinhabc.deviantart.com/art/Live-forever-PSD-76940473?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=186">Live forever.  &#8211; PSD</a><br />
via <a href="http://melzinhabc.deviantart.com/">Melzinhabc</a></p>
<p><a href="http://melzinhabc.deviantart.com/art/Live-forever-PSD-76940473?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=186"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_53.jpg" alt="Design Ps Templates 53 in 80+ Useful PSD Templates For Web Designers" height="412" width="540" /></a><br />
<a href="http://jferguson757.deviantart.com/art/Space-Light-PSD-96285484?qj=1&amp;q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=398">Space Light PSD</a><br />
via <a href="http://jferguson757.deviantart.com/">Jferguson757</a></p>
<p><a href="http://jferguson757.deviantart.com/art/Space-Light-PSD-96285484?qj=1&amp;q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=398"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_62.jpg" alt="Design Ps Templates 62 in 80+ Useful PSD Templates For Web Designers" height="338" width="540" /></a><br />
<a href="http://icetrix.deviantart.com/art/Lord-Pram-PSD-file-80166500">Lord Pram .PSD file</a><br />
via <a href="http://icetrix.deviantart.com/">Icetrix</a></p>
<p><a href="http://icetrix.deviantart.com/art/Lord-Pram-PSD-file-80166500"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_75.jpg" alt="Design Ps Templates 75 in 80+ Useful PSD Templates For Web Designers" height="500" width="347" /></a><br />
<a href="http://www.fordesigner.com/maps//2860-0.htm">Books and Lily</a><br />
via <a href="http://www.fordesigner.com/">Fordesigner</a></p>
<p><a href="http://www.fordesigner.com/maps//2860-0.htm"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_78.jpg" alt="Design Ps Templates 78 in 80+ Useful PSD Templates For Web Designers" height="277" width="425" /></a><br />
<a href="http://www.fordesigner.com/maps//2739-0.htm">The eagle under sunset</a><br />
via <a href="http://www.fordesigner.com/">Fordesigner</a></p>
<p><a href="http://www.fordesigner.com/maps//2739-0.htm"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_79.jpg" alt="Design Ps Templates 79 in 80+ Useful PSD Templates For Web Designers" height="277" width="425" /></a></p>
<h3>Box-, CD &amp; DVD Case Templates</h3>
<p><a href="http://manicho.deviantart.com/art/DVD-Case-Art-PSD-file-61443492">DVD Case+Art &#8211; PSD file</a><br />
via <a href="http://manicho.deviantart.com/">Manicho</a></p>
<p><a href="http://manicho.deviantart.com/art/DVD-Case-Art-PSD-file-61443492"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_16.jpg" alt="Design Ps Templates 16 in 80+ Useful PSD Templates For Web Designers" height="631" width="540" /></a><br />
<a href="http://manicho.deviantart.com/art/DVD-Plastic-Case-PSD-file-86546288">DVD Plastic Case &#8211; PSD file</a><br />
via <a href="http://manicho.deviantart.com/">Manicho</a></p>
<p><a href="http://manicho.deviantart.com/art/DVD-Plastic-Case-PSD-file-86546288"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_17.jpg" alt="Design Ps Templates 17 in 80+ Useful PSD Templates For Web Designers" height="440" width="540" /></a><br />
<a href="http://digitalphenom.deviantart.com/art/FREE-Product-Box-PSD-110135481">FREE Product Box PSD</a><br />
via <a href="http://digitalphenom.deviantart.com/">DigitalPhenom</a></p>
<p><a href="http://digitalphenom.deviantart.com/art/FREE-Product-Box-PSD-110135481"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_24.jpg" alt="Design Ps Templates 24 in 80+ Useful PSD Templates For Web Designers" height="338" width="540" /></a><br />
<a href="http://2n2.deviantart.com/art/DVD-Label-PSD-Template-102545702">DVD Label &#8211; PSD Template</a><br />
via <a href="http://2n2.deviantart.com/">2N2</a></p>
<p><a href="http://2n2.deviantart.com/art/DVD-Label-PSD-Template-102545702"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_28.jpg" alt="Design Ps Templates 28 in 80+ Useful PSD Templates For Web Designers" height="540" width="540" /></a><br />
<a href="http://2n2.deviantart.com/art/DVD-Case-Inlay-PSD-Template-102545406">DVD Case Inlay &#8211; PSD Template</a><br />
via <a href="http://2n2.deviantart.com/">2N2</a></p>
<p><a href="http://2n2.deviantart.com/art/DVD-Case-Inlay-PSD-Template-102545406"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_69.jpg" alt="Design Ps Templates 69 in 80+ Useful PSD Templates For Web Designers" height="368" width="540" /></a><br />
<a href="http://dezignus.com/dvdcase/">Plastic DVD Case</a><br />
via <a href="http://dezignus.com/">Dezignus</a></p>
<p><a href="http://dezignus.com/dvdcase/"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_70.jpg" alt="Design Ps Templates 70 in 80+ Useful PSD Templates For Web Designers" height="343" width="540" /></a></p>
<h3>Notebook templates</h3>
<p><a href="http://tlmedia.deviantart.com/art/Old-Paper-PSD-88155277">Old Paper PSD</a><br />
via <a href="http://tlmedia.deviantart.com/">TLMedia</a></p>
<p><a href="http://tlmedia.deviantart.com/art/Old-Paper-PSD-88155277"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_25.jpg" alt="Design Ps Templates 25 in 80+ Useful PSD Templates For Web Designers" height="328" width="540" /></a><br />
<a href="http://villa-arts.deviantart.com/art/Old-Book-72331142?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=16">Old Book</a><br />
via <a href="http://villa-arts.deviantart.com/">Villa-arts</a></p>
<p><a href="http://villa-arts.deviantart.com/art/Old-Book-72331142?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=16"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_40.jpg" alt="Design Ps Templates 40 in 80+ Useful PSD Templates For Web Designers" height="360" width="540" /></a><br />
<a href="http://villa-arts.deviantart.com/art/Old-Paper-Art-76262995?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=35">Old Paper Art</a><br />
via <a href="http://villa-arts.deviantart.com/">Villa-arts</a></p>
<p><a href="http://villa-arts.deviantart.com/art/Old-Paper-Art-76262995?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=35"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_44.jpg" alt="Design Ps Templates 44 in 80+ Useful PSD Templates For Web Designers" height="605" width="453" /></a><br />
<a href="http://allicaleb.deviantart.com/art/Old-Book-69614488?qj=1&amp;q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=311">Old Book</a><br />
via <a href="http://allicaleb.deviantart.com/">Allicaleb</a></p>
<p><a href="http://allicaleb.deviantart.com/art/Old-Book-69614488?qj=1&amp;q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=311"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_58.jpg" alt="Design Ps Templates 58 in 80+ Useful PSD Templates For Web Designers" height="432" width="540" /></a><br />
<a href="http://dennern.deviantart.com/art/My-Moleskine-79177093">My Moleskine</a><br />
via <a href="http://dennern.deviantart.com/">Dennern</a></p>
<p><a href="http://dennern.deviantart.com/art/My-Moleskine-79177093"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_67.jpg" alt="Design Ps Templates 67 in 80+ Useful PSD Templates For Web Designers" height="461" width="540" /></a><br />
<a href="http://tlmedia.deviantart.com/art/notebook-psd-93200397">Notebook psd</a><br />
via <a href="http://tlmedia.deviantart.com/">TLMedia</a></p>
<p><a href="http://tlmedia.deviantart.com/art/notebook-psd-93200397"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_68.jpg" alt="Design Ps Templates 68 in 80+ Useful PSD Templates For Web Designers" height="396" width="540" /></a><br />
<a href="http://tlmedia.deviantart.com/art/PSD-book-90033376">PSD book</a><br />
via <a href="http://tlmedia.deviantart.com/">TLMedia</a></p>
<p><a href="http://tlmedia.deviantart.com/art/PSD-book-90033376"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_26.jpg" alt="Design Ps Templates 26 in 80+ Useful PSD Templates For Web Designers" height="317" width="540" /></a></p>
<h3>Various design templates</h3>
<p><a href="http://san29.deviantart.com/art/CARD-TEMPLATES-138827012">CARD TEMPLATES.</a><br />
via <a href="http://san29.deviantart.com/">San29</a></p>
<p><a href="http://san29.deviantart.com/art/CARD-TEMPLATES-138827012"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_34.jpg" alt="Design Ps Templates 34 in 80+ Useful PSD Templates For Web Designers" height="300" width="233" /></a><br />
<a href="http://bobbyperux.deviantart.com/art/Free-Film-Frame-64639879?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=36">Free Film Frame</a><br />
via <a href="http://bobbyperux.deviantart.com/">Bobbyperux</a></p>
<p><a href="http://bobbyperux.deviantart.com/art/Free-Film-Frame-64639879?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=36"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_42.jpg" alt="Design Ps Templates 42 in 80+ Useful PSD Templates For Web Designers" height="615" width="404" /></a><br />
<a href="http://paulw.deviantart.com/art/Business-Website-Template-no-1-78489047?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=150">Business Website Template no.1</a><br />
via <a href="http://paulw.deviantart.com/">PAULW</a></p>
<p><a href="http://paulw.deviantart.com/art/Business-Website-Template-no-1-78489047?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=150"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_48.jpg" alt="Design Ps Templates 48 in 80+ Useful PSD Templates For Web Designers" height="554" width="540" /></a><br />
<a href="http://pshero.com/photoshop-tutorials/graphic-design/cardboard-and-torn-paper-business-card">Cardboard Business Card</a><br />
via <a href="http://pshero.com/">PSHero</a></p>
<p><a href="http://pshero.com/photoshop-tutorials/graphic-design/cardboard-and-torn-paper-business-card"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_84.jpg" alt="Design Ps Templates 84 in 80+ Useful PSD Templates For Web Designers" height="324" width="500" /></a><br />
<a href="http://an1ken.deviantart.com/art/Business-Card-template-1-75757558?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=167">Business Card template 1</a><br />
via <a href="http://an1ken.deviantart.com/">An1ken</a></p>
<p><a href="http://an1ken.deviantart.com/art/Business-Card-template-1-75757558?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=167"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_51.jpg" alt="Design Ps Templates 51 in 80+ Useful PSD Templates For Web Designers" height="405" width="540" /></a><br />
<a href="http://tomer666.deviantart.com/art/PSD-layouts-80521993?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=205">PSD-  layouts</a><br />
via <a href="http://tomer666.deviantart.com/">Tomer666</a></p>
<p><a href="http://tomer666.deviantart.com/art/PSD-layouts-80521993?q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=205"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_54.jpg" alt="Design Ps Templates 54 in 80+ Useful PSD Templates For Web Designers" height="540" width="540" /></a><br />
<a href="http://libelinha77.deviantart.com/art/Old-photo-paper-image-set-69430323?qj=1&amp;q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=330">Old photo paper image set</a><br />
via <a href="http://libelinha77.deviantart.com/">Libelinha77</a></p>
<p><a href="http://libelinha77.deviantart.com/art/Old-photo-paper-image-set-69430323?qj=1&amp;q=boost%3Apopular+in%3Aresources%2Fapplications%2Fpsd&amp;qo=330"><img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/07/design_ps_templates_61.jpg" alt="Design Ps Templates 61 in 80+ Useful PSD Templates For Web Designers" height="405" width="540" /></a></p>
<img src ="http://www.blogjava.net/sealyu/aggbug/332136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-09-16 09:22 <a href="http://www.blogjava.net/sealyu/archive/2010/09/16/332136.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Top Articles On The Web Design Billboard In August’10</title><link>http://www.blogjava.net/sealyu/archive/2010/09/16/332135.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Thu, 16 Sep 2010 01:17:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/09/16/332135.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/332135.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/09/16/332135.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/332135.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/332135.html</trackback:ping><description><![CDATA[<p>Throughout history, great designers always found new ways to show
their creativity to express themselves and create new trends and
techniques to remark their work apart from the rest of the crowd. The
Definition of design is more critical in modern terms as now design is a
way of communication; and, more specifically, Web design is a well
define platform for content. There is no "Good" and "Bad" in design. It
always define as a "Different".</p>
<p>So how can you make sure your design is better than the designs of
your competitors? How can you point employer&#8217;s attention to your
product? Here we might be able to help you by showcasing following list
of <strong>best resources available on web in the month of August</strong>.</p>
<h1>Design Showcase, Feature Collection</h1>
<div style="padding-left: 40px;">
<br clear="all" />
<h4><u>35+ Unique &amp; Interesting Product Packaging Designs</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.onextrapixel.com/2010/08/13/35-unique-interesting-product-packaging-designs/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-01.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.onextrapixel.com/2010/08/13/35-unique-interesting-product-packaging-designs/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Corporate Website Design: Creative and Beautiful Solutions</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/25/corporate-website-design-creative-and-beautiful-solutions/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-02.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/25/corporate-website-design-creative-and-beautiful-solutions/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>50 Fresh Portfolio and Blog Design Interfaces for Inspiration</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://aext.net/2010/08/portfolio-blog-design-mockups/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-03.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://aext.net/2010/08/portfolio-blog-design-mockups/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>40 Stunningly Creative Resume Designs on DeviantArt</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.1stwebdesigner.com/inspiration/creative-resume-designs/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-04.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.1stwebdesigner.com/inspiration/creative-resume-designs/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Showcase Of Delicious Coffee Websites</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/10/showcase-of-delicious-coffee-websites/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-05.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/10/showcase-of-delicious-coffee-websites/">Official Link</a><br />
<br clear="all" />
</p>
</div>
<p><br clear="all" />
</p>
<h1>Photography, Digital Showcase and Art inspiration</h1>
<div style="padding-left: 40px;">
<br clear="all" />
<h4><u>88 Brilliant Examples of Forced Perspective Photography</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.instantshift.com/2010/08/24/88-brilliant-examples-of-forced-perspective-photography/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-06.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.instantshift.com/2010/08/24/88-brilliant-examples-of-forced-perspective-photography/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Photography Inspiration: 40 Magnificent Aerial Photos</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://naldzgraphics.net/inspirations/photography-inspiration-40-magnificent-aerial-photos/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-07.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://naldzgraphics.net/inspirations/photography-inspiration-40-magnificent-aerial-photos/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Surreal Photo Manipulation: 40 Amazing Artwork</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.hongkiat.com/blog/surreal-photo-manipulation-40-amazing-artworks/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-08.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.hongkiat.com/blog/surreal-photo-manipulation-40-amazing-artworks/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Russia in color, a century ago</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.boston.com/bigpicture/2010/08/russia_in_color_a_century_ago.html"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-09.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.boston.com/bigpicture/2010/08/russia_in_color_a_century_ago.html">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>15 Logos With Hidden Messages</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://webdesignledger.com/inspiration/15-logos-with-hidden-messages"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-10.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://webdesignledger.com/inspiration/15-logos-with-hidden-messages">Official Link</a><br />
<br clear="all" />
</p>
</div>
<p><br clear="all" />
</p>
<h1>Freebies Resources (Themes, Wallpapers, PSDs, Icons, Vectors, Fonts etc.)</h1>
<div style="padding-left: 40px;">
<br clear="all" />
<h4><u>100 Free High Quality WordPress Themes: 2010 Edition</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/19/100-free-high-quality-wordpress-themes-for-2010/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-11.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/19/100-free-high-quality-wordpress-themes-for-2010/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>100+ Free High Quality Icon Sets for Web Designers and Developers</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.instantshift.com/2010/08/27/100-free-high-quality-icon-sets-for-web-designers-and-developers/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-12.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.instantshift.com/2010/08/27/100-free-high-quality-icon-sets-for-web-designers-and-developers/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Free Social Media Icon Sets &#8211; Best Of</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.hongkiat.com/blog/free-social-media-icon-sets-best-of/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-13.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.hongkiat.com/blog/free-social-media-icon-sets-best-of/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>40+ Elegant Free CSS/(X)HTML Templates from 2010</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.noupe.com/how-tos/40-elegent-free-css-x-html-templates-from-2010.html"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-14.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.noupe.com/how-tos/40-elegent-free-css-x-html-templates-from-2010.html">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>60 Beautiful Minimalist Desktop Wallpapers</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.hongkiat.com/blog/beautiful-minimalist-desktop-wallpapers/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-15.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.hongkiat.com/blog/beautiful-minimalist-desktop-wallpapers/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>30 New Free High-Quality Fonts</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/12/30-new-free-high-quality-fonts-typography/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-16.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/12/30-new-free-high-quality-fonts-typography/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>35 Fresh High-Quality Free Fonts for Professional Designers</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.instantshift.com/2010/08/18/35-fresh-high-quality-free-fonts-for-professional-designers/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-17.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.instantshift.com/2010/08/18/35-fresh-high-quality-free-fonts-for-professional-designers/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>80+ Useful PSD Templates For Web Designers</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.noupe.com/freebie/80-useful-psd-templates-for-designers.html"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-18.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.noupe.com/freebie/80-useful-psd-templates-for-designers.html">Official Link</a><br />
<br clear="all" />
</p>
</div>
<p><br clear="all" />
</p>
<h1>Tutorials, Tips, Tricks &amp; Hacks Resources</h1>
<div style="padding-left: 40px;">
<br clear="all" />
<h4><u>28 HTML5 Features, Tips, and Techniques you Must Know</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://net.tutsplus.com/tutorials/html-css-techniques/25-html5-features-tips-and-techniques-you-must-know/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-19.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://net.tutsplus.com/tutorials/html-css-techniques/25-html5-features-tips-and-techniques-you-must-know/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Twitter Background Design &#8211; Great Tips and Gorgeous Examples</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://psd.tutsplus.com/articles/inspiration/twitter-background-design-great-tips-and-gorgeous-examples/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-20.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://psd.tutsplus.com/articles/inspiration/twitter-background-design-great-tips-and-gorgeous-examples/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>10 Useful iPhone Shortcuts, Tips and Tricks</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://mashable.com/2010/08/31/iphone-tips-tricks/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-21.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://mashable.com/2010/08/31/iphone-tips-tricks/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>How to Design a Phone Icon in Photoshop</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.instantshift.com/2010/08/03/how-to-design-a-phone-icon-in-photoshop/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-22.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.instantshift.com/2010/08/03/how-to-design-a-phone-icon-in-photoshop/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Create Gold Ornamental Text in Photoshop</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://psd.tutsplus.com/tutorials/text-effects-tutorials/create-gold-ornamental-text-in-photoshop/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-23.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://psd.tutsplus.com/tutorials/text-effects-tutorials/create-gold-ornamental-text-in-photoshop/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Building a Sleek AJAX Email Signup Form</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://net.tutsplus.com/tutorials/javascript-ajax/building-a-sleek-ajax-signup-form/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-24.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://net.tutsplus.com/tutorials/javascript-ajax/building-a-sleek-ajax-signup-form/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Correcting Exposure with the Shadows &amp; Highlights Tool</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.tutorial9.net/photoshop/correcting-exposure-with-the-shadows-highlights-tool/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-25.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.tutorial9.net/photoshop/correcting-exposure-with-the-shadows-highlights-tool/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>20 Methods for Upping Your Current Web Design Skills</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.onextrapixel.com/2010/08/24/20-methods-for-upping-your-current-web-design-skills/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-26.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.onextrapixel.com/2010/08/24/20-methods-for-upping-your-current-web-design-skills/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>How To Create a Detailed Vector Sugar Skull Illustration</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.blog.spoongraphics.co.uk/tutorials/how-to-create-a-detailed-vector-sugar-skull-illustration"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-27.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.blog.spoongraphics.co.uk/tutorials/how-to-create-a-detailed-vector-sugar-skull-illustration">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>16 Vital Checks Before Releasing a WordPress Theme</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://net.tutsplus.com/tutorials/wordpress/16-vital-checks-before-releasing-a-wordpress-theme/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-28.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://net.tutsplus.com/tutorials/wordpress/16-vital-checks-before-releasing-a-wordpress-theme/">Official Link</a><br />
<br clear="all" />
</p>
</div>
<p><br clear="all" />
</p>
<h1>CSS, xHTML, Javascript, Ajax and Design Resources</h1>
<div style="padding-left: 40px;">
<br clear="all" />
<h4><u>20 HTML Best Practices You Should Follow</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://sixrevisions.com/web-standards/20-html-best-practices-you-should-follow/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-29.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://sixrevisions.com/web-standards/20-html-best-practices-you-should-follow/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>10 Great Tips for Writing Better And More Comprehensive CSS</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://spyrestudios.com/10-great-tips-for-writing-better-and-more-comprehensive-css/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-30.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://spyrestudios.com/10-great-tips-for-writing-better-and-more-comprehensive-css/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Commonly Confused Bits Of jQuery</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/04/commonly-confused-bits-of-jquery/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-31.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/04/commonly-confused-bits-of-jquery/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>8 examples of stunning CSS3 text effects</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.catswhocode.com/blog/8-examples-of-stunning-css3-text-effects"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-32.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.catswhocode.com/blog/8-examples-of-stunning-css3-text-effects">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>25 Incredibly Useful CSS Snippets for Developers</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.1stwebdesigner.com/development/useful-css-snippets/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-33.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.1stwebdesigner.com/development/useful-css-snippets/">Official Link</a><br />
<br clear="all" />
</p>
</div>
<p><br clear="all" />
</p>
<h1>Appz, Tools and Development Resources</h1>
<div style="padding-left: 40px;">
<br clear="all" />
<h4><u>80 Of The Most Useful Mac Tools and Utilities</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://mac.appstorm.net/roundups/utilities-roundups/80-of-the-most-useful-mac-tools-and-utilities/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-34.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://mac.appstorm.net/roundups/utilities-roundups/80-of-the-most-useful-mac-tools-and-utilities/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>50 Awesome New jQuery Plugins</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://speckyboy.com/2010/08/22/50-awesome-new-jquery-plugins/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-35.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://speckyboy.com/2010/08/22/50-awesome-new-jquery-plugins/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>8 CSS preprocessors to speed up development time</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.catswhocode.com/blog/8-css-preprocessors-to-speed-up-development-time"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-36.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.catswhocode.com/blog/8-css-preprocessors-to-speed-up-development-time">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>45 Free Applications For Designers And Developers</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.noupe.com/tools/45-free-applications-for-designers-and-developers.html"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-37.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.noupe.com/tools/45-free-applications-for-designers-and-developers.html">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>20+ New Apps and Websites for Designers</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.webdesignerdepot.com/2010/08/20-new-apps-and-websites-for-designers/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-38.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.webdesignerdepot.com/2010/08/20-new-apps-and-websites-for-designers/">Official Link</a><br />
<br clear="all" />
</p>
</div>
<p><br clear="all" />
</p>
<h1>Freelancing Resources</h1>
<div style="padding-left: 40px;">
<br clear="all" />
<h4><u>26 Common Freelancing Mistakes to Avoid</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://freelancefolder.com/26-common-freelancing-mistakes-to-avoid/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-39.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://freelancefolder.com/26-common-freelancing-mistakes-to-avoid/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>How I Learned to Stop Worrying and Love My Job</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://freelanceswitch.com/inspiration/love-my-job/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-40.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://freelanceswitch.com/inspiration/love-my-job/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>6 Online Marketing Mistakes that Will Kill Your Business</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.copyblogger.com/business-mistakes/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-41.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.copyblogger.com/business-mistakes/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>5 Good Ways to Close a Client Deal</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://freelancefolder.com/5-good-ways-to-close-a-new-client-deal/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-42.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://freelancefolder.com/5-good-ways-to-close-a-new-client-deal/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Designers, &#8220;Hacks&#8221; and Professionalism: Are We Our Own Worst Enemy?</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/03/designers-hacks-and-professionalism-are-we-our-own-worst-enemy/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-43.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/03/designers-hacks-and-professionalism-are-we-our-own-worst-enemy/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>15 Ways to Get Inspired</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://freelancefolder.com/15-ways-to-get-inspired/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-44.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://freelancefolder.com/15-ways-to-get-inspired/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Doing the Little Things to Please Clients</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://freelancefolder.com/doing-the-little-things-to-please-clients/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-45.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://freelancefolder.com/doing-the-little-things-to-please-clients/">Official Link</a><br />
<br clear="all" />
</p>
</div>
<p><br clear="all" />
</p>
<h1>Miscellaneous Resources</h1>
<div style="padding-left: 40px;">
<br clear="all" />
<h4><u>Why Your Blog Doesn&#8217;t Make Money</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.copyblogger.com/no-blog-money/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-46.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.copyblogger.com/no-blog-money/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>How Limitations Improve Design</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.webdesignerdepot.com/2010/08/how-limitations-improve-design/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-47.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.webdesignerdepot.com/2010/08/how-limitations-improve-design/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Giving Users Some Credit</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://designinformer.com/giving-users-some-credit/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-48.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://designinformer.com/giving-users-some-credit/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>A Design Is Only As Deep As It Is Usable</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/23/a-design-is-only-as-deep-as-it-is-usable/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-49.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/23/a-design-is-only-as-deep-as-it-is-usable/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Why SEO Doesn&#8217;t Matter Anymore and What You Should Do Instead</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.instantshift.com/2010/08/16/why-seo-doesnt-matter-anymore-and-what-you-should-do-instead/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-50.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.instantshift.com/2010/08/16/why-seo-doesnt-matter-anymore-and-what-you-should-do-instead/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>Reductionism in Web Design</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://sixrevisions.com/web_design/reductionism-in-web-design/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-51.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://sixrevisions.com/web_design/reductionism-in-web-design/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>5 Reasons Why No One Is Reading Your Email Newsletter</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.copyblogger.com/email-newsletter-response/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-52.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.copyblogger.com/email-newsletter-response/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>The Future of the Internet</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/11/the-future-of-the-internet/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-53.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.smashingmagazine.com/2010/08/11/the-future-of-the-internet/">Official Link</a><br />
<br clear="all" />
</p>
<h4><u>60 Ways to Increase Your Influence Online</u></h4>
<p><a target="_blank" rel="external nofollow" href="http://www.copyblogger.com/increase-influence-online/"><img src="http://www.instantshift.com/wp-content/uploads/2010/09/taotwdbi0810-54.jpg" alt="instantShift - Top Articles On The Web Design Billboard In August" title="instantShift - Top Articles On The Web Design Billboard In August" class="alignnone size-full top_m" width="560" /></a><br />
<br clear="all" />
<a target="_blank" rel="external nofollow" href="http://www.copyblogger.com/increase-influence-online/">Official Link</a><br />
<br clear="all" />
</p>
</div>
<p><br clear="all" />
</p>
<h1><br />
</h1>
<img src ="http://www.blogjava.net/sealyu/aggbug/332135.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-09-16 09:17 <a href="http://www.blogjava.net/sealyu/archive/2010/09/16/332135.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>100+ Free High Quality Icon Sets for Web Designers and Developers</title><link>http://www.blogjava.net/sealyu/archive/2010/08/30/330283.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Mon, 30 Aug 2010 06:39:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/08/30/330283.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/330283.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/08/30/330283.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/330283.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/330283.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Icons are the basic requirement of any web related projects and good icons are like a treasure for web designers.The demand for good icons are too much in these days and finding thebest icon sets ...&nbsp;&nbsp;<a href='http://www.blogjava.net/sealyu/archive/2010/08/30/330283.html'>阅读全文</a><img src ="http://www.blogjava.net/sealyu/aggbug/330283.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-08-30 14:39 <a href="http://www.blogjava.net/sealyu/archive/2010/08/30/330283.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 腾讯提供的QQ在线样式（转）</title><link>http://www.blogjava.net/sealyu/archive/2010/08/22/329587.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Sun, 22 Aug 2010 11:54:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/08/22/329587.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/329587.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/08/22/329587.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/329587.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/329587.html</trackback:ping><description><![CDATA[<h1>
<img src="http://blog.csdn.net/images/authorship.gif" alt="原创" width="15" border="0" height="15" />&nbsp;
腾讯提供的QQ在线样式
<cite><a href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(saveit=window.open('http://wz.csdn.net/storeit.aspx?t='+escape(d.title)+'&amp;u='+escape(d.location.href)+'&amp;c='+escape(t),'saveit','scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes'));saveit.focus();" class="fav_csdnstylebykimi" title="收藏到我的网摘中，并分享给我的朋友">收藏</a> </cite>
</h1>
<script type="text/javascript">
document.body.oncopy = function () {
if (window.clipboardData) {
setTimeout(function () {
var text = clipboardData.getData("text");
if (text && text.length > 300) {
text = text + ""r"n"n本文来自CSDN博客，转载请标明出处：" + location.href;
clipboardData.setData("text", text);
}
}, 100);
}
}
</script>
<script type="text/javascript">						function StorePage() { d = document; t = d.selection ? (d.selection.type != 'None' ? d.selection.createRange().text : '') : (d.getSelection ? d.getSelection() : ''); void (keyit = window.open('http://www.365key.com/storeit.aspx?t=' + escape(d.title) + '&u=' + escape(d.location.href) + '&c=' + escape(t), 'keyit', 'scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes')); keyit.focus(); }</script>
<p>本文参考了：<a href="http://yuxiu601.blog.sohu.com/18296223.html">http://yuxiu601.blog.sohu.com/18296223.html</a></p>
<p>经常在一些网站上看到qq客服的功能，一点击就会把相应的qq调出来。</p>
<p>先把相关代码贴出：</p>
<p>&nbsp;&nbsp;&nbsp;如下：href=tencent://message/?uin=429443535&amp;
Site=www.ctoshopping.com&amp;Menu=yes&gt;&lt;img<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
border="0" SRC=http://wpa.qq.com/pa?p=1:429443535:10</p>
<p>&nbsp;<img src="http://is.qq.com/webpresence/images/status/01_online.gif" width="74" height="23"  alt="" />风格一</p>
<p><font size="2">&lt;a target=blank
href=tencent://message/?uin=你的QQ号码&amp;Site=你的博客地址&amp;Menu=yes&gt;&lt;
img border="0" SRC=http://wpa.qq.com/pa?p=1:你的QQ号码:1
alt="点击这里给我发消息"&gt;&lt;/a&gt;</font></p>
<p><img src="http://is.qq.com/webpresence/images/status/02_online.gif" width="74" height="23"  alt="" />风格二</p>
<p><font size="2">&lt;a target=blank
href=tencent://message/?uin=你的QQ号码&amp;Site=你的博客地址&amp;Menu=yes&gt;&lt;
img border="0" SRC=http://wpa.qq.com/pa?p=1:你的QQ号码:2
alt="点击这里给我发消息"&gt;&lt;/a&gt;</font></p>
<p><img src="http://is.qq.com/webpresence/images/status/03_online.gif" width="74" height="23"  alt="" />风格三</p>
<p><font size="2">&lt;a target=blank
href=tencent://message/?uin=你的QQ号码&amp;Site=你的博客地址&amp;Menu=yes&gt;&lt;
img border="0" SRC=http://wpa.qq.com/pa?p=1:你的QQ号码:3
alt="点击这里给我发消息"&gt;&lt;/a&gt;</font></p>
<p><img src="http://is.qq.com/webpresence/images/status/04_online.gif" width="44" height="24"  alt="" />风格四</p>
<p><font size="2">&lt;a target=blank
href=tencent://message/?uin=你的QQ号码&amp;Site=你的博客地址&amp;Menu=yes&gt;&lt;
img border="0" SRC=http://wpa.qq.com/pa?p=1:你的QQ号码:4
alt="点击这里给我发消息"&gt;&lt;/a&gt;</font></p>
<p><img src="http://is.qq.com/webpresence/images/status/05_online.gif" width="61" height="15"  alt="" />风格五</p>
<p><font size="2">&lt;a target=blank
href=tencent://message/?uin=你的QQ号码&amp;Site=你的博客地址&amp;Menu=yes&gt;&lt;
img border="0" SRC=http://wpa.qq.com/pa?p=1:你的QQ号码:5
alt="点击这里给我发消息"&gt;&lt;/a&gt;</font></p>
<p><img src="http://is.qq.com/webpresence/images/status/6_online.gif" width="68" height="29"  alt="" />风格六</p>
<p><font size="2">&lt;a target=blank
href=tencent://message/?uin=你的QQ号码&amp;Site=你的博客地址&amp;Menu=yes&gt;&lt;
img border="0" SRC=http://wpa.qq.com/pa?p=1:你的QQ号码:6
alt="点击这里给我发消息"&gt;&lt;/a&gt;</font></p>
<p><img src="http://is.qq.com/webpresence/images/status/7_online.gif" width="71" height="24"  alt="" />风格七</p>
<p><font size="2">&lt;a target=blank
href=tencent://message/?uin=你的QQ号码&amp;Site=你的博客地址&amp;Menu=yes&gt;&lt;
img border="0" SRC=http://wpa.qq.com/pa?p=1:你的QQ号码:7
alt="点击这里给我发消息"&gt;&lt;/a&gt;</font></p>
<p><img src="http://is.qq.com/webpresence/images/status/8_online.gif" width="60" height="16"  alt="" />风格八</p>
<p><font size="2">&lt;a target=blank
href=tencent://message/?uin=你的QQ号码&amp;Site=你的博客地址&amp;Menu=yes&gt;&lt;
img border="0" SRC=http://wpa.qq.com/pa?p=1:你的QQ号码:8
alt="点击这里给我发消息"&gt;&lt;/a&gt;</font></p>
<p><img src="http://is.qq.com/webpresence/images/status/9_online.gif" width="57" height="16"  alt="" />风格九</p>
<p><font size="2">&lt;a target=blank
href=tencent://message/?uin=你的QQ号码&amp;Site=你的博客地址&amp;Menu=yes&gt;&lt;
img border="0" SRC=http://wpa.qq.com/pa?p=1:你的QQ号码:9
alt="点击这里给我发消息"&gt;&lt;/a&gt;</font></p>
<p><img src="http://is.qq.com/webpresence/images/status/10_online.gif" width="61" height="16"  alt="" />风格十</p>
<p><font size="2">&lt;a target=blank
href=tencent://message/?uin=你的QQ号码&amp;Site=你的博客地址&amp;Menu=yes&gt;&lt;
img border="0" SRC=http://wpa.qq.com/pa?p=1:你的QQ号码:10
alt="点击这里给我发消息"&gt;&lt;/a&gt;</font></p>
<p><img src="http://is.qq.com/webpresence/images/status/11_online.gif" width="65" height="66"  alt="" />风格十一</p>
<p><font size="2">&lt;a target=blank
href=tencent://message/?uin=你的QQ号码&amp;Site=你的博客地址&amp;Menu=yes&gt;&lt;
img border="0" SRC=http://wpa.qq.com/pa?p=1:你的QQ号码:11
alt="点击这里给我发消息"&gt;&lt;/a&gt;</font></p>
<p><img src="http://is.qq.com/webpresence/images/status/12_online.gif" width="82" height="34"  alt="" />风格十二</p>
<p><font size="2">&lt;a target=blank
href=tencent://message/?uin=你的QQ号码&amp;Site=你的博客地址&amp;Menu=yes&gt;&lt;
img border="0" SRC=http://wpa.qq.com/pa?p=1:你的QQ号码:12
alt="点击这里给我发消息"&gt;&lt;/a&gt;</font></p>
<p><img src="http://is.qq.com/webpresence/images/status/13_online.gif" width="138" height="29"  alt="" />风格十三</p>
<p><font size="2">&lt;a target=blank
href=tencent://message/?uin=你的QQ号码&amp;Site=你的博客地址&amp;Menu=yes&gt;&lt;
img border="0" SRC=http://wpa.qq.com/pa?p=1:你的QQ号码:13
alt="点击这里给我发消息"&gt;&lt;/a&gt;</font></p>
<img src ="http://www.blogjava.net/sealyu/aggbug/329587.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-08-22 19:54 <a href="http://www.blogjava.net/sealyu/archive/2010/08/22/329587.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTTP 状态代码（转）</title><link>http://www.blogjava.net/sealyu/archive/2010/08/09/328280.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Mon, 09 Aug 2010 00:56:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/08/09/328280.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/328280.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/08/09/328280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/328280.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/328280.html</trackback:ping><description><![CDATA[<div id="article-content-div">
<p>如果向您的服务器发出了某项请求要求显示您网站上的某个网页（例如，当用户通过浏览器访问您的网页或在 Googlebot 抓取该网页时），那么，您的服务器会返回 HTTP 状态代码以响应该请求。</p>
<p>此状态代码提供了有关请求状态的信息，且为 Googlebot 提供了有关您网站和请求的网页的信息。</p>
<p>一些常见的状态代码为：</p>
<ul>
    <li><strong>200</strong> - 服务器成功返回网页</li>
    <li><strong>404</strong> - 请求的网页不存在</li>
    <li><strong>503</strong> - 服务器暂时不可用</li>
</ul>
<p>以下提供了 HTTP 状态代码的完整列表。点击链接可了解详细信息。您也可以访问<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html">有关 HTTP 状态代码的 W3C 页来了解详细信息</a>。</p>
<p><strong>1xx</strong><strong>（临时响应）</strong><br />
用于表示临时响应并需要请求者执行操作才能继续的状态代码。</p>
<table caption="1xx HTTP status codes" summary="1xx status codes indicating a provisional response" border="1" cellpadding="1" cellspacing="1">
    <tbody>
        <tr>
            <th scope="col">代码</th>
            <th scope="col">说明</th>
        </tr>
        <tr>
            <td>100（继续）</td>
            <td>请求者应当继续提出请求。服务器返回此代码则意味着，服务器已收到了请求的第一部分，现正在等待接收其余部分。 </td>
        </tr>
        <tr>
            <td>101（切换协议）</td>
            <td>请求者已要求服务器切换协议，服务器已确认并准备进行切换。</td>
        </tr>
    </tbody>
</table>
<p><strong>2xx</strong><strong>（成功）</strong></p>
<p>用于表示服务器已成功处理了请求的状态代码。</p>
<table caption="2xx HTTP status codes" summary="2xx status codes indicating successful requests" border="1" cellpadding="1" cellspacing="1">
    <tbody>
        <tr>
            <th scope="col">代码</th>
            <th scope="col">说明</th>
        </tr>
        <tr>
            <td> 200（成功） </td>
            <td>服务器已成功处理了请求。通常，这表示服务器提供了请求的网页。如果您的 robots.txt 文件显示为此状态，那么，这表示 Googlebot 已成功检索到该文件。</td>
        </tr>
        <tr>
            <td> 201（已创建） </td>
            <td> 请求成功且服务器已创建了新的资源。</td>
        </tr>
        <tr>
            <td> 202（已接受） </td>
            <td> 服务器已接受了请求，但尚未对其进行处理。</td>
        </tr>
        <tr>
            <td> 203（非授权信息） </td>
            <td> 服务器已成功处理了请求，但返回了可能来自另一来源的信息。</td>
        </tr>
        <tr>
            <td> 204（无内容） </td>
            <td> 服务器成功处理了请求，但未返回任何内容。</td>
        </tr>
        <tr>
            <td> 205（重置内容）</td>
            <td>服务器成功处理了请求，但未返回任何内容。与 204 响应不同，此响应要求请求者重置文档视图（例如清除表单内容以输入新内容）。</td>
        </tr>
        <tr>
            <td> 206（部分内容） </td>
            <td> 服务器成功处理了部分 GET 请求。</td>
        </tr>
    </tbody>
</table>
<p><strong>3xx</strong><strong>（已重定向）</strong> <br />
要完成请求，您需要进一步进行操作。通常，这些状态代码是永远重定向的。Google 建议您在每次请求时使用的重定向要少于 5 个。您可以使用网站管理员工具来查看 Googlebot 在抓取您已重定向的网页时是否会遇到问题。<strong>诊断</strong>下的<a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35156">抓取错误</a>页中列出了 Googlebot 由于重定向错误而无法抓取的网址。</p>
<table caption="3xx HTTP status codes" summary="3xx status codes requiring further action" border="1" cellpadding="1" cellspacing="1">
    <tbody>
        <tr>
            <th scope="col">代码</th>
            <th scope="col">说明</th>
        </tr>
        <tr>
            <td> 300（多种选择） </td>
            <td>服务器根据请求可执行多种操作。服务器可根据请求者 (User agent) 来选择一项操作，或提供操作列表供请求者选择。</td>
        </tr>
        <tr>
            <td>301（永久移动） </td>
            <td>请求的网页已被永久移动到新位置。服务器返回此响应（作为对 GET 或 HEAD 请求的响应）时，会自动将请求者转到新位置。您应使用此代码通知 Googlebot 某个网页或网站已被永久移动到新位置。</td>
        </tr>
        <tr>
            <td> 302（临时移动）</td>
            <td>服务器目前正从不同位置的网页响应请求，但请求者应继续使用原有位置来进行以后的请求。此代码与响应 GET 和 HEAD 请求的 301
            代码类似，会自动将请求者转到不同的位置。但由于 Googlebot 会继续抓取原有位置并将其编入索引，因此您不应使用此代码来通知
            Googlebot 某个页面或网站已被移动。</td>
        </tr>
        <tr>
            <td> 303（查看其他位置）</td>
            <td>当请求者应对不同的位置进行单独的 GET 请求以检索响应时，服务器会返回此代码。对于除 HEAD 请求之外的所有请求，服务器会自动转到其他位置。</td>
        </tr>
        <tr>
            <td> 304（未修改）</td>
            <td>
            <p>自从上次请求后，请求的网页未被修改过。服务器返回此响应时，不会返回网页内容。 </p>
            <p>如果网页自请求者上次请求后再也没有更改过，您应当将服务器配置为返回此响应（称为 If-Modified-Since HTTP 标头）。由于服务器可以告诉 Googlebot 自从上次抓取后网页没有更改过，因此可节省带宽和开销</p>
            。</td>
        </tr>
        <tr>
            <td> 305（使用代理）</td>
            <td>请求者只能使用代理访问请求的网页。如果服务器返回此响应，那么，服务器还会指明请求者应当使用的代理。</td>
        </tr>
        <tr>
            <td>307（临时重定向） </td>
            <td>服务器目前正从不同位置的网页响应请求，但请求者应继续使用原有位置来进行以后的请求。此代码与响应 GET 和 HEAD 请求的 301
            代码类似，会自动将请求者转到不同的位置。但由于 Googlebot 会继续抓取原有位置并将其编入索引，因此您不应使用此代码来通知
            Googlebot 某个页面或网站已被移动。</td>
        </tr>
    </tbody>
</table>
<p><strong>4xx（请求错误）</strong> <br />
这些状态代码表示，请求可能出错，已妨碍了服务器对请求的处理。</p>
<table caption="4xx HTTP status codes" summary="4xx status codes indicating that the server could not process the request" border="1" cellpadding="1" cellspacing="1">
    <tbody>
        <tr>
            <th scope="col">代码</th>
            <th scope="col">说明</th>
        </tr>
        <tr>
            <td> 400（错误请求）</td>
            <td> 服务器不理解请求的语法。</td>
        </tr>
        <tr>
            <td> 401（未授权）</td>
            <td> 请求要求进行身份验证。登录后，服务器可能会返回对页面的此响应。</td>
        </tr>
        <tr>
            <td> 403（已禁止）</td>
            <td>服务器拒绝请求。如果在 Googlebot 尝试抓取您网站上的有效网页时显示此状态代码（您可在 Google 网站管理员工具中<strong>诊断</strong>下的<strong>网络抓取</strong>页面上看到此状态代码），那么，这可能是您的服务器或主机拒绝 Googlebot 对其进行访问。</td>
        </tr>
        <tr>
            <td> 404（未找到）</td>
            <td>
            <p>服务器找不到请求的网页。例如，如果请求是针对服务器上不存在的网页进行的，那么，服务器通常会返回此代码。 </p>
            <p>如果您的网站上没有 robots.txt 文件，而您在 Google 网站管理员工具<a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35237">"诊断"标签的 robots.txt 页</a>上发现此状态，那么，这是正确的状态。然而，如果您有 robots.txt 文件而又发现了此状态，那么，这说明您的 robots.txt 文件可能是命名错误或位于错误的位置。（该文件应当位于顶级域名上，且应当名为 robots.txt）。</p>
            <p>如果您在 Googlebot 尝试抓取的网址上发现此状态（位于"诊断"标签的 HTTP 错误页上），那么，这表示 Googlebot 所追踪的可能是另一网页中的无效链接（旧链接或输入有误的链接）。 </p>
            </td>
        </tr>
        <tr>
            <td>405（方法禁用）</td>
            <td> 禁用请求中所指定的方法。</td>
        </tr>
        <tr>
            <td> 406（不接受）</td>
            <td> 无法使用请求的内容特性来响应请求的网页。</td>
        </tr>
        <tr>
            <td> 407（需要代理授权）</td>
            <td>此状态代码与 401（未授权）类似，但却指定了请求者应当使用代理进行授权。如果服务器返回此响应，那么，服务器还会指明请求者应当使用的代理。 </td>
        </tr>
        <tr>
            <td> 408（请求超时） </td>
            <td> 服务器等候请求时超时。</td>
        </tr>
        <tr>
            <td> 409（冲突） </td>
            <td>服务器在完成请求时发生冲突。服务器必须包含有关响应中所发生的冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码，同时会提供两个请求的差异列表。</td>
        </tr>
        <tr>
            <td>410（已删除） </td>
            <td>如果请求的资源已被永久删除，那么，服务器会返回此响应。该代码与 404（未找到）代码类似，但在资源以前有但现在已经不复存在的情况下，有时会替代 404 代码出现。如果资源已被永久删除，那么，您应当使用 301 代码指定该资源的新位置。</td>
        </tr>
        <tr>
            <td> 411（需要有效长度）</td>
            <td>服务器不会接受包含无效内容长度标头字段的请求。</td>
        </tr>
        <tr>
            <td> 412（未满足前提条件）</td>
            <td> 服务器未满足请求者在请求中设置的其中一个前提条件。</td>
        </tr>
        <tr>
            <td> 413（请求实体过大）</td>
            <td> 服务器无法处理请求，因为请求实体过大，已超出服务器的处理能力。</td>
        </tr>
        <tr>
            <td> 414（请求的 URI 过长）</td>
            <td> 请求的 URI（通常为网址）过长，服务器无法进行处理。</td>
        </tr>
        <tr>
            <td> 415（不支持的媒体类型）</td>
            <td> 请求的格式不受请求页面的支持。</td>
        </tr>
        <tr>
            <td> 416（请求范围不符合要求）</td>
            <td> 如果请求是针对网页的无效范围进行的，那么，服务器会返回此状态代码。</td>
        </tr>
        <tr>
            <td> 417（未满足期望值）</td>
            <td> 服务器未满足"期望"请求标头字段的要求。</td>
        </tr>
    </tbody>
</table>
<p><strong>5xx</strong><strong>（服务器错误）</strong><br />
这些状态代码表示，服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误，而不是请求出错。</p>
<table caption="5xx HTTP status codes" summary="5xx status codes indicating that the server had an internal error" border="1" cellpadding="1" cellspacing="1">
    <tbody>
        <tr>
            <th scope="col">代码</th>
            <th scope="col">说明</th>
        </tr>
        <tr>
            <td> 500（服务器内部错误） </td>
            <td> 服务器遇到错误，无法完成请求。</td>
        </tr>
        <tr>
            <td> 501（尚未实施）</td>
            <td>服务器不具备完成请求的功能。例如，当服务器无法识别请求方法时，服务器可能会返回此代码。</td>
        </tr>
        <tr>
            <td> 502（错误网关）</td>
            <td> 服务器作为网关或代理，从上游服务器收到了无效的响应。</td>
        </tr>
        <tr>
            <td> 503（服务不可用）</td>
            <td> 目前无法使用服务器（由于超载或进行停机维护）。通常，这只是一种暂时的状态。</td>
        </tr>
        <tr>
            <td> 504（网关超时） </td>
            <td> 服务器作为网关或代理，未及时从上游服务器接收请求。</td>
        </tr>
        <tr>
            <td> 505（HTTP 版本不受支持）</td>
            <td> 服务器不支持请求中所使用的 HTTP 协议版本。</td>
        </tr>
    </tbody>
</table>
<script type="text/javascript">
if(document.getElementById('kb_ff3') != null)
showLayer('kb_ff3');
if(document.getElementById('kb_ff3_linux') != null)
showLayer('kb_ff3_linux');
if(document.getElementById('z_ff3') != null)
toggleZippy('z_ff3');
if(document.getElementById('z_ff3_linux') != null)
toggleZippy('z_ff3_linux');
if(document.getElementById('kb_ff') != null)
showLayer('kb_ff');
if(document.getElementById('kb_ff_linux') != null)
showLayer('kb_ff_linux');
if(document.getElementById('z_ff') != null)
toggleZippy('z_ff');
if(document.getElementById('z_ff_linux') != null)
toggleZippy('z_ff_linux');
if(document.getElementById('kb_linux'))
showLayer('kb_linux');
if(document.getElementById('z_linux'))
toggleZippy('z_linux');
if(document.getElementById('kb_linux'))
showLayer('kb_linux');
if(document.getElementById('z_linux'))
toggleZippy('z_linux');
if(document.getElementById('kb_CN'))
showLayer('kb_CN');
if(document.getElementById('z_CN'))
toggleZippy('z_CN');
if(document.getElementById('kb_non_US'))
showLayer('kb_non_US');
if(document.getElementById('z_non_US'))
toggleZippy('z_non_US');
</script>
</div>
<p style="text-align: right; font-size: xx-small; color: #777777;"><br />
</p>
<img src ="http://www.blogjava.net/sealyu/aggbug/328280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-08-09 08:56 <a href="http://www.blogjava.net/sealyu/archive/2010/08/09/328280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用HttpClient对Web Service调用（转）</title><link>http://www.blogjava.net/sealyu/archive/2010/07/27/327217.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Tue, 27 Jul 2010 06:42:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/07/27/327217.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/327217.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/07/27/327217.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/327217.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/327217.html</trackback:ping><description><![CDATA[<p>用到的jar包有：<br />
&nbsp;&nbsp;&nbsp;&nbsp;commons-codec-1.3.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;commons-httpclient-3.0.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;commons-logging-1.0.4.jar<br />
<br />
<br />
具体流程大致这样：<br />
</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;"><img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;soapRequestData&nbsp;</span><span style="color: #000000;">=</span>&nbsp;<span style="color: #000000;">"</span><span style="color: #000000;">&lt;?xml&nbsp;version="</span><span style="color: #000000;">"</span><span style="color: #000000;">1.0</span><span style="color: #000000;">"</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;encoding="</span><span style="color: #000000;">"</span><span style="color: #000000;">utf</span><span style="color: #000000;">-</span><span style="color: #000000;">8</span><span style="color: #000000;">"</span><span style="color: #000000;">"</span><span style="color: #000000;">?&gt;</span><span style="color: #000000;">"</span>&nbsp;<span style="color: #000000;">+</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;soap12:Envelope&nbsp;xmlns:xsi="</span><span style="color: #000000;">"</span><span style="color: #000000;">http:</span><span style="color: #008000;">//</span><span style="color: #008000;">www.w3.org/2001/XMLSchema-instance""&nbsp;xmlns:xsd=""</span><span style="color: #008000; text-decoration: underline;">http://www.w3.org/2001/XMLSchema</span><span style="color: #008000;">""&nbsp;xmlns:soap12=""</span><span style="color: #008000; text-decoration: underline;">http://www.w3.org/2003/05/soap-envelope</span><span style="color: #008000;">""&gt;"&nbsp;+</span><span style="color: #008000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;soap12:Body&gt;</span><span style="color: #000000;">"</span>&nbsp;<span style="color: #000000;">+</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&lt;qqCheckOnline&nbsp;xmlns="</span><span style="color: #000000;">"</span><span style="color: #000000;">http:</span><span style="color: #008000;">//</span><span style="color: #008000;">WebXml.com.cn/""&gt;"&nbsp;+</span><span style="color: #008000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&lt;qqCode&gt;349104641&lt;/qqCode&gt;</span><span style="color: #000000;">"</span>&nbsp;<span style="color: #000000;">+</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&lt;/qqCheckOnline&gt;</span><span style="color: #000000;">"</span>&nbsp;<span style="color: #000000;">+</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;&lt;/soap12:Body&gt;</span><span style="color: #000000;">"</span>&nbsp;<span style="color: #000000;">+</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;/soap12:Envelope&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(soapRequestData);<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">PostMethod&nbsp;postMethod&nbsp;=&nbsp;new&nbsp;PostMethod("</span><span style="color: #008000; text-decoration: underline;">http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl</span><span style="color: #008000;">");</span><span style="color: #008000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;PostMethod&nbsp;postMethod&nbsp;</span><span style="color: #000000;">=</span>&nbsp;<span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;PostMethod(</span><span style="color: #000000;">"</span><span style="color: #000000;">http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;然后把Soap请求数据添加到PostMethod中</span><span style="color: #008000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;b&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;soapRequestData.getBytes(</span><span style="color: #000000;">"</span><span style="color: #000000;">utf-8</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;</span><span style="color: #000000;">=</span>&nbsp;<span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ByteArrayInputStream(b,</span><span style="color: #000000;">0</span><span style="color: #000000;">,b.length);<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;RequestEntity&nbsp;re&nbsp;</span><span style="color: #000000;">=</span>&nbsp;<span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;InputStreamRequestEntity(is,b.length,</span><span style="color: #000000;">"</span><span style="color: #000000;">application/soap+xml;&nbsp;charset=utf-8</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;postMethod.setRequestEntity(re);&nbsp;<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">最后生成一个HttpClient对象，并发出postMethod请求</span><span style="color: #008000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;HttpClient&nbsp;httpClient&nbsp;</span><span style="color: #000000;">=</span>&nbsp;<span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;HttpClient();<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;statusCode&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;httpClient.executeMethod(postMethod);<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;soapResponseData&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;&nbsp;postMethod.getResponseBodyAsString();<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(soapResponseData);</span></div>
<br />
<br />
<br />
动态构造调用串的话如下实现：<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;"><img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;String&nbsp;tns;<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;String&nbsp;methodName;<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;String&nbsp;wsdlLocation;<br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;String&nbsp;soapResponseData;</span></div>
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;"><img id="Codehighlighter1_70_683_Open_Image" onclick="this.style.display='none'; Codehighlighter1_70_683_Open_Text.style.display='none'; Codehighlighter1_70_683_Closed_Image.style.display='inline'; Codehighlighter1_70_683_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /><img style="display: none;" id="Codehighlighter1_70_683_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_70_683_Closed_Text.style.display='none'; Codehighlighter1_70_683_Open_Image.style.display='inline'; Codehighlighter1_70_683_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" /><span style="color: #0000ff;">private</span>&nbsp;<span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;invoke(Map</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">String,&nbsp;String</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;patameterMap)&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;Exception&nbsp;</span><span id="Codehighlighter1_70_683_Open_Text"><span style="color: #000000;">{<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostMethod&nbsp;postMethod&nbsp;</span><span style="color: #000000;">=</span>&nbsp;<span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;PostMethod(wsdlLocation);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;soapRequestData&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;buildRequestData(patameterMap);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;bytes&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;soapRequestData.getBytes(</span><span style="color: #000000;">"</span><span style="color: #000000;">utf-8</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;inputStream&nbsp;</span><span style="color: #000000;">=</span>&nbsp;<span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ByteArrayInputStream(bytes,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bytes.length);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RequestEntity&nbsp;requestEntity&nbsp;</span><span style="color: #000000;">=</span>&nbsp;<span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;InputStreamRequestEntity(inputStream,<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bytes.length,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">application/soap+xml;&nbsp;charset=utf-8</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;postMethod.setRequestEntity(requestEntity);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpClient&nbsp;httpClient&nbsp;</span><span style="color: #000000;">=</span>&nbsp;<span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;HttpClient();<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;statusCode&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;httpClient.executeMethod(postMethod);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soapResponseData&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;postMethod.getResponseBodyAsString();<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;statusCode;<br />
<img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img id="Codehighlighter1_753_1579_Open_Image" onclick="this.style.display='none'; Codehighlighter1_753_1579_Open_Text.style.display='none'; Codehighlighter1_753_1579_Closed_Image.style.display='inline'; Codehighlighter1_753_1579_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /><img style="display: none;" id="Codehighlighter1_753_1579_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_753_1579_Closed_Text.style.display='none'; Codehighlighter1_753_1579_Open_Image.style.display='inline'; Codehighlighter1_753_1579_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;String&nbsp;buildRequestData(Map</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">String,&nbsp;String</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;patameterMap)&nbsp;</span><span id="Codehighlighter1_753_1579_Open_Text"><span style="color: #000000;">{<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;soapRequestData&nbsp;</span><span style="color: #000000;">=</span>&nbsp;<span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringBuffer();<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soapRequestData.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;?xml&nbsp;version="</span><span style="color: #000000;">"</span><span style="color: #000000;">1.0</span><span style="color: #000000;">"</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;encoding="</span><span style="color: #000000;">"</span><span style="color: #000000;">utf</span><span style="color: #000000;">-</span><span style="color: #000000;">8</span><span style="color: #000000;">"</span><span style="color: #000000;">"</span><span style="color: #000000;">?&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soapRequestData<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;soap12:Envelope&nbsp;xmlns:xsi="</span><span style="color: #000000;">"</span><span style="color: #000000;">http:</span><span style="color: #008000;">//</span><span style="color: #008000;">www.w3.org/2001/XMLSchema-instance""&nbsp;xmlns:xsd=""</span><span style="color: #008000; text-decoration: underline;">http://www.w3.org/2001/XMLSchema</span><span style="color: #008000;">""&nbsp;xmlns:soap12=""</span><span style="color: #008000; text-decoration: underline;">http://www.w3.org/2003/05/soap-envelope</span><span style="color: #008000;">""&gt;");</span><span style="color: #008000;"><br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soapRequestData.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;soap12:Body&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soapRequestData.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">"</span>&nbsp;<span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;methodName&nbsp;</span><span style="color: #000000;">+</span>&nbsp;<span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;xmlns="</span><span style="color: #000000;">""</span><span style="color: #000000;">&nbsp;+&nbsp;tns&nbsp;+&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">"</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">String</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;nameSet&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;patameterMap.keySet();<br />
<img id="Codehighlighter1_1296_1395_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1296_1395_Open_Text.style.display='none'; Codehighlighter1_1296_1395_Closed_Image.style.display='inline'; Codehighlighter1_1296_1395_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /><img style="display: none;" id="Codehighlighter1_1296_1395_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1296_1395_Closed_Text.style.display='none'; Codehighlighter1_1296_1395_Open_Image.style.display='inline'; Codehighlighter1_1296_1395_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(String&nbsp;name&nbsp;:&nbsp;nameSet)&nbsp;</span><span id="Codehighlighter1_1296_1395_Open_Text"><span style="color: #000000;">{<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soapRequestData.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">"</span>&nbsp;<span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;name&nbsp;</span><span style="color: #000000;">+</span>&nbsp;<span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">"</span>&nbsp;<span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;patameterMap.get(name)<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">+</span>&nbsp;<span style="color: #000000;">"</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">"</span>&nbsp;<span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;name&nbsp;</span><span style="color: #000000;">+</span>&nbsp;<span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soapRequestData.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">"</span>&nbsp;<span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;methodName&nbsp;</span><span style="color: #000000;">+</span>&nbsp;<span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soapRequestData.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;/soap12:Body&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soapRequestData.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;/soap12:Envelope&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;soapRequestData.toString();<br />
<img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<img src ="http://www.blogjava.net/sealyu/aggbug/327217.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-07-27 14:42 <a href="http://www.blogjava.net/sealyu/archive/2010/07/27/327217.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML优化（转）</title><link>http://www.blogjava.net/sealyu/archive/2010/05/17/321207.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Mon, 17 May 2010 14:29:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/05/17/321207.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/321207.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/05/17/321207.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/321207.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/321207.html</trackback:ping><description><![CDATA[<p>在前段领域中，对Javascript和CSS的优化一直是大家关注的焦点，相应的压缩优化工具也非常丰富，相对而言对HTML优化的关注则显得有
些冷淡。在<a href="http://www.stevesouders.com/blog/" target="_blank">Steve
Souders</a>的大作《Even Faster Web
Sites》中谈到非常多有效的前端优化方法，例如Javascript的加载、CSS选择符、图片优化、gzip、iframe问题等，唯独没有细说
HTML优化。在整个前端的构成中，HTML是必不可少的一部分，而且是真正的展示&#8220;前端&#8221;。虽然与动辄十几K的Javascript相比，HTML的大
小在整个页面资源中一般不会占太多的比重，而且还有Gzip，但是事实表明，大多数页面都有较大的压缩余地，即使是Gzip过后仍然能减小可观的体积，这
一事实在后续的文章中会给出，本文主要讨论HTML优化的一些可行和看上去不那么可行的途径。</p>
<p>对于各种优化途径，如果一定要我给一个分类的话，我会用颜色来区分。对于那些在各种页面中都适用而且无害的方法，我将它们归为<strong><span style="color: #49ad44;">绿色</span></strong>。相对而言，只有在某些具体的情况下才适用
或者有违标准的方法归为<strong><span style="color: #d2aa0b;">橙色</span></strong>。</p>
<h4><strong><span style="color: #49ad44;">绿色方法</span></strong></h4>
<p>1. 使用相对URL</p>
<p>对于页面中的各种URL，例如链接、外链CSS的href、外链Javascript的src、图片src、iframe
src等，如果能够确定它们与当前页面是处于同一域名下的话，则可以使用相对URL，这样每一个URL都能够节省至少一个域名的长度。</p>
<p>2. 删除HTTP或HTTPS</p>
<p>绝对URL都以HTTP或HTTPS等协议头开始，如果能确定URL的协议与当前页面URL的协议是一致的，或者说该URL在多种协议下均是可用
的，则可以考虑删除这个协议头。这样做虽然有些非主流，但事实证明是可行的，而且也有理论依据(见<a href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a>
第5.2节描述)。<a href="http://www.google.com/phone/" target="_blank">Nexus
One</a>的这个页面中有些资源URL就删除了协议头，虽然并不是出于节省资源的<a href="http://blog.httpwatch.com/2010/02/10/using-protocol-relative-urls-to-switch-between-http-and-https/" target="_blank">目的</a>，但至少证明删除协议头是可行的。</p>
<p>对于CSS，如果删除协议头<a href="http://www.stevesouders.com/blog/2010/02/10/5a-missing-schema-double-download/" target="_blank">在IE7、IE8下会造成CSS下载两次</a>，这个是需要注意的问题。</p>
<p>3. 删除注释</p>
<p>与CSS、Javascript一样，也可以通过删除HTML中的注释来实现优化。然而，这一点对于HTML来说却要复杂一些，因为在HTML中存
在某些特殊作用的注释是不能删除的。</p>
<p>(a). <a href="http://msdn.microsoft.com/en-us/library/ms537512%28VS.85%29.aspx" target="_blank">IE条件注释</a></p>
<pre>
<div html4strict="" default="" style="overflow: auto; white-space: nowrap; width: auto;">
<div codecolorer="" style="white-space: nowrap;">&lt;!--[if expression]&gt; HTML &lt;![endif]—&gt;</div>
</div>
<br />
</pre>
<p>诸如这样的语法，只有符合expression的浏览器才能识别其中的内容。</p>
<p>(b). <a href="http://javascript.about.com/library/blxhtml.htm" target="_blank">CDATA注释</a></p>
<pre>/*  */<br />
</pre>
<p>CDATA本身是XHTML中才需要的，在CDATA中的内容不需要对特殊字符进行转义，不过为了兼容老版本的浏览器，需要加上注释，以免出错。不
过，对于这个注释，如果你的页面并没有真正的使用XHTML标准则可以大胆的删除掉。使用XHTML标准不是简单的声明DTD就可以办到的，除此之外还需
要服务器能够派application/xhtml+xml这样的内容格式，另外还需要浏览器支持，目前IE并不支持XHTML格式。因此，目前你的页面
可能是按照XHTML规范来写的，也能通过HTML验证，但想要兼容IE则一定还是以HTML方式来展示的。这样一来，很多为了遵循标准而增加的内容则可
以删除，具体的在后文的橙色部分详述。</p>
<p>(c). 自定义注释</p>
<p>产品中自定义的一些具有特定功能的注释，例如统计。</p>
<p>4. 压缩空白符</p>
<p>在HTML中的大多数标签中，多个空白符都会被压缩成一个来显示，于是可以通过删除多余的空白符来减小HTML体积。不过需要注意的是并不是所有的
空白符都可以这样做，例如pre、textarea中的空白符是按原样显示的，标签属性中的属性值也是按原样显示的，例如title、value等。</p>
<p>5. 压缩inline css &amp; Javascript</p>
<p>不管inline还是external，都需要压缩，这是减小体积的最直接的方式。</p>
<p>6. CSS&amp;Javascript尽量外链</p>
<p>外链CSS和Javascript，不仅仅是减小HTML本身的体积，而且还可以充分利用浏览器的缓存机制，所以当CSS、Javascript的
代码量超过一定体积时，尽量外链。除此之外，尽量避免在页面中使用<span style="border: 1px solid #cccccc; background-color: #eeeeee;">onmouseover=&#8221;xxxx&#8221;</span>的
方式来注册事件，既不利于维护也容易产生不必要的冗余代码。</p>
<p>7. 删除元素默认属性</p>
<p>在<a href="http://www.w3.org/TR/html401/" target="_blank">HTML规范</a>中，
很多HTML元素的属性是有默认值的，对于这些默认值可以抹去不写，下面是不完全统计。</p>
<table style="margin: auto; width: 400px;" border="0" cellpadding="2" cellspacing="0">
    <tbody>
        <tr>
            <td valign="top" width="133"><strong>标签</strong></td>
            <td valign="top" width="133"><strong>属性</strong></td>
            <td valign="top" width="133"><strong>默认值</strong></td>
        </tr>
        <tr>
            <td valign="top" width="133">style</td>
            <td valign="top" width="133">media</td>
            <td valign="top" width="133">screen</td>
        </tr>
        <tr>
            <td valign="top" width="133">link</td>
            <td valign="top" width="133">media</td>
            <td valign="top" width="133">screen</td>
        </tr>
        <tr>
            <td valign="top" width="133">form</td>
            <td valign="top" width="133">method</td>
            <td valign="top" width="133">get</td>
        </tr>
        <tr>
            <td valign="top" width="133">form</td>
        </tr>
        <tr>
            <td valign="top" width="133">input</td>
            <td valign="top" width="133">type</td>
            <td valign="top" width="133">text</td>
        </tr>
    </tbody>
</table>
<h4><strong><span style="color: #bf930d;">橙色方法</span></strong></h4>
<p>橙色方法是指那些有违标准，或者会导致页面出现无法预料的问题的一类方法，算是一类非常规的方法，因此也仅仅适用于一些非常规的页面，例如搜索引擎
首页。</p>
<p>1. 删除或替换</p>
<p>DOCTYPE对于页面展现非常重要，浏览器会根据具体的DOCTYPE来<a href="http://hsivonen.iki.fi/doctype/#handling" target="_blank">决定如何显示页面</a>，
除非你对删除DOCTYPE后的页面展示十分有把握，否则不要轻易删除。另外一种可行的方式是采用HTML5中的写法，即，大多数浏览器能够将这种doctype写法解析为标准或准标准(Almost
Standard)模式，不过依然会造成一些问题，具体见<a href="http://blog.silentash.com/2010/01/html5-doctype-and-img-space/" target="_blank">这里</a>。目前<a href="http://www.baidu.com/" target="_blank">百
度</a>、<a href="http://www.google.com/" target="_blank">Google</a>都是这么做的。</p>
<p>2. 删除标签属性值的引号</p>
<p>引号不是必须的，删之。此处也需要考虑一些特殊情况，例如属性值中包含引号等。</p>
<p>（提醒：不符合XHTML规范）</p>
<p>3. 省略某些属性值</p>
<p>例如disabled、checked、multiple等的值都可以省略。</p>
<p>（提醒：不符合XHTML规范）</p>
<p>4. 删除可选的闭合标签</p>
<p>例如body、p、tr等标签是允许没有闭合标签的，具体的参考<a href="http://hikejun.com/blog/?p=525" target="_blank">此处</a>。</p>
<p>（提醒：不符合XHTML规范）</p>
<p>5. 删除自动闭合标签的&#8221;/&#8221;</p>
<p>（提醒：不符合XHTML规范）</p>
<h4>工具</h4>
<p>HTML优化工具目前比较理想的是<a href="http://www.alentum.com/ahc/">Absolute HTML
Compressor</a>，另外，<a href="http://code.google.com/speed/page-speed/download.html" target="_blank">PageSpeed1.6</a>中也引入了HTML压缩功能，不过目前只有<a href="http://code.google.com/p/page-speed/wiki/MinifyHtml" target="_blank">四个简单的策略</a>，尚处于实验性阶段。随着大家对前端性能越来越高的关注度，HTML优化及压缩方面也一定会有所
发展的。</p>
<h4>总结</h4>
<p>1. HTML优化及压缩的发展滞后于前端其他资源，不过目前也已经引起大家越来越多的关注。</p>
<p>2. 绿色规则中的很多都是在写码过程中就可以注意和遵循的，如果能把这个优化融入到编码中，效果应该更好。</p>
<p>3. 橙色规则由于违背某些规范，只适用于某些特定的页面，使用时务必谨慎。</p>
<p>参考资料</p>
<h4><a href="http://www.speedingupwebsite.com/2010/02/02/html-minify-to-be-or-not-to-be/">HTML
minify &#8211; to be or not to be?</a></h4>
<h4><a href="http://perfectionkills.com/optimizing-html/" target="_blank">Optimizing HTML</a></h4>
<h4><a href="http://annevankesteren.nl/2010/01/optimizing-html" target="_blank">Optimizing Optimizing HTML</a></h4>
<img src ="http://www.blogjava.net/sealyu/aggbug/321207.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-05-17 22:29 <a href="http://www.blogjava.net/sealyu/archive/2010/05/17/321207.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web 开发与设计之 Google 兵器谱（转）</title><link>http://www.blogjava.net/sealyu/archive/2010/04/20/318793.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Mon, 19 Apr 2010 16:55:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/04/20/318793.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/318793.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/04/20/318793.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/318793.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/318793.html</trackback:ping><description><![CDATA[<p>Google 的使命是 Web，在 Google 眼中，未来的一切应用都将 Web 化，一直以来，Google 为 Web
开发与设计者推出了大量免费工具，让他们更好地创建，维护，改善他们的 Web
站点，这些工具包含了开发，分析，维护，修补等等用途，本文将介绍15款这样的工具。</p>
<h3>1. <a href="http://blog.chromium.org/2009/06/developer-tools-for-google-chrome.html">Google
Chrome Developer Tools</a>
</h3>
<p><a href="http://blog.chromium.org/2009/06/developer-tools-for-google-chrome.html"><img src="http://images.sixrevisions.com/2010/04/17-03_developer_tools.png" alt="" /></a></p>
<p>这是 Google Chrome 中类似 Firefox Firebug 以及 <a href="http://sixrevisions.com/tools/firefox_web_developer_extension_toolbar/">Web
Developer Toolbar</a> 的一个扩展，用于调试你的网页，包含一个 DOM 探测器，一个 JavaScript
调试台，可以设置执行断点和跟踪，一个类似 YSlow 的执行分析器。</p>
<h3>2. <a href="https://www.google.com/webmasters/tools/home?hl=en">Webmaster
Tools</a>
</h3>
<p><a href="https://www.google.com/webmasters/tools/home?hl=en"><img src="http://images.sixrevisions.com/2010/04/17-04_webmaster_tools.png" alt="" /></a></p>
<p>一个对网站拥有者来说非常有用的程序，可以帮助你从各个角度改善自己的站点。可以发现站点中的恶意程序，发现搜索引擎爬虫遇到的错误，可以发现你的
HTML 代码中需要改进的部分。还可以帮你发现你的站点中最热门的网页，并发现你站点中的错误链接。</p>
<h3>3. <a href="http://code.google.com/webtoolkit/">Google
Web Toolkit</a>
</h3>
<p><a href="http://code.google.com/webtoolkit/"><img src="http://images.sixrevisions.com/2010/04/17-05_gwt.png" alt="" /></a></p>
<p>Google Web Tootlkit （GWT）是一个 Web 开发基础框架，为开发者提供了一些基础类库，GWT 同 Google
的其它产品，如 AdWords，FeedBurner，Google Ajax 类库等紧密集成，<a href="http://code.google.com/webtoolkit/doc/latest/tutorial/">这里有一个
Google Docs 教程</a>。</p>
<h3>4. <a href="http://www.google.com/codesearch">Google
Code Search</a>
</h3>
<p><a href="http://www.google.com/codesearch"><img src="http://images.sixrevisions.com/2010/04/17-06_code_search.png" alt="" /></a></p>
<p>帮助开发者搜索代码，支持正则表达式搜索，或在一个<a href="http://www.google.com/codesearch/advanced_code_search">高级搜索界面</a>中，
很直观地搜索那些可能会让你事半功倍的公共代码。</p>
<h3>5. <a href="http://code.google.com/speed/page-speed/">Page Speed</a>
</h3>
<p><a href="http://code.google.com/speed/page-speed/"><img src="http://images.sixrevisions.com/2010/04/17-07_page_speed.png" alt="" /></a></p>
<p>Google 现在已经<a href="http://www.mattcutts.com/blog/site-speed/">将网站加载速
度算到搜索排名算法</a>中，<em>Page Speed</em> 可以帮助你分析你的网站性能，基于<a href="http://code.google.com/speed/page-speed/docs/rules_intro.html">
Google Web 性能最佳实践</a>。</p>
<h3>6. <a href="http://browsersize.googlelabs.com/">Browser
Size</a>
</h3>
<p><a href="http://browsersize.googlelabs.com/"><img src="http://images.sixrevisions.com/2010/04/17-08_browser_size.png" alt="" /></a></p>
<p>该工具帮你分析，你的网页在不同浏览器，不同浏览尺寸下的显示状况，非常适合看看自己的网页在不滚动的情况下，在各种浏览尺寸下显示到哪里。</p>
<h3>7. <a href="http://code.google.com/apis/ajaxlibs/">Google
Ajax  Libraries API</a>
</h3>
<p><a href="http://code.google.com/apis/ajaxlibs/"><img src="http://images.sixrevisions.com/2010/04/17-09_ajax_libraries.png" alt="" /></a></p>
<p><em>Google Ajax Libraries API</em> 包含多种流行的 JavaScript 库（目前有10种），并可以从
Google 高性能的 CDN
网络中加载，既节省了你的服务器带宽，同时，由于用户可能已经在别的网站加载过这个库，因此可以显著加快这些库的加载速度。</p>
<h3>8. <a href="http://www.google.com/websiteoptimizer/b/index.html">Google
Website Optimizer</a>
</h3>
<p><a href="http://www.google.com/websiteoptimizer/b/index.html"><img src="http://images.sixrevisions.com/2010/04/17-02_website_optimizer.jpg" alt="" /></a></p>
<p>接着这个工具，你可以对自己的网站进行<a href="http://sixrevisions.com/user-interface/an-introduction-to-website-split-testing/">
A/B 测试</a>，并对网站进行优化。</p>
<h3>9. <a href="http://sites.google.com/">Sites</a>
</h3>
<p><a href="http://sites.google.com/"><img src="http://images.sixrevisions.com/2010/04/17-10_google_sites.png" alt="" /></a></p>
<p>顾名思义，Google Sites 可以帮你创建一个托管的网站，可以将包括 YouTube，幻灯，Gmail 日历，Google Gear
小程序，Google Docs 一类的应用集成其中。如果将站点设置为不公开，你可以将这个工具用于个人文档工具。</p>
<h3>10. <a href="http://code.google.com/webtoolkit/speedtracer/">Speed  Tracer</a>
</h3>
<p><a href="http://code.google.com/webtoolkit/speedtracer/"><img src="http://images.sixrevisions.com/2010/04/17-12_speed_tracer.jpg" alt="" /></a></p>
<p>以可视化方式，帮你分析你的 Web 程序中各种元素的加载或运行速度与实践，<a href="http://code.google.com/webtoolkit/speedtracer/speed-tracer-examples.html">这
里有一些关于这个工具的用例</a>。</p>
<h3>11. <a href="http://code.google.com/hosting/">Project
Hosting</a>
</h3>
<p><a href="http://code.google.com/hosting/"><img src="http://images.sixrevisions.com/2010/04/17-13_project_hosting.png" alt="" /></a></p>
<p>这是 Google Code 项目的一部分，可以帮你<a href="http://sixrevisions.com/resources/15-fantastic-finds-on-the-google-code-repository/">托
管你的开源项目</a>，Web 开发与设计者还可以在这里找到大量现成的项目以供借鉴或套用。</p>
<h3>12. <a href="http://code.google.com/appengine/">Google
App Engine</a>
</h3>
<p><a href="http://code.google.com/appengine/"><img src="http://images.sixrevisions.com/2010/04/17-11_app_engine.png" alt="" /></a></p>
<p>这是一个可用来托管自己的 Web 程序的地方，甚至可以使用自己的域名。这里有一个教程，讲解如何<a href="http://code.google.com/appengine/docs/python/gettingstarted/">使用
Google App Engine 来创建一个留言本</a>。Google App Engine 中已经<a href="http://appgallery.appspot.com/">托管了大量的 Web 程序</a>。</p>
<h3>13. <a href="http://code.google.com/apis/charttools/">Google Chart  Tools</a>
</h3>
<p><a href="http://code.google.com/apis/charttools/"><img src="http://images.sixrevisions.com/2010/04/17-14_chart_tools.png" alt="" /></a></p>
<p><em>Google  Chart Tools</em>
可以帮助你将数据转化为图表，并嵌入自己的网页，这些图表还拥有交互功能，可以钻入，或通过鼠标盘旋获取详细信息，还可以实现动画图表。</p>
<h3>14. <a href="http://code.google.com/closure/">Closure
Tools</a>
</h3>
<p><a href="http://code.google.com/closure/"><img src="http://images.sixrevisions.com/2010/04/17-15_closure_compiler.png" alt="" /></a></p>
<p><em>Closure Tools</em> 是 Google Labs 的一个开发套件，包含3个工具，闭包编译器（一个
JavaScript 优化器），闭包函数库（用于 Ajax 程序开发）以及一个用于动态生成 HTML 的闭包模板。</p>
<h3>15.  <a href="http://www.google.com/analytics/">Google
Analytics</a>
</h3>
<p><a href="http://www.google.com/analytics/"><img src="http://images.sixrevisions.com/2010/04/17-16_google_analytics.png" alt="" /></a></p>
<p>经典的 Google 流量分析统计工具。</p>
<p>本文国际来源：Six Revisions <a href="http://sixrevisions.com/tools/the-top-15-google-products-for-people-who-build-websites/">The
Top 15 Google Products for People Who Build Websites</a> (原文作者 Jacob
Gube)</p>
<img src ="http://www.blogjava.net/sealyu/aggbug/318793.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-04-20 00:55 <a href="http://www.blogjava.net/sealyu/archive/2010/04/20/318793.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>url参数中出现+、空格、=、%、&amp;、#等字符的解决办法（转）</title><link>http://www.blogjava.net/sealyu/archive/2010/04/16/318464.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Thu, 15 Apr 2010 17:28:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/04/16/318464.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/318464.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/04/16/318464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/318464.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/318464.html</trackback:ping><description><![CDATA[url出现了有+，空格，/，?，%，#，&amp;，=等特殊符号的时候，可能在服务器端无法获得正确的参数值，如何是好？<br />
解决办法<br />
将这些字符转化成服务器可以识别的字符，对应关系如下：<br />
URL字符转义<br />
<br />
用其它字符替代吧，或用全角的。<br />
<br />
<font color="#ff0000">+</font>&nbsp;&nbsp;&nbsp;    URL
中+号表示空格&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <font color="#0000ff"> %2B&nbsp;&nbsp;
</font><br />
<font color="#ff0000">空格</font>  URL中的空格可以用+号或者编码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <font color="#0000ff"> %20 </font>   <br />
<font color="#ff0000">/&nbsp;&nbsp;</font>
分隔目录和子目录&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">
%2F&nbsp;&nbsp;&nbsp;&nbsp;</font>  <br />
<font color="#ff0000">?</font>&nbsp;&nbsp;&nbsp;
分隔实际的URL和参数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <font color="#0000ff">%3F</font>&nbsp;&nbsp;&nbsp;&nbsp;
<br />
<font color="#ff0000">%</font>&nbsp;&nbsp;&nbsp;
指定特殊字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <font color="#0000ff">%25
</font>&nbsp;&nbsp;&nbsp;    <br />
<font color="#ff0000">#</font>&nbsp;&nbsp;&nbsp;
表示书签&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <font color="#0000ff"> %23</font>&nbsp;&nbsp;&nbsp;&nbsp;    <br />
<font color="#ff0000">&amp;</font>&nbsp;&nbsp;&nbsp;    URL
中指定的参数间的分隔符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <font color="#0000ff"> %26</font>&nbsp;&nbsp;&nbsp;&nbsp;    <br />
<font color="#ff0000">=</font>&nbsp;&nbsp;&nbsp;    URL
中指定参数的值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <font color="#0000ff">%3D</font><br />
ok，问题解决。。
<img src ="http://www.blogjava.net/sealyu/aggbug/318464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-04-16 01:28 <a href="http://www.blogjava.net/sealyu/archive/2010/04/16/318464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Photoshop路径终极教程（转）</title><link>http://www.blogjava.net/sealyu/archive/2010/04/08/317715.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Thu, 08 Apr 2010 06:08:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/04/08/317715.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/317715.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/04/08/317715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/317715.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/317715.html</trackback:ping><description><![CDATA[<font color="#ff0000" size="2"><font size="3"><strong><font size="+0"><font color="#000000">
对于我这个初学者，钢笔工具灵活应用还真是个大问题，直到看到了下面这个朋友的帖子之后茅塞顿开，在此感谢！</font></font></strong></font></font>
<p dir="ltr"><font color="#ff0000" size="2">版权声明：（作者赵鹏 </font><a href="http://www.zhaopeng.net/" target="_blank"><font size="2">zhaopeng.net</font></a><font color="#ff0000" size="2">，所在论坛 </font><a href="http://www.blueidea.com/" target="_blank"><font size="2">blueidea.com</font></a><font color="#ff0000" size="2">）此教程允许任意转载，允许用于商业印刷，不需经过作者同意，不需支付任何费用。但必须保证教程的
完整性，同时注明本版权声明全部内容。</font></p>
<p>如果是从头学习Photoshop，推荐大家查看他的另一巨著 <a href="http://www.blueidea.com/tech/graph/2004/2369.asp">photoshop 大师之路</a></p>
<p>首先来简要介绍一下钢笔工具和路径的概念</p>
<ol>
    <li>钢笔工具属于矢量绘图工具，其优点是可以勾画平滑的曲线，在缩放或者变形之后仍能保持平滑效果</li>
    <li>钢笔工具画出来的矢量图形称为路径，路径是矢量的路径允许是不封闭的开放状，如果把起点与终点重合绘制就可以得到封闭的路?</li>
</ol>
<hr noshade="noshade" />
<p>现在我们来绘制一个简单的路径<br />
如下图在工具栏选择钢笔工具（快捷键P）</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_01.gif" width="189" border="0" height="156"  alt="" /></p>
<p>并保持钢笔工具的选项如图所示（在工具栏上方）：选择第二种绘图方式（单纯路径），并取消橡皮带功能</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_02.gif" width="455" border="0" height="104"  alt="" /></p>
<hr noshade="noshade" />
<p>然后用钢笔在画面中单击，会看到在击打的点之间有线段相连<br />
保持按住Shift键可以让所绘制的点与上一个点保持45度整数倍夹角（比如零度、90度）<br />
这样可以绘制水平或者是垂直的线段（图中从第5个点开始按下了Shift键）</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_03.gif" width="400" border="0" height="300"  alt="" /></p>
<p>从上面的简单练习中我们得出两个规律：</p>
<ol>
    <li>我们并没有直接绘制线段，而是定义了各个点的位置，软件则在点间连线成型</li>
    <li>控制线段形态（方向、距离）的，并不是线段本身，而是线段中的各个点的位置</li>
</ol>
<p>记住两个术语：</p>
<ol>
    <li>那些点称为&#8220;锚点&#8221;(anchor)</li>
    <li>锚点间的线段称为&#8220;片断&#8221;(segment)</li>
</ol>
<p>刚才我们绘制的那些锚点，由于它们之间的线段都是直线，所以又称为直线型锚点。</p>
<hr noshade="noshade" />
<p>现在我们来绘制曲线形锚点</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_04.gif" width="400" border="0" height="300"  alt="" /></p>
<p>我们看到，在绘制出第二个及之后的锚点并拖动方向线时，曲线的形态也随之改变</p>
<p>究竟曲线是怎样生成的，我们又该如何来控制曲线的形态呢？<br />
除了具有直线的方向和距离外，曲线多了一个弯曲度的形态，<br />
方向和距离只要改变锚点位置就可以做到，但是弯曲度该如何控制？</p>
<p>如图在工具栏选择&#8220;直接选择工具&#8221;，注意是下方那个空心的箭头</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_05.gif" width="191" border="0" height="100"  alt="" /></p>
<p>假设我们刚才绘制的4个锚点分别是ABCD<br />
用&#8220;直接选择工具&#8221;去点取位于AB之间的片断<br />
会看到刚才我们绘制AB锚点时候定义的方向线</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_06.gif" width="400" border="0" height="300"  alt="" /></p>
<p>仔细看一下这两个方向线<br />
再这样想象：<br />
一个人要从A点到B点，在A点出发的时候，位于A点的其他人看到他是朝着上偏右的方向走的<br />
而位于B点的人，看到他是朝着下偏右的方向来的<br />
那么综合两地的观测结果。就可以得出这个人行走的路线：必定是一个类似锅盖的上弧形</p>
<hr noshade="noshade" />
<p>现在我们选择如图的&#8220;转换点工具&#8221;，该工具用来修改方向线</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_07.gif" width="187" border="0" height="154"  alt="" /></p>
<p>然后如下图所示般改变AB锚点上的方向线，将会看到曲线弯曲度的改变<br />
注意方向线末端有一个小圆点，这个圆点称为&#8220;手柄&#8221;，要点击手柄位置才可以改变方向线</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_08.gif" width="400" border="0" height="300"  alt="" /></p>
<p>结合刚才所作的比喻，就不难理解了：</p>
<ol>
    <li>修改B锚点方向线为下，相当于指定那个人从A点上方出发后，从B点下方进入，那么所走的路程就是一个S形</li>
    <li>再修改A锚点方向线为下，相当于从A点下方出发，再从B点下方进入，所走的就是一个下弧形的路程</li>
</ol>
<p>修改后的方向线如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_09.gif" width="400" border="0" height="300"  alt="" /></p>
<hr noshade="noshade" />
<p>明白了方向线的方向对曲线形态的影响后，我们来看一下方向线长短造成的影响<br />
如下图般，在同一方向上拖拉方向线：（可使用&#8220;直接选择工具&#8221;）</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_10.gif" width="400" border="0" height="300"  alt="" /></p>
<p><strong>对于一个锚点而言，如果方向线越长，那么曲线在这个方向上走的路程就越长，反之就越短</strong><br />
可以这样设想，曲线是一个橡皮筋，在头尾两端有两个力在各自的方向上拉<br />
哪个方向上力气大，则橡皮筋就朝向这个方向多靠拢一些。反而反之</p>
<p>除了修改锚点之外，也可以利用&#8220;直接选择工具&#8221;，在片断上修改曲线的形态<br />
如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_11.gif" width="400" border="0" height="300"  alt="" /></p>
<p>注意：这并不能说是&#8220;修改了片断&#8221;，而应该说是&#8220;同时修改了两个锚点&#8221;<br />
牢记原则：<font color="#ff0000">片断是由锚点组成的，只有修改锚点才能改变片断形态，这是不可逆的因果关系</font></p>
<p>做一下小结：<br />
对于这条曲线上的除了起点和终点的BC两个锚点而言，都存在两条方向线：<br />
一条是从上一个锚点&#8220;来向&#8221;的方向线；另一条是通往下一个锚点的&#8220;去向&#8221;的方向线<br />
对于起点，只存在&#8220;去向&#8221;的方向线；对于终点，只存在&#8220;来向&#8221;的方向线</p>
<hr noshade="noshade" />
<p>下面让我们做个小练习，如图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_12.gif" width="400" border="0" height="217"  alt="" /></p>
<p>现在要求在两个红点之间绘制一条紧贴鼠标外廓的曲线<br />
很可能你们绘制出来的是如下图这个样子的</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_13.gif" width="400" border="0" height="217"  alt="" /></p>
<p>虽然要求是达到了，但是这样的路径上使用了4个锚点</p>
<p>再看下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_14.gif" width="400" border="0" height="217"  alt="" /></p>
<p>同样的曲线效果，这里只用了两个锚点来绘制<br />
移动两个红点的位置再行绘制，很可能你们绘制的效果是这样</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_15.gif" width="400" border="0" height="217"  alt="" /></p>
<p>而实际上呢，也只需要用两个锚点就可以绘制这条曲线了，如下图</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_16.gif" width="400" border="0" height="217"  alt="" /></p>
<p>再换个位置绘制一条，也只需要两个锚点，如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_17.gif" width="400" border="0" height="231"  alt="" /></p>
<p>记住一个原则：绘制曲线的锚点数量越少越好<br />
因为如果锚点数量增加，不仅会增加绘制的步骤，同时也不利于后期的修改</p>
<hr noshade="noshade" />
<p>到这里，大家一定会产生两个问题：</p>
<ol>
    <li>两个锚点似乎可以包揽全部曲线形态了？<br />
    这个观点显然是错误的，例如我们前面首个实例所绘制的曲线，就需要两个以上的锚点</li>
    <li>那么，如何让所用的锚点数量最少？<br />
    实际上这里还隐含着另外一个问题：究竟在哪里定锚点才是最佳的？</li>
</ol>
<p>下面是我个人总结出来的规律：<br />
两个锚点之间的曲线形态分为两类：C形和S形<br />
C形的几种形态如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_18.gif" width="400" border="0" height="300"  alt="" /></p>
<p>它们的方向线如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_19.gif" width="400" border="0" height="300"  alt="" /></p>
<p>S形曲线的几种形态如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_20.gif" width="400" border="0" height="300"  alt="" /></p>
<p>S形的方向线如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_21.gif" width="400" border="0" height="300"  alt="" /></p>
<p>下面的动画演示了在调整方向线的时候，从C形到S形之间的分界点</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_22.gif" width="400" border="0" height="300"  alt="" /></p>
<p>在了解（并且理解）C、S这两种曲线的形态以后<br />
大家在绘制之前就可以分析出究竟需要多少个锚点<br />
其实就是分析出，有多少个可以用一条曲线（C形或S形）来绘制的区域</p>
<p>虽然锚点的数量可以反映出绘图人的水平和熟练度<br />
但是对于大多数人而言，只要能够满足需要就足够了<br />
所以在实际绘图的时候，不必过于苛求减少锚点的数目</p>
<hr noshade="noshade" />
<p>现在来实际绘制一个M形,类似麦当劳的标志<br />
我们将介绍三种过程,请先看清楚文字说明再看动画演示<br />
第一种方法：在完成绘制后，再修改第二个锚点的&#8220;去向&#8221;的方向线，并可以适当移动锚点位置<br />
（绘制完后按住Ctrl键在路径之外任意位置点击，即可完成绘制）</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_23.gif" width="400" border="0" height="300"  alt="" /></p>
<p>在其中我们注意到一个现象：<br />
新建立一个曲线锚点并拖动它的方向线的时候<br />
实际上随着鼠标移动的是&#8220;去向&#8221;这条方向线，而&#8220;来向&#8221;方向总是与之成180度水平夹角的，并且长度也相同<br />
所以，虽然本来我们应该把第二个锚点的&#8220;去向&#8221;定为右上方<br />
但是为了&#8220;来向&#8221;的正确，不得已先将其定在右下方，然后在完成绘制后，再单独修改其&#8220;去向&#8221;<br />
这种方法可以形容为&#8220;丢去保来&#8221;（同理，也可以&#8220;丢来保去&#8221;）<br />
在绘制数量较多的锚点时就显得很不方便，因为总看不到正确的曲线</p>
<p>现在我们介绍第二种绘制过程：<br />
在建立第二个锚点并遵循&#8220;来向&#8221;定义好方向线之后，再修改&#8220;去向&#8221;方向线，使曲线可以正确地绘制下去<br />
（绘制完后按住Ctrl键在路径之外任意位置点击，即可完成绘制）</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_24.gif" width="400" border="0" height="300"  alt="" /></p>
<p>虽然频繁地切换工具有点麻烦，但可以让曲线始终沿着指定的路线绘制<br />
（同理，也可以先遵循&#8220;去向&#8221;定好方向线，再修改&#8220;来向&#8221;）</p>
<p>实际上，在定好第二个锚点后，不用到工具栏切换工具<br />
将鼠标移动到方向线手柄上，按住ALT键即可暂时切换到&#8220;转换点工具&#8221;进行调整；<br />
而按住Ctrl键将暂时切换到&#8220;直接选择工具&#8221;，可以用来移动锚点位置<br />
松开Alt或Ctrl键即恢复钢笔工具，可继续绘制<br />
要注意的是：<br />
虽然&#8220;直接选择工具&#8221;也可以修改方向线，但&#8220;来向&#8221;&#8220;去向&#8221;有时候（当两者同时显示的时候）会被其一起修改</p>
<hr noshade="noshade" />
<p>最后第三种方法，应该是大家今后在绘制中所使用的标准方法：<br />
此法实际就是上面讲到的快捷键的另一种操作方式，也是在不切换工具的条件下，使用快捷键来完成方向线的修改<br />
做到不间断地绘制整条曲线<br />
（绘制完后按住Ctrl键在路径之外任意位置点击，即可完成绘制）</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_25.gif" width="400" border="0" height="300"  alt="" /></p>
<p>在动画中大家看到一个提示&#8220;调整结束后，先松开鼠标再放开ALT键，否则将打乱来向方向线&#8221;<br />
如果Alt键先被松开，将会使这个锚点的&#8220;来向&#8221;和&#8220;去向&#8221;恢复到长度相等的水平夹角位置<br />
这没有多大关系，再按下ALt键即可再次单独调整</p>
<hr noshade="noshade" />
<p>接着我们再来尝试绘制一个心形，如下图<br />
（绘制完后按住Ctrl键在路径之外任意位置点击，即可完成绘制）</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_26.gif" width="400" border="0" height="300"  alt="" /></p>
<p>注意：如果没有先按住Alt键就连接起点，将无法单独调整方向线，此时再按下Alt键即可单独调整</p>
<hr noshade="noshade" />
<p>到这里，大家对路径已经有了大概的认识，下面我们补充一些绘制中的其他问题<br />
半曲线锚点的绘制：<br />
有时候我们需要一个锚点左边是曲线，右边是直线，就需要用这种方法来绘制，如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_27.gif" width="400" border="0" height="300"  alt="" /></p>
<p>绘制锚点后，按住Alt键单击一下锚点，那么这个锚点的&#8220;去向&#8221;就变为了直线<br />
只有&#8220;去向&#8221;能改变为直线，如果需要&#8220;来向&#8221;为直线，则需要在上一个锚点操作</p>
<p>即使转换为半曲线锚点了，绘制下一个锚点的时候仍然是可以带有方向线的，如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_28.gif" width="400" border="0" height="300"  alt="" /></p>
<hr noshade="noshade" />
<p>这样看来似乎很矛盾，为何还有曲线出现？<br />
须记住，假设半曲线锚点A的&#8220;去向&#8221;为直线，这样对于下一个锚点B而言，B的&#8220;来向&#8221;也是直线<br />
但是如果锚点B的&#8220;去向&#8221;为曲线的话，还是会导致AB之间的片断呈曲线形<br />
不过这条曲线永远只能是C形曲线，因为它缺少另外一条方向线的控制<br />
可以用一条形状相类似的正常曲线锚点来比较一下</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_29.gif" width="400" border="0" height="300"  alt="" /></p>
<hr noshade="noshade" />
<p>下图演示了从&#8220;半曲线&#8221;转换为&#8220;正常曲线&#8221;锚点的步骤</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_30.gif" width="400" border="0" height="300"  alt="" /></p>
<p>下图演示了从&#8220;正常曲线&#8221;转换为&#8220;半曲线&#8221;锚点的步骤</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_31.gif" width="400" border="0" height="300"  alt="" /></p>
<hr noshade="noshade" />
<p>除了转换锚点类型外，还可以在已有的路径上增加或减少锚点的数量<br />
如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_32.gif" width="400" border="0" height="300"  alt="" /></p>
<p>可以看到，在选择了路径的情况下，停留在路径上方的钢笔工具可以自动判断增加或是减少锚点<br />
如果停在片断上方，为增加锚点；如果停在已有锚点上方，则为减去该锚点<br />
注意：增加或是减少锚点可能导致路径形态改变</p>
<hr noshade="noshade" />
<p>既然钢笔工具本身就附带了增加和减去的功能，那么为何在工具栏中还有单独的增加锚点和减去锚点工具呢？</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_01.gif" width="189" border="0" height="156"  alt="" /></p>
<p>这是因为有时候可能需要在锚点密集区增加更多锚点，如果就用钢笔工具的话，则有可能误减已有的锚点</p>
<hr noshade="noshade" />
<p>对于一条已经绘制完毕的路径，有时候需要在其上追加锚点（也有可能是在半途意外终止绘制）<br />
首先应将路径显示出来（可从路径面板查找并点击路径）<br />
然后使用钢笔工具在末尾的锚点单击（当移动到末尾锚点的时候光标会有提示）<br />
此时即可继续绘制，见下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_32a.gif" width="400" border="0" height="300"  alt="" /></p>
<hr noshade="noshade" />
<p>如果要将多条独立的路径连接在一起，可以如下图操作：<br />
需要注意的是在调整方向线的时候可以按住Alt键单独调整其中一条</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_32b.gif" width="400" border="0" height="300"  alt="" /></p>
<hr noshade="noshade" />
<p>还有一个绘制曲线的技巧：<br />
要绘制一条光滑的曲线，就必须保持锚点上&#8220;来向&#8221;与&#8220;去向&#8221;的夹角为180度的水平角（方向线长短无关）<br />
注意如果更改了夹角，就有可能形成类似m的形状</p>
<p>现在我们已经学会了用钢笔来勾画任意的路径形状了<br />
但很多时候并不需要完全从无到有的来绘制一条新路径<br />
Photoshop提供了一些基本的路径形状<br />
我们可以在这些基本路径的基础上加以修改形成需要的形状<br />
这样不仅快速，并且效果也比完全和手工绘制的要好</p>
<p>下图是在网页设计中经常用到的图形</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_33.gif" width="400" border="0" height="300"  alt="" /></p>
<hr noshade="noshade" />
<p>先看最上方图形的绘制过程：<br />
在工具栏选择矩形形状工具</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_34.gif" width="218" border="0" height="184"  alt="" /></p>
<p>使用第一种绘制方式（建立一个用前景色填充的矢量层），如下图</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_35.gif" width="347" border="0" height="45"  alt="" /></p>
<p>注意样式要关闭，选择一个颜色作为填充色，如下图</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_36.gif" width="315" border="0" height="33"  alt="" /></p>
<p>然后在图像中绘制一个矩形的形状，如下图</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_37.gif" width="400" border="0" height="300"  alt="" /></p>
<p>画好之后注意图层面板上新建立一个带路径的色彩填充层<br />
单击下图所示区域可以隐藏或显示路径，双击其前方的色彩块可以更改填充色</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_38.gif" width="400" border="0" height="300"  alt="" /></p>
<p>注意：</p>
<ol>
    <li>如果要修改这个层中的路径，则路径必须在显示状态</li>
    <li>如果路径显示会影响了一些（如描边等）制作时的视觉效果，则应先隐藏路径</li>
</ol>
<p>由于我们要修改这条路径，所以要先将路径显示<br />
然后使用增加锚点工具增加4个锚点，再将一些锚点向上移动即可<br />
记住：无论在直线还是曲线上增加锚点，所增加默认的都是曲线型锚点<br />
如果需要直线型锚点，则要使用&#8220;转换点工具&#8221;点击增加出来的锚点</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_39.gif" width="400" border="0" height="300"  alt="" /></p>
<p>下图的红色区域就是使用这种方法制作出来的</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_40.gif" width="430" border="0" height="96"  alt="" /></p>
<hr noshade="noshade" />
<p>同样是刚才的矩形，把步骤略加修改一下，如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_41.gif" width="400" border="0" height="300"  alt="" /></p>
<p>下图上方的红色区域就是使用这种方法制作的</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_42.gif" width="424" border="0" height="60"  alt="" /></p>
<hr noshade="noshade" />
<p>现在来绘制那个中空的图形，绘制的思想就是先画一个大框，然后在中间减去一个小框<br />
注意：</p>
<ol>
    <li>在绘制完第一个大框之后，要在工具设定中改为&#8220;从形状区域减去&#8221;方式再绘制小框</li>
    <li>在选择路径进行对齐操作的时候最好使用&#8220;路径选择工具&#8221;，如果使用&#8220;直接选择工具&#8221;有时候无法选择整条路径</li>
</ol>
<p>过程如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_43.gif" width="400" border="0" height="300"  alt="" /></p>
<p>再来绘制一个类似标签卡的图形，如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_44.gif" width="400" border="0" height="300"  alt="" /></p>
<hr noshade="noshade" />
<p>上面的几种方法，都是利用了带路径的色彩填充层来制作效果<br />
除了色彩填充以外，路径也可以用来制作调节图层（调节图层在另外教程中介绍）<br />
制作顺序如下：<br />
1 原图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_45.jpg" width="229" border="0" height="280"  alt="" /></p>
<p>2 使用第二种绘制方式（单纯绘制路径）</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_46.gif" width="355" border="0" height="48"  alt="" /></p>
<p>3 在图像中绘制两个封闭路径，注意两个路径为相加方式，即在绘制第一个之后选择相加方式绘制第二个</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_47.gif" width="240" border="0" height="289"  alt="" /></p>
<p>4 在图层面板启动调节图层中的&#8220;亮度/对比度&#8221;</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_48.gif" width="239" border="0" height="354"  alt="" /></p>
<p>5 &#8220;亮度/对比度&#8221;设置如下图:</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_49.gif" width="444" border="0" height="271"  alt="" /></p>
<p>6 在新建的调节图层上启动&#8220;描边&#8221;样式</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_50.gif" width="212" border="0" height="324"  alt="" /></p>
<p>7 &#8220;描边&#8221;样式设置如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_51.gif" width="492" border="0" height="329"  alt="" /></p>
<p>这样我们就完成了制作，如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_52.jpg" width="229" border="0" height="280"  alt="" /></p>
<p>也可以将其制作为动画（动画制作在另外教程中介绍）</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_53.gif" width="228" border="0" height="280"  alt="" /></p>
<p>最后我们来制作一个较复杂的图形，如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_55.gif" width="400" border="0" height="300"  alt="" /></p>
<p>该图形原来是一个完整的椭圆，被分割为了两个部分，这种效果在Illustrator中很容易实现<br />
只需要在椭圆上绘制一条曲线，然后使用分割命令即可。<br />
在Photoshop中就较为复杂一些（所以复杂的路径最好在Illustrator中制作）</p>
<p>绘制过程如下：<br />
首先使用椭圆形状工具，选择填充层绘图方式，绘制一个椭圆，如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_56.gif" width="400" border="0" height="300"  alt="" /></p>
<p>然后隐藏该层的路径，切换到单纯路径绘图方式<br />
绘制一个如下图的路径（可以由矩形修改而来）<br />
绘制完成后保持新画的路径在选择状态，按CTRL C复制到剪贴板：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_57.gif" width="400" border="0" height="300"  alt="" /></p>
<p>接下来把蓝色的椭圆层复制一层，改为其他的颜色便于区别</p>
<p>然后将前面一步复制的路径一次粘贴到两个层的路径中，并更改其与原先路径的运算关系<br />
需要注意的是：</p>
<ol>
    <li>要先将层的路径显示出来，才能加以修改</li>
    <li>最好关闭暂时不用的图层，以免视觉混乱</li>
    <li>&#8220;组合&#8221;并非必要步骤。按&#8220;组合&#8221;按钮之后两条路径就合并为了一个，但即使不合并也不会影响视觉效果，并且还利于后期的再修改。
    所以建议在实际应用中，除非必要，否则应尽量不使用&#8220;组合&#8221;功能。</li>
    <li>在大家今后的类似制作中，只需要制作黄色的部分就可以达到视觉要求的效果了，因为黄色图层层次高于蓝色部分，本身就能够产生遮挡
    蓝色的效果。</li>
</ol>
<p>过程如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_58.gif" width="400" border="0" height="300"  alt="" /></p>
<hr noshade="noshade" />
<p>综合以上的内容，可以感受到路径在应用中的强大功能<br />
使用路径可以勾画平滑的曲线，在修改的时候非常方便<br />
并且最重要的是:<br />
其矢量图形固有的特性，使得其在旋转、拉伸等操作后依然清晰。而点阵图像会变得模糊。<br />
做个试验，先将一个矢量一个点阵图同时缩小到原来的10%，再放大回原大小。如下图：</p>
<p align="center"><img src="http://www.blueidea.com/articleimg/2003/07/500/ps_pen_1_54.gif" width="400" border="0" height="300"  alt="" /></p>
<p>在实际的设计过程中，由于构思的不断改变，很可能经常进行各种各样的修改<br />
比如缩放、旋转、5边形改6六边形，直线改曲线等<br />
如果是使用点阵图像，则很多情况下都只能重新绘制<br />
而使用矢量图形则可以完全避免这些情况<br />
并且矢量图象对系统资源占用较少（在Photoshop中），不受输出分辨率的影响<br />
所以在实际的设计当中，应首要考虑使用矢量图形进行制作</p>
<p align="center">结束</p>
<p align="right">赵鹏　2003-07-27　21:07　Home</p>
<img src ="http://www.blogjava.net/sealyu/aggbug/317715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-04-08 14:08 <a href="http://www.blogjava.net/sealyu/archive/2010/04/08/317715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Social Media Icons</title><link>http://www.blogjava.net/sealyu/archive/2010/03/19/315914.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Fri, 19 Mar 2010 06:12:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/03/19/315914.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/315914.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/03/19/315914.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/315914.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/315914.html</trackback:ping><description><![CDATA[<span  style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; ">
<h3 style="padding-top: 1.2em; padding-right: 0px; padding-bottom: 0.3em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal bold 135%/100% Arial, Helvetica, sans-serif; ">The following icons are added:</h3>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 1.3em; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Google Buzz, Picasa, Bing, Meetup, Ebay, Feedburner, WordPress (blue version), Drupal, Gowalla, ICQ, Metacafe, Yelp, Xing, PayPal, Heart, Star, Podcast, and various color buttons.</p>
<p class="image" style="padding-top: 0px; padding-right: 0px; padding-bottom: 1.3em; padding-left: 0px; margin-top: 4px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="http://icondock.com/free/vector-social-media-icons" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #000000; text-decoration: underline; outline-style: none; outline-width: initial; outline-color: initial; background-image: none !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; background-color: initial !important; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #000000; border-top-style: none !important; border-right-style: none !important; border-left-style: none !important; border-width: initial !important; border-color: initial !important; background-position: initial initial !important; background-repeat: initial initial !important; "><img src="http://www.webdesignerwall.com/wp-content/uploads/2010/02/social-media-icon-update-preview.jpg" alt="social media icon update" style="padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-width: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #666666; border-right-color: #666666; border-bottom-color: #666666; border-left-color: #666666; background-position: initial initial; background-repeat: initial initial; " /></a></p>
</span>
<img src ="http://www.blogjava.net/sealyu/aggbug/315914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-03-19 14:12 <a href="http://www.blogjava.net/sealyu/archive/2010/03/19/315914.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web 设计中的 5 个最具争议性的话题（转）</title><link>http://www.blogjava.net/sealyu/archive/2010/03/19/315903.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Fri, 19 Mar 2010 05:21:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/03/19/315903.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/315903.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/03/19/315903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/315903.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/315903.html</trackback:ping><description><![CDATA[<span  style="font-family: verdana, sans-serif; font-size: 12px; line-height: 18px; ">
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">在 Web 空前繁荣的今天，有关 Web 设计中的各种观点很多会成为话题，有的很快达成一致，有的则一直争议下去，本文讲述 Web 设计中的 5 大经典争议，这些争议从它们诞生的那天起，就被正反两方争得不亦乐乎。</p>
<h3 class="subtitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">争议之一：链接是否应该在新窗口打开</h3>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://line25.com/wp-content/uploads/2010/debates/new-window.jpg" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">正方:</h4>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">外部链接应该始终从新窗口打开，当你浏览一个站点的时候，点击了一个链接，却被带到另外一个站点，你在这个站点的会话也因此丢失，这实在令人恼怒。因此，站点内的链接可以在现有窗口打开，而站点外链接则应该在新窗口打开。</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">反方:</h4>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">作为 Web 设计师，我们不该控制用户的行为，一个链接是否在新窗口打开，应该是用户自己的选择。剥夺用户的控制权，在用户的桌面上打开一堆窗口或标签，这才是真正让人恼怒的事。如果用户想打开新窗口，他们可以自己选择，而对非熟练用户，新窗口让他们丢失了后退按钮更让他们无所适从。</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">和事佬:</h4>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">总体来讲，应该避免使用新窗口打开链接，但在某些场合，如打开购物车中的帮助链接，打开一个非 html 文件（如 PDF 文件），应该使用新窗口。为了提高易用性，最好在需要打开新窗口的地方，用一个小图标提示一下。</p>
<h3 class="subtitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">争议之二：在链接中应该使用诸如Click here 一类的笼统词汇吗？</h3>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://line25.com/wp-content/uploads/2010/debates/click-here.jpg" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">正方:</h4>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://dustincurtis.com/you_should_follow_me_on_twitter.html" style="color: #888888; text-decoration: none; ">事实证明</a>，Click here 比描述性的链接更容易获得点击，因此应该使用该词汇以获得更好的点击率。</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">反方:</h4>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">Click here 一类的链接损害 Web 的易用性，用户在点击之前，只能通过周围的上下文关系猜测这个链接是做什么的。<a href="http://www.w3.org/QA/Tips/noClickHere" style="color: #888888; text-decoration: none; ">Quality guidelines</a>&nbsp;建议，任何链接文字都应该明确描述该链接的目的。</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">和事佬:</h4>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">为了提高站点的易用性，可访问性和 SEO 性能，应该始终使用描述性链接。很有趣听到有人说 Click here 比描述性链接可以获得更多点击率，不知道那些点击进来的人是不是看两眼就离开了。</p>
<h3 class="subtitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">争议之三：使用该继续使用 b 和 i 两个标签?</h3>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://line25.com/wp-content/uploads/2010/debates/b-i.jpg" alt="" width="500" height="200" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">正方：</h4>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">如果你仅仅想把一个词设为粗体，而这个词并没有强调表示重要的意思，应该使用 b 标签，不该用 strong 标签，读屏软件对 b 和i 标签有不同的发音，而 HTML5 规范中仍包含这两个标签。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong>反方:</strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">这两个标签的作用是将文字设置为粗体或斜体，从语义角度看，任何装饰性的东西都应该使用 CSS 实现，如果要强调一个词语，应该使用 strong 或 em 标签。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong>和事佬：</strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">b 和 i 标签不应该用于修饰文字的式样，这些视觉的修饰应该交由 CSS 处理。如果要强调一个词汇或语句，应该使用 strong 或 em 标签。只有在那些没有别的标签可用的场合，才可以考虑 b 和 i 。</p>
<h3 class="subtitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">争议之四：站点 Logo 是否因出现在 h1 标签中?</h3>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://line25.com/wp-content/uploads/2010/debates/h1.jpg" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><br />
<strong>正方:</strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">Logo 不应包围在标题标签中，标题标签应该包含这个页面的标题或描述性内容，这是 SEO 的最佳方式，否则，站点中的每个页的标题岂不是全变成公司名字了？</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong>反方:</strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">一个站点最明显的标志是它的 Logo， 而 h1 是一个页面最顶级的标题，将 Logo 包围其中很自然，这样，即使没有 CSS 人们也很容易该明白这个页面的结构。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong>和事佬:</strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">标题标签的作用是描述内容的层级结构，如果一个站点有一个描述站点内容的标题，应该放在 h1 中，否则，第二级结构或描述性的对象，就是 Logo。</p>
<h3 class="subtitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">争议之五：是否应该支持 IE6？</h3>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://line25.com/wp-content/uploads/2010/debates/ie6.jpg" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">正方:</h4>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">IE6 现在仍占有&nbsp;<a href="http://www.w3schools.com/browsers/browsers_stats.asp" style="color: #888888; text-decoration: none; ">10%</a>&nbsp;的市场份额（在国内更高-译者注），因此，网站毫无疑问应该支持 IE6。世界上仍然有很多公司的系统仍需使用 IE6 访问，另外，还有很多人根本不知道怎么升级他们的浏览器。</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">反方:</h4>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">IE6 已经过时，不支持最新的 Web 技术，它给在线用户带来安全隐患，也是众多 Web 开发设计师的噩梦。包括 YouTube 在内的大型站点已经<a href="http://mashable.com/2010/02/23/youtube-ie6/" style="color: #888888; text-decoration: none; ">停止支持 IE6</a>。你也不例外。</p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">和事佬:</h4>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">IE6 毫无疑问在衰退，随着大公司对它的抛弃，它的死亡可能来得比预期还快，是否支持 IE6 要看的具体情况，可以考虑为 IE6 用户提供最基本的页面格式，而不必为它挣扎。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">本文来源：<a href="http://line25.com/articles/top-5-web-design-debates-that-cause-the-most-riots" style="color: #888888; text-decoration: none; ">http://line25.com/articles/top-5-web-design-debates-that-cause-the-most-riots</a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">中文编译来源：<a href="http://www.comsharp.com/" style="color: #888888; text-decoration: none; "><strong>锐商企业CMS</strong>&nbsp;网站内容管理系统</a>&nbsp;官方网站</p>
<p align="right" class="comet blueline" style="font-size: 12px; line-height: 25px; text-indent: 25px; color: #8a8a8a; ">【&nbsp;<a href="http://news.csdn.net/a/20100303/217295.html#postcomment" target="_self" style="color: #005a98; text-decoration: underline; ">发</a></p>
</span>
<img src ="http://www.blogjava.net/sealyu/aggbug/315903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-03-19 13:21 <a href="http://www.blogjava.net/sealyu/archive/2010/03/19/315903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>15 个第三方 Web 表单资源（转）</title><link>http://www.blogjava.net/sealyu/archive/2010/03/19/315904.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Fri, 19 Mar 2010 05:21:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/03/19/315904.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/315904.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/03/19/315904.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/315904.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/315904.html</trackback:ping><description><![CDATA[<span  style="font-family: verdana, sans-serif; font-size: 12px; line-height: 18px; ">
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">几乎每个 Web 站点都需要表单，不管是留言表单，还是会员注册表单，还是调查表或订单，尽管表单很有用，但对 Web 开发与设计者来说，表单的设计非常繁琐，本文搜集了15个免费或收费的第三方 Web 表单资源，可以轻松实现 Web 表单的设计与集成，它们中的一些还可以帮你实现非常专业的表单设计。</p>
<h3 class="subtitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">表单创建资源</h3>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://www.formspring.com/" style="color: #888888; text-decoration: none; ">FormSpring</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">FormSpring 可以创建标准的联系，调查，捐赠接收，注册等表单，无需编码，它会帮你管理和接收数据，甚至集成付款功能。分免费和收费两种服务，免费服务允许创建3个表单，每个表单10个栏，每月接收50次数据。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://www.formspring.com/" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/fs.jpg" alt="FormSpring" width="500" height="291" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://wufoo.com/" style="color: #888888; text-decoration: none; ">Wufoo</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">Wufoo 可以实现联系，调查，注册，在线支付等表单的设计，可以使用模板，包含多种报告，同样，也包含免费和收费服务。免费服务允许一个用户，3个表单，3个报告，10个栏，每月100次数据。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://wufoo.com/" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/wu.jpg" alt="Wufoo" width="500" height="306" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://www.icebrrg.com/" style="color: #888888; text-decoration: none; ">Icebrrg</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">Icebrrg 可用于创建联系，注册，调查，应用程序等表单，可以查看发送的数据或将数据导出到 Excel 文件。为收费服务，不包含免费或试用服务。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://www.icebrrg.com/" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/ice.jpg" alt="Icebrrg" width="500" height="308" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://www.formsite.com/" style="color: #888888; text-decoration: none; ">FormSite</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">FormSite 用于超过100个预定义表单，并可以进行定制以符合自己的要求，可以创建联系，调查，这册，订单等表单，免费服务可以创建5个表单，每月100次数据。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://www.formsite.com/" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/site.jpg" alt="FormSite" width="500" height="299" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://www.formexperts.com/" style="color: #888888; text-decoration: none; ">FormExperts</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">FormExperts 包含上百个模板，可用来创建各种 Web 表单，支持自动回复，自定义感谢页面以及自定义邮件格式，可以免费试用10天。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://www.formexperts.com/" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/experts.jpg" alt="FormExperts" width="500" height="340" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://www.appnitro.com/" style="color: #888888; text-decoration: none; ">MachForm</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">MatchForm 可以帮你设计 PHP 表单，这是一个独立程序（有别于前面的托管服务），用 MySQL 数据库存储数据，单站点许可39美金。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://www.appnitro.com/" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/mach.jpg" alt="MachForm" width="500" height="322" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://www.emailmeform.com/" style="color: #888888; text-decoration: none; ">Email Me Form</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">Email Me Form 是一个在线服务，用来创建 HTML 或 PHP 表单，收费服务可以去掉 Email Me Form 的反向链接。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://www.emailmeform.com/g" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/email.jpg" alt="Email Me Form" width="500" height="305" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://www.formlogix.com/" style="color: #888888; text-decoration: none; ">FormLogix</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">FormLogix 可以用来创建反馈，调查，投票，注册，邀请，在线支付等表单，免费服务只用于测试。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://www.formlogix.com/" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/logix.jpg" alt="FormLogix" width="500" height="313" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://www3.formassembly.com/" style="color: #888888; text-decoration: none; ">FormAssembly</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">FormAssembly 可用于创建联系，注册，订单等 Web 表单，免费服务包含广告链接。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://www3.formassembly.com/" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/assembly.jpg" alt="FormAssembly" width="500" height="305" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://www.visitorcontact.com/" style="color: #888888; text-decoration: none; ">Visitor Contact</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">这一个免费资源，包含&nbsp;<a href="http://wordpress.org/extend/plugins/visitorcontact/" style="color: #888888; text-decoration: none; ">WordPress</a>&nbsp;插件，顾名思义，主要用于创建联系表单，功能包括自动回复，显示用户地理位置，还可以导出数据。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://www.visitorcontact.com/" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/visitor.jpg" alt="Visitor  Contact" width="500" height="330" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://theodin.co.uk/blog/ajax/contactable-jquery-plugin.html" style="color: #888888; text-decoration: none; ">Contactable</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">这是一个来自&nbsp;<a href="http://theodin.co.uk/" style="color: #888888; text-decoration: none; ">theodin.co.uk</a>&nbsp;的 jQuery 插件，可以轻松实现联系与反馈表单。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://theodin.co.uk/blog/ajax/contactable-jquery-plugin.html" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/able.jpg" alt="Contactable" width="500" height="307" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<h3 class="subtitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">WordPress 插件</h3>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://www.gravityforms.com/" style="color: #888888; text-decoration: none; ">Gravity Forms</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">这是一个收费 WordPress 插件（39美金），可用于创建各种 Web 表单，可以集成到 WordPress 控制面板。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://www.gravityforms.com/" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/gravity.jpg" alt="Gravity  Forms" width="500" height="291" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://wordpress.org/extend/plugins/cforms/" style="color: #888888; text-decoration: none; ">CForms II</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">这是一个功能强大的联系表单创建插件。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://wordpress.org/extend/plugins/cforms/" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/2.jpg" alt="CForms  II" width="500" height="354" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://contactform7.com/" style="color: #888888; text-decoration: none; ">Contact Form 7</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">这是一个非常受欢迎的联系表单设计插件，非常容易上手，可以轻松创建各种表单并插入到页面。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://contactform7.com/" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/7.jpg" alt="Contact Form 7" width="500" height="341" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><strong><a href="http://wordpress.org/extend/plugins/si-contact-form/" style="color: #888888; text-decoration: none; ">Fast and Secure Contact Form</a></strong></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">该插件可以创建安全联系表单，使用 CAPTCHAs 与 Akismet 防止垃圾信息。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://wordpress.org/extend/plugins/si-contact-form/" style="color: #888888; text-decoration: none; "><img src="http://vandelaydesign.com/images/0110/forms/fast.jpg" alt="Fast and Secure Contact Form" width="500" height="524" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">本文来源：<a href="http://vandelaydesign.com/blog/tools/web-forms/" style="color: #888888; text-decoration: none; ">http://vandelaydesign.com/blog/tools/web-forms/</a><br />
中文翻译来源：<a href="http://www.comsharp.com/" style="color: #888888; text-decoration: none; ">COMSHARP CMS 网站内容管理系统</a>官方站</p>
</span>
<img src ="http://www.blogjava.net/sealyu/aggbug/315904.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-03-19 13:21 <a href="http://www.blogjava.net/sealyu/archive/2010/03/19/315904.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web 地理定位（Geo-Location）知识大全(转)</title><link>http://www.blogjava.net/sealyu/archive/2010/03/19/315902.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Fri, 19 Mar 2010 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/03/19/315902.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/315902.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/03/19/315902.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/315902.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/315902.html</trackback:ping><description><![CDATA[<span  style="font-family: verdana, sans-serif; font-size: 12px; line-height: 18px; ">
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">在线地图已经是很平常的应用，Google Map 甚至可以用作驾驶导航仪，然而，这些应用的实现涉及到千丝万缕的艰辛工作，仅仅是定位你现在的位置，就有很多技术，有幸的是，如今在你的 Web 站点中，你可以通过短短的几行代码，获得一个用户的地理位置，本文介绍的是用在 Web 中的各种地理定位技术。</p>
<h3 class="subtitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">通过 IP 地址获得用户的地理位置信息</h3>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">互联网不过是一个巨大的网络，上面的每一台电脑对应一个 IP 地址，通过这个 IP 地址，可以知道这个用户在什么位置，我们可以通过查询&nbsp;<a href="http://maxmind.com/" style="color: #888888; text-decoration: none; ">Maxmind GeoIP 数据库</a>&nbsp;获得，Maxmind 还提供了一个&nbsp;<a href="http://www.maxmind.com/app/javascript_city" style="color: #888888; text-decoration: none; ">JavaScript 接口</a>让你在网站上实现这一功能。<a href="http://maxmind.com/" style="color: #888888; text-decoration: none; "></a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic1.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">这个方法（<a href="http://isithackday.com/hacks/geo/js-location.html" style="color: #888888; text-decoration: none; ">演示</a>）有一个问题，就是说，你获得的 IP 地理位置信息未必非常准确，因为这个 IP 是你的 ISP 分配给你的，你获得的事实上是 ISP 的地理位置，另外，如果你使用 VPN，你实际的得到可能是十万八千里之外的地方了。</p>
<h3 class="subtitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">通过 W3C Geo API 获得用户地理位置</h3>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">通过 IP 地址获取用户地理位置还有一个棘手的问题，就是安全和隐私问题，毕竟，并不是每个用户都愿意自己的地理位置信息被别人知道，鉴于此，人们开发了很多技术，<a href="http://code.google.com/apis/gears/api_geolocation.html" style="color: #888888; text-decoration: none; ">Google Gears 拥有一个 Geo-Location 服务</a>，<a href="http://plazes.com/" style="color: #888888; text-decoration: none; ">Plazes 帮助你保存你的位置</a>，而&nbsp;<a href="http://fireeagle.yahoo.net/" style="color: #888888; text-decoration: none; ">Yahoo Fire Eagle</a>&nbsp;算得上这类技术中最顺手的一个。然而这些技术共同的问题是，它们要求用户要么安装一个插件，要么需要访问特定的 Web 服务，这有些麻烦。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">W3C 有一个&nbsp;<a href="http://www.w3.org/TR/geolocation-API/" style="color: #888888; text-decoration: none; ">Geo-Location API</a>&nbsp;可以帮助浏览器制造商，在浏览器中集成地理信息功能。Firefox 3.5 以上的浏览器<a href="http://www.mozilla.com/firefox/geolocation/" style="color: #888888; text-decoration: none; ">支持 W3C Geo-LocationAPI</a>，同样支持该 API 的还有&nbsp;<a href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/GettingGeographicalLocations/GettingGeographicalLocations.html" style="color: #888888; text-decoration: none; ">iPhone 上的 Safari 浏览器</a>（需要 OS3.0 以上）。需要通过浏览器查询自己地理位置的用户，在浏览器中，会显示一个对话条，请求你的授权。如下图所示：</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic2.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">以下是请求使用该功能的代码：</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic3.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><a href="http://isithackday.com/hacks/geo/distance.php" style="color: #888888; text-decoration: none; ">下面的演示</a>，可以很好地演示上面两种地理信息获取技术的不同，可以看到，他们在<a href="http://isithackday.com/hacks/geo/js-w3c-location.html" style="color: #888888; text-decoration: none; ">测量用户地理位置</a>方面有很多不同。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic4.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<h3 class="subtitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">将经度/维度转换为地名</h3>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">将经度/维度信息转换为地位，称为&nbsp;<a href="http://en.wikipedia.org/wiki/Reverse_geocoding" style="color: #888888; text-decoration: none; ">反 Geo-Location</a>，网络上有很多这类服务可以使用，其中最著名的是&nbsp;<a href="http://www.geonames.org/export/reverse-geocoding.html" style="color: #888888; text-decoration: none; ">the geo-names Web service</a>, 但它仍有几个问题，比如，它的结果是以美国为中心的。另一个可免费使用，且支持全球信息，但知道的人并不多的服务来自一个让人有点意外的地方，<a href="http://www.flickr.com/" style="color: #888888; text-decoration: none; ">Flickr</a>。Flickr 的&nbsp;<a href="http://www.flickr.com/services/api/flickr.places.findByLatLon.html" style="color: #888888; text-decoration: none; ">flickr.places.findByLatLon</a>&nbsp;服务可以根据经纬度信息返回地名，你可以在&nbsp;<a href="http://www.flickr.com/services/api/explore/?method=flickr.places.findByLatLon" style="color: #888888; text-decoration: none; ">app explorer</a>&nbsp;做下体验，但目前最简单的方法是使用&nbsp;<a href="http://developer.yahoo.com/yql" style="color: #888888; text-decoration: none; ">Yahoo Query Language</a>&nbsp;( Yahoo 查询语言，简称 YQL). YQL 的样子如下：</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic5.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">使用 YQL 查询语言，你可以得到&nbsp;<a href="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20flickr.places%20where%20lat%3D%2237.416115%22%20and%20lon%3D-122.0245671format=xml" style="color: #888888; text-decoration: none; ">XML</a>&nbsp;或 JSon 格式的数据，下图是在 JavaScript 中是使用该查询语言的例子：</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic6.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">结合上面的例子，在反 Geo-Location 查询的帮助下，<a href="http://isithackday.com/hacks/geo/distance-info.php" style="color: #888888; text-decoration: none; ">我们得到了详细的地名信息</a>：</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic7.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<h3 class="subtitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">经纬度的问题</h3>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">经纬度虽然可以定位地球上的一个位置，但经纬度有时候容易引起歧义，为了解决这个问题，Yahoo 和 Flickr （<a href="http://apiwiki.twitter.com/Twitter-REST-API-Method:-trends-location" style="color: #888888; text-decoration: none; ">Twitter</a>&nbsp;很快也会支持）支持另一种定位方法，叫&nbsp;<a href="http://developer.yahoo.com/geo/geoplanet/guide/concepts.html" style="color: #888888; text-decoration: none; ">Where On Earth Identifier</a>&nbsp;(简称 WOEID) 。使用该方法，我们可以很容易获取来自某个区域的 Flickr 图片。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic8.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">这样几句 JavaScript 代码就可以显示来自指定地理位置的图片：</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic9.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">这些代码还可以打包成函数，下面的代码，将显示来自巴黎的10幅照片，你可以自己在&nbsp;<a href="http://developer.yahoo.com/yql/console/?q=select%20*%20from%20flickr.photolist%20where%20location%3D%22paris%2Cfr%22%20and%20text%3D%22%22%20and%20amount%3D10env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys" style="color: #888888; text-decoration: none; ">YQL console</a>&nbsp;中体验：</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic10.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<h3 class="subtitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">在文字内容中自动挖掘地理信息</h3>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">假如你想获得一段文字，或者一个网页内容所提到的地名的地理位置的信息，Yahoo 提供了一个很好的服务，叫&nbsp;<a href="http://developer.yahoo.com/geo/placemaker/" style="color: #888888; text-decoration: none; ">Placemaker</a>。从 Yahoo 那里获取一个&nbsp;<a href="http://developer.yahoo.com/wsregapp/" style="color: #888888; text-decoration: none; ">developer key</a>&nbsp;就可以使用该服务了。只需创建一个发布表单发布到&nbsp;<code style="font-style: normal; ">http://wherein.yahooapis.com/v1/document</code>，将 Developer Key 以 appid 发布，需要查询的文字以 documentContent 发布，将文字类型以 documentType 发布，同时用 outputType 定义返回数据类型，如下：</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic11.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">你也可以在<a href="http://isithackday.com/hacks/geo/simple-placemaker.php" style="color: #888888; text-decoration: none; ">这里亲自体验一下</a>，使用 PHP 调用该 API ，甚至可以<a href="http://isithackday.com/hacks/geo/placemaker.php" style="color: #888888; text-decoration: none; ">对输出数据的格式进行设置</a>。这里还有一个使用 PlaceMaker 设计&nbsp;<a href="http://icant.co.uk/geomaker" style="color: #888888; text-decoration: none; ">GeoMaker</a>&nbsp;服务，简单输入文字或 URL，选择位置，就可以返回地图。</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic12.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">因为还可以在 JavaScript 中通过 YQL 使用 PlaceMaker，我们可以通过几段客户端脚本使用同样的功能：</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic13.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">你需要三样东西，一段位于某个 HTML 对象中的，包含地理位置的文字，一个 Google Maps API Key （<a href="http://code.google.com/apis/maps/signup.html" style="color: #888888; text-decoration: none; ">申请</a>） 以及以下代码：</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic14.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<h3 class="subtitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">在网页中插入地图</h3>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">在线地图有很多，Google Map 是其中的领先者，除了 Google，Yahoo, 微软都提供地图服务，还有一个叫做&nbsp;<a href="http://www.openstreetmap.org/" style="color: #888888; text-decoration: none; ">Open Street Maps</a>&nbsp;的开放地图服务，<a href="http://www.opengeodata.org/2010/01/24/osm-the-default-map-in-haiti/" style="color: #888888; text-decoration: none; ">在上次海地地震救援中被派上用场</a>。在网页中插入交互地图最简单的方法是使用&nbsp;<a href="http://www.mapstraction.com/" style="color: #888888; text-decoration: none; ">Mapstraction</a>,它提供一个 JavaScript 库，<a href="http://24ways.org/2007/get-to-grips-with-slippy-maps" style="color: #888888; text-decoration: none; ">24ways 曾发表过一篇很好的介绍文章</a>。如果你只想在网页上放上你的地图，指示你的位置，而不想使用太多 JavaScript，&nbsp;<a href="http://code.google.com/apis/maps/documentation/staticmaps/" style="color: #888888; text-decoration: none; ">Google static maps API</a>&nbsp;是最好的选择，它会生成静态地图，以下代码可以将这个静态地图插入你的网页（<a href="http://gmaps-samples.googlecode.com/svn/trunk/simplewizard/makestaticmap.html" style="color: #888888; text-decoration: none; ">Google 还提供了一个创建静态地图的工具</a>）：</p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic15.gif" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; "></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">本文国际来源：<a href="http://www.smashingmagazine.com/2010/03/08/entering-the-wonderful-world-of-geo-location/" style="color: #888888; text-decoration: none; ">http://www.smashingmagazine.com/2010/03/08/entering-the-wonderful-world-of-geo-location/</a></p>
<p style="font-size: 14px; line-height: 25px; text-indent: 25px; ">中文编译来源：<a href="http://www.comsharp.com/" style="color: #888888; text-decoration: none; "><strong>锐商企业CMS</strong>&nbsp;网站内容管理系统</a>&nbsp;官方网站</p>
</span>
<img src ="http://www.blogjava.net/sealyu/aggbug/315902.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-03-19 13:20 <a href="http://www.blogjava.net/sealyu/archive/2010/03/19/315902.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>电子商务类站点终极资源大全（转）</title><link>http://www.blogjava.net/sealyu/archive/2010/02/25/313865.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Thu, 25 Feb 2010 03:04:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/02/25/313865.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/313865.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/02/25/313865.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/313865.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/313865.html</trackback:ping><description><![CDATA[<span style="line-height: normal; font-size: 12px;">
<p>电
子商务网站和普通网站一样，需要良好的设计，除此之外，电子商务站点还有许多额外的东西需要考虑，后台支撑程序，购物车，结算，产品目录，产品搜索与导
航，一个优秀的电子商务站点会引导用户快速找到他们需要的货品并顺畅地完成购买。本文搜集了上百种与电子商务网站设计相关的资源。</p>
<p style="margin: 0px 0px 1em; padding: 0px;"><img style="margin: 0px; padding: 0px;" src="http://www.netlogical.com/images/e-commerce.jpg" alt="" width="450" height="358" /><br style="margin: 0px; padding: 0px;" />
1. 设计灵感与借鉴资源&nbsp;<br style="margin: 0px; padding: 0px;" />
<strong style="margin: 0px; padding: 0px;">A。通用资源</strong><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://tutorialblog.org/20-of-the-best-ecommerce-websites/">20 of the Best e-commerce Websites</a>&nbsp;- 20 个最佳电子商务网站<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/20ofthebestecommercewebsites.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://cartcraze.com/">Cart Craze</a>&nbsp;&#8211; 电子商务网站设计展示<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/cartcraze.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://inspectelement.com/articles/23-excellent-examples-of-how-to-design-online-stores/">23 Excellent Examples of How to Design Online Stores</a>&nbsp;&#8211; 25个优秀的电子商务网站设计案例<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/examplesofhowtodesignonlinestores.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://dzineblog.com/2008/05/20-well-designed-ecommerce-websites.html">20 Well Designed E-Commerce Websites</a>&nbsp;&#8211; 20 个设计出众的电子商务网站<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/welldesignedecommercewebsites.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://vandelaydesign.com/blog/galleries/ecommerce-websites/">50 Inspirational e-commerce Website Designs</a>&nbsp;&#8211; 50 个电子商务网站设计样例<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/inspirationalecommercedesigns.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://vandelaydesign.com/blog/galleries/ecommerce-ui/">35 Excellent e-commerce User Interface Designs</a>&nbsp;&#8211; 35个出色的电子商务类站点UI设计<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/ecommerceuidesigns.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
B. 按钮&nbsp;<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.getelastic.com/add-to-cart-buttons/">107 Add to Cart Buttons of the Top Online Retailers</a>&nbsp;&#8211; 107 个购物车按钮设计<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/107addtocartbuttons.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://sixrevisions.com/design-showcase-inspiration/80-examples-of-add-to-cart-buttons-for-design-inspiration/">80 Examples of Add to Cart Buttons for Design Inspiration</a>&nbsp;&#8211; 80个购物车按钮设计样例<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/80addtocartbuttons.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.webdesigndev.com/inspiration/20-ecommerce-add-to-cart-buttons-for-your-inspiration">20 e-commerce Add To Cart Buttons For Your Inspiration</a>&nbsp;&#8211; 20个购物车按钮展示<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/20addtocartbuttons.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://vandelaydesign.com/blog/galleries/add-to-cart/">"Add to Cart" Button Showcase</a>&nbsp;&#8211; 购物车按钮展示<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/addtocartshowcase.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
2. 购物车与电子商务平台 A. 独立购物车&nbsp;<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.prestashop.com/">PrestaShop</a>&nbsp;&#8211; 一个免费，开源购物车，灵活，界面直观。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/prestashop.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.opencart.com/">OpenCart</a>&nbsp;&#8211; 基于 PHP 的免费，开源购物车。支持产品预览，自动图片尺寸，支持可下载类虚拟产品。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/opencart.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.magentocommerce.com/">Magento</a>&nbsp;&#8211; 开源电子商务平台，包含免费的社区版和收费的企业版。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/magento.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.cubecart.com/">CubeCart</a>&nbsp;&#8211; 购物车程序，有两个版本，包括一个免费版。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/cubecart.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.zen-cart.com/">Zen Cart</a>&nbsp;&#8211; 免费开源购物车，包括各种免费扩展。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/zencart.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.oscommerce.com/">osCommerce</a>&nbsp;&#8211; 开源，免费的购物车，已经应用到超过 225000 在线商店。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/oscommerce.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.digistore.co.nz/">Digistore</a>&nbsp;&#8211; 基于 osCommerce 的免费，开源购物车。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/digistore.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.storesprite.com/">StoreSprite</a>&nbsp;&#8211; 一个免费但功能强大的，基于 PHP/MySQL 的购物车。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/storesprite.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.bosscart.com/">BossCart</a>&nbsp;&#8211; 基于 PHP 的购物车，含免费版和高级收费版。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/bosscart.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.fatfreecart.com/">FatFreeCart</a>&nbsp;&#8211; 一个通过复制粘贴代码就能实现的购物车，支持 Paypal 和 Google Checkout，无需注册和安装。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/fatfreecart.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
C. 插件&nbsp;<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.instinct.co.nz/e-commerce/">WordPress e-Commerce</a>&nbsp;&#8211; 用于 WordPress 的免费，开源电子商务插件。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/wpecommerce.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://shopplugin.net/">Shopp</a>&nbsp;&#8211; 用于 WordPress 的超简单的购物车插件。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/shopp.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.ubercart.org/">Ubercart</a>&nbsp;&#8211; 用于 Drupal 5/6 的购物车插件。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/ubercart.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.drupalecommerce.org/">Drupal e-Commerce</a>&nbsp;&#8211; 用于 Drupal 的电子商务插件，支持 Paypal，Authorize.net 以及其它支付方式。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/drupalecommerce.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://virtuemart.net/">VirtueMart</a>&nbsp;&#8211; 用于 Joomla 的免费购物车。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/virtuemart.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.seber.com.au/downloads/SeberCart.aspx">Seber Cart</a>&nbsp;&#8211; 用于 Joomla 的小巧，易用的购物车。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/sebercart.jpg" alt="" /><br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<a style="margin: 0px; padding: 0px; color: #003366; text-decoration: none;" href="http://www.thumbdo.com/products/joomla-jquery-cart">Joomla jQuery Cart</a>&nbsp;&#8211; JCart 是一个易于安装，定制的，免费的 Ajax 购物车。<br style="margin: 0px; padding: 0px;" />
<br style="margin: 0px; padding: 0px;" />
<img style="margin: 0px; padding: 0px;" src="http://media02.hongkiat.com/e-commerce-design-roundup/jcart.jpg" alt="" /></p>
<p style="margin: 0px 0px 1em; padding: 0px;"><br />
</p>
</span>
<p>这是<a href="http://www.javaeye.com/news/13510">电子商务类站点终极资源大全</a>的第二部分，本部分搜集的是海量的设计资源，包含与电子商务网站设计相关的模板，主题，图标，素材等。本文的第一第三部分请参阅：电子商务类站点终 极资源大全（<a href="http://www.javaeye.com/news/13510">上</a>）（下）。</p>
<p><img src="http://www.netlogical.com/images/e-commerce.jpg" alt="" width="450" height="358" /></p>
<h3>3. 图标与设计素材</h3>
<h4>A. 电子商务网站主题</h4>
<p><a href="http://www.smashingmagazine.com/2009/01/25/35-free-high-quality-e-commerce-templates/">35  Free High-Quality E-Commerce Templates</a> &#8211; Smashing Magazine 搜集的非常出色的电子商务网站主题。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/35freetemplates.jpg" alt="" /></p>
<p><a href="http://www.smashingmagazine.com/2009/05/05/25-magento-templates-for-your-e-commerce-business/">25  Magento Templates for Your E-Commerce Business</a> &#8211; 25 套 Magento 主题</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/25magentotemplates.jpg" alt="" /></p>
<p><a href="http://blogicthink.com/best-ecommerce-wordpress-themes-templates-icons-flash-sites-collection-evanto/">20+  Best e-commerce (WordPress Themes, Templates, Icons, Flash Sites)  Collection</a> &#8211; 最佳电子商务主题集。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/20bestecommercecollection.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/the-clothes-shop-wordpress-ecommerce/64132">The  Clothes Shop Theme</a> &#8211; 基于 WP 的布艺网店主题。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/clothesshop.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/the-furniture-store-wordpress-ecommerce-shop/69996">The  Furniture Store Theme</a> &#8211; 基于 WP 的家居网店主题。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/furniturestore.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/envirashop-ecommerce-wordpress-theme/73265">enVirashop</a> &#8211; 用于 WP 的电子商务主题</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/envirashop.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/wpshop-reloaded-wordpress-ecommerce/53051">wpShop  Reloaded</a> &#8211; 一套 WP 网店主题</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/wpshop.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/rgbstore-ecommerce-html-template/67270">RGBSTore  e-commerce</a> &#8211; 一套电子商务 HTML 模板，支持 Magento, osCommerce, Zen Cart 等</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/rgbstore.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/boutique/74689">Boutique</a> &#8211;  一套优雅的电子商务 HTML 模板</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/boutique.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/sancart-opencart-template/59996">Sancart</a> &#8211; 一套简单的 OpenCart 模板</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/sancart.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/oscomm-ecommerce-template/58903">OScomm  E-Commerce Template</a> &#8211; 一套 e-commerce HTML 模板</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/oscomm.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/classyshop/43948">ClassyShop</a> &#8211; 使用 960 网格框架设计的 e-commerce 模板</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/classyshop.jpg" alt="" /></p>
<p><a href="http://templatic.com/ecommerce-themes/store">Store Theme</a> &#8211; 一套来自 Templatic 的主题，能将标准 WP 换成在线网店</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/storetheme.jpg" alt="" /></p>
<p><a href="http://www.billionstudio.com/news/free-crafty-cart-theme/">Crafty  Cart Theme</a> &#8211; 另一个将 WP 变成在线网店的主题</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/craftycart.jpg" alt="" /></p>
<p><a href="http://www.chris-wallace.com/2009/07/17/simplecartjs-a-free-wp-e-commerce-thematic-child-theme/">SimpleCart(js)</a> &#8211; 还有一个</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/simplecartjs.jpg" alt="" /></p>
<p><a href="http://www.markettheme.com/">Market Theme</a> &#8211; 这个也是</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/markettheme.jpg" alt="" /></p>
<p><a href="http://www.shopperpress.com/">ShopperPress</a> &#8211; WP 网店主题，支持 Google Checkout, PayPal, Authorize.net 等支付方式</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/shopperpress.jpg" alt="" /></p>
<h4>B. 设计素材</h4>
<p><a href="http://graphicriver.net/item/ecommerce-web-elements-dark-grey-green/71803">e-commerce  Web Elements, Dark Grey &amp; Green</a> &#8211; 一套绿色系的电子商务网站素材</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/darkgreygreenwebelements.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/web-20-button-ecommerce-2/38759">Web  2.0 Button (e-commerce #2)</a> &#8211; 一套电子商务网站按钮集</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/web20buttons.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/ecommerce-web-elements/73080">e-commerce  Web Elements</a> &#8211; 一套电子商务设计素材，可以自行配色</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/ecommercewebelements.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/web-pack-price-table-banner-buttons/60125">Web  Pack (Price Table, Banner, Buttons&#8230;)</a> &#8211; 一套黑白灰色系设计素材</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/webpack.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/price-table/33307">Price Table</a> &#8211; 价格表素材</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/pricetable.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/colorful-pricing-table/71847">Colorful  Pricing Table</a> &#8211; 多彩的价格表</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/colorfulpricingtable.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/pricing-tables-5-pack/54410">Pricing  Tables &#8211; 5 Pack</a> &#8211; 5 套价格表素材</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/pricingtables5pack.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/pricing-tables/49484">Pricing  Tables</a> &#8211; 价格表，包含功能清单</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/pricingtablesfeatures.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/super-bright-pricing-tables-in-4-colors/76260">Super  Bright Pricing Tables</a> &#8211; 各种配色的价格表</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/superbrightpricingtables.jpg" alt="" /></p>
<h4>C. 通用图标<em><br />
</em>
</h4>
<p><a href="http://graphicriver.net/item/vector-free-shipping-bag-set/66837">Vector  Free Shipping Bag Set</a> &#8211; 矢量购物袋</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/freeshippingbags.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/free-shipping-tag-icon/68648">Free  Shipping Tag Icon</a> &#8211; 矢量标签</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/freeshippingtag.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/13-ecommerce-icons/69737">13  E-Commerce Icons</a> &#8211; 13 套电子商务网站图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/13ecommerceicons.jpg" alt="" /></p>
<p><a href="http://www.istockphoto.com/stock-illustration-7111605-universal-icons-set-16-shopping.php">Universal  Icons &#8211; Set 16 (Shopping)</a> &#8211; 来自 iStockPhoto 的电子商务网站图标素材</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/universaliconsset16.jpg" alt="" /></p>
<p><a href="http://www.istockphoto.com/stock-illustration-6001973-sale-and-shopping-icons-alto-series.php">Sale  and Shopping Icons &#8211; Alto Series</a> &#8211; 另一套</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/altosaleandshopping.jpg" alt="" /></p>
<p><a href="http://www.istockphoto.com/stock-illustration-6692733-shopping-consumerism-icons-white-or-black-series.php">Shopping  &amp; Consumerism Icons &#8211; White or Black Series</a> &#8211; 来自 iStockPhoto 的图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/whiteorblackshopping.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/set-of-77-web-icons/79287">Set  of 77 Web Icons</a> &#8211; Web 图标集</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/77webicons.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/bluesakura-45-icon-for-your-project/79037">BlueSakura</a> &#8211; 45个图标，包括购物车图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/bluesakura.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/icon-set-n9-commerce-theme-infinity-series/53248">Icon  Set n9 &#8211; Commerce</a> &#8211; 一套电子商务网站图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/n9iconset.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/icon-set-n8-commerce-theme-infinity-series/53245">Icon  Set n8 &#8211; Commerce</a> &#8211; 另一套</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/n8iconset.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/stylish-cardboard-tag-icons/44792">Stylish  Cardboard Tag Icons</a> &#8211; 挂牌</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/stylishcardboardtags.jpg" alt="" /></p>
<p><a href="http://net.tutsplus.com/freebies/icons-freebies/beautiful-ecommerce-icons/">Beautiful  e-commerce Icons</a> &#8211; 来自 Nettuts+ 的图标，包括购物车等</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/beautifulecommerceicons.jpg" alt="" /></p>
<p><a href="http://www.istockphoto.com/stock-illustration-11457016-hola-icons-shopping.php">Hola  Icons &#8211; Shopping</a> &#8211; 一套漂亮的电子商务图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/holaicons.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/simple-icons-on-black-background-set-4-/72541">Simple  Icons on Black Background &#8211; Set 4</a> &#8211; 灰色系图标集，包括购物车等</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/simpleiconsblackbackground.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/shopping-icons-set/69773">Shopping  Icons Set</a> &#8211; 一套明亮的电子商务图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/shoppingiconsset.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/shopping-icons-fresh-collection-set-10/69708">Shopping  Icons Fresh Collection &#8211; Set 10</a> &#8211; 很卡通的电子商务图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/shoppingiconsfreshcollection.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/smooth-icon-set/69301">Smooth  Icon Set</a> &#8211; 一套电子商务图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/smoothiconset.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/shopping-icons-retro-revival-collection-set-9/68940">Shopping  Icons Retro Revival Collection &#8211; Set 9</a> &#8211; 一套怀旧风的电子商务图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/retrorevivalset9.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/green-icons-retro-revival-collection-set-5/68934">Green  Icons Retro Revival Collection &#8211; Set 5</a> &#8211; 绿色系的</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/retrorevivalgreen.jpg" alt="" /></p>
<p><a href="http://www.istockphoto.com/stock-illustration-7722872-shopping-icon-set-isometric.php">Shopping  Icon Set (Isometric)</a> &#8211; 黄色系的</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/isometriciconset.jpg" alt="" /></p>
<p><a href="http://www.freeiconsweb.com/E-Commerce-icon-set.html">E-Commerce  Icon Set</a> &#8211; 青色系的电子商务图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/greeniconset.jpg" alt="" /></p>
<p><a href="http://www.freeiconsweb.com/Themes-Ultimate-Icon-Set.html">Themes  Ultimate Icon Set</a> &#8211; 电子商务图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/themesultimateicons.jpg" alt="" /></p>
<p><br />
</p>
<p>原帖地址： http://www.hongkiat.com/blog/e-commerce-design-resources-the-ultimate-round-up/
</p>
<img src ="http://www.blogjava.net/sealyu/aggbug/313865.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-02-25 11:04 <a href="http://www.blogjava.net/sealyu/archive/2010/02/25/313865.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java(Web)中相对路径，绝对路径问题总结 （转）</title><link>http://www.blogjava.net/sealyu/archive/2010/02/06/312179.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Sat, 06 Feb 2010 03:00:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/02/06/312179.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/312179.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/02/06/312179.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/312179.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/312179.html</trackback:ping><description><![CDATA[<div>
<p>1.基本概念的理解</p>
<p>　　绝对路径：绝对路径就是你的主页上的文件或目录在硬盘上真正的路径，(URL和物理路径)例如：<br />
C:"xyz"test.txt&nbsp;代表了test.txt文件的绝对路径。<a href="http://www.sun.com/index.htm">http://www.sun.com/index.htm</a>也代表了一个<br />
URL绝对路径。</p>
<p>　　相对路径：相对与某个基准目录的路径。包含Web的相对路径（HTML中的相对目录），例如：在<br />
Servlet中，"/"代表Web应用的跟目录。和物理路径的相对表示。例如："./" 代表当前目录,<br />
"../"代表上级目录。这种类似的表示，也是属于相对路径。</p>
<p>另外关于URI，URL,URN等内容，请参考RFC相关文档标准。</p>
<p>RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax, <br />
(<a href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a>)</p>
<p><br />
2.关于JSP/Servlet中的相对路径和绝对路径。</p>
<p>2.1服务器端的地址 </p>
<p>　　&nbsp;服务器端的相对地址指的是相对于你的web应用的地址，这个地址是在服务器端解析的<br />
（不同于html和javascript中的相对地址，他们是由客户端浏览器解析的）也就是说这时候<br />
在jsp和servlet中的相对地址应该是相对于你的web应用，即相对于<a href="http://192.168.0.1/webapp/">http://192.168.0.1/webapp/</a>的。 </p>
<p>　　其用到的地方有： <br />
&nbsp;forward：servlet中的request.getRequestDispatcher(address);这个address是<br />
在服务器端解析的，所以，你要forward到a.jsp应该这么写：<br />
request.getRequestDispatcher(&#8220;/user/a.jsp&#8221;)这个/相对于当前的web应用webapp，<br />
其绝对地址就是：<a href="http://192.168.0.1/webapp/user/a.jsp">http://192.168.0.1/webapp/user/a.jsp</a>。 <br />
sendRedirect：在jsp中&lt;%response.sendRedirect("/rtccp/user/a.jsp");%&gt; </p>
<p>2.22、客户端的地址 <br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所有的html页面中的相对地址都是相对于服务器根目录(<a href="http://192.168.0.1/">http://192.168.0.1/</a>)的，<br />
而不是(跟目录下的该Web应用的目录)http://192.168.0.1/webapp/的。 <br />
&nbsp;Html中的form表单的action属性的地址应该是相对于服务器根目录(<a href="http://192.168.0.1/">http://192.168.0.1/</a>)的，<br />
所以，如果提交到a.jsp为：action＝"/webapp/user/a.jsp"或action="&lt;%=request.getContextPath()%&gt;"/user/a.jsp；<br />
提交到servlet为actiom＝"/webapp/handleservlet" &nbsp;<br />
&nbsp;　　Javascript也是在客户端解析的，所以其相对路径和form表单一样。 <br />
&nbsp;</p>
<p>　　因此，一般情况下，在JSP/HTML页面等引用的CSS,Javascript.Action等属性前面最好都加上<br />
&lt;%=request.getContextPath()%&gt;,以确保所引用的文件都属于Web应用中的目录。<br />
另外，应该尽量避免使用类似".","./","../../"等类似的相对该文件位置的相对路径，这样<br />
当文件移动时，很容易出问题。</p>
<p><br />
3. JSP/Servlet中获得当前应用的相对路径和绝对路径<br />
3.1 JSP中获得当前应用的相对路径和绝对路径<br />
&nbsp;根目录所对应的绝对路径:request.getRequestURI()<br />
&nbsp;文件的绝对路径&nbsp;&nbsp;&nbsp; 　:application.getRealPath(request.getRequestURI());<br />
&nbsp;当前web应用的绝对路径 :application.getRealPath("/");<br />
&nbsp;取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()</p>
<p>3.2 Servlet中获得当前应用的相对路径和绝对路径<br />
&nbsp;根目录所对应的绝对路径:request.getServletPath();<br />
&nbsp;文件的绝对路径&nbsp;&nbsp;&nbsp; :request.getSession().getServletContext().getRealPath<br />
(request.getRequestURI())&nbsp;&nbsp;&nbsp;<br />
&nbsp;当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ServletContext对象获得几种方式：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;javax.servlet.http.HttpSession.getServletContext() <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;javax.servlet.jsp.PageContext.getServletContext() <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;javax.servlet.ServletConfig.getServletContext() <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</p>
<p>4.java 的Class中获得相对路径，绝对路径的方法<br />
4.1单独的Java类中获得绝对路径<br />
根据java.io.File的Doc文挡，可知:<br />
&nbsp;默认情况下new File("/")代表的目录为：System.getProperty("user.dir")。<br />
&nbsp;一下程序获得执行类的当前路径<br />
package org.cheng.file;<br />
import java.io.File;</p>
<p>public class FileTest {<br />
&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;System.out.println(FileTest.class.getClassLoader().getResource(""));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>　　System.out.println(ClassLoader.getSystemResource(""));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;System.out.println(FileTest.class.getResource(""));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;System.out.println(FileTest.class.getResource("/")); //Class文件所在路径&nbsp; <br />
&nbsp;&nbsp;System.out.println(new File("/").getAbsolutePath());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;System.out.println(System.getProperty("user.dir"));&nbsp;&nbsp;&nbsp; <br />
&nbsp;}<br />
}</p>
<p>4.2服务器中的Java类获得当前路径（来自网络）<br />
(1).Weblogic</p>
<p>WebApplication的系统文件根目录是你的weblogic安装所在根目录。<br />
例如：如果你的weblogic安装在c:"bea"weblogic700.....<br />
那么，你的文件根路径就是c:".<br />
所以，有两种方式能够让你访问你的服务器端的文件：<br />
a.使用绝对路径：<br />
比如将你的参数文件放在c:"yourconfig"yourconf.properties，<br />
直接使用 new FileInputStream("yourconfig/yourconf.properties");<br />
b.使用相对路径：<br />
相对路径的根目录就是你的webapplication的根路径，即WEB-INF的上一级目录，将你的参数文件放</p>
<p>在yourwebapp"yourconfig"yourconf.properties，<br />
这样使用：<br />
new FileInputStream("./yourconfig/yourconf.properties");<br />
这两种方式均可，自己选择。</p>
<p>(2).Tomcat</p>
<p>在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin</p>
<p>(3).Resin</p>
<p>不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET<br />
的路径为根.比如用新建文件法测试File f = new File("a.htm");<br />
这个a.htm在resin的安装目录下 </p>
<p>(4).如何读相对路径哪？</p>
<p>在Java文件中getResource或getResourceAsStream均可</p>
<p>例：getClass().getResourceAsStream(filePath);//filePath可以是"/filename",这里的/代表web</p>
<p>发布根路径下WEB-INF/classes</p>
<p>默认使用该方法的路径是：WEB-INF/classes。已经在Tomcat中测试。</p>
</div>
<script type="text/javascript"><!--
google_ad_client = "pub-4348265167276910";
/* 468x60, 个人博客 */
google_ad_slot = "2046406163";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script>google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad);</script>
<img src ="http://www.blogjava.net/sealyu/aggbug/312179.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-02-06 11:00 <a href="http://www.blogjava.net/sealyu/archive/2010/02/06/312179.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浏览器中打开文件</title><link>http://www.blogjava.net/sealyu/archive/2010/01/25/310788.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Mon, 25 Jan 2010 13:31:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/01/25/310788.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/310788.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/01/25/310788.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/310788.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/310788.html</trackback:ping><description><![CDATA[<div>java 代码</div>
<div>
<div>&nbsp;</div>
<ol start="1">
    <li>response.setContentType(&nbsp;"application/pdf"&nbsp;);&nbsp;&nbsp;//&nbsp;MIME&nbsp;type&nbsp;for&nbsp;pdf&nbsp;doc&nbsp;&nbsp;</li>
    <li>response.setHeader("Content-Disposition","attachment;filename=output.pdf;");&nbsp;&nbsp;</li>
</ol>
</div>
<br />
<ol start="1">
    <li>switch&nbsp;(df){&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;xls:&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;contentType设定&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contentType&nbsp;=&nbsp;"application/vnd.ms-excel;charset=utf-8";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;attachment表示网页会出现保存、打开对话框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename&nbsp;=&nbsp;"inline;&nbsp;filename="&nbsp;+&nbsp;fileName;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;xlsx:&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;contentType设定&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contentType&nbsp;=&nbsp;"application/vnd.ms-excel;charset=utf-8";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;attachment表示网页会出现保存、打开对话框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename&nbsp;=&nbsp;"inline;&nbsp;filename="&nbsp;+&nbsp;fileName;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;pdf:&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;contentType设定&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contentType&nbsp;=&nbsp;"application/pdf;charset=utf-8";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;attachment表示网页会出现保存、打开对话框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename&nbsp;=&nbsp;"inline;&nbsp;filename="&nbsp;+&nbsp;fileName;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;doc:&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;contentType设定&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contentType&nbsp;=&nbsp;"application/msword;charset=utf-8";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;attachment表示网页会出现保存、打开对话框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename&nbsp;=&nbsp;"inline;&nbsp;filename="&nbsp;+&nbsp;fileName;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;docx:&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;contentType设定&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contentType&nbsp;=&nbsp;"application/msword;charset=utf-8";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;attachment表示网页会出现保存、打开对话框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename&nbsp;=&nbsp;"inline;&nbsp;filename="&nbsp;+&nbsp;fileName;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;txt:&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;contentType设定&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contentType&nbsp;=&nbsp;"text/plain;charset=utf-8";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;attachment表示网页会出现保存、打开对话框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename&nbsp;=&nbsp;"inline;&nbsp;filename="&nbsp;+&nbsp;fileName;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;contentType设定&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contentType&nbsp;=&nbsp;"text/plain;charset=utf-8";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;attachment表示网页会出现保存、打开对话框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename&nbsp;=&nbsp;"inline;&nbsp;filename="&nbsp;+&nbsp;fileName;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp; <br />
    </li>
</ol>
<br />
<br />
<div><a rel="bookmark" href="http://www.qihangnet.com/PermaLink,guid,db65d50a-ba90-4229-a3a2-71b4f1b407b9.aspx">Content-Disposition的使用和注意事项</a></div>
<p>&nbsp;&nbsp;&nbsp;
最近不少Web技术圈内的朋友在讨论协议方面的事情，有的说web开发者应该熟悉web相关的协议，有的则说不用很了解。个人认为这要分层次来看待这个问
题，对于一个新手或者刚入门的web开发人员而言，研究协议方面的东西可能会使得web开发失去趣味性、抹煞学习积极性，这类人应该更多的了解基本的
Web技术使用。而对于在该行业工作多年的老鸟来说，协议相关的内容、标准相关内容应该尽量多些的了解，因为只有这样才能使得经手的web系统更加优秀
（安全、漂亮、快速、兼容性好、体验好&#8230;&#8230;）。本文我们来说一下MIME 协议的一个扩展Content-disposition。</p>
<p>&nbsp;&nbsp;&nbsp; 我们在开发web系统时有时会有以下需求：</p>
<ul>
    <li>希望某类或者某已知MIME 类型的文件（比如：*.gif;*.txt;*.htm）能够在访问时弹出&#8220;文件下载&#8221;对话框  </li>
    <li>希望以原始文件名（上传时的文件名,例如：山东省政府1024号文件.doc）提供下载，但服务器上保存的地址却是其他文件名（如：12519810948091234_asdf.doc)  </li>
    <li>希望某文件直接在浏览器上显示而不是弹出文件下载对话框  </li>
    <li>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</li>
</ul>
<p>&nbsp;&nbsp;&nbsp; 要解决上述需求就可以使用Content-disposition来解决。第一个需求的解决办法是</p>
<div>
<pre><span style="font-size: 11px; color: black; font-family: courier new; background-color: transparent;">Response.AddHeader <span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4;">"content-disposition"</span>,<span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4;">"attachment; filename=fname.ext"</span></span></pre>
</div>
<div>&nbsp;</div>
<div>将上述需求进行归我给出如下例子代码：</div>
<div>
<pre><span style="font-size: 11px; color: black; font-family: courier new; background-color: transparent;"><span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">public</span> <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">static</span> <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">void</span> ToDownload(<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">string</span> serverfilpath,<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">string</span> filename)<br />
<br />
{<br />
<br />
FileStream fileStream <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent;">=</span> <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">new</span> FileStream(serverfilpath, FileMode.Open);<br />
<br />
<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">long</span> fileSize <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent;">=</span> fileStream.Length;<br />
<br />
HttpContext.Current.Response.ContentType <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent;">=</span> <span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4;">"application/octet-stream"</span>;<br />
<br />
HttpContext.Current.Response.AddHeader(<span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4;">"Content-Disposition"</span>, <span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4;">"attachment; filename="""</span> <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent;">+</span> UTF_FileName(filename) <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent;">+</span> <span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4;">""";"</span>);<br />
<br />
<span style="font-size: 11px; color: green; font-family: courier new; background-color: transparent;">////attachment --- 作为附件下载</span><br />
<br />
<span style="font-size: 11px; color: green; font-family: courier new; background-color: transparent;">////inline --- 在线打开</span><br />
<br />
HttpContext.Current.Response.AddHeader(<span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4;">"Content-Length"</span>, fileSize.ToString());<br />
<br />
<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">byte</span>[] fileBuffer <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent;">=</span> <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">new</span> <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">byte</span>[fileSize];<br />
<br />
fileStream.Read(fileBuffer, 0, (<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">int</span>)fileSize);<br />
<br />
HttpContext.Current.Response.BinaryWrite(fileBuffer);<br />
<br />
fileStream.Close();<br />
<br />
HttpContext.Current.Response.End();<br />
<br />
}<br />
<br />
<br />
<br />
<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">public</span> <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">static</span> <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">void</span> ToOpen(<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">string</span> serverfilpath, <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">string</span> filename)<br />
<br />
{<br />
<br />
FileStream fileStream <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent;">=</span> <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">new</span> FileStream(serverfilpath, FileMode.Open);<br />
<br />
<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">long</span> fileSize <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent;">=</span> fileStream.Length;<br />
<br />
HttpContext.Current.Response.ContentType <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent;">=</span> <span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4;">"application/octet-stream"</span>;<br />
<br />
HttpContext.Current.Response.AddHeader(<span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4;">"Content-Disposition"</span>, <span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4;">"inline; filename="""</span> <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent;">+</span> UTF_FileName(filename) <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent;">+</span> <span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4;">""";"</span>);<br />
<br />
HttpContext.Current.Response.AddHeader(<span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4;">"Content-Length"</span>, fileSize.ToString());<br />
<br />
<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">byte</span>[] fileBuffer <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent;">=</span> <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">new</span> <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">byte</span>[fileSize];<br />
<br />
fileStream.Read(fileBuffer, 0, (<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">int</span>)fileSize);<br />
<br />
HttpContext.Current.Response.BinaryWrite(fileBuffer);<br />
<br />
fileStream.Close();<br />
<br />
HttpContext.Current.Response.End();<br />
<br />
}<br />
<br />
<br />
<br />
<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">private</span> <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">static</span> <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">string</span> UTF_FileName(<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">string</span> filename)<br />
<br />
{<br />
<br />
<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent;">return</span> HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);<br />
<br />
}</span></pre>
</div>
<p>简单的对上述代码做一下解析，ToDownload方法为将一个服务器上的文件（serverfilpath为服务器上的物理地址），以某文件名
(filename)在浏览器上弹出&#8220;文件下载&#8221;对话框，而ToOpen是将服务器上的某文件以某文件名在浏览器中显示/打开的。注意其中我使用了
UTF_FileName方法，该方法很简单，主要为了解决包含非英文/数字名称的问题，比如说文件名为&#8220;衣明志.doc&#8221;，使用该方法客户端就不会出现
乱码了。</p>
<p>&nbsp;<strong>需要注意以下几个问题：</strong> </p>
<ol>
    <li>Content-disposition是MIME协议的扩展，由于多方面的安全性考虑没有被标准化，所以可能某些浏览器不支持，比如说IE4.01
    </li>
    <li>我们可以使用程序来使用它，也可以在web服务器（比如IIS）上使用它，只需要在http header上做相应的设置即可</li>
</ol>
<p>可参看以下几篇文档：</p>
<ul>
    <li><a href="http://www.qihangnet.com/ct.ashx?id=db65d50a-ba90-4229-a3a2-71b4f1b407b9&amp;url=http%3a%2f%2fsupport.microsoft.com%2fkb%2f260519" target="_blank">如何为已知的 MIME 类型激活&#8220;文件下载&#8221;对话框</a>
    </li>
    <li><a href="http://www.qihangnet.com/ct.ashx?id=db65d50a-ba90-4229-a3a2-71b4f1b407b9&amp;url=http%3a%2f%2fwww.faqs.org%2frfcs%2frfc2183.html" target="_blank">Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field</a>
    </li>
    <li><a href="http://www.qihangnet.com/ct.ashx?id=db65d50a-ba90-4229-a3a2-71b4f1b407b9&amp;url=http%3a%2f%2fwww.w3.org%2fProtocols%2frfc2616%2frfc2616.html" target="_blank">Hypertext Transfer Protocol -- HTTP/1.1</a></li>
</ul>
<br />
<br />
<div id="1151805">Sets the Content-Type header.
Content-Type identifies the MIME type of the response document and the
character set encoding. To set the Content-Type header, use the
following code:</div>
<pre>response.setContentType("text/html; charset=Shift_JIS");<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</pre>
<div id="1151808">The default MIME type is text/plain. Some common MIME types include:</div>
<ul>
    <li>HTML format (.htm or .html): text/html </li>
    <li>Adobe Portable Document (pdf): application/pdf</li>
    <li>Microsoft Word (.doc): application/msword</li>
    <li>Microsoft Excel (.xls): application/msexcel</li>
    <li>Microsoft Powerpoint (.ppt): application/ms-powerpoint</li>
    <li>Realaudio (.rm, .ram): audio/x-pn-realaudio</li>
    <li>Text format (.txt): text/txt</li>
    <li>Zipped files (.zip): application/zip</li>
</ul>
<br />
<br />
<img src ="http://www.blogjava.net/sealyu/aggbug/310788.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-01-25 21:31 <a href="http://www.blogjava.net/sealyu/archive/2010/01/25/310788.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在Web页面上直接打开、编辑、创建Office文档（转）</title><link>http://www.blogjava.net/sealyu/archive/2010/01/18/309961.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Mon, 18 Jan 2010 08:03:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/01/18/309961.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/309961.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/01/18/309961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/309961.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/309961.html</trackback:ping><description><![CDATA[<p>有朋友询问如何在Web页面上做到像SharePoint中的效果一样，能直接激活客户端的Word来打开.doc文件，而不是类似直接点击.doc文档链接时Word在IE中被打开那样。想想这个问题应该很多人都会感兴趣，所以干脆写一篇blog来大致描述一下方法。</p>
<p>在安装Office2003以后，有一个ActiveX控件被安装到了系统中，这个控件位于&#8220;Program Files"Microsoft
Office"OFFICE11"owssupp.dll&#8221;。通过这个控件，客户端页面上的JavaScript就可以激活本地的Office软件，来实
现打开、编辑Office文档。（另，Office XP应该就已经包含这个ActiveX控件了。）</p>
<p>首先，用Script创建一个本地的对象：</p>
<p><font color="#0000ff">openDocObj = new ActiveXObject("SharePoint.OpenDocuments.2"); // 为了兼容Office XP，可以创建&#8220;SharePoint.OpenDocuments.1&#8221;</font></p>
<p>然后，调用openDocObj的相应的方法。比如打开服务器上的一个Office文档：</p>
<p><font color="#0000ff">openDocObj.ViewDocument("<a href="http://www.abc.com/documents/sample.doc"><font color="#0000ff">http://www.abc.com/documents</font></a>/sample.doc");</font></p>
<p>openDocObj对象会根据参数中不同的Office文档类型（.doc、.xls、.ppt）来打开不同的程序（Word、Excel、PowerPoint）。ViewDocument()方法还有一个重载签名，可以让我们手工指定激活哪个程序来打开文档：</p>
<p><font color="#0000ff">openDocObj.ViewDocument("</font><a href="http://www.abc.com/documents/sample.doc"><font color="#0000ff">http://www.abc.com/documents/sample.doc</font></a><font color="#0000ff">", 要激活的程序的ProgID);</font></p>
<p>那么要打开Office程序在线编辑文件又如何？</p>
<p><font color="#0000ff">openDocObj.EditDocument("</font><a href="http://www.abc.com/documents/sample.doc"><font color="#0000ff">http://www.abc.com/documents/sample.doc</font></a><font color="#0000ff">");</font></p>
<p>就可以直接激活Word，在Word里面编辑文档，然后直接点击Word里面的保存功能，就可以将文件保存会服务器上了。注意：为了让Word能将
编辑后的文档直接保存会服务器，访问Web站点的当前上下文的Windows
Identity必须对服务器的相应目录（即&#8220;http://www.abc.com/documents&#8221;这个虚拟目录所对应的服务器上的物理路径）有
相应的写权限，否则保存动作会失败。编辑完成后，EditDocument()会返回一个bool值，来反映编辑操作是否成功。</p>
<p>我们还可以通过打开服务器上的一个文档模版，来创建一个新的文档：</p>
<p><font color="#0000ff">openDocObj.CreateNewDocument("</font><a href="http://www.abc.com/documents/sampleTemplate.dot"><font color="#0000ff">http://www.abc.com/documents/sampleTemplate.dot</font></a><font color="#0000ff">", "</font><a href="http://www.abc.com/documents/"><font color="#0000ff">http://www.abc.com/documents/</font></a><font color="#0000ff">");</font></p>
<p>就可以使用&#8220;http://www.abc.com/documents/sampleTemplate.dot&#8221;这个模版来创建一个新的文档，默
认新文档的保存地点是&#8220;http://www.abc.com/documents/&#8221;。创建新文档时使用的程序取决于模版文件的类型（比如.dot模版
会对应Word）。新文档的保存同样需要注意权限问题。CreateNewDocument()方法同样会返回一个bool值来反映操作是否成功。</p>
<p>CreateNewDocument()方法的第一个参数，除了可以使用一个模版的地址外，还可以直接指定为希望用来创建新文档的客户端程序的ProgID。</p>
<img src ="http://www.blogjava.net/sealyu/aggbug/309961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-01-18 16:03 <a href="http://www.blogjava.net/sealyu/archive/2010/01/18/309961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浏览器的模式问题 Quirks Mode vs Standards Mode</title><link>http://www.blogjava.net/sealyu/archive/2010/01/08/308646.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Fri, 08 Jan 2010 01:16:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/01/08/308646.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/308646.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/01/08/308646.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/308646.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/308646.html</trackback:ping><description><![CDATA[<p>当微软开始产生与标准兼容的浏览器时，他们希望确保向后兼容性。为了实现这一点，他们IE6.0以后的版本在浏览器内嵌了两种表现模式：
Standards Mode（标准模式或Strict Mode）和Quirks mode（怪异模式或兼容模式Compatibility
Mode）。在标准模式中，浏览器根据W3C所定的规范来显示页面；而在怪异模式中，页面将以IE5，甚至IE4的显示页面的方式来表现，以保持以前的网
页能正常显示。</p>
<p>对于这两种模式引起最大的问题就是盒模式的问题，或者现在大家已经忽视了IE5的存在，但是，IE在怪异模式运行的盒模式依然在最新版本的IE7保留着，一旦应用不得当，IE7将变成跟IE5一样愚蠢。</p>
<p>当然，不只IE浏览器存在两种模式。</p>
<p>Opera 浏览器 (Opera 7~8) 支持与 IE 相同的两种呈现模式：Quirks Mode和 Standards Mode（有关详细信息，请参阅 <a href="http://www.opera.com/docs/specs/doctype/">http://www.opera.com/docs/specs/doctype/</a>），但是Opera9的Quirks Mode又不与之前的Quirks Mode呈现不一样，比如不再兼容IE5那种盒模式。</p>
<p>Mozilla Firefox 1+ 支持三种呈现模式：Quirks Mode、Almost Standards
Mode（几乎标准的模式）和 Standards Mode。Firefox 的 Almost Standards 模式对应于 IE 和
Opera 的 Standards 模式。其中的Almost Standards
Mode，除了在处理表格的方式方面有一些细微的差异之外，这种模式与标准模式基本相同。对于进入Quirks Mode的可参考<a href="http://www.mozilla.org/docs/web-developer/quirks/doctypes.html">http://www.mozilla.org/docs/web-developer/quirks/doctypes.html</a>）</p>
<p>说了这样多可能你还不知道是到底Mode是怎样。现在试一下html 4的。<br />
为什么要选择html4 呢？因为太多人认为只有xhtml才是符合标准的，又有多少人真的在使用xhtml呢？<br />
可以先打开前两个看代码比较一下．</p>
<ol>
    <li><a href="http://labs.aoao.org.cn/test/doctype/html4strict/">http://labs.aoao.org.cn/test/doctype/html4strict/</a></li>
    <li><a href="http://labs.aoao.org.cn/test/doctype/html4/">http://labs.aoao.org.cn/test/doctype/html4/</a></li>
    <li><a href="http://labs.aoao.org.cn/test/doctype/ishtml4strict/">http://labs.aoao.org.cn/test/doctype/ishtml4strict/</a></li>
</ol>
<p>当没有使用DTD声明或者使用HTML4以下（不包括HTML4）的DTD声明时，基本所有的浏览器都是使用Quirks Mode呈现。<br />
也就是前两个code是一样，可是为什么运行结果不一样呢？因为第一个使用了DTD 声明html是 html4 strict的文档，IE6+的IE会开启标准模式来处理网页，第三个属于一个垃圾的方式把IE引入 quirks mode ^_^ 我常常用这招哦<br />
我只是列出两个比较典型的问题，不同模式还会引起一大堆问题。有兴趣的朋友可以再找一下资料。</p>
<p>其实关于浏览器的模式问题我还写了很多，因为其他问题暂时没发出来，只是最近看到无忧上又在闹Web标准的事，突然发现某方连IE都不了解，哎！<br />
<a href="http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/compatmode.asp?frame=true">document.compatMode可参考</a></p>
<img src ="http://www.blogjava.net/sealyu/aggbug/308646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-01-08 09:16 <a href="http://www.blogjava.net/sealyu/archive/2010/01/08/308646.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Choosing a DOCTYPE</title><link>http://www.blogjava.net/sealyu/archive/2010/01/08/308642.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Fri, 08 Jan 2010 01:11:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2010/01/08/308642.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/308642.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2010/01/08/308642.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/308642.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/308642.html</trackback:ping><description><![CDATA[<p>According to <abbr title="HyperText Markup Language">HTML</abbr> standards, each <abbr title="HyperText Markup Language">HTML</abbr> document requires a <em>document type declaration</em>. The "DOCTYPE" begins the <abbr title="HyperText Markup Language">HTML</abbr> document and tells a <a href="http://htmlhelp.com/tools/validator/index.html.en">validator</a> which version of <abbr title="HyperText Markup Language">HTML</abbr> to use in checking the document's syntax.</p>
<p>If standard <abbr title="HyperText Markup Language">HTML</abbr> does not meet your needs but you still wish to gain the benefits of <abbr title="HyperText Markup Language">HTML</abbr> validation, see the section on <a href="http://htmlhelp.com/tools/validator/customdtd.html">using a custom <abbr title="Document Type Definition">DTD</abbr></a>.</p>
<p>The following DOCTYPEs are commonly used:</p>
<dl><dt><a name="html4strict"><code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"<br />
"http://www.w3.org/TR/html4/strict.dtd"&gt;</code></a></dt><dd>
<p>This declares the document to be <strong>HTML 4.01 Strict</strong>. HTML 4.01 Strict is a trimmed down version of <a href="http://www.w3.org/TR/html401/">HTML 4.01</a> that emphasizes structure over presentation. <a href="http://htmlhelp.com/reference/html40/deprecated.html">Deprecated elements</a> and attributes (including most presentational attributes), <a href="http://htmlhelp.com/reference/html40/frames/">frames</a>,
and link targets are not allowed in HTML 4 Strict. By writing to HTML 4
Strict, authors can achieve accessible, structurally rich documents
that easily adapt to <a href="http://htmlhelp.com/reference/css/">style sheets</a>
and different browsing situations. However, HTML 4 Strict documents may
look bland on very old browsers that lack support for style sheets.</p>
<p>Newer browsers such as Internet Explorer 5 for Mac,
Netscape 6, and <a href="http://www.mozilla.org/">Mozilla</a> use a
standards-compliant rendering for HTML 4 Strict documents. These browsers
use a "quirks" mode for most other document types to emulate
rendering bugs in older browsers.</p>
</dd><dt><a name="html4transitional"><code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<br />
"http://www.w3.org/TR/html4/loose.dtd"&gt;</code></a></dt><dd>
<p>This declares the document to be <strong>HTML 4.01 Transitional</strong>. HTML 4 Transitional includes all elements and attributes of <a href="http://htmlhelp.com/tools/validator/doctype.html#html4strict">HTML 4 Strict</a> but adds presentational attributes, <a href="http://htmlhelp.com/reference/html40/deprecated.html">deprecated elements</a>, and link targets.</p>
<div>
<p>Newer browsers such as Internet Explorer 5 for Mac,
Netscape 6, and <a href="http://www.mozilla.org/">Mozilla</a> use a
standards-compliant rendering for HTML 4.01 Transitional documents
that include the <abbr title="Uniform Resource Identifier">URI</abbr>
of the <abbr title="Document Type Definition">DTD</abbr>
in the DOCTYPE. These browsers use a "quirks"
mode to emulate rendering bugs in older browsers if the
<abbr title="Uniform Resource Identifier">URI</abbr> is
omitted:</p>
<p><code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;</code></p>
</div>
</dd><dt><a name="html4frameset"><code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"<br />
"http://www.w3.org/TR/html4/frameset.dtd"&gt;</code></a></dt><dd>
<p>This declares the document to be <strong>HTML 4.01 Frameset</strong>. HTML 4 Frameset is a variant of <a href="http://htmlhelp.com/tools/validator/doctype.html#html4transitional">HTML 4 Transitional</a> for documents that use <a href="http://htmlhelp.com/reference/html40/frames/">frames</a>.</p>
</dd><dt><a name="xhtml1strict"><code>&lt;!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"<br />
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</code></a></dt><dd>
<p>This declares the document to be <strong>XHTML 1.0 Strict</strong>.
<a href="http://www.w3.org/TR/xhtml1/">XHTML 1.0</a> Strict is an XML
version of <a href="http://htmlhelp.com/tools/validator/doctype.html#html4strict">HTML 4 Strict</a>.</p>
</dd><dt><a name="xhtml1transitional"><code>&lt;!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"<br />
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</code></a></dt><dd>
<p>This declares the document to be <strong>XHTML 1.0 Transitional</strong>.
<a href="http://www.w3.org/TR/xhtml1/">XHTML 1.0</a> Transitional is an XML
version of <a href="http://htmlhelp.com/tools/validator/doctype.html#html4transitional">HTML 4 Transitional</a>.</p>
</dd><dt><a name="xhtml1frameset"><code>&lt;!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"<br />
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"&gt;</code></a></dt><dd>
<p>This declares the document to be <strong>XHTML 1.0 Frameset</strong>.
<a href="http://www.w3.org/TR/xhtml1/">XHTML 1.0</a> Frameset is an XML
version of <a href="http://htmlhelp.com/tools/validator/doctype.html#html4frameset">HTML 4 Frameset</a>.</p>
</dd><dt><a name="html32"><code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"&gt;</code></a></dt><dd>
<p>This declares the document to be <strong>HTML 3.2</strong>. <a href="http://htmlhelp.com/reference/wilbur/">HTML 3.2</a> is well supported by most browsers in use. However, HTML 3.2 has limited support for <a href="http://htmlhelp.com/reference/css/">style sheets</a> and no support for <a href="http://htmlhelp.com/reference/html40/">HTML 4</a> features such as <a href="http://htmlhelp.com/reference/html40/frames/">frames</a> and internationalization.</p>
</dd><dt><a name="html20"><code>&lt;!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"&gt;</code></a></dt><dd>
<p>This declares the document to be <strong>HTML 2.0</strong>. <a href="http://www.w3.org/MarkUp/html-spec/">HTML 2.0</a>
is widely supported by browsers but lacks support for tables, frames,
and internationalization, as well as many commonly used presentational
elements and attributes.</p>
</dd></dl>
<img src ="http://www.blogjava.net/sealyu/aggbug/308642.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2010-01-08 09:11 <a href="http://www.blogjava.net/sealyu/archive/2010/01/08/308642.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE中td内容为空时不显示边框的解决办法（转）</title><link>http://www.blogjava.net/sealyu/archive/2009/12/26/307340.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Sat, 26 Dec 2009 01:35:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2009/12/26/307340.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/307340.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2009/12/26/307340.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/307340.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/307340.html</trackback:ping><description><![CDATA[<p>在ie（经测试IE8已经不存在此问题）中如果td标签中没有内容时，存在不显示边框的问题，最简单的办法就是用javacript，在文档加载完后加入下面的JS：</p>
<div>
<div>
<pre style="font-family: monospace;">var aTd=document.getElementsByTagName("td");<br />
for(i=0;i&lt;aTd.length;i++) {<br />
if(aTd[i].innerHTML=="")aTd[i].innerHTML="&amp;nbsp;";<br />
}</pre>
</div>
</div>
<p>当然还有别的办法，在TD所属的那个table用CSS也是可以的</p>
<div>
<div>
<pre style="font-family: monospace;">table{ border-collapse:collapse;}</pre>
</div>
</div>
<br />
之前<a href="http://www.zeali.net/entry/412" title="bordercolorlight的CSS实现" alt="bordercolorlight的CSS实现">总结了下如何</a>用
css 来实现 table 的 border + bordercolordark + bordercolorlight
的边框明暗效果，然后有网友问我为什么他写了一个类似的 css 样式，但只能在 Opera 下正常看到表格的边框效果， IE 下则什么也没有。
<p>
于是我跑去下了个 Opera9 一看，确实如此。原因倒也不复杂：因为在 IE 下（ Firefox 似乎和 IE 一致）如果某个 td
的内容为空的话，即便你设置了高度和宽度，这个 cell 的边框样式也是不会被显示出来的； Opera
则不管是否有内容与否，一概应用样式来渲染。这个问题刚毕业那会就碰到了，当时部门的科长来问我，后来我跟他说：给每个空的 td 加上 &nbsp;
就行了。以后每次碰到这个问题，我就统统采用这个简单粗暴有效的方式来解决了。</p>
<p>　　但今天卯足了劲研究了几下，从 <a href="http://jiarry.bokee.com/5508063.html" target="_blank">Jiarry</a> 那知道原来 css 语法是允许我们对这些缺省行为进行改变的：使用 <a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties/bordercollapse.asp" target="_blank"><font face="courier new,courier,monospace">border-collapse:collapse;</font></a> 和 <a href="http://www.cs.tut.fi/%7Ejkorpela/HTML/emptycells.html" target="_blank"><font face="courier new,courier,monospace">empty-cells:show;</font></a> 就可以让消失的边框显现出来。</p>
<div id="entryBody">
<p><strong>class="test1"</strong>: 加 border-collapse:collapse;<br />
</p>
<pre>.test1{<br />
border:1px solid #999999;<br />
<strong>border-collapse:collapse;</strong><br />
width:60%<br />
}<br />
.test1 td{<br />
border-bottom:1px solid #999999; <br />
height:28px; <br />
padding-left:6px;<br />
}</pre>
<br />
<table border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>class1&nbsp;</td>
            <td>这儿有内容</td>
            <td><br />
            </td>
            <td><br />
            </td>
            <td><br />
            </td>
        </tr>
        <tr>
            <td>这儿有内容</td>
            <td><br />
            </td>
            <td><br />
            </td>
            <td><br />
            </td>
            <td>&nbsp;</td>
        </tr>
    </tbody>
</table>
<br />
<p><strong>class="test2"</strong>: 加 border-collapse:collapse; 和 empty-cells:show;<br />
</p>
<pre>.test2{<br />
border:1px solid black;<br />
<strong>border-collapse:collapse;</strong><br />
width:60%<br />
}<br />
.test2 td{<br />
border-bottom:1px solid black; <br />
height:28px; <br />
padding-left:6px;<br />
<strong>empty-cells:show;</strong><br />
}</pre>
<br />
<table border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>class2&nbsp;</td>
            <td>这儿有内容</td>
            <td><br />
            </td>
            <td><br />
            </td>
            <td><br />
            </td>
        </tr>
        <tr>
            <td>这儿有内容</td>
            <td><br />
            </td>
            <td><br />
            </td>
            <td><br />
            </td>
            <td>&nbsp;</td>
        </tr>
    </tbody>
</table>
<br />
<p><strong>class="test3"</strong>: 不加 border-collapse:collapse; 和 empty-cells:show; 的情况下 <br />
</p>
<pre>.test3{<br />
border:1px solid #999999;<br />
width:60%<br />
}<br />
.test3 td{<br />
border-bottom:1px solid #999999; <br />
height:28px; <br />
padding-left:6px;<br />
}</pre>
<br />
<table width="177" border="0" cellpadding="0" cellspacing="0" height="48">
    <tbody>
        <tr>
            <td>class3&nbsp;</td>
            <td>这儿有内容</td>
            <td><br />
            </td>
            <td><br />
            </td>
            <td><br />
            </td>
        </tr>
        <tr>
            <td>这儿有内容</td>
            <td><br />
            </td>
            <td><br />
            </td>
            <td><br />
            </td>
            <td>&nbsp;</td>
        </tr>
    </tbody>
</table>
</div>
<br />
<img src ="http://www.blogjava.net/sealyu/aggbug/307340.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2009-12-26 09:35 <a href="http://www.blogjava.net/sealyu/archive/2009/12/26/307340.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML 和 XHTML 区别</title><link>http://www.blogjava.net/sealyu/archive/2009/12/23/307033.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Wed, 23 Dec 2009 06:08:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2009/12/23/307033.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/307033.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2009/12/23/307033.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/307033.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/307033.html</trackback:ping><description><![CDATA[<p>这篇文章主要阐述 HTML 和 XHTML 的区别。简单来说，XHTML 可以认为是 XML 版本的 HTML，为符合 XML 要求，XHTML 语法上要求更严谨些。</p>
<p>以下是 XHTML 相对 HTML 的几大区别：</p>
<ul>
    <li>XHTML 要求正确嵌套</li>
    <li>XHTML 所有元素必须关闭</li>
    <li>XHTML 区分大小写</li>
    <li>XHTML 属性值要用双引号</li>
    <li>XHTML 用 id 属性代替 name 属性</li>
    <li>XHTML 特殊字符的处理</li>
</ul>
<h2>XHTML 要求正确嵌套</h2>
<p>以下是正确的嵌套：</p>
<div>
<p>&lt;p&gt;布啦布啦&lt;strong&gt;独树一帜&lt;/strong&gt;。&lt;/p&gt;</p>
</div>
<p>以下是错误的嵌套：</p>
<div>
<p>&lt;p&gt;布啦布啦&lt;strong&gt;独树一帜&lt;/p&gt;&lt;/strong&gt;。</p>
</div>
<h2>XHTML 所有元素必须关闭</h2>
<p>在 HTML 中，比如 &lt;p&gt;，&lt;li&gt; 这些标记，你可以不写 &lt;/p&gt;，&lt;/li&gt;，但是在 XHTML 里，必须要求写关闭标记 (Closing Tag)。</p>
<p>比如：</p>
<div>
<p>&lt;p&gt;布啦布啦很认真。</p>
</div>
<p>应该写成:</p>
<div>
<p>&lt;p&gt;布啦布啦很认真。&lt;/p&gt;</p>
</div>
<h3>处理空元素</h3>
<p>有些空元素，在 XHTML 里的写法是在"&gt;"之前加空格和斜杠。比如&lt;br&gt;，应该写成&lt;br /&gt;。</p>
<p>以下是空元素的例子：</p>
<div>
<p>&lt;br /&gt;</p>
<p>&lt;hr /&gt;</p>
<p>&lt;img src = "/images/adpics/1/b027.jpg" alt = "blabla" /&gt;</p>
<p>&lt;link rel="stylesheet" href="/styles/blabla.css" type="text/css" /&gt;</p>
<p>&lt;meta http-equiv="content-type" content="text/html; charset=UTF-8" /&gt;</p>
</div>
<h2>XHTML 区分大小写</h2>
<p>HTML 不区分大小写，但是 XHTML 是区分大小写的。</p>
<p>XHTML 的所有<strong>标记</strong>和<strong>属性</strong>都要<strong><em>小</em></strong>写。</p>
<p>比如：</p>
<div>
<p>&lt;IMG SRC = "/images/adpics/1/b027.jpg" Alt = "blabla" /&gt;</p>
</div>
<p>应该写成：</p>
<div>
<p>&lt;img src = "/images/adpics/1/b027.jpg" alt = "blabla" /&gt;</p>
</div>
<h2>XHTML 属性值要用双引号</h2>
<p>HTML 并不强制要求属性值加双引号。比如你可以写: </p>
<div>
<p>&lt;table cellspacing = 0&gt;</p>
<p>&lt;input checked&gt;</p>
</div>
<p>但在 XHTML 里，应该写成：</p>
<div>
<p>&lt;table cellspacing = "0"&gt;</p>
<p>&lt;input checked = "checked" /&gt;</p>
</div>
<h2>XHTML 用 id 属性代替 name 属性</h2>
<p>HTML 很多元素，比如 a，applet，frame，iframe，img 和 map，有 name 属性。在 XHTML 里是要废除的，而用 id 属性取而代之。</p>
<p>比如：</p>
<div>
<p>&lt;img src="blabla.gif" name="blabla logo" /&gt;</p>
</div>
<p>应该写成：</p>
<div>
<p>&lt;img src="blabla.gif" id="blabla logo" /&gt;</p>
</div>
<h2>XHTML 特殊字符的处理</h2>
<p>&amp; 应该在 XHTML 里应该写成 &amp;amp;。</p>
<p>比如：</p>
<div>
<p>You &amp; Me</p>
</div>
<p>应该写成：</p>
<div>
<p>You &amp;amp; Me</p>
</div>
<p>还有如果内嵌 Javascript 代码，在 XHTML 里则应该写成：</p>
<div>
<p>&lt;script type="text/javascript"&gt;//&lt;![CDATA[</p>
<p>...</p>
<p>//]]&gt;&lt;/script&gt;</p>
</div>
<h2>浏览器的角度</h2>
<p>以上是从协议标准的角度来看待这个问题的。如果从浏览器的角度来看待这个问题，情况就有所不同。</p>
<p>考虑一下，如果把 XHTML 写得很不严格，浏览器会怎么做？是不是会弹出一个对话框，写着&#8220;这个网站的开发人员技术不过关，写的不是正宗的 XHTML 文件，咱不显示&#8221;？显然，如果浏览器做成这个样子，倒贴钱也是不会有人用的。</p>
<p>从浏览器的角度看待上面几个不同，大致是下面的测试结果(IE和Firefox我都测试过)：</p>
<ul>
    <li>XHTML 要求正确嵌套：如果你没有嵌套，浏览器会试图帮你嵌套。</li>
    <li>XHTML 所有元素必须关闭：如果你没有关闭，浏览器会试图帮你关闭。</li>
    <li>XHTML 区分大小写：你非要写成大写，浏览器帮你转换成为小写。</li>
    <li>属性值要用双引号：你非要不肯加，浏览器帮你加。</li>
    <li>特殊字符的处理：You &amp; Me 也好，You &amp;amp; Me 也好，浏览器都能读入。</li>
    <li>用 id 属性代替 name 属性：你非要用 name 也可以。</li>
</ul>
<p>如果你在文档开始用 DocType 指定为 XHTML 了，有一点需要注意。在给 Tag 用 class 指定CSS 的时候，是区分大小写的。例如，你定义了一个CSS如下，</p>
<div>
<p>&lt;style&gt;<br />
.hello { ...... }<br />
&lt;/style&gt;<br />
</p>
</div>
<p>而你使用的时候写成，</p>
<div>
<p>&lt;p class="Hello"&gt; ......</p>
</div>
<p>那这个CSS是不会被使用的。要积极的看待这个问题，这让你可以用更多的名字来命名 Style，是一个好事。</p>
<h2>XHTML 标准的前途</h2>
<p>从
标准制定者的初衷看，制定 XHTML 标准是试图把 HTML 规范成为严格的 XML 格式，这样无可避免的会导致一个结果，就是从 HTML 到
XHTML 的升级导致标准的容错能力降低了。把自己的网页源文件写得严格一点当然是好事，但是一个标准不可能去要求浏览器降低自己的容错能力。</p>
<p>XHTML
1.0 标准是兼容 HTML
4.01，是个不错的协议，可以让开发者在编写代码的同时通过一些工具来检查代码的合法性，虽然对于用户而言，制作出来的网页和 HTML 4.01
相比实在没有什么不同。对于你写新的网页来说，使用 XHTML 1.0 还是一个不错的选择。</p>
<p>XHTML 1.1
标准要求浏览器不再支持原先的容错能力，这是一个标准制定者走火入魔的典型例子，这个标准从学术上说非常纯净，但是对于浏览器而言，则是个呆板、笨拙、不
可理喻的标准。所以目前所有由人类开发的浏览器都没有遵照所谓纯净的 XHTML
1.1的标准，你的代码只要浏览器能读懂，他都会很好的显示出来，而不跳出弹框报错。</p>
<p>从发展的趋势来看，一个标准没有浏览器服从，等于是没有意义的标准。从浏览器的实现角度来看，新的协议只能在原来 HTML 的基础上扩大能力增加容错，而不能缩小了能力减少容错。所以新的协议中，只有扩大能力增加容错的部分会被采纳，而其他部分都仅仅是纸上谈兵而已。</p>
<address>&nbsp;</address>
<img src ="http://www.blogjava.net/sealyu/aggbug/307033.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2009-12-23 14:08 <a href="http://www.blogjava.net/sealyu/archive/2009/12/23/307033.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 专为Web开发者准备的 63个免费在线工具(转)</title><link>http://www.blogjava.net/sealyu/archive/2009/12/14/305833.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Mon, 14 Dec 2009 01:08:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2009/12/14/305833.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/305833.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2009/12/14/305833.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/305833.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/305833.html</trackback:ping><description><![CDATA[<div id="news_content">
<p>好的开发工具能节省不少时间和精力，以下是为Web开发/设计者们收集的63个非常实用的在线工具（点击图片可进入各自的官方页面）：</p>
<p>1.一个关于如何建立可扩展的Web代码编辑器，使用HTML 5技术。</p>
<p><a href="https://bespin.mozilla.com/"><img wp-image-260="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/bespin.jpg" alt="贝斯坪Mozilla实验室是一个关于如何建立一个可扩展的Web代码编辑器使用HTML 5技术试验。 " height="446" width="500" /></a></p>
<div id="attachment_260" class="wp-caption alignnone" style="width: 510px;">
<p>2.帮助您创建您的文字布局。<a href="http://www.blindtextgenerator.com/"><img wp-image-261="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/blindtextgenerator-500x342.jpg" alt="这个方便的工具可以帮助您创建您的所有文字布局的需要假。 " height="342" width="500" /></a></p>
</div>
<div id="attachment_261" class="wp-caption alignnone" style="width: 510px;">
<p>3.预览和测试，主流的浏览器和操作系统</p>
</div>
<div id="attachment_262" class="wp-caption alignnone" style="width: 510px;">
<a href="https://browserlab.adobe.com/index.html"><img wp-image-262="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/browserlab.jpg" alt="预览和测试的主要浏览器和操作系统您的网页-随需应变。 " height="500" width="500" /></a>
</div>
<div id="attachment_263" class="wp-caption alignnone" style="width: 510px;"><br />
</div>
<div alignnone="" style="width: 510px;">4.网页在不同浏览器的截图，这是一个免费的开源网络服务。</div>
<div alignnone="" style="width: 510px;"><a href="http://browsershots.org/"><img wp-image-263="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/browsershots.jpg" alt="Browsershots使不同的浏览器在您的网页设计截图。这是一个免费的开源网络服务，并创造约翰长罗乔利" height="415" width="500" /></a></div>
<div alignnone="" style="width: 510px;"><br />
</div>
<div id="attachment_263" class="wp-caption alignnone" style="width: 510px;">
<p>5.Carbonmade是一个免费在线的portfolio server服务</p>
</div>
<div id="attachment_264" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.carbonmade.com/"><img wp-image-264="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/Carbonmade.jpg" alt="Carbonmade是一个免费的网络不会受到干扰组合服务。 " height="286" width="500" /></a>
<p>6.一种图像缩放部件。</p>
</div>
<div id="attachment_265" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.closr.it/"><img wp-image-265="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/closr.jpg" alt="一种图像缩放部件。 " height="415" width="500" /></a>
</div>
<div alignnone="" style="width: 510px;"><br />
</div>
<div id="attachment_265" class="wp-caption alignnone" style="width: 510px;">
<p>7.帮助开发者快速的选择和测试网页上的颜色组合。</p>
</div>
<div id="attachment_266" class="wp-caption alignnone" style="width: 510px;">
<a href="http://colorcombos.com/"><img wp-image-266="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/colorcombos.jpg" alt="Colorcombos建网站，以帮助开发商快速选择和测试网页颜色组合。 " height="415" width="500" /></a>
<p>8.强悍的颜色选择工具</p>
</div>
<div id="attachment_267" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.colorotate.org/"><img wp-image-267="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/colorotate.jpg" alt="浏览调色板，或创建自己的。调整，组合和融合到你的心的内容。 " height="446" width="500" /></a>
<p>9.方便和易于使用的配色方案设计。</p>
</div>
<div id="attachment_268" class="wp-caption alignnone" style="width: 510px;">
<a href="http://colorschemedesigner.com/"><img wp-image-268="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/colorschemedesigner.jpg" alt="方便和易于使用的颜色方案设计。 " height="446" width="500" /></a>
<p>10.色彩趋势+调色板</p>
<p><a href="http://www.colourlovers.com/"><img wp-image-269="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/colourlovers-500x296.jpg" alt="COLOURlovers&quot;是一种资源的监测和影响色彩趋势。 " height="296" width="500" /></a></p>
</div>
<div id="attachment_269" class="wp-caption alignnone" style="width: 510px;">
<p>11.测试在多种浏览器和操作系统的上的外观和功能</p>
</div>
<div id="attachment_270" class="wp-caption alignnone" style="width: 510px;">
<a style="text-decoration: none;" href="http://crossbrowsertesting.com/"><img wp-image-270="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/crossbrowsertesting.jpg" alt="测试的外观和任何在多种浏览器和操作系统功能的网站。 " height="415" width="500" /></a>
<p>12.CSSFly是一个Web 2.0网站，实时网页在线编辑器</p>
</div>
<div id="attachment_271" class="wp-caption alignnone" style="width: 510px;">
<a href="http://cssfly.net/"><img wp-image-271="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/cssfly.jpg" alt="CSSFly是一个Web 2.0网站，方便编辑工具直接和实时浏览器中的时间。 " height="415" width="500" /></a>
<p>13.<em>CleanCSS</em>是一个免费的CSS精简压缩工具，通过这个在线工具，可以将你的CSS文件压缩、优化成更精简，这将大大提高你的网站的载入速度</p>
</div>
<div id="attachment_272" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.cleancss.com/"><img wp-image-272="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/csstidy-500x298.jpg" alt="CleanCSS是一个功能强大的CSS优化和格式化。基本上，它需要你的CSS代码，使其更清洁，更简洁。 " height="298" width="500" /></a>
<p>14.使用这个工具可以轻松地写出具备字体、文本颜色大小位置、字符间距、单词间距等属性的CSS样式</p>
</div>
<div id="attachment_273" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.csstypeset.com/"><img wp-image-273="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/csstypeset.jpg" alt="的CSS排版是一个在线的CSS文本发电机。 " height="446" width="500" /></a>
<p>15.Curdbee是一个免费的在线计费和投票系统</p>
</div>
<div id="attachment_274" class="wp-caption alignnone" style="width: 510px;">
<a href="http://curdbee.com/"><img wp-image-274="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/curdbee.jpg" alt="Curdbee是一个免费的在线计费和发票制度。 " height="245" width="500" /></a>
<p>16.<em>Dabbleboard</em> 是一个在线协作画图板服务。你可以通过其涂鸦，插入图片，设定字体颜色，添加箭头等等。</p>
</div>
<div id="attachment_275" class="wp-caption alignnone" style="width: 510px;">
<a href="http://dabbleboard.com/"><img wp-image-275="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/dabbleboard.jpg" alt="Dabbleboard是一个在线协作应用程序，对周围的白板中心。凭借绘图接口，实际上变得简单而有趣使用新型Dabbleboard失去了你的，只是让你画。 " height="446" width="500" /></a>
<p>17.你可以通过&nbsp;Domai.nr 这个聪明的网域名称搜寻引擎，可以告诉你某个域名是不是注册了。还可以轻松的组合出独特，完美的网址域名</p>
</div>
<div id="attachment_276" class="wp-caption alignnone" style="width: 510px;">
<a style="text-decoration: none;" href="http://domai.nr/"><img wp-image-276="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/domainr.jpg" alt="不论你是要短网址或有大事，Domainr帮助您探索所有。 " height="415" width="500" /></a>
<p>18.快速通过电子邮件分享网页</p>
</div>
<div id="attachment_277" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.emailtheweb.com/"><img wp-image-277="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/emailtheweb.jpg" alt="EmailTheWeb.com是唯一的基于网络的服务，让您以电子邮件任何网页的任何一个。 " height="415" width="500" /></a>
<p>19.EmbEdit ，嵌入式开发代码编辑器</p>
</div>
<div id="attachment_278" class="wp-caption alignnone" style="width: 510px;">
<a href="http://embedit.in/"><img wp-image-278="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/embedit.jpg" alt="Embedit可以使您的网站的文件的无缝嵌入。 " height="415" width="500" /></a>
<p>20.这是一个在线的 HTML 实体查询工具。该工具根据 W3C 所列出的 HTML 实体来进行查询，你可以将查询的结果复制到剪贴板中以作它用</p>
</div>
<div id="attachment_279" class="wp-caption alignnone" style="width: 510px;">
<a href="http://leftlogic.com/lounge/articles/entity-lookup/"><img wp-image-279="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/entity-lookup.jpg" alt="This lookup allows you to quickly find the entity based on how it looks, e.g. like an &lt; or the letter c." height="415" width="500" /></a>
<p>21.feevy ，只需要一个简单的HTML标签即可在网站中显示来自其他博客的内容</p>
</div>
<div id="attachment_280" class="wp-caption alignnone" style="width: 510px;">
<a href="http://feevy.com/"><img wp-image-280="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/feevy.jpg" alt="display content from other blogs at your website with just one simple html tag" height="415" width="500" /></a>
<p>22.fivesecondtest ，一个简单的在线可用性测试，帮助你确定用户界面最突出的元素</p>
</div>
<div id="attachment_281" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.fivesecondtest.com/"><img wp-image-281="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/fivesecondtest.jpg" alt="Five second tests help you easily identify the most prominent elements of your user interfaces." height="415" width="500" /></a>
<p>23.<em>Font Burner</em>是免费在线工具，可以搜多超过1000种字体。</p>
</div>
<div id="attachment_282" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.fontburner.com/"><img wp-image-282="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/fontburner.jpg" alt="Font Burner is a website enhancement tool that makes it easy for you to add new fonts to your website." height="415" width="500" /></a>
<p>24.fontstruct，可以允许你创建，下载并分享自定义的字体</p>
</div>
<div id="attachment_283" class="wp-caption alignnone" style="width: 510px;">
<a href="http://fontstruct.fontshop.com/"><img wp-image-283="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/fontstruct.jpg" alt="Fontstruct allows you to build, download and share custom fonts." height="446" width="500" /></a>
<p>25.Gazup! -同时将档案上传到九个免费空间，支持FTP，还能赚美金！</p>
</div>
<div id="attachment_284" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.gazup.com/"><img wp-image-284="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/gazup.jpg" alt="Gazup! is the leading website for social file mirroring online. By using Gazup!, you'll be able to upload files to multiple file hosts in one go thus saving you time and bandwidth." height="415" width="500" /></a>
<p>26.<span style="background-color: #ffffff;" title="This is online image converter website for free.">这是一个免费在线的图像转换网站，</span><span style="background-color: #ffffff;" title="It supports over 100 major image formats.">支持超过100个主要的图像格式。</span></p>
</div>
<div id="attachment_285" class="wp-caption alignnone" style="width: 510px;">
<a href="http://go2convert.com/"><img wp-image-285="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/go2convert.jpg" alt="This is online image converter website for free. It supports over 100 major image formats." height="415" width="500" /></a>
<p>27.一种分析工具和一般的在线流量分析软件</p>
</div>
<div id="attachment_286" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.google.com/analytics/"><img wp-image-286="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/google-analytics-500x159.png" alt="Google Analytics is the enterprise-class web analytics solution that gives you rich insights into your website traffic and marketing effectiveness." height="159" width="500" /></a>
<p>28.HTML-ipsum生成虚拟的HTML代码来演示各种功能，包括：list和table</p>
</div>
<div id="attachment_287" class="wp-caption alignnone" style="width: 510px;">
<a href="http://html-ipsum.com/"><img wp-image-287="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/html-ipsum.jpg" alt="HTML-ipsum generates dummy HTML code to demonstrate various features, including lists and tables." height="415" width="500" /></a>
<p>29.<em>Iconfinder</em> 就是一个专注于图标的搜索引擎，通过它你可以快速找到你所需要的图标。</p>
</div>
<div id="attachment_288" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.iconfinder.net/"><img wp-image-288="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/iconfinder-500x295.jpg" alt="IconFinder allows you to search through 115,827 icons or browse 276 icon sets." height="295" width="500" /></a>
<p>30.<em>Iconza 是</em>一个提供精致图标资源的网站，而且它完全免费</p>
</div>
<div id="attachment_289" class="wp-caption alignnone" style="width: 510px;">
<a href="http://iconza.com/"><img wp-image-289="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/iconza.jpg" alt="Iconza is a collection of free icons that can be colored and reduced in size to your taste." height="415" width="500" /></a>
<p>31.iPlotz是一款可以模拟网页导航，链接和应用程序界面的设计工具。它可以作为设计师在团队中的协同和项目管理工具。</p>
</div>
<div id="attachment_290" class="wp-caption alignnone" style="width: 510px;">
<a href="http://iplotz.com/"><img wp-image-290="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/iPlotz.jpg" alt="iPlotz allows you to rapidly create clickable, navigable mockups and wireframes for prototyping websites and software applications." height="230" width="500" /></a>
<p>32.<em>JsUnit是</em>JavaScript的开源单元测试框架。它受到JUnit的启发，并完全用JavaScript编写。</p>
</div>
<div id="attachment_291" class="wp-caption alignnone" style="width: 510px;">
<a href="http://jsunit.net/"><img wp-image-291="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/jsunit.jpg" alt="JsUnit is a Unit Testing framework for client-side (in-browser) JavaScript." height="415" width="500" /></a>
<p>33.<em>Kuler 是</em>Adobe 利用网友提供的配色方案做出的一个AIR 工具，用于汇总配色方案。</p>
</div>
<div id="attachment_292" class="wp-caption alignnone" style="width: 510px;">
<a href="http://kuler.adobe.com/"><img wp-image-292="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/kuler.jpg" alt="Kuler is a web-hosted application for generating color themes that can inspire any project. " height="446" width="500" /></a>
<p>34.Load Impact是一个网站页面载入测试工具。     只需要输入网址进行测试，其便可以统计出加载网站的一些详细载入数据。包括整体加载和站内图片，javascript, CSS等代码载入</p>
</div>
<div id="attachment_293" class="wp-caption alignnone" style="width: 510px;">
<a href="http://loadimpact.com/"><img wp-image-293="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/loadimpact.jpg" alt="Load Impact is an online load testing service that lets you load test your website with just a few mouse clicks." height="415" width="500" /></a>
<p>35.Lorem Ipsum是打印排版工业的无意义文本</p>
</div>
<div id="attachment_294" class="wp-caption alignnone" style="width: 509px;">
<a href="http://www.lipsum.com/"><img wp-image-294="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/lorem-499x290.jpg" alt="Lorem Ipsum is simply dummy text of the printing and typesetting industry." height="290" width="499" /></a>
<p>36.myFontbook<em>是</em>一款在线的字体管理与搜索工具，你可以像本地的字体管理软件一样使用它，并且还能整合字体资源，帮助你检索到你没有的字体。</p>
</div>
<div id="attachment_295" class="wp-caption alignnone" style="width: 510px;">
<a href="http://myfontbook.com/"><img wp-image-295="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/myfontbook-500x328.jpg" alt="myFontbook is a free and easy way to browse your font collection." height="328" width="500" /></a>
<p>37.net2ftp 是一个简单，开源，基于Web的FTP客户端。</p>
</div>
<div id="attachment_296" class="wp-caption alignnone" style="width: 510px;">
<a href="http://net2ftp.com/"><img wp-image-296="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/net2ftp.jpg" alt="net2ftp is an easy to use web based FTP client." height="446" width="500" /></a>
<p>38.Photoshop.com是一个在线的图片编辑器和分享站点</p>
</div>
<div id="attachment_297" class="wp-caption alignnone" style="width: 510px;">
<a href="https://www.photoshop.com/"><img wp-image-297="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/online-photoshop.jpg" alt="Photoshop.com is an online photo editing and sharing site." height="200" width="500" /></a>
<p>39.在线表单制作工具</p>
</div>
<div id="attachment_298" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.phpform.org/"><img wp-image-298="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/pform-500x259.jpg" alt="pForm allows you to create a simple HTML form in a matter of seconds." height="259" width="500" /></a>
<p>40.phpanywhere是一个免费的基于Web的PHP IDE（集成开发环境），它能够让PHP程序员在线编辑PHP代码，而不需要软件工具。</p>
</div>
<div id="attachment_299" class="wp-caption alignnone" style="width: 510px;">
<a href="http://phpanywhere.net/"><img wp-image-299="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/phpanywhere.jpg" alt="PHPAnywhere is an online PHP editor that allows you to edit PHP code from anywhere." height="360" width="500" /></a>
<p>41.picmarkr&nbsp;它可以让你添加自定义水印（图片或文字）到你的图片上面</p>
</div>
<div id="attachment_300" class="wp-caption alignnone" style="width: 510px;">
<a href="http://picmarkr.com/"><img wp-image-300="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/picmarker.jpg" alt="PicMarkr lets you to add custom watermark (image or text) to your images online and free.  It is useful when you need to protect your copyrights or if you want to add commentsto your photos. " height="415" width="500" /></a>
<p>42.在线图片编辑工具，拥有出色的UI设计、良好的用户体验以及强大的图像编辑</p>
</div>
<div id="attachment_301" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.picnik.com/"><img wp-image-301="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/picnik.jpg" alt="Picnik makes your photos fabulous with easy to use yet powerful editing tools." height="415" width="500" /></a>
<p>43.pict是一个免费的图片空间,你只需要点击选择你计算机上的文件,然后上传到pict就可以将您计算机上的图片文件存储在网络上</p>
</div>
<div id="attachment_302" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.pict.com/"><img wp-image-302="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/pict-500x234.png" alt="Pict is a free and easy to use online image hoster." height="234" width="500" /></a>
</div>
<div alignnone="" style="width: 510px;"><br />
</div>
<div id="attachment_302" class="wp-caption alignnone" style="width: 510px;">
<p>44.pingdom ，对网页进行实时检测的工具</p>
</div>
<div id="attachment_303" class="wp-caption alignnone" style="width: 510px;">
<a href="http://tools.pingdom.com/"><img wp-image-303="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/pingdom.jpg" alt="Pingdom allows you to monitor your site's uptime and responsiveness." height="446" width="500" /></a>
</div>
<div alignnone="" style="width: 510px;"><br />
</div>
<div id="attachment_303" class="wp-caption alignnone" style="width: 510px;">
<p>45.<em>Pixlr是</em>一款强大免费在线图片处理工具，界面和Photoshop非常像，基于flash制作，无需下载安装</p>
</div>
<div id="attachment_304" class="wp-caption alignnone" style="width: 510px;">
<a style="text-decoration: none;" href="http://pixlr.com/"><img wp-image-304="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/pixlr.jpg" alt="Pixlr lets you quickly edit your photos and do quick fixes without any hassle." height="500" width="500" /></a>
</div>
<div id="attachment_304" class="wp-caption alignnone" style="width: 510px;">
<p>46. posterous，使用email在线发布一些消息，一种间于传统博客和一句话博客之间的个人发布媒体。</p>
</div>
<div id="attachment_305" class="wp-caption alignnone" style="width: 510px;">
<a href="http://posterous.com/"><img wp-image-305="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/Posterous.jpg" alt="Posterous lets you post things online fast using email. You email us at post@posterous.com and we reply instantly with your new posterous blog. " height="286" width="500" /></a>
<p>47.一个美化代码的网站，支持PHP，Java，C++，C，perl，JavaScript，CSS&#8230;</p>
</div>
<div id="attachment_306" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.prettyprinter.de/"><img wp-image-306="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/prettyprinter-500x223.jpg" alt="This is a source code beautifier (source code formatter), similiar to indent." height="223" width="500" /></a>
<p>48.px&nbsp;换算为&nbsp;em&nbsp;</p>
</div>
<div id="attachment_307" class="wp-caption alignnone" style="width: 510px;">
<a href="http://pxtoem.com/"><img wp-image-307="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/pxtoem.jpg" alt="PX to EM conversion made simple." height="415" width="500" /></a>
<p>49.ShowDocument是一个提供强大的在线分享及协作服务的网站，通过ShowDocument你不仅可以分享文档，协作白板，协作文档编辑，还可以分享同时浏览网页进行分享。</p>
</div>
<div id="attachment_308" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.showdocument.com/"><img wp-image-308="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/showdocument.jpg" alt="Show Document is a Net Meeting platform for instantaneous and spontaneous online meetings where people can work together on the same document at the same time. " height="415" width="500" /></a>
<p>50.sikbox，专用于定制个人的博客搜索服务。制作SikBox Widget的过程十分的简单，用户只需要键入自己博客的URL，即可获取一段Javascript代码，嵌入自己的博客的适当位置即可拥有这款很炫、有着Ajax良好用户体验的私用博客搜索引擎</p>
</div>
<div id="attachment_309" class="wp-caption alignnone" style="width: 510px;">
<a href="http://sikbox.com/"><img wp-image-309="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/sikbox.jpg" alt="Sikbox allows you to easily get code for a live search on your site." height="415" width="500" /></a>
<p>51.在线编辑和图片管理工具</p>
</div>
<div id="attachment_310" class="wp-caption alignnone" style="width: 510px;">
<a href="http://splashup.com/"><img wp-image-310="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/splashup.jpg" alt="Splashup, formerly Fauxto, is a powerful editing tool and photo manager." height="415" width="500" /></a>
<p>52.templatr，在线制作wordpress主题可视化制作程序，&nbsp;不需要下载任何程序</p>
</div>
<div id="attachment_311" class="wp-caption alignnone" style="width: 510px;">
<a href="http://templatr.cc/"><img wp-image-311="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/templatr.jpg" alt="Templatr allows you to quickly generate rough and dirty web templates." height="446" width="500" /></a>
<p>53.test
everything！你可以检验CSS/HTML是否符合标准，检测SEO效果、查看你的站点在一些社会性服务的热门度、查看网站所在服务器的相关信
息。除此之外，TestEverything还提供了一些简单但实用的文字、图像处理工具，它甚至还提供了代理服务和其他一些五花八门的有趣服务</p>
</div>
<div id="attachment_312" class="wp-caption alignnone" style="width: 510px;">
<a href="http://tester.jonasjohn.de/"><img wp-image-312="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/testeverything.jpg" alt="TestEverything allows you to do just that...test your site with a variety of tools, all in one." height="415" width="500" /></a>
<p>54.Tynt
Tracer是一个提供网站第三方统计服务的网站，不过其统计的内容不是侧重于访问数或者访问来源，而是用户对于网页上面Copy的内容，你可以通过统计
后台实时查看你的网页上面哪些内容被Copy了，被Copy的频率等等，从而可以了解浏览者对网页上的哪些内容比较感兴趣。</p>
</div>
<div id="attachment_313" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.tynt.com/"><img wp-image-313="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/tynt.jpg" alt="Tynt Insight tracks whats being copied off your site and automatically adds a link back to your content with every paste.  " height="700" width="500" /></a>
<p>55. typechart，快速浏览，比较各种不同的文字排版样式</p>
</div>
<div id="attachment_314" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.typechart.com/"><img wp-image-314="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/typechart.jpg" alt="Typechart lets you flip through, preview and compare web typography while retrieving the CSS." height="415" width="500" /></a>
<p>56.typetester，一个在线字体比较工具，帮你快速找出最适合这个网页风格的字体</p>
</div>
<div id="attachment_315" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.typetester.org/"><img wp-image-315="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/typetester.jpg" alt="The Typetester is an online application for comparison of the fonts for the screen. " height="500" width="500" /></a>
<p>57.verb，一个用户的任务管理和共享应用</p>
</div>
<div id="attachment_316" class="wp-caption alignnone" style="width: 510px;">
<a href="http://verbapp.com/"><img wp-image-316="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/Verb.jpg" alt="Verb is a user focused task management and sharing application." height="427" width="500" /></a>
<p>Verb is a user focused task management and sharing application.</p>
<p>58.<em>ViewLikeUs是</em>一个不错的工具来检查网站在不同分辨率下的显示状况</p>
</div>
<div id="attachment_317" class="wp-caption alignnone" style="width: 510px;">
<a href="http://viewlike.us/"><img wp-image-317="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/viewlikeus.jpg" alt="ViewLikeUs allows you to view your site in various resolutions." height="446" width="500" /></a>
<p>59.可以<span style="font-family: Arial;">查看网站的标记并显示错误信息</span></p>
</div>
<div id="attachment_318" class="wp-caption alignnone" style="width: 510px;">
<a href="http://validator.w3.org/"><img wp-image-318="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/w3c.jpg" alt="The w3c validator allows you to valide your markup to ensure properly formed code." height="446" width="500" /></a>
<p>60.Web Form Factory是一个开源的网络表单生成器，可自动生成所需的后端代码，以配合您的表单到数据库。可以提取html文件的数据库表单，并导入到PHP数据库</p>
</div>
<div id="attachment_319" class="wp-caption alignnone" style="width: 510px;">
<a href="http://www.webformfactory.com/"><img wp-image-319="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/webformfactory.jpg" alt="Web Form Factory is an open source web form generator which automatically generates the necessary backend code to tie your form to a database." height="415" width="500" /></a>
<p>61.myfonts，免费在线分析图片中的字体</p>
</div>
<div id="attachment_320" class="wp-caption alignnone" style="width: 510px;">
<a href="http://new.myfonts.com/WhatTheFont/"><img wp-image-320="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/whatthefont.jpg" alt="WhatTheFont is a font identification tool that identifies fonts based upon uploaded images." height="446" width="500" /></a>
<p>62.xencode，一个致力于把软件Web化的团队。他们开发的绿色浏览器，对于网站前台开发者来说很有用，<span style="font-family: Arial;">可以同时虚拟所有的常用浏览器，而且无需安装软件</span></p>
</div>
<div id="attachment_321" class="wp-caption alignnone" style="width: 510px;">
<a href="http://spoon.net/browsers/"><img wp-image-321="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/xenocode-500x320.jpg" alt="Xenocode, now BrowserSandbox allows you to package your applications in standalone virtual executables that run instantly on any desktop. " height="320" width="500" /></a>
<p>63.新的网站监测工具，可让您监测网站的正常运行时间，每当网站复发访问的时候，它都会即时的通过电子邮件或短信通知您。它可以从不同位置监控您的网站，并提供正常运行时间的历史报告。此外，地图网站的响应时间每月负载时间图表。</p>
</div>
<div id="attachment_259" class="wp-caption alignnone" style="width: 510px;">
<a href="http://247webmonitoring.com/"><img wp-image-259="" title="63 of the Best Free Online Tools for Designers and Developers" src="http://creativefan.com/files/2009/10/247webmonitoring.jpg" alt="We will monitor your website 24X7 from our servers and notify you whenever your site goes down, so that you can quickly address the issue and keep your customers happy!" height="415" width="500" /></a>
</div>
</div>
<img src ="http://www.blogjava.net/sealyu/aggbug/305833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2009-12-14 09:08 <a href="http://www.blogjava.net/sealyu/archive/2009/12/14/305833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>35个国内顶级B2C站点的“加入购物车”按钮（转）</title><link>http://www.blogjava.net/sealyu/archive/2009/10/28/300111.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Wed, 28 Oct 2009 13:47:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2009/10/28/300111.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/300111.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2009/10/28/300111.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/300111.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/300111.html</trackback:ping><description><![CDATA[<p>这里的收集不包括淘宝商城，拍拍等平台型的B2C。之所以只收集了35个，一是我知道的B2C不多，再是有些站实在是没法看。</p>
<p>比如：某站，同时有&#8220;<strong>加入购物车、立即购买、加入暂存盘</strong>&#8221;等按钮，作为一个网购菜鸟，&#8220;加入购物车&#8221;这个名词已经让我很费解了，再来一个&#8220;加入暂存盘&#8221;，什么意思？</p>
<table style="width: 500px; height: 647px;" border="0">
    <tbody>
        <tr>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/a.gif" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/b.gif" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/c.gif" /></td>
        </tr>
        <tr>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/d.gif" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/e.gif" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/f.gif" /></td>
        </tr>
        <tr>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/g.gif" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/h.gif" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/i.gif" /></td>
        </tr>
        <tr>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/j.gif" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/k.gif" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/l.gif" /></td>
        </tr>
        <tr>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/m.gif" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/n.gif" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/o.gif" /></td>
        </tr>
        <tr>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/p.gif" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/q.gif" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/r.gif" /></td>
        </tr>
        <tr>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/s.gif" height="30" width="249" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/t.gif" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/1.png" /></td>
        </tr>
        <tr>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/10.png" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/4.png" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/3.png" /></td>
        </tr>
        <tr>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/7.png" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/6.png" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/5.png" /></td>
        </tr>
        <tr>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/8.png" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/9.png" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/2.png" /></td>
        </tr>
        <tr>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/11.png" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/1.jpg" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/2.jpg" /></td>
        </tr>
        <tr>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/3.jpg" /></td>
            <td><img alt="" src="http://icerat.cn/wp-content/uploads/2009/09/tc/4.jpg" /></td>
        </tr>
    </tbody>
</table>
<p><strong>以下是洒家的发现：</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1）我查看的35个站点中（都是国内做得最好的），有大概1/4的站点同时有&#8220;<strong>立即购买</strong>&#8221;和&#8220;<strong>加入购物车</strong>&#8221;2个按钮。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;评论： 我个人认为这些站完全是抄袭淘宝这种业界的泰斗和先行者。淘宝最初也只有&#8220;<strong>立即购买</strong>&#8221;按钮，后来又加上了&#8220;<strong>加入购物车</strong>&#8221;按钮。淘宝作为一个平台型的C2C或B2C，有自己的特殊情况，比如：<span style="color: #ff0000;">同时购买不同商家商品时购物车可以起到合并订单的作用，不需要买家重复操作相似的步骤；再比如淘宝上的很多产品可以砍价杀价，而一般的B2C价格已然定死，基本不需要询问即可立即购买。</span></p>
<p><span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000;"> 2）</span><span style="color: #000000;">有一半左右的站点使用的是&#8220;购买&#8221;、&#8220;立即购买&#8221;按钮。</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 评论：<strong>这些按钮其实跟&#8220;加入购物车&#8221;功能是一样的，只是称呼不一样</strong>。（有个别站点&#8220;立即购买&#8221;即跳入了登录或者注册页面，这种做法相当的失败）尽管功能一样，但洒家还是认同这个观点：&#8220;加入购物车&#8221;比&#8220;立即购买&#8221;好，&#8220;立即购买&#8221;几个字对菜鸟型网购者压力很大。</span></span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3）部分站点&#8220;立即购买&#8221;或&#8220;加入购物车&#8221;按钮藏得很隐蔽或非常小气，我们看第10行第3排。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 评论：搞这么小明显是不想让人买。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4) 点击&#8220;立即购买&#8221;或&#8220;加入购物车&#8221;后一般会出来&#8220;继续购物&#8221;和&#8220;去结算&#8221;2个链接。而&#8220;继续购物&#8221;按钮一般是链接至首页或者当前的产品页。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 评论：能想得<a tip="" target="_blank" href="http://www.drsfostersmith.com/"><font color="#3b5a4a">这么周到</font></a>的站点国内几乎没有。</p>
<p><img size-full="" wp-image-615="" title="继续购物" alt="继续购物" src="http://icerat.cn/wp-content/uploads/2009/09/11.PNG" height="251" width="597" /></p>
<p>打包下载：</p>
<p><a tip="" target="_blank" href="http://www.vvwww.com/upload/2009/10/35%E4%B8%AA%E5%9B%BD%E5%86%85%E9%A1%B6%E7%BA%A7B2C%E7%AB%99%E7%82%B9%E7%9A%84%E2%80%9C%E5%8A%A0%E5%85%A5%E8%B4%AD%E7%89%A9%E8%BD%A6%E2%80%9D%E6%8C%89%E9%92%AE-%E6%9D%AD%E5%B7%9E%E6%8C%A8%E8%B8%A2%E6%B0%91%E5%B7%A5_files.rar">35个国内顶级B2C站点的&#8220;加入购物车&#8221;按钮.rar</a></p>
<img src ="http://www.blogjava.net/sealyu/aggbug/300111.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2009-10-28 21:47 <a href="http://www.blogjava.net/sealyu/archive/2009/10/28/300111.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网上购物车数据库设计（转）</title><link>http://www.blogjava.net/sealyu/archive/2009/10/27/299976.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Tue, 27 Oct 2009 13:11:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2009/10/27/299976.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/299976.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2009/10/27/299976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/299976.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/299976.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">一、</span><span style="font-size: 12pt; font-family: 宋体;">概述</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">网上购物店的数据模型，它主要模式有产品：</span><span style="font-family: TimesNewRoman;">product </span><span style="font-family: 宋体;">，帐户：</span><span style="font-family: TimesNewRoman;">Account</span><span style="font-family: 宋体;">，</span><span style="font-family: 宋体;">定单：</span><span style="font-family: TimesNewRoman;">Order</span><span style="font-family: 宋体;">。和产品相关的表有</span><span style="font-family: TimesNewRoman;">category </span><span style="font-family: 宋体;">，</span><span style="font-family: TimesNewRoman;">product,item, inventory, supplier</span><span style="font-family: 宋体;">；和</span><span style="font-family: 宋体;">用户相关表有的</span><span style="font-family: TimesNewRoman;">account </span><span style="font-family: 宋体;">，</span><span style="font-family: TimesNewRoman;">signon </span><span style="font-family: 宋体;">，</span><span style="font-family: TimesNewRoman;">profile</span><span style="font-family: 宋体;">；</span><span style="font-family: 宋体;">和定单相关的表有</span><span style="font-family: TimesNewRoman;">orders,orderstatus,lineitem </span><span style="font-family: 宋体;">，他们之间的整体关系如下</span><span style="font-family: TimesNewRoman;">.</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: center;" align="center">ERD<span style="font-family: 宋体;">图</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: center;" align="center">FK:Foreign Key</p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 12pt; font-family: 宋体;">二、帐户模型</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">帐户模型，记录者用户的登录名称，密码。以及个人信息如地址，性名，电话等，还有它在系统中的</span><span style="font-family: TimesNewRoman;">profile</span><span style="font-family: 宋体;">信息。表有</span><span style="font-family: TimesNewRoman;">Account </span><span style="font-family: 宋体;">主键是</span><span style="font-family: TimesNewRoman;">userID,</span><span style="font-family: 宋体;">它记录用户的基本信息，如</span><span style="font-family: TimesNewRoman;">email,name</span><span style="font-family: 宋体;">等。</span><span style="font-family: TimesNewRoman;">Signon </span><span style="font-family: 宋体;">表记录者</span><span style="font-family: TimesNewRoman;">userID</span><span style="font-family: 宋体;">和</span><span style="font-family: TimesNewRoman;">password</span><span style="font-family: 宋体;">，</span><span style="font-family: TimesNewRoman;">Profile</span><span style="font-family: 宋体;">表记录者用户的登录系统的系统设置。可以根据用户的类型，显示不同的登录信息。</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">（</span><span style="font-size: 12pt; font-family: TimesNewRoman;">1</span><span style="font-size: 12pt; font-family: 宋体;">）</span><span style="font-size: 12pt; font-family: TimesNewRoman;">account</span><span style="font-size: 12pt; font-family: 宋体;">表</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">create table account (</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">userid varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">email varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">name varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">status char(2) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">addr1 varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">addr2 varchar(40) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">city varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">state varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">zip varchar(20) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">country varchar(20) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">phone varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint pk_account primary key (userid)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">说明：</span><span style="font-family: TimesNewRoman;">primary key</span><span style="font-family: 宋体;">是</span><span style="font-family: TimesNewRoman;">userID,</span><span style="font-family: 宋体;">它记录帐户的基本信息。</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">（</span><span style="font-size: 12pt; font-family: TimesNewRoman;">2</span><span style="font-size: 12pt; font-family: 宋体;">）</span><span style="font-size: 12pt; font-family: TimesNewRoman;">Signon </span><span style="font-size: 12pt; font-family: 宋体;">表</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">create table signon (</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">username varchar(25) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">password varchar(25) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint pk_signon primary key (username)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">说明：记录登录名和密码。</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">（</span><span style="font-size: 12pt; font-family: TimesNewRoman;">3</span><span style="font-size: 12pt; font-family: 宋体;">）</span><span style="font-size: 12pt; font-family: TimesNewRoman;">Profile</span><span style="font-size: 12pt; font-family: 宋体;">表</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">create table profile (</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">userid varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">langpref varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">favcategory varchar(30),</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">mylistopt int,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">banneropt int,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint pk_profile primary key (userid)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">说明：用户的登录信息，方便个性化定制。</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">（</span><span style="font-size: 12pt; font-family: TimesNewRoman;">4</span><span style="font-size: 12pt; font-family: 宋体;">）</span><span style="font-size: 12pt; font-family: TimesNewRoman;">Bannerdata </span><span style="font-size: 12pt; font-family: 宋体;">表</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">create table bannerdata (</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">favcategory varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">bannername varchar(255) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint pk_bannerdata primary key (favcategory)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">说明：记录不同的登录信息。</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">三、产品模型</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">产品的模型主要有分类，它是产品的大类。表</span><span style="font-family: TimesNewRoman;">category </span><span style="font-family: 宋体;">就是记录分类名称，描述信息。</span><span style="font-family: TimesNewRoman;">Product</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">记录每个产品的基本信息，包括产品名称，和产品的描述。它是一对多的关系。</span><span style="font-family: TimesNewRoman;">Supplier </span><span style="font-family: 宋体;">表</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">记录产品的提供者信息，包括提供者的名称，地址，状态等。</span><span style="font-family: TimesNewRoman;">Item </span><span style="font-family: 宋体;">记录产品的提供者，产</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">品</span><span style="font-family: TimesNewRoman;">ID,</span><span style="font-family: 宋体;">价格，状态。</span><span style="font-family: TimesNewRoman;">Inventory </span><span style="font-family: 宋体;">表记录产品的数量。关系如下：</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">（</span><span style="font-size: 12pt; font-family: TimesNewRoman;">1</span><span style="font-size: 12pt; font-family: 宋体;">）</span><span style="font-size: 12pt; font-family: TimesNewRoman;"> category</span><span style="font-size: 12pt; font-family: 宋体;">表</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">create table category (</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">catid char(10) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">name varchar(80) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">descn varchar(255) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint pk_category primary key (catid)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">（</span><span style="font-size: 12pt; font-family: TimesNewRoman;">2</span><span style="font-size: 12pt; font-family: 宋体;">）</span><span style="font-size: 12pt; font-family: TimesNewRoman;">product</span><span style="font-size: 12pt; font-family: 宋体;">表</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">create table product (</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">productid char(10) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">category char(10) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">name varchar(80) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">descn varchar(255) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint pk_product primary key (productid),</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint fk_product_1 foreign key (category)</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">references category (catid)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">（</span><span style="font-size: 12pt; font-family: TimesNewRoman;">3</span><span style="font-size: 12pt; font-family: 宋体;">）</span><span style="font-size: 12pt; font-family: TimesNewRoman;"> item</span><span style="font-size: 12pt; font-family: 宋体;">表</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">create table item (</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">itemid char(10) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">productid char(10) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">listprice decimal(10,2) null,.unitcost decimal(10,2) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">supplier int null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">status char(2) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">attr1 varchar(80) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">attr2 varchar(80) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">attr3 varchar(80) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">attr4 varchar(80) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">attr5 varchar(80) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint pk_item primary key (itemid),</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint fk_item_1 foreign key (productid)</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">references product (productid),</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint fk_item_2 foreign key (supplier)</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">references supplier (suppid)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">（</span><span style="font-size: 12pt; font-family: TimesNewRoman;">4</span><span style="font-size: 12pt; font-family: 宋体;">）</span><span style="font-size: 12pt; font-family: TimesNewRoman;"> inventory </span><span style="font-size: 12pt; font-family: 宋体;">表</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">create table inventory (</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">itemid char(10) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">qty int not null</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">（</span><span style="font-size: 12pt; font-family: TimesNewRoman;">5</span><span style="font-size: 12pt; font-family: 宋体;">）</span><span style="font-size: 12pt; font-family: TimesNewRoman;">supplier</span><span style="font-size: 12pt; font-family: 宋体;">表</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">create table inventory (</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">suppid int&nbsp;not null</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">name&nbsp;varchar(80) </span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">status &nbsp;char(2) </span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">attr1 &nbsp;&nbsp;varchar(80)</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">attr2 &nbsp;&nbsp;varchar(80)</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">city &nbsp;&nbsp;&nbsp;varchar(80)</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">state &nbsp;&nbsp;varchar(80)</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">zip&nbsp;&nbsp;&nbsp;&nbsp;char(6)</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">phone &nbsp;&nbsp;varchar(80)</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint pk_supplier primary key (suppid),</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">四、定单模型</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">定单记录用户的选择产品信息，数量，表主要有</span><span style="font-family: TimesNewRoman;">Orders,</span><span style="font-family: 宋体;">记录用户的地址，帐户信息，总金</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">额。</span><span style="font-family: TimesNewRoman;">Orderstatus </span><span style="font-family: 宋体;">记录定单状态。</span><span style="font-family: TimesNewRoman;">Lineitem </span><span style="font-family: 宋体;">记录定单中的产品数量，单位价格，产品</span><span style="font-family: TimesNewRoman;">ID</span><span style="font-family: 宋体;">。</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">（</span><span style="font-size: 12pt; font-family: TimesNewRoman;">1</span><span style="font-size: 12pt; font-family: 宋体;">）</span><span style="font-size: 12pt; font-family: TimesNewRoman;">orders</span><span style="font-size: 12pt; font-family: 宋体;">表</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">create table orders (</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">orderid int not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">userid varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">orderdate date not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">shipaddr1 varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">shipaddr2 varchar(80) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">shipcity varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">shipstate varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">shipzip varchar(20) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">shipcountry varchar(20) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">billaddr1 varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">billaddr2 varchar(80) null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">billcity varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">billstate varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">billzip varchar(20) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">billcountry varchar(20) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">courier varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">totalprice number(10,2) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">billtoname varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">shiptoname varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">creditcard varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">exprdate char(7) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">cardtype varchar(80) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">locale varchar(20) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint pk_orders primary key (orderid),</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint fk_orders_1 foreign key (userid)</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">references account (userid)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">定单的信息。</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">（</span><span style="font-size: 12pt; font-family: TimesNewRoman;">2</span><span style="font-size: 12pt; font-family: 宋体;">）</span><span style="font-size: 12pt; font-family: TimesNewRoman;">Orderstatus</span><span style="font-size: 12pt; font-family: 宋体;">表</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">create table orderstatus (</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">orderid int not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">linenum int not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">timestamp date not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">status char(2) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint pk_orderstatus primary key (orderid, linenum),</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint fk_orderstatus_1 foreign key (orderid)</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">references orders (orderid)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">)</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: 宋体;">定单中的产品状态</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">（</span><span style="font-size: 12pt; font-family: TimesNewRoman;">3</span><span style="font-size: 12pt; font-family: 宋体;">）</span><span style="font-size: 12pt; font-family: TimesNewRoman;">lineitem</span><span style="font-size: 12pt; font-family: 宋体;">表</span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">create table lineitem (</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">orderid int not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">linenum int not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">itemid char(10) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">quantity int not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">unitprice number(10,2) not null,</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint pk_lineitem primary key (orderid, linenum),</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">constraint fk_lineitem_1 foreign key (orderid)</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt; text-align: left;" align="left"><span style="font-family: TimesNewRoman;">references orders (orderid)</span></p>
<span style="font-family: TimesNewRoman;">)</span>
<img src ="http://www.blogjava.net/sealyu/aggbug/299976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2009-10-27 21:11 <a href="http://www.blogjava.net/sealyu/archive/2009/10/27/299976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Spring中使用tiles2</title><link>http://www.blogjava.net/sealyu/archive/2009/10/19/298846.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Mon, 19 Oct 2009 06:32:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2009/10/19/298846.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/298846.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2009/10/19/298846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/298846.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/298846.html</trackback:ping><description><![CDATA[<h1>Spring Tiles Integration</h1>
<p>In this example you will learn how to integrate Spring with Tiles 2. The directory structure of the example is shown below.</p>
<img src="http://www.vaannila.com/images/spring/spring-tiles-pic-1.gif"  alt="" />
<p>
Add the following library files to the lib directory.
</p>
<div id="highlighter_61452">
<div>
<div alt1=""><code>01.</code><span style="margin-left: 0px ! important;"><code>antlr-runtime-3.0</code></span></div>
<div alt2=""><code>02.</code><span style="margin-left: 0px ! important;"><code>commons-logging-1.0.4</code></span></div>
<div alt1=""><code>03.</code><span style="margin-left: 0px ! important;"><code>org.springframework.asm-3.0.0.M3</code></span></div>
<div alt2=""><code>04.</code><span style="margin-left: 0px ! important;"><code>org.springframework.beans-3.0.0.M3</code></span></div>
<div alt1=""><code>05.</code><span style="margin-left: 0px ! important;"><code>org.springframework.context-3.0.0.M3</code></span></div>
<div alt2=""><code>06.</code><span style="margin-left: 0px ! important;"><code>org.springframework.context.support-3.0.0.M3</code></span></div>
<div alt1=""><code>07.</code><span style="margin-left: 0px ! important;"><code>org.springframework.core-3.0.0.M3</code></span></div>
<div alt2=""><code>08.</code><span style="margin-left: 0px ! important;"><code>org.springframework.expression-3.0.0.M3</code></span></div>
<div alt1=""><code>09.</code><span style="margin-left: 0px ! important;"><code>org.springframework.web-3.0.0.M3</code></span></div>
<div alt2=""><code>10.</code><span style="margin-left: 0px ! important;"><code>org.springframework.web.servlet-3.0.0.M3</code></span></div>
<div alt1=""><code>11.</code>&nbsp;</div>
<div alt2=""><code>12.</code><span style="margin-left: 0px ! important;"><code>commons-beanutils-1.7.0</code></span></div>
<div alt1=""><code>13.</code><span style="margin-left: 0px ! important;"><code>commons-digester-1.8</code></span></div>
<div alt2=""><code>14.</code><span style="margin-left: 0px ! important;"><code>commons-logging-api-1.1</code></span></div>
<div alt1=""><code>15.</code><span style="margin-left: 0px ! important;"><code>jstl</code></span></div>
<div alt2=""><code>16.</code><span style="margin-left: 0px ! important;"><code>standard</code></span></div>
<div alt1=""><code>17.</code><span style="margin-left: 0px ! important;"><code>tiles-api-2.0.4</code></span></div>
<div alt2=""><code>18.</code><span style="margin-left: 0px ! important;"><code>tiles-core-2.0.4</code></span></div>
<div alt1=""><code>19.</code><span style="margin-left: 0px ! important;"><code>tiles-jsp-2.0.4</code></span></div>
</div>
</div>
<p>
You will see how to create a simple classic tile layout with a header, menu, body and footer regions.
</p>
<img src="http://www.vaannila.com/images/spring/spring-tiles-pic-2.gif"  alt="" /><br />
<p>In Spring to use Tiles, configure the following Tile definition in the Spring configuration file.</p>
<div id="highlighter_730903">
<div>
<div alt1=""><code>01.</code><span style="margin-left: 0px ! important;"><code>&lt;?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"UTF-8"</code><code>?&gt;</code></span></div>
<div alt2=""><code>02.</code><span style="margin-left: 0px ! important;"><code>&lt;</code><code>beans</code> <code>xmlns</code><code>=</code><code>"http://www.springframework.org/schema/beans"</code></span></div>
<div alt1=""><code>03.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 32px ! important;"><code>xmlns:xsi</code><code>=</code><code>"http://www.w3.org/2001/XMLSchema-instance"</code></span></div>
<div alt2=""><code>04.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 32px ! important;"><code>xmlns:p</code><code>=</code><code>"http://www.springframework.org/schema/p"</code></span></div>
<div alt1=""><code>05.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 32px ! important;"><code>xmlns:context</code><code>=</code><code>"http://www.springframework.org/schema/context"</code></span></div>
<div alt2=""><code>06.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 32px ! important;"><code>xsi:schemaLocation="</code></span></div>
<div alt1=""><code>07.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 32px ! important;"><code>http://www.springframework.org/schema/beans </code></span></div>
<div alt2=""><code>08.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 32px ! important;"><code>http://www.springframework.org/schema/beans/spring-beans.xsd</code></span></div>
<div alt1=""><code>09.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 32px ! important;"><code>http://www.springframework.org/schema/context </code></span></div>
<div alt2=""><code>10.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 32px ! important;"><code>http://www.springframework.org/schema/context/spring-context.xsd"&gt;</code></span></div>
<div alt1=""><code>11.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code>&nbsp;</div>
<div alt2=""><code>12.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 32px ! important;"><code>&lt;</code><code>bean</code> <code>id</code><code>=</code><code>"viewResolver"</code> <code>class</code><code>=</code><code>"org.springframework.web.servlet.view. ResourceBundleViewResolver"</code> <code>p:basename</code><code>=</code><code>"views"</code> <code>/&gt;</code></span></div>
<div alt1=""><code>13.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code>&nbsp;</div>
<div alt2=""><code>14.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 32px ! important;"><code>&lt;</code><code>context:component-scan</code> <code>base-package</code><code>=</code><code>"com.vaannila.web"</code> <code>/&gt;</code></span></div>
<div alt1=""><code>15.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code>&nbsp;</div>
<div alt2=""><code>16.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 32px ! important;"><code>&lt;</code><code>bean</code> <code>id</code><code>=</code><code>"tilesConfigurer"</code> <code>class</code><code>=</code><code>"org.springframework.web.servlet.view.tiles2. TilesConfigurer"</code> <code>p:definitions</code><code>=</code><code>"/WEB-INF/tiles-defs.xml"</code> <code>/&gt;&nbsp;&nbsp;&nbsp; </code></span></div>
<div alt1=""><code>17.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>&nbsp;</div>
<div alt2=""><code>18.</code><span style="margin-left: 0px ! important;"><code>&lt;/</code><code>beans</code><code>&gt;</code></span></div>
</div>
</div>
<p>
Using the <em>definitions</em> attribute specify the location of the tiles definition file. Here the location is "<em>/WEB-INF/tiles-defs.xml</em>". The tiles definition file is shown below.
</p>
<div id="highlighter_154970">
<div>
<div alt1=""><code>01.</code><span style="margin-left: 0px ! important;"><code>&lt;?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"UTF-8"</code> <code>?&gt;</code></span></div>
<div alt2=""><code>02.</code>&nbsp;</div>
<div alt1=""><code>03.</code><span style="margin-left: 0px ! important;"><code>&lt;!DOCTYPE tiles-definitions PUBLIC</code></span></div>
<div alt2=""><code>04.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 56px ! important;"><code>"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"</code></span></div>
<div alt1=""><code>05.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 56px ! important;"><code>"http://tiles.apache.org/dtds/tiles-config_2_0.dtd"&gt;</code></span></div>
<div alt2=""><code>06.</code>&nbsp;</div>
<div alt1=""><code>07.</code><span style="margin-left: 0px ! important;"><code>&lt;</code><code>tiles-definitions</code><code>&gt;</code></span></div>
<div alt2=""><code>08.</code>&nbsp;</div>
<div alt1=""><code>09.</code><code>&nbsp;&nbsp;</code><span style="margin-left: 16px ! important;"><code>&lt;</code><code>definition</code> <code>name</code><code>=</code><code>"baseLayout"</code> <code>template</code><code>=</code><code>"/WEB-INF/tiles/baseLayout.jsp"</code><code>&gt;</code></span></div>
<div alt2=""><code>10.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 48px ! important;"><code>&lt;</code><code>put-attribute</code> <code>name</code><code>=</code><code>"title"</code>&nbsp; <code>value</code><code>=</code><code>"Template"</code><code>/&gt;</code></span></div>
<div alt1=""><code>11.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 48px ! important;"><code>&lt;</code><code>put-attribute</code> <code>name</code><code>=</code><code>"header"</code> <code>value</code><code>=</code><code>"/WEB-INF/tiles/header.jsp"</code><code>/&gt;</code></span></div>
<div alt2=""><code>12.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 48px ! important;"><code>&lt;</code><code>put-attribute</code> <code>name</code><code>=</code><code>"menu"</code>&nbsp;&nbsp; <code>value</code><code>=</code><code>"/WEB-INF/tiles/menu.jsp"</code><code>/&gt;</code></span></div>
<div alt1=""><code>13.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 48px ! important;"><code>&lt;</code><code>put-attribute</code> <code>name</code><code>=</code><code>"body"</code>&nbsp;&nbsp; <code>value</code><code>=</code><code>"/WEB-INF/tiles/body.jsp"</code><code>/&gt;</code></span></div>
<div alt2=""><code>14.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 48px ! important;"><code>&lt;</code><code>put-attribute</code> <code>name</code><code>=</code><code>"footer"</code>&nbsp;&nbsp; <code>value</code><code>=</code><code>"/WEB-INF/tiles/footer.jsp"</code><code>/&gt;</code></span></div>
<div alt1=""><code>15.</code><code>&nbsp;&nbsp;</code><span style="margin-left: 16px ! important;"><code>&lt;/</code><code>definition</code><code>&gt;</code></span></div>
<div alt2=""><code>16.</code><code>&nbsp;&nbsp;</code>&nbsp;</div>
<div alt1=""><code>17.</code><code>&nbsp;&nbsp;</code><span style="margin-left: 16px ! important;"><code>&lt;</code><code>definition</code> <code>name</code><code>=</code><code>"welcome"</code> <code>extends</code><code>=</code><code>"baseLayout"</code><code>&gt;</code></span></div>
<div alt2=""><code>18.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 48px ! important;"><code>&lt;</code><code>put-attribute</code> <code>name</code><code>=</code><code>"title"</code>&nbsp; <code>value</code><code>=</code><code>"Welcome"</code><code>/&gt;</code></span></div>
<div alt1=""><code>19.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 48px ! important;"><code>&lt;</code><code>put-attribute</code> <code>name</code><code>=</code><code>"body"</code>&nbsp;&nbsp; <code>value</code><code>=</code><code>"/WEB-INF/jsp/welcome.jsp"</code><code>/&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code></span></div>
<div alt2=""><code>20.</code><code>&nbsp;&nbsp;</code><span style="margin-left: 16px ! important;"><code>&lt;/</code><code>definition</code><code>&gt;</code></span></div>
<div alt1=""><code>21.</code><code>&nbsp;&nbsp;</code>&nbsp;</div>
<div alt2=""><code>22.</code><code>&nbsp;&nbsp;</code><span style="margin-left: 16px ! important;"><code>&lt;</code><code>definition</code> <code>name</code><code>=</code><code>"friends"</code> <code>extends</code><code>=</code><code>"baseLayout"</code><code>&gt;</code></span></div>
<div alt1=""><code>23.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 48px ! important;"><code>&lt;</code><code>put-attribute</code> <code>name</code><code>=</code><code>"title"</code>&nbsp; <code>value</code><code>=</code><code>"Friends"</code><code>/&gt;</code></span></div>
<div alt2=""><code>24.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 48px ! important;"><code>&lt;</code><code>put-attribute</code> <code>name</code><code>=</code><code>"body"</code>&nbsp;&nbsp; <code>value</code><code>=</code><code>"/WEB-INF/jsp/friends.jsp"</code><code>/&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code></span></div>
<div alt1=""><code>25.</code><code>&nbsp;&nbsp;</code><span style="margin-left: 16px ! important;"><code>&lt;/</code><code>definition</code><code>&gt;</code></span></div>
<div alt2=""><code>26.</code><code>&nbsp;&nbsp;</code>&nbsp;</div>
<div alt1=""><code>27.</code><code>&nbsp;&nbsp;</code><span style="margin-left: 16px ! important;"><code>&lt;</code><code>definition</code> <code>name</code><code>=</code><code>"office"</code> <code>extends</code><code>=</code><code>"baseLayout"</code><code>&gt;</code></span></div>
<div alt2=""><code>28.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 48px ! important;"><code>&lt;</code><code>put-attribute</code> <code>name</code><code>=</code><code>"title"</code>&nbsp; <code>value</code><code>=</code><code>"Office"</code><code>/&gt;</code></span></div>
<div alt1=""><code>29.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 48px ! important;"><code>&lt;</code><code>put-attribute</code> <code>name</code><code>=</code><code>"body"</code>&nbsp;&nbsp; <code>value</code><code>=</code><code>"/WEB-INF/jsp/office.jsp"</code><code>/&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code></span></div>
<div alt2=""><code>30.</code><code>&nbsp;&nbsp;</code><span style="margin-left: 16px ! important;"><code>&lt;/</code><code>definition</code><code>&gt;</code></span></div>
<div alt1=""><code>31.</code><code>&nbsp;&nbsp;</code>&nbsp;</div>
<div alt2=""><code>32.</code><span style="margin-left: 0px ! important;"><code>&lt;/</code><code>tiles-definitions</code><code>&gt;</code></span></div>
</div>
</div>
<p>Here we first define a base layout, later we extend the base layout
and create three more tile definitions by changing only the title and
the body regions.</p>
<p>To dispaly views we use the <em>ResourceBundleViewResolver</em>. By default the <em>views.properties</em> file will be used to store the key value pairs, we specify this using the <em>basename</em> attribute.</p>
<div id="highlighter_638535">
<div>
<div alt1=""><code>01.</code><span style="margin-left: 0px ! important;"><code>welcome.(</code><code>class</code><code>)=org.springframework.web.servlet.view.tiles2.TilesView</code></span></div>
<div alt2=""><code>02.</code><span style="margin-left: 0px ! important;"><code>welcome.url=welcome</code></span></div>
<div alt1=""><code>03.</code>&nbsp;</div>
<div alt2=""><code>04.</code><span style="margin-left: 0px ! important;"><code>friends.(</code><code>class</code><code>)=org.springframework.web.servlet.view.tiles2.TilesView</code></span></div>
<div alt1=""><code>05.</code><span style="margin-left: 0px ! important;"><code>friends.url=friends</code></span></div>
<div alt2=""><code>06.</code>&nbsp;</div>
<div alt1=""><code>07.</code><span style="margin-left: 0px ! important;"><code>office.(</code><code>class</code><code>)=org.springframework.web.servlet.view.tiles2.TilesView</code></span></div>
<div alt2=""><code>08.</code><span style="margin-left: 0px ! important;"><code>office.url=office</code></span></div>
<div alt1=""><code>09.</code>&nbsp;</div>
<div alt2=""><code>10.</code><span style="margin-left: 0px ! important;"><code>about.(</code><code>class</code><code>)=org.springframework.web.servlet.view.JstlView</code></span></div>
<div alt1=""><code>11.</code><span style="margin-left: 0px ! important;"><code>about.url=/WEB-INF/jsp/about.jsp</code></span></div>
</div>
</div>
<p>The <em>welcome</em>, <em>friends</em> and <em>office</em> refers to the tile definition names (the one to right side of the = sign). For tile views we use "<em>org.springframework.web.servlet.view.tiles2. TilesView</em>" class. You can also have other views together with the tile views. The <em>about</em> url is mapped to the <em>about.jsp</em> page with is a <em>org.springframework.web.servlet.view.JstlView</em>.</p>
<p>The baseLayout.jsp file contains the table structure to hold the different regions.</p>
<pre xml;="" toolbar:=""  false;="" auto-links:false="">&lt;%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %&gt;<br />
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<br />
"http://www.w3.org/TR/html4/loose.dtd"&gt;<br />
<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br />
&lt;title&gt;&lt;tiles:insertAttribute name="title" ignore="true" /&gt;&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;table border="1" cellpadding="2" cellspacing="2" align="center"&gt;<br />
&lt;tr&gt;<br />
&lt;td height="30" colspan="2"&gt;<br />
&lt;tiles:insertAttribute name="header" /&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td height="250"&gt;<br />
&lt;tiles:insertAttribute name="menu" /&gt;<br />
&lt;/td&gt;<br />
&lt;td width="350"&gt;<br />
&lt;tiles:insertAttribute name="body" /&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td height="30" colspan="2"&gt;<br />
&lt;tiles:insertAttribute name="footer" /&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
</pre>
<p>
Here we use annotated controller handler mapping to handle the request. In the <em>redirect.jsp</em> page we forward the request to the <em>welcome.htm </em>url.
</p>
<pre xml;="" toolbar:=""  false;="" auto-links:false="">&lt;% response.sendRedirect("welcome.htm"); %&gt;<br />
<br />
</pre>
<p>The <em>welcome.htm</em> url will be handled by the <em>WelcomeController</em> class, where we forward it to the <em>welcome</em> tile page.</p>
<pre java;="" toolbar:=""  false;="">package com.vaannila.web;<br />
<br />
import org.springframework.stereotype.Controller;<br />
import org.springframework.web.bind.annotation.RequestMapping;<br />
<br />
@Controller<br />
public class WelcomeController {<br />
<br />
@RequestMapping("/welcome.htm")<br />
public String redirect()<br />
{<br />
return "welcome";<br />
}<br />
}<br />
<br />
</pre>
<img src="http://www.vaannila.com/images/spring/spring-tiles-pic-3.gif"  alt="" />
<p>
You can download and try the example here.
</p>
<table width="230">
    <tbody>
        <tr>
            <td height="30">
            <div>
            Source  :<a href="http://www.vaannila.com/examples/spring/src/SpringExample16.zip">Download</a></div>
            </td>
        </tr>
        <tr>
            <td height="30">
            <div>
            War :<a href="http://www.vaannila.com/examples/spring/example/SpringExample16.war">Download</a></div>
            </td>
        </tr>
    </tbody>
</table>
<br />
<img src ="http://www.blogjava.net/sealyu/aggbug/298846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2009-10-19 14:32 <a href="http://www.blogjava.net/sealyu/archive/2009/10/19/298846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>How To Use DL, DT And DD HTML Tags To List Data vs Table List Data</title><link>http://www.blogjava.net/sealyu/archive/2009/09/24/296238.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Thu, 24 Sep 2009 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2009/09/24/296238.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/296238.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2009/09/24/296238.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/296238.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/296238.html</trackback:ping><description><![CDATA[<p>Many past web designers would love to create web design using table
and it has been the Achilles point for web developers when it comes to
debugging. Now, however when it come to listing data on a web page,
example listing data of a profile, many people would use a HTML table
instead. In fact, by using HTML <code>dl, dt, dd</code> tags, you will
save on writing more codes and add more semantic value to the content.
Whereas table are best use for tabular data, and should not be use in
listing data, web form or web layout. </p>
<p>If you are still creating list data using table, look below and compare on how to make your life easier with HTML <code>dl, dt, dd</code> tags.</p>
<p><img src="http://www.onextrapixel.com/wp-content/uploads/2009/05/dl-vs-table.jpg" alt="DL, DT, DD Tags vs Table" title="DL, DT, DD Tags vs Table" class="alignnone size-full wp-image-320" height="300" width="580" /></p>
<p><a href="http://www.onextrapixel.com/examples/dl-tags-vs-table/">Live Demo</a> | <a href="http://www.onextrapixel.com/examples/dl-tags-vs-table/dl-tags-vs-table.zip" onclick="javascript: pageTracker._trackPageview('/download/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data');">Download Demo</a></p>
<p>It may both look identical, but look closely behind the codes. </p>
<h2>Table List Data</h2>
<p>A typical listing data using table can be as follow. First we have a <code>tr</code> table row to hold the title and the data <code>td</code> table cell. Then when we need to style the <strong>title</strong> element, we will need to give a class to that <code>td</code> table cell.</p>
<div hightligher="" id="highlighter_486131">
<div>
<div><a viewsource="" style="width: 16px; height: 16px;" title="view source" href="http://www.onextrapixel.com/2009/05/13/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data/#viewSource">view source</a>
<div copytoclipboard=""><embed lk_media="yes" lk_mediaid="lk_juiceapp_mediaPopup_1253756959587" id="highlighter_486131_clipboard" type="application/x-shockwave-flash" title="copy to clipboard" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_486131" menu="false" src="http://www.onextrapixel.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter/scripts/clipboard.swf" height="16" width="16"></div>
<a printsource="" style="width: 16px; height: 16px;" title="print" href="http://www.onextrapixel.com/2009/05/13/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data/#printSource">print</a><a about="" style="width: 16px; height: 16px;" title="?" href="http://www.onextrapixel.com/2009/05/13/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data/#about">?</a></div>
</div>
<div>
<div alt1=""><code>01.</code><span style="margin-left: 0px ! important;"><code>&lt;</code><code>table</code><code>&gt;</code></span></div>
<div alt2=""><code>02.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;</code><code>tr</code><code>&gt;</code></span></div>
<div alt1=""><code>03.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 56px ! important;"><code>&lt;</code><code>td</code> <code>class</code><code>=</code><code>"title"</code><code>&gt;Name: &lt;/</code><code>td</code><code>&gt;</code></span></div>
<div alt2=""><code>04.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 56px ! important;"><code>&lt;</code><code>td</code> <code>class</code><code>=</code><code>"text"</code><code>&gt;John Don&lt;/</code><code>td</code><code>&gt;</code></span></div>
<div alt1=""><code>05.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;/</code><code>tr</code><code>&gt;</code></span></div>
<div alt2=""><code>06.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;</code><code>tr</code><code>&gt;</code></span></div>
<div alt1=""><code>07.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 56px ! important;"><code>&lt;</code><code>td</code> <code>class</code><code>=</code><code>"title"</code><code>&gt;Age: &lt;/</code><code>td</code><code>&gt;</code></span></div>
<div alt2=""><code>08.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 56px ! important;"><code>&lt;</code><code>td</code> <code>class</code><code>=</code><code>"text"</code><code>&gt;23&lt;/</code><code>td</code><code>&gt;</code></span></div>
<div alt1=""><code>09.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;/</code><code>tr</code><code>&gt;</code></span></div>
<div alt2=""><code>10.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;</code><code>tr</code><code>&gt;</code></span></div>
<div alt1=""><code>11.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 56px ! important;"><code>&lt;</code><code>td</code> <code>class</code><code>=</code><code>"title"</code><code>&gt;Gender: &lt;/</code><code>td</code><code>&gt;</code></span></div>
<div alt2=""><code>12.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 56px ! important;"><code>&lt;</code><code>td</code> <code>class</code><code>=</code><code>"text"</code><code>&gt;Male&lt;/</code><code>td</code><code>&gt;</code></span></div>
<div alt1=""><code>13.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;/</code><code>tr</code><code>&gt;</code></span></div>
<div alt2=""><code>14.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;</code><code>tr</code><code>&gt;</code></span></div>
<div alt1=""><code>15.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 56px ! important;"><code>&lt;</code><code>td</code> <code>class</code><code>=</code><code>"title"</code><code>&gt;Day of Birth:&lt;/</code><code>td</code><code>&gt;</code></span></div>
<div alt2=""><code>16.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 56px ! important;"><code>&lt;</code><code>td</code> <code>class</code><code>=</code><code>"text"</code><code>&gt;12th May 1986&lt;/</code><code>td</code><code>&gt;</code></span></div>
<div alt1=""><code>17.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;/</code><code>tr</code><code>&gt;</code></span></div>
<div alt2=""><code>18.</code><span style="margin-left: 0px ! important;"><code>&lt;/</code><code>table</code><code>&gt;</code></span></div>
</div>
</div>
<p>So over here in the CSS, we style the title class that we had declare in the HTML.</p>
<div hightligher="" id="highlighter_64396">
<div>
<div><a viewsource="" style="width: 16px; height: 16px;" title="view source" href="http://www.onextrapixel.com/2009/05/13/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data/#viewSource">view source</a>
<div copytoclipboard=""><embed lk_media="yes" lk_mediaid="lk_juiceapp_mediaPopup_1253756959642" id="highlighter_64396_clipboard" type="application/x-shockwave-flash" title="copy to clipboard" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_64396" menu="false" src="http://www.onextrapixel.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter/scripts/clipboard.swf" height="16" width="16"></div>
<a printsource="" style="width: 16px; height: 16px;" title="print" href="http://www.onextrapixel.com/2009/05/13/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data/#printSource">print</a><a about="" style="width: 16px; height: 16px;" title="?" href="http://www.onextrapixel.com/2009/05/13/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data/#about">?</a></div>
</div>
<div>
<div alt1=""><code>01.</code><span style="margin-left: 0px ! important;"><code>/*TABLE LIST DATA*/</code></span></div>
<div alt2=""><code>02.</code><span style="margin-left: 0px ! important;"><code>table {</code></span></div>
<div alt1=""><code>03.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>margin-bottom</code><code>:</code><code>50px</code><code>;</code></span></div>
<div alt2=""><code>04.</code><span style="margin-left: 0px ! important;"><code>}</code></span></div>
<div alt1=""><code>05.</code>&nbsp;</div>
<div alt2=""><code>06.</code><span style="margin-left: 0px ! important;"><code>table tr .title {</code></span></div>
<div alt1=""><code>07.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>background</code><code>:</code><code>#5f9be3</code><code>;</code></span></div>
<div alt2=""><code>08.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>color</code><code>:</code><code>#fff</code><code>;</code></span></div>
<div alt1=""><code>09.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>font-weight</code><code>:</code><code>bold</code><code>;</code></span></div>
<div alt2=""><code>10.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>padding</code><code>:</code><code>5px</code><code>;</code></span></div>
<div alt1=""><code>11.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>width</code><code>:</code><code>100px</code><code>;</code></span></div>
<div alt2=""><code>12.</code><span style="margin-left: 0px ! important;"><code>}</code></span></div>
<div alt1=""><code>13.</code>&nbsp;</div>
<div alt2=""><code>14.</code><span style="margin-left: 0px ! important;"><code>table tr .text {</code></span></div>
<div alt1=""><code>15.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>padding-left</code><code>:</code><code>10px</code><code>;</code></span></div>
<div alt2=""><code>16.</code><span style="margin-left: 0px ! important;"><code>}</code></span></div>
</div>
</div>
<p>From here you can see that if you want to change the design or format for the title in the CSS, you will need to give each <code>td</code>
for the title a class. If you want to style the data as well, you will
need to give a class to it as well, so you are actually writing a lot
of codes. More codes mean larger file size to download, more chances
for bugs and harder for you to maintain.</p>
<h2>DL, DT, DD List Data</h2>
<p>Now, let's look at using HTML <code>dl, dt, dd</code> tags for listing the data. First we have the  <code>dl</code> (definition list) tag to hold the whole set of data, next we have <code>dt</code> (defines the item in the list) tag and <code>dd</code> (describes the item in the list) tag to hold the title and the data.</p>
<div hightligher="" id="highlighter_734707">
<div>
<div><a viewsource="" style="width: 16px; height: 16px;" title="view source" href="http://www.onextrapixel.com/2009/05/13/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data/#viewSource">view source</a>
<div copytoclipboard=""><embed lk_media="yes" lk_mediaid="lk_juiceapp_mediaPopup_1253756959646" id="highlighter_734707_clipboard" type="application/x-shockwave-flash" title="copy to clipboard" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_734707" menu="false" src="http://www.onextrapixel.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter/scripts/clipboard.swf" height="16" width="16"></div>
<a printsource="" style="width: 16px; height: 16px;" title="print" href="http://www.onextrapixel.com/2009/05/13/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data/#printSource">print</a><a about="" style="width: 16px; height: 16px;" title="?" href="http://www.onextrapixel.com/2009/05/13/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data/#about">?</a></div>
</div>
<div>
<div alt1=""><code>01.</code><span style="margin-left: 0px ! important;"><code>&lt;</code><code>dl</code><code>&gt;</code></span></div>
<div alt2=""><code>02.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;</code><code>dt</code><code>&gt;Name: &lt;/</code><code>dt</code><code>&gt;</code></span></div>
<div alt1=""><code>03.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;</code><code>dd</code><code>&gt;John Don&lt;/</code><code>dd</code><code>&gt;</code></span></div>
<div alt2=""><code>04.</code>&nbsp;</div>
<div alt1=""><code>05.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;</code><code>dt</code><code>&gt;Age: &lt;/</code><code>dt</code><code>&gt;</code></span></div>
<div alt2=""><code>06.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;</code><code>dd</code><code>&gt;23&lt;/</code><code>dd</code><code>&gt;</code></span></div>
<div alt1=""><code>07.</code>&nbsp;</div>
<div alt2=""><code>08.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;</code><code>dt</code><code>&gt;Gender: &lt;/</code><code>dt</code><code>&gt;</code></span></div>
<div alt1=""><code>09.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;</code><code>dd</code><code>&gt;Male&lt;/</code><code>dd</code><code>&gt;</code></span></div>
<div alt2=""><code>10.</code>&nbsp;</div>
<div alt1=""><code>11.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;</code><code>dt</code><code>&gt;Day of Birth:&lt;/</code><code>dt</code><code>&gt;</code></span></div>
<div alt2=""><code>12.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>&lt;</code><code>dd</code><code>&gt;12th May 1986&lt;/</code><code>dd</code><code>&gt;</code></span></div>
<div alt1=""><code>13.</code><span style="margin-left: 0px ! important;"><code>&lt;/</code><code>dl</code><code>&gt;</code></span></div>
</div>
</div>
<p>Over at CSS, we will need to float the <code>dt</code> tag, so that the title for the list data will align to the left. The rest of the styling is up to you.</p>
<div hightligher="" id="highlighter_374049">
<div>
<div><a viewsource="" style="width: 16px; height: 16px;" title="view source" href="http://www.onextrapixel.com/2009/05/13/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data/#viewSource">view source</a>
<div copytoclipboard=""><embed lk_media="yes" lk_mediaid="lk_juiceapp_mediaPopup_1253756959649" id="highlighter_374049_clipboard" type="application/x-shockwave-flash" title="copy to clipboard" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_374049" menu="false" src="http://www.onextrapixel.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter/scripts/clipboard.swf" height="16" width="16"></div>
<a printsource="" style="width: 16px; height: 16px;" title="print" href="http://www.onextrapixel.com/2009/05/13/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data/#printSource">print</a><a about="" style="width: 16px; height: 16px;" title="?" href="http://www.onextrapixel.com/2009/05/13/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data/#about">?</a></div>
</div>
<div>
<div alt1=""><code>01.</code><span style="margin-left: 0px ! important;"><code>/*DL, DT, DD TAGS LIST DATA*/</code></span></div>
<div alt2=""><code>02.</code><span style="margin-left: 0px ! important;"><code>dl {</code></span></div>
<div alt1=""><code>03.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>margin-bottom</code><code>:</code><code>50px</code><code>;</code></span></div>
<div alt2=""><code>04.</code><span style="margin-left: 0px ! important;"><code>}</code></span></div>
<div alt1=""><code>05.</code>&nbsp;</div>
<div alt2=""><code>06.</code><span style="margin-left: 0px ! important;"><code>dl dt {</code></span></div>
<div alt1=""><code>07.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>background</code><code>:</code><code>#5f9be3</code><code>;</code></span></div>
<div alt2=""><code>08.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>color</code><code>:</code><code>#fff</code><code>;</code></span></div>
<div alt1=""><code>09.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>float</code><code>:</code><code>left</code><code>;</code></span></div>
<div alt2=""><code>10.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>font-weight</code><code>:</code><code>bold</code><code>;</code></span></div>
<div alt1=""><code>11.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>margin-right</code><code>:</code><code>10px</code><code>;</code></span></div>
<div alt2=""><code>12.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>padding</code><code>:</code><code>5px</code><code>;</code></span></div>
<div alt1=""><code>13.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>width</code><code>:</code><code>100px</code><code>;</code></span></div>
<div alt2=""><code>14.</code><span style="margin-left: 0px ! important;"><code>}</code></span></div>
<div alt1=""><code>15.</code>&nbsp;</div>
<div alt2=""><code>16.</code><span style="margin-left: 0px ! important;"><code>dl dd {</code></span></div>
<div alt1=""><code>17.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>margin</code><code>:</code><code>2px</code> <code>0</code><code>;</code></span></div>
<div alt2=""><code>18.</code><code>&nbsp;&nbsp;&nbsp;&nbsp;</code><span style="margin-left: 28px ! important;"><code>padding</code><code>:</code><code>5px</code> <code>0</code><code>;</code></span></div>
<div alt1=""><code>19.</code><span style="margin-left: 0px ! important;"><code>}</code></span></div>
</div>
</div>
<p>From <code>dl, dt, dd</code> tags example, you can see that the codes are lesser, sleeker and much more semantic. </p>
<p><a href="http://www.onextrapixel.com/examples/dl-tags-vs-table/">Live Demo</a> | <a href="http://www.onextrapixel.com/examples/dl-tags-vs-table/dl-tags-vs-table.zip" onclick="javascript: pageTracker._trackPageview('/download/how-to-use-dl-dt-and-dd-html-tags-to-list-data-vs-table-list-data');">Download Demo</a></p>
<p>So if you are still using table to consolidate or list your data on
the web form and web layout, it's really time now to make the switch.
It's definitely going to make your life a lot more easier. </p>
<img src ="http://www.blogjava.net/sealyu/aggbug/296238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2009-09-24 09:53 <a href="http://www.blogjava.net/sealyu/archive/2009/09/24/296238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>URIs, Addressability, and the use of HTTP GET and POST</title><link>http://www.blogjava.net/sealyu/archive/2009/09/23/296177.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Wed, 23 Sep 2009 08:04:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2009/09/23/296177.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/296177.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2009/09/23/296177.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/296177.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/296177.html</trackback:ping><description><![CDATA[<h2>TAG Finding 21 March 2004</h2>
<dl><dt>This version:</dt><dd>
<a href="http://www.w3.org/2001/tag/doc/whenToUseGet-20040321">http://www.w3.org/2001/tag/doc/whenToUseGet-20040321</a>
</dd><dt>Latest version:</dt><dd><a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html">http://www.w3.org/2001/tag/doc/whenToUseGet</a>
(<a href="http://www.w3.org/2001/tag/doc/get7.xml">XML</a>)
</dd><dt>Previous versions:</dt><dd>
<a href="http://www.w3.org/2001/tag/doc/whenToUseGet-20030922">22 Sep
2003 Draft</a>,
<a href="http://www.w3.org/2001/tag/doc/whenToUseGet-20030919">19 Sep
2003 Draft</a>
</dd><dt>Editor:</dt><dd><a href="http://www.w3.org/People/Jacobs/">Ian Jacobs</a>, W3C</dd></dl>
<p>
<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a>
&#169; 2003, 2004
<a href="http://www.w3.org/">W3C</a><sup>&#174;</sup>
(<a href="http://www.lcs.mit.edu/">MIT</a>,
<a href="http://www.ercim.org/">ERCIM</a>,
<a href="http://www.keio.ac.jp/">Keio</a>),
All Rights Reserved. W3C
<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
<a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a>, and
<a href="http://www.w3.org/Consortium/Legal/copyright-software">software licensing</a>
rules apply.
</p>
<hr />
<div>
<h2>Abstract</h2>
<p>An important principle of Web architecture is that all important
resources be identifiable by URI. The finding discusses the
relationship between the URI addressability of a resource and the
choice between HTTP GET and POST methods with HTTP URIs. HTTP GET
promotes URI addressability so, designers should adopt it for <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#safe">safe operations</a> such as simple queries. POST is
appropriate for other types of applications where a user request has
the potential to change the state of the resource (or of related
resources). The finding explains how to choose between HTTP GET and
POST for an application taking into account architectural, security,
and practical considerations.</p>
<p>This finding does not discuss URI schemes other than "http" or
protocols other than HTTP/1.1 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#">[RFC2616]</a>.</p>
</div>
<div>
<h2>Status of this Document</h2>
<p>This document has been produced by the <a href="http://www.w3.org/2001/tag/">W3C
Technical Architecture Group (TAG)</a>. This finding addresses TAG
<a href="http://www.w3.org/2001/tag/ilist#whenToUseGet-7">issue
whenToUseGet-7</a>.</p>
<p>This is the 21 March 2004 revision of
this finding. It has been approved by the TAG. At their <a href="http://www.w3.org/2004/03/02-tag-summary.html">2 March 2004
face-to-face meeting</a>, the TAG resolved to approve this version
of the finding with one change from the previous version, the addition
of a link to ongoing work in the W3C <a href="http://www.w3.org/2002/ws/desc/">Web Services Description
Working Group</a>, in <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#webservices">section 6</a>.  The 21
March 2004 revision supersedes the <a href="http://www.w3.org/2001/tag/doc/whenToUseGet-20030922">22 Sep
2003 version</a> of this finding, which the TAG had previously
approved.
</p>
<p><a href="http://www.w3.org/2001/tag/findings">Additional TAG findings</a>, both
approved and in draft state, may also be available. The TAG expects
to incorporate this and other findings into a Web Architecture
Document that will be published according to the process of the <a href="http://www.w3.org/Consortium/Process-20010719/tr#Recs">W3C Recommendation
Track</a>.</p>
<p>The terms MUST, SHOULD, and SHOULD NOT are used in this document
in accordance with <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#">[RFC2119]</a>.</p>
<p>Please send comments on this finding to the publicly archived
TAG mailing list www-tag@w3.org (<a href="http://lists.w3.org/Archives/Public/www-tag/">archive</a>).</p>
</div>
<div>
<h2>Table of Contents</h2>
<p>1 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#introduction">Introduction</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;1.1 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#scenarios">Scenarios</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;1.2 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#principles-summary">Relevant Principles of Web Architecture</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;1.3 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist">Quick Checklist for Choosing HTTP GET or POST</a><br />
2 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#uris">The Benefits of URI Addressability</a><br />
3 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#safe">Safe Interactions</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;3.1 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#examples">Examples of using GET and POST</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#194;&nbsp;3.1.1 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#example-lists">Mailing List Subscription</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#194;&nbsp;3.1.2 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#example-obligations">Steps for Establishing an Obligation</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#194;&nbsp;3.1.3 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#example-counters">Side-effects do not Imply Unsafe Interactions</a><br />
4 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#sensitive">Considerations for Sensitive Data</a><br />
5 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#practical">Practical Considerations</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;5.1 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#i18n">Internationalization</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;5.2 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#ephemeral">Ephemeral Limitations</a><br />
6 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#webservices">Ongoing Work on GET in Web Services</a><br />
7 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#future-work">Future Work</a><br />
8 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#references">References</a><br />
9 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#acks">Acknowledgments</a><br />
</p>
</div>
<hr />
<div>
<div>
<h2>1 Introduction</h2>
<p>In this finding, we discuss when it is appropriate to use HTTP GET
and when it is appropriate to use HTTP POST, and the architectural
principles behind the separation of these two methods.</p>
<p>In the introduction, we present <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#scenarios">scenarios</a> that illustrate some of the topics
covered, summarize the <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#principles-summary">relevant
principles of Web Architecture</a>, and provide a <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist">quick checklist for choosing GET or POST</a>.
Following that, we discuss the <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#uris">benefits of URI
addressability</a>, which is the primary reason for distinguishing
GET from POST. We then characterize <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#safe">safe
interactions</a>, when the use of GET is encouraged. However, when
considering GET or POST, designers should also remain aware of <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#sensitive">considerations for sensitive data</a> such as
passwords or credit card information, and other <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#practical">practical considerations</a>.</p>
<div>
<h3>1.1 Scenarios</h3>
<p id="scenario1">Scenario 1: Dan purchases a new wireless telephone
and wishes to share information about it with his
colleagues. Following the clue "CAT. NO. 43-893" on the bottom of the
phone, Dan visits the Web site of the phone manufacturer. Typing the
catalog number in the site's search box, Dan pulls up the relevant
information. However, since the site designers created a POST Web form
instead of a GET Web form for this read-only operation, Dan cannot
bookmark the query, or send the query to his colleagues (who are
potential customers) as a URI, or gain any of the other benefits made
possible by the proper use of HTTP GET. The Web site designer should
have provided GET access to the catalog information; see the <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#uris">benefits of URI addressability</a>.</p>
<p id="scenario2">Scenario 2: My bank allows me to read current
information about my checking account over the Web. The URI they
provide me for this access includes my account number. This is
sensitive information I do not want to appear in the URI since, for
example, when I follow a link from the bank Web site to the site of
their advertiser, my account information may appear in the
advertiser's server logs. Rather than moving my account number from
the URI into the body of a POST request, my bank allows me to
establish a secure HTTP connection. Not only do I feel more confident
retrieving information over a secure connection, my browser knows not
to expose sensitive information to the next site I visit after the
secure connection.  As a result, I can still bookmark my account page
without revealing sensitive information. For more information, see the
<a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#sensitive">considerations for sensitive data</a>.</p>
</div>
<div>
<h3>1.2 Relevant Principles of Web Architecture</h3>
<ol type="1">
    <li>All important resources SHOULD be identifiable by URI.</li>
    <li>HTTP GET is safe; i.e., agents do not incur
    obligations by following links.</li>
</ol>
</div>
<div>
<h3>1.3 Quick Checklist for Choosing HTTP GET or POST</h3>
<ul>
    <li>Use GET if:
    <ul>
        <li>The interaction is more like a question (i.e., it is
        a safe operation such as a query, read operation, or lookup).</li>
    </ul>
    </li>
    <li>Use POST if:
    <ul>
        <li>The interaction is more like an order, or</li>
        <li>The interaction changes the state of the resource in a way that
        the user would perceive (e.g., a subscription to a service), or</li>
        <li>The user be held accountable for the results of the interaction.</li>
    </ul>
    </li>
</ul>
<p>However, before the final decision to use HTTP GET or POST, please also
consider <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#sensitive">considerations for sensitive
data</a> and <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#practical">practical
considerations</a>.</p>
</div>
</div>
<div>
<h2>2 The Benefits of URI Addressability</h2>
<p>Web architecture starts with Uniform Resource Identifiers (URI),
whose generic syntax is defined by <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#">[RFC2396]</a>. The Web
relies on global agreement to follow the rules of URIs so that we can
refer to things on the Web, access them, describe them, and share
them. Providing a URI for a resource affords many advantages,
including:</p>
<ul>
    <li>linking</li>
    <li>bookmarking</li>
    <li>caching</li>
</ul>
<p>As described in <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#TBL50K">[TBL50K]</a>, "Great multiplicative power
of reuse derives from the fact that all languages use URIs as
identifiers: This allows things written in one language to refer to
things defined in another language. The use of URIs allows a language
to leverage the many forms of persistence, identity, and various forms
of equivalence."</p>
<p>In this finding, the term "URI addressability" means that a URI
alone is sufficient for an agent to carry out a particular type of
interaction.</p>
<p>In some cases, it may be desirable to interact in different ways
with the resource identified by a URI. For example, the <a href="http://validator.w3.org/checklink">W3C link checking service</a>
illustrates the usefulness of separating URIs from methods. The link
checker works as follows (ignoring recursive link checking for this
discussion): for each HTTP URI that is part of a link in an HTML or
XHTML document, the link checker uses the HEAD method to gather
information about the resource identified by the URI. As the HTTP/1.1
specification states, "The HEAD method is identical to GET except that
the server MUST NOT return a message-body in the response." By using
HEAD instead of GET, the link checker does not ask for more bits than
it requires to do its job.</p>
<p>The Web architecture thus allows for the separation of URIs and
methods. A URI's scheme determines a set of interaction methods. For
instance, the HTTP URI scheme is defined in HTTP/1.1 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#">[RFC2616]</a>, which allows "an open-ended set of methods and
headers that indicate the purpose of a request. It builds on the
discipline of reference provided by the Uniform Resource Identifier
(URI) ... for indicating the resource to which a method is to be
applied."; refer to section 1.1.</p>
<p>There are costs to separating URIs and methods, however.  The
separation means that some metadata required for the interaction may
not be part of the URI, and as a result, the URI alone is no longer
sufficient for an agent to carry out the interaction. URI
addressability is lost.</p>
<p>In the following section we look more closely at when to use
HTTP GET (since it promotes URI accessibility) and when to use HTTP
POST.</p>
</div>
<div>
<h2>3 Safe Interactions</h2>
<p>Section 9.1 of HTTP/1.1 discusses <em>safe interactions</em>. A
safe interaction is one where the user is not to be held accountable
for the result of the interaction. Safe interactions are important
because these are interactions where users can browse with confidence
and where software programs (e.g., search engines and browsers that
pre-cache data for the user) can follow links safely. Users (or
software agents acting on their behalf) do not commit themselves to
anything by querying a resource or following a link.  For example, Web
sites that say "by following the link to ABC, you agree to the
following terms and conditions" do not account for the fact that
anyone (in particular, a search service) can make another link to ABC,
and anyone who follows this other link to ABC may never have seen the
terms and conditions.  See the related TAG finding "Deep Linking in
the World Wide Web" <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#DEEPLINK">[DEEPLINK]</a>.</p>
<p id="unsafe">By distinguishing safe from "unsafe" interactions (i.e., those
where the user should be accountable for a particular interaction) at
the protocol level:</p>
<ul>
    <li>Clients can inform users when a particular action will have
    consequences (e.g., subscription to a list, payment of a fee,
    cancellation of a contract, etc.)
    In section 9.1.1, the HTTP/1.1 specification states,
    "Implementors should be aware that the software represents the
    user in their interactions over the Internet, and should be careful to
    allow the user to be aware of any actions they might take which may
    have an unexpected significance to themselves or others.</li>
    <li>Intermediaries (e.g., caches)
    can safely process on behalf of the user.</li>
</ul>
<p>In the same section, HTTP/1.1 states, the convention is that GET is
used for safe interactions and SHOULD NOT have the significance of
taking an action other than retrieval. Indeed, if you use GET for
interactions with side-effects, your make your system insecure.  For
example, a malicious Web page publisher outside a firewall might put a
URI in an HTML page so that, when someone inside the firewall
unwittingly follows the link, that person activates a function on
another system within the firewall.</p>
<p>Users accept obligations through other mechanisms than requests to
follow a link. Per the HTTP/1.1 specification, designers should use
HTTP POST for those interactions.</p>
<p>HTTP GET is designed so that all information necessary for the
interaction is part of the URI, thus promoting URI addressability.
With HTTP POST, some information intended to affect change to the
resource state may be part of the protocol headers, not in the
URI. With this approach, the resulting URI for identifying the
resource may be shorter, but the advantages of URI addressability are
lost.</p>
<p>Note that it is possible to use POST even without supplying data in
an HTTP message body. In this case, the resource is URI addressable,
but the POST method indicates to clients that the interaction is
unsafe or may have side-effects.</p>
<p>By convention, when GET method is used, all information required to
identify the resource is encoded in the URI. There is no convention in
HTTP/1.1 for a safe interaction (e.g., retrieval) where the client
supplies data to the server in an HTTP entity body rather than in
the query part of a URI. This means that for safe operations, URIs may
be long.  The case of large parameters to a safe operation is not
directly addressed by HTTP as it is presently deployed. A QUERY or
"safe POST" or "GET with BODY" method has been discussed (e.g., at the
<a href="http://www.ietf.org/ietf/http/http-minutes-96dec.txt">December
1996 IETF meeting</a>) but no consensus has emerged.</p>
<p>WebDAV <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#">[RFC2518]</a> uses a different HTTP
method, PROPFIND (section <a href="http://asg.web.cmu.edu/rfc/rfc2518.html#sec-8.1">8.1
PROPFIND</a>), for querying properties of resources; unfortunately,
this provides no URI for the results of these queries.</p>
<p>Other work on identification of safe interactions includes the
experimental RFC "The Safe Response Header Field" <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#RFC2310">[RFC2310]</a>.</p>
<div>
<h3>3.1 Examples of using GET and POST</h3>
<p>In section 9.5, the HTTP/1.1 specification lists some example
applications where POST should be used due to side-effects, including
annotation of existing resources; posting a message to a bulletin
board, newsgroup, mailing list, or similar group of articles; and
extending a database through an append operation.</p>
<p>Whether and how one chooses between GET and POST depends on the
format specification and the application context. When HTTP URIS are
used for hyperlinks in HTML, SMIL, and SVG, for example, the
application determines which method will be used (generally GET).
However, for both HTML forms and XForms, the author can choose between
GET and POST. One implication is that HTML application designers
should implement "unsafe" operations (or others requiring POST) with a
form, even if the application does not call for user input.</p>
<div>
<h4>3.1.1 Mailing List Subscription</h4>
<p>Consider the following two designs for mailing list subscription
confirmation.</p>
<p>Design 1:</p>
<ol type="1">
    <li>The user sends a subscribe message to an administrative mailbox
    (mylist-request@example.org).</li>
    <li>The list processing software sends an email response to the
    user, requesting that the user confirm the subscription request,
    and including a link to a confirmation page.</li>
    <li>The user follows this link to the confirmation page, and finds a
    form with a button to "[Confirm] your subscription". The form is
    submitted with method="POST".</li>
    <li>The user activates the [Confirm] form control.</li>
    <li>The list processing software confirms the subscription.</li>
</ol>
<p>Design 2 (incorrect):</p>
<ol type="1">
    <li>same as 1 above</li>
    <li>same as 2 above</li>
    <li>The user follows the link to the confirmation page and and is
    informed "your subscription is confirmed".</li>
</ol>
<p>The latter design performed an unsafe operation (list
subscription) in response to a request with a safe method
(following the link from the mail message with GET). If the user's
mail agent pre-fetched pages to speed up browsing, the subscription
would be confirmed without the knowledge and consent of the user;
the HTTP/1.1 specification makes it clear that the fault is with the
server in this case; the user's mail agent is free to follow links
without incurring obligations.</p>
</div>
<div>
<h4>3.1.2 Steps for Establishing an Obligation</h4>
<p>To establish obligations of confidentiality (or payment, or
licensing terms, etc.), designers should follow this protocol:</p>
<ol type="1">
    <li>The client requests access to materials that can only be
    viewed by people who agree to certain confidentiality terms.</li>
    <li>The server declines, with an "authorization required" notice
    and a link to an account application form.</li>
    <li>The client follows the link to the form, and applies for an
    account, agreeing to the terms and conditions in a POST request (or by
    fax or postal mail, for that matter).</li>
    <li>The server provides credentials in response.</li>
    <li>The client re-requests the materials, providing credentials.</li>
</ol>
<p>Similarly, an individual might agree to terms and conditions by
signing a contract with an employer or other organization, after which
the person might legitimately incur an obligation through some
interaction (e.g., following a link) covered by the terms of the
agreement.</p>
</div>
<div>
<h4>3.1.3 Side-effects do not Imply Unsafe Interactions</h4>
<p>Some user interactions cause side effects (i.e., they change the
state of the server) but are safe interactions. When a server is
configured to count and display the number of visitors to a site, each
user interaction increments a counter. Users do not commit themselves
to anything through this sort of interaction, so it is safe.</p>
</div>
</div>
</div>
<div>
<h2>4 Considerations for Sensitive Data</h2>
<p>Some Web interactions involve sensitive data, such as passwords,
credit card numbers, social security numbers, and bank account numbers
(as in <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#scenario2">scenario 2</a>).</p>
<p>To protect information carried by either GET or POST operations, it
is often appropriate to use an underlying secure protocol such as the
Secure Socket Layer <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#SSL3">[SSL3]</a>. By
using GET over SSL for safe operations, designers retain some of the
benefits of URI addressability, even if they lose others (e.g.,
caching). Designers do need to consider the costs of using SSL,
such as:</p>
<ul>
    <li>Time required to establish an SSL connection.</li>
    <li>Memory required on the server to create a novel copy
    of (encrypted) data for each request.</li>
</ul>
<p>In situations where the use of such protocols for security is
inappropriate, designers MAY use POST to carry credentials or other
information needed to authenticate an otherwise safe operation. For
instance, a designer may require security beyond the protocol layer
into the application layer (e.g., because software or data queues
within a server site are not trusted, or because the application
requires credentials not supported at a lower layer).</p>
<p>When the use of SSL is <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#practical">impractical</a>, it
may still be possible to keep some sensitive data out of a URI. For
instance, designers can communicate authentication information in HTTP
headers rather than in the query part of a URI.</p>
<p>
Broad issues of data protection such as preventing unauthorized access
to an individuals' bookmarks (or cookies, for that matter) lie beyond
the scope of Web architecture.</p>
</div>
<div>
<h2>5 Practical Considerations</h2>
<p>Web application design should be informed by the above principles,
but also by the relevant limitations. For instance, when designing a
service that operates on a resource via URI, consider whether there
are use cases where such operation would be inappropriate.</p>
<p>For example, the <a href="http://validator.w3.org/">W3C HTML
validation service</a> allows for two scenarios (both using HTML
forms). With the "safe" option, validation requests are done via a
URI; the form uses GET, which gives the results a URI for bookmarks,
links, etc. The second option allows clients to upload a document for
validation. The form uses POST for that option, since:</p>
<ul>
    <li>the document to be validated might be confidential; any link to
    the results of validating it (at the public W3C Web site)
    would divulge its contents.</li>
    <li>a URI that encoded the entire document would be at least as
    large as the document, and there's little or no use in linking to
    it, since the results will always be the same.</li>
</ul>
<p>Whether or not GET with HTTP is used for the initial access,
supplying a URI for subsequent access to the <em>same</em>
information, e.g., using Content-Location, is useful.</p>
<div>
<h3>5.1 Internationalization</h3>
<p>Designers of HTML forms that accept non-ASCII characters have been
challenged by some implementation limitations and gaps in
specifications. Implementation limitations are length-related.
Section <a href="http://www.w3.org/TR/1999/REC-html401-19991224/interact/forms.html#h-17.13.4">
section 17.13.4</a> of HTML 4.01 <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#HTML401">[HTML401]</a> on
multipart/form-data says, "The content type
"application/x-www-form-urlencoded" is inefficient for sending large
quantities of binary data or text containing non-ASCII
characters."</p>
<p>This inefficiency is due to the octet-to-<code>%hh</code> escape
conversion, combined with the fact that many characters need more
than one octet to be encoded. But while somewhat inefficient, this
is not a real obstacle to using GET for non-ASCII characters.</p>
<p>A more serious problem is that the mapping between characters and
octets is not clearly specified beyond US-ASCII; refer to section 2.1
of <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#">[RFC2396]</a>. For query parts resulting from filling in
an HTML form, the default is to use the character encoding of the
form. The definition of the <a href="http://www.w3.org/TR/REC-html40/interact/forms.html#adef-accept-charset">
accept-charset attribute</a> on the form element in HTML 4.01 says,
"The default value for this attribute is the reserved string
'UNKNOWN'. User agents may interpret this value as the character
encoding that was used to transmit the document containing this FORM
element."</p>
<p>The general direction to address this limitation is to converge
to using UTF-8 for the mapping between characters and octets. The
use of UTF-8 is already defined in various specifications, and we
expect it to be adopted in future specifications and further
deployed in due course. For instance, we expect XForms to specify
that the encoding to be used in query parts is always UTF-8.</p>
</div>
<div>
<h3>5.2 Ephemeral Limitations</h3>
<p>While Web application design must take into account the limitations
of technology that is widely deployed at present, it should not treat
these as architectural invariants. The following is a list of
limitations have already been largely resolved, or are likely to fade
away as bugs are fixed and the scope of interoperable specifications
expands.</p>
<dl><dt>URIs cannot be longer than 256 characters</dt><dd>This was a limitation in some server implementations, and while
servers continue to have limitations to prevent denial-of-service
attacks, they are generally at least 4000 characters, and they
evolve as the legitimate uses of application developers
evolve.</dd><dt>GET requests are re-executed when the user uses the
back button.</dt><dd>This is not by design. Section 13.13 of <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#">[RFC2616]</a>
states: "History mechanisms and caches are different. In particular
history mechanisms SHOULD NOT try to show a semantically transparent
view of the current state of a resource. Rather, a history mechanism
is meant to show exactly what the user saw at the time when the
resource was retrieved."</dd><dt>If I visit a page via a secure protocol, and then follow
a link to another page, the second site may have access to
sensitive data in a URI.</dt><dd>This is not by design. Section 15.1.3 of <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#">[RFC2616]</a>
states: "Because the source of a link might be private information or
might reveal an otherwise private information source, it is strongly
recommended that the user be able to select whether or not the
"Referer" [sic] field is sent. For example, a browser client could
have a
toggle switch for browsing openly/anonymously, which would respectively
enable/disable the sending of Referer and From information. Clients
SHOULD NOT include a Referer header field in a (non-secure) HTTP
request if the referring page was transferred with a secure protocol."</dd><dt>Search services will not index anything with a "?" in the
URI.
</dt><dd>This was a heuristic to avoid infinite loops in some search
service crawlers, but it was not an architectural constraint, and
modern search services use more sophisticated heuristics to avoid
loops.</dd></dl></div>
</div>
<div>
<h2>6 Ongoing Work on GET in Web Services</h2>
<p>Since the first publication of this finding, W3C's XML Protocol
Working Group has enhanced SOAP Version 1.2 to support use of GET for
safe operations (cf. <a href="http://www.w3.org/TR/soap12-part2/#RPCResourceRetrieval">section
4.1.2</a> of <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#SOAPADJUNCTS">[SOAPADJUNCTS]</a>.)  Specific conventions
are also now suggested for use of GET in conjunction with SOAP Remote
Procedure Calls (also in section 4.1.2) The SOAP HTTP binding
(cf. <a href="http://www.w3.org/TR/soap12-part2/#soapinhttp">section
7</a> of <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#SOAPADJUNCTS">[SOAPADJUNCTS]</a>) has been modified
accordingly, and thus supports appropriate use of GET and POST in
conjunction with the SOAP RPC Representation (cf. <a href="http://www.w3.org/TR/soap12-part2/#soapforrpc">section 4</a> of
<a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#SOAPADJUNCTS">[SOAPADJUNCTS]</a>), as well as for non-RPC SOAP
Request/Response messages (cf. <a href="http://www.w3.org/TR/soap12-part2/#singlereqrespmep">section
6.2</a> and <a href="http://www.w3.org/TR/soap12-part2/#soapresmep">section 6.3</a>
of <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#SOAPADJUNCTS">[SOAPADJUNCTS]</a>). Indeed, non-normative conventions
are suggested which allow traditional Web servers (i.e., those not
specifically enabled for SOAP support) to interoperate with SOAP
clients using GET and resource representations in media type
application/soap+xml (cf. <a href="http://www.w3.org/TR/soap12-part2/#http-suptransmep">section
7.1.3</a> of <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#SOAPADJUNCTS">[SOAPADJUNCTS]</a>).</p>
<p><a href="http://www.w3.org/TR/wsdl12-bindings/#_http">Section
3</a> WSDL 1.2 Bindings <a href="http://www.w3.org/2001/tag/doc/whenToUseGet.html#WSDL">[WSDL]</a> provides a binding to
HTTP GET, which makes it possible to respect the principle of using
GET for safe operations. However, to represent safety in a more
straightforward manner, it should be a property of operations
themselves, not just a feature of bindings. As of publication of this
document, the W3C Web Services Description Working Group has plans to
specify a "safe" attribute for this purpose; see their <a href="http://dev.w3.org/cvsweb/%7Echeckout%7E/2002/ws/desc/issues/wsd-issues.html#x117">issue
117</a> for more information.</p>
</div>
<div>
<h2>7 Future Work</h2>
<ol type="1">
    <li>Reviewers of this finding asked about its applicability to HTTP
    PUT. Rather than address this question in this version of the finding,
    the TAG expects to address PUT semantics as part of <a href="http://www.w3.org/2001/tag/ilist#putMediaType-38">issue
    putMediaType-38</a>: "Relation of HTTP PUT to GET, and whether
    client headers to server are authoritative."
    </li>
</ol>
</div>
<div>
<h2>8 References</h2>
<dl><dt>RFC2119</dt><dd><a href="http://www.ietf.org/rfc/rfc2119.txt">S. Bradner <cite> Key words for use in RFCs to
Indicate Requirement Levels</cite>, RFC2119, March 1997.</a>  (See http://www.ietf.org/rfc/rfc2119.txt.)</dd><dt>RFC2396</dt><dd><a href="http://www.ietf.org/rfc/rfc2396.txt">T. Berners-Lee, R. Fielding,
L. Masinter. <cite>Uniform Resource Identifiers (URI): Generic
Syntax</cite>, RFC2396, August 1998.</a>  (See http://www.ietf.org/rfc/rfc2396.txt.)</dd><dt>RFC2518</dt><dd><a href="http://www.ietf.org/rfc/rfc2518.txt">Y. Goland, E. Whitehead, A. Faizi, S. Carter, D.
Jensen
<cite>HTTP Extensions for Distributed Authoring --
WEBDAV</cite>, RFC2518, February 1999.</a>  (See http://www.ietf.org/rfc/rfc2518.txt.)</dd><dt>RFC2616</dt><dd><a href="http://www.ietf.org/rfc/rfc2616.txt">R. Fielding, J. Gettys, J. Mogul, H. Frystyk,
L. Masinter, P. Leach, T. Berners-Lee <cite>Hypertext Transfer
Protocol -- HTTP/1.1</cite>, RFC2616, June 1999.</a>  (See http://www.ietf.org/rfc/rfc2616.txt.)</dd><dt>SOAPADJUNCTS</dt><dd><a href="http://www.w3.org/TR/2003/PR-soap12-part2-20030507/">M. Gudgin, M. Hadley, N. Mendelsohn,
J. J. Moreau, H. Frystyk Nielsen <cite>SOAP Version 1.2 Part 2:
Adjuncts</cite>, W3C Proposed Recommendation, 7 May 2003.</a>  (See http://www.w3.org/TR/2003/PR-soap12-part2-20030507/.)</dd><dt>WSDL</dt><dd><a href="http://www.w3.org/TR/2003/WD-wsdl12-bindings-20030124/">J. J. Moreau, J. Schlimmer <cite>Web Services
Description Language (WSDL) Version 1.2: Bindings</cite>, W3C
Working Draft, 24 January 2003.</a>  (See http://www.w3.org/TR/2003/WD-wsdl12-bindings-20030124/.)</dd><dt>TBL50K</dt><dd><a href="http://www.w3.org/DesignIssues/Architecture.html">T. Berners-Lee <cite>Web Architecture from 50,000
feet</cite>.</a>  (See http://www.w3.org/DesignIssues/Architecture.html.)</dd><dt>DEEPLINK</dt><dd><a href="http://www.w3.org/2001/tag/doc/deeplinking-20030217">T. Bray <cite>"Deep Linking" in the World Wide
Web</cite>, TAG finding, 17 Feb 2003.</a>  (See http://www.w3.org/2001/tag/doc/deeplinking-20030217.)</dd><dt>HTML401</dt><dd><a href="http://www.w3.org/TR/1999/REC-html401-19991224/">D. Raggett, A. Le Hors, I. Jacobs
<cite>HTML 4.01 Specification</cite>, W3C Recommendation, 24
Dec 1999.</a>  (See http://www.w3.org/TR/1999/REC-html401-19991224/.)</dd><dt>SSL3</dt><dd><a href="http://wp.netscape.com/eng/ssl3/draft302.txt">A. Frier, P. Karlton, and P. Kocher, <cite>The SSL 3.0
Protocol</cite>, Netscape Communications Corp., Nov 18,
1996.</a>  (See http://wp.netscape.com/eng/ssl3/draft302.txt.)</dd><dt>RFC2310</dt><dd><a href="http://www.ietf.org/rfc/rfc2310.txt">K. Holtman, <cite>The Safe Response Header</cite>
TUE, April 1998.</a>  (See http://www.ietf.org/rfc/rfc2310.txt.)</dd></dl></div>
<div>
<h2>9 Acknowledgments</h2>
<p>Dan Connolly edited the <a href="http://www.w3.org/2001/tag/doc/get7.html">10 June 2002
version</a> of this finding. Some of the content from that revision
is reused in this version, and Dan has been instrumental in subsequent
discussions about this version.</p>
<p>Thanks to David Orchard, Larry Masinter, Paul Prescod, Roy
Fielding, Martin D&#252;rst, and others for their feedback in
response to the <a href="http://lists.w3.org/Archives/Public/www-tag/2002Apr/0150.html">
15 April 2002 call for review</a>. Thanks also to Roger Cutler,
Joseph Reagle, Stuart Williams, and Noah Mendelsohn for their suggestions. Many thanks to all reviewers for their
contributions to this finding.</p>
</div>
</div>
<img src ="http://www.blogjava.net/sealyu/aggbug/296177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2009-09-23 16:04 <a href="http://www.blogjava.net/sealyu/archive/2009/09/23/296177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>