<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_鲲鹏</title><subtitle type="text">北冥有鱼，其名为鲲。鲲之大，不知其几千里也。化而为鸟，其名为鹏。鹏之背，不知其几千里也。怒而飞，其翼若垂天之云。</subtitle><id>http://feed.cnblogs.com/blog/u/20772/rss</id><updated>2011-12-19T02:07:43Z</updated><author><name>Sunlight</name><uri>http://www.cnblogs.com/xiaopeng84/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiaopeng84/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/20772/rss"/><entry><id>http://www.cnblogs.com/xiaopeng84/archive/2011/12/19/2292956.html</id><title type="text">jquery动态添加删除行</title><summary type="text">/Files/xiaopeng84/jquery添加删除行.7z</summary><published>2011-12-19T02:08:00Z</published><updated>2011-12-19T02:08:00Z</updated><author><name>Sunlight</name><uri>http://www.cnblogs.com/xiaopeng84/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiaopeng84/archive/2011/12/19/2292956.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiaopeng84/archive/2011/12/19/2292956.html"/><content type="html">&lt;a href="http://files.cnblogs.com/xiaopeng84/jquery添加删除行.7z"&gt;/Files/xiaopeng84/jquery添加删除行.7z&lt;/a&gt;&lt;a&gt;&lt;/a&gt;&lt;img src="http://www.cnblogs.com/xiaopeng84/aggbug/2292956.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiaopeng84/archive/2011/12/19/2292956.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xiaopeng84/archive/2011/08/18/2144382.html</id><title type="text">收藏网址</title><summary type="text">很棒的特效网址：http://www.lanrentuku.com/</summary><published>2011-08-18T06:22:00Z</published><updated>2011-08-18T06:22:00Z</updated><author><name>Sunlight</name><uri>http://www.cnblogs.com/xiaopeng84/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiaopeng84/archive/2011/08/18/2144382.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiaopeng84/archive/2011/08/18/2144382.html"/><content type="html">很棒的特效网址：&lt;a href="http://www.lanrentuku.com/"&gt;http://www.lanrentuku.com/&lt;/a&gt;&lt;img src="http://www.cnblogs.com/xiaopeng84/aggbug/2144382.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiaopeng84/archive/2011/08/18/2144382.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xiaopeng84/archive/2011/07/07/2100043.html</id><title type="text">Eclipse 修改项目名称</title><summary type="text">1：修改项目目录下：.project文件 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt; &amp;lt;projectDescription&amp;gt; &amp;lt;name&amp;gt;GZELearning&amp;lt;/name&amp;gt;2：项目右键属性 --&amp;gt; Web Project Settings --&amp;gt; Context root 3:修改项目目录下：.settings\org.eclipse.wst.common.component</summary><published>2011-07-07T06:15:00Z</published><updated>2011-07-07T06:15:00Z</updated><author><name>Sunlight</name><uri>http://www.cnblogs.com/xiaopeng84/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiaopeng84/archive/2011/07/07/2100043.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiaopeng84/archive/2011/07/07/2100043.html"/><content type="html">&lt;p&gt;1：修改项目目录下：.project文件 &lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;projectDescription&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;GZELearning&amp;lt;/name&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2：项目右键属性 --&amp;gt; Web Project Settings --&amp;gt; Context root &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3:修改项目目录下：.settings\org.eclipse.wst.common.component&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xiaopeng84/aggbug/2100043.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiaopeng84/archive/2011/07/07/2100043.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xiaopeng84/archive/2011/07/05/2098096.html</id><title type="text">SQL 实现返回一个字段中，某个字符出现的次数 Oracle</title><summary type="text">select 字段, length(replace(字段, &amp;#39;-&amp;#39;, &amp;#39;--&amp;#39;))-length(字段) as 字符出现次数 from 表名</summary><published>2011-07-05T03:05:00Z</published><updated>2011-07-05T03:05:00Z</updated><author><name>Sunlight</name><uri>http://www.cnblogs.com/xiaopeng84/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiaopeng84/archive/2011/07/05/2098096.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiaopeng84/archive/2011/07/05/2098096.html"/><content type="html">select 字段, length(replace(字段, '-', '--'))-length(字段)&amp;nbsp;&amp;nbsp; as&amp;nbsp;&amp;nbsp; 字符出现次数&amp;nbsp;&amp;nbsp; from&amp;nbsp;&amp;nbsp; 表名&lt;img src="http://www.cnblogs.com/xiaopeng84/aggbug/2098096.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiaopeng84/archive/2011/07/05/2098096.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xiaopeng84/archive/2011/04/28/2032122.html</id><title type="text">DIV/CSS 实现三列，左右两列固定，中间一列自适应</title><summary type="text">CSS: #left{width:200px;min-height:400px;float:left;} #center{min-height:400px;margin:0 210px;} #right{width:200px;min-height:400px;float:right};Html:&amp;lt;div style=&amp;quot;width:95%;height:600px;vertical-align:top&amp;quot;&amp;gt; &amp;lt;div id=&amp;quot;left&amp;quot;&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div id=&amp;quot;right&amp;quot;&amp;gt; &amp;</summary><published>2011-04-28T11:14:00Z</published><updated>2011-04-28T11:14:00Z</updated><author><name>Sunlight</name><uri>http://www.cnblogs.com/xiaopeng84/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiaopeng84/archive/2011/04/28/2032122.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiaopeng84/archive/2011/04/28/2032122.html"/><content type="html">&lt;p&gt;CSS:&lt;/p&gt;&#xD;
&lt;p&gt;#left{width:200px;min-height:400px;float:left;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #center{min-height:400px;margin:0 210px;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #right{width:200px;min-height:400px;float:right};&lt;/p&gt;&#xD;
&lt;p&gt;Html:&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;div style="width:95%;height:600px;vertical-align:top"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;div id="left"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;div id="right"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;div id="center"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: red"&gt;注意：HTML中三个div的顺序是 左、右、中；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xiaopeng84/aggbug/2032122.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiaopeng84/archive/2011/04/28/2032122.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xiaopeng84/archive/2011/04/21/2023760.html</id><title type="text">PowerDesigner15 操作记录</title><summary type="text">1：连接数据库 1):File-New Model 2):DataBase-Configure Connections; 2:建立逆向工程把数据库导入PD 1)：建立数据库的链接： 2)：建立完数据库的连接后，在【File】--【Reverse Engineer】--【Database】 3)：第三步：点击确定，如图所示： 4)：如图所示：注意点，如果数据库中的表很多时，操作耗费的时间很长，甚至把PD崩溃掉；</summary><published>2011-04-21T08:46:00Z</published><updated>2011-04-21T08:46:00Z</updated><author><name>Sunlight</name><uri>http://www.cnblogs.com/xiaopeng84/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiaopeng84/archive/2011/04/21/2023760.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiaopeng84/archive/2011/04/21/2023760.html"/><content type="html">&lt;p&gt;1：连接数据库&lt;/p&gt;&#xD;
&lt;p&gt;1):File-New Model&lt;/p&gt;&#xD;
&lt;p&gt;2):DataBase-Configure Connections;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img style="width: 664px; height: 513px" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/xiaopeng84/snap11.gif" width="664" height="513" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2:建立逆向工程把数据库导入PD&lt;/p&gt;&#xD;
&lt;p&gt;1)：建立数据库的链接：&lt;/p&gt;&#xD;
&lt;p&gt;2)：建立完数据库的连接后，在【File】--【Reverse Engineer】--【Database】&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/xiaopeng84/d31ba4f9fb045b5e6c22eba5.gif" width="551" height="292" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3)：&lt;span&gt;第三步：点击确定，如图所示：&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/xiaopeng84/d31ba4f9fbdf2eba5.gif" width="447" height="452" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;4)：如图所示：注意点，如果数据库中的表很多时，操作耗费的时间很长，甚至把PD崩溃掉；&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/xiaopeng84/3334456assdf.gif" width="494" height="350" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xiaopeng84/aggbug/2023760.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiaopeng84/archive/2011/04/21/2023760.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xiaopeng84/archive/2011/04/16/2017876.html</id><title type="text">使用gzip优化web应用(filter实现)</title><summary type="text">相关知识： gzip是http协议中使用的一种加密算法,客户端向web服务器端发出了请求后，通常情况下服务器端会将页面文件和其他资源，返回到客户端，客户端加载后渲染呈现，这种情况文件一般都比较大，如果开启Gzip ，那么服务器端响应后，会将页面，JS,CSS等文本文件或者其他文件通过高压缩算法将其压缩，然后传输到客户端，由客户端的浏览器负责解压缩与呈现。通常能节省40%以上的流量（一般都有60%左右），一些PHP，JSP文件也能够进行压缩。实 现： Tomcat 开启Gzip ：1.找到Tomcat 目录下的conf下的server.xml，并找到如下信息Connector port=&amp;quo</summary><published>2011-04-16T03:08:00Z</published><updated>2011-04-16T03:08:00Z</updated><author><name>Sunlight</name><uri>http://www.cnblogs.com/xiaopeng84/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiaopeng84/archive/2011/04/16/2017876.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiaopeng84/archive/2011/04/16/2017876.html"/><content type="html">&lt;p&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;span&gt;&lt;strong&gt;相关知识：&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;span&gt;　　gzip&lt;/span&gt;是http协议中使用的一种加密算法,客户端向web服务器端发出了请求后，通常情况下服务器端会将页面文件和其他资源，返回到客户端，客户端加载后渲染呈现，这种情况文件一般都比较大，如果开启&lt;span&gt;Gzip&lt;/span&gt; ，那么服务器端响应后，会将页面，JS,CSS等文本文件或者其他文件通过高压缩算法将其压缩，然后传输到客户端，由客户端的浏览器负责解压缩与呈现。通常能节省40%以上的流量（一般都有60%左右），一些PHP，&lt;span&gt;JSP&lt;/span&gt;文件也能够进行压缩。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;实&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 现：&lt;/strong&gt;　　&lt;/p&gt;&#xD;
&lt;p&gt;Tomcat 开启&lt;span&gt;Gzip&lt;/span&gt; ：&lt;/p&gt;&#xD;
&lt;p&gt;1.找到Tomcat 目录下的conf下的server.xml，并找到如下信息&lt;/p&gt;&#xD;
&lt;div style="padding-bottom: 0px"&gt;&#xD;
&lt;div&gt;Connector port&lt;span style="color: rgb(51,153,51)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;"8080"&lt;/span&gt; maxHttpHeaderSize&lt;span style="color: rgb(51,153,51)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;"8192"&lt;/span&gt; maxThreads&lt;span style="color: rgb(51,153,51)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;"150"&lt;/span&gt; minSpareThreads&lt;span style="color: rgb(51,153,51)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;"25"&lt;/span&gt; maxSpareThreads&lt;span style="color: rgb(51,153,51)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;"75"&lt;/span&gt; enableLookups&lt;span style="color: rgb(51,153,51)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;"false"&lt;/span&gt; redirectPort&lt;span style="color: rgb(51,153,51)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;"8443"&lt;/span&gt; acceptCount&lt;span style="color: rgb(51,153,51)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;"100"&lt;/span&gt; connectionTimeout&lt;span style="color: rgb(51,153,51)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;"20000"&lt;/span&gt; disableUploadTimeout&lt;span style="color: rgb(51,153,51)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;"true"&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;将它改成如下的形式（其实在上面代码的下面已经有了，将他们打开而已。）：&lt;/p&gt;&#xD;
&lt;div style="padding-bottom: 0px"&gt;&#xD;
&lt;div&gt;&lt;span style="font-style: italic; color: rgb(128,128,128)"&gt;&amp;lt;!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,0); font-weight: bold"&gt;&amp;lt;Connector&lt;/span&gt; &lt;span style="color: rgb(0,0,102)"&gt;port&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"8080"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,102)"&gt;maxHttpHeaderSize&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"8192"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,102)"&gt;maxThreads&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"150"&lt;/span&gt; &lt;span style="color: rgb(0,0,102)"&gt;minSpareThreads&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"25"&lt;/span&gt; &lt;span style="color: rgb(0,0,102)"&gt;maxSpareThreads&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"75"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,102)"&gt;enableLookups&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"false"&lt;/span&gt; &lt;span style="color: rgb(0,0,102)"&gt;redirectPort&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"8443"&lt;/span&gt; &lt;span style="color: rgb(0,0,102)"&gt;acceptCount&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"100"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,102)"&gt;connectionTimeout&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"20000"&lt;/span&gt; &lt;span style="color: rgb(0,0,102)"&gt;disableUploadTimeout&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"true"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,102)"&gt;compression&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"on"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,102)"&gt;compressionMinSize&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"2048"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,102)"&gt;noCompressionUserAgents&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"gozilla, traviata"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,102)"&gt;compressableMimeType&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"text/html,text/xml"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,0); font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;这样，就能够对html和xml进行压缩了，如果要压缩css 和 js，那么需要将&lt;/p&gt;&#xD;
&lt;p&gt;compressableMimeType=&amp;#8221;text/html,text/xml&amp;#8221;加入css和js：&lt;/p&gt;&#xD;
&lt;div style="padding-bottom: 0px"&gt;&#xD;
&lt;div&gt;&lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,0); font-weight: bold"&gt;&amp;lt;Connector&lt;/span&gt; &lt;span style="color: rgb(0,0,102)"&gt;port&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"8080"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;.........&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,102)"&gt;compressableMimeType&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"text/html,text/xml,text/css,text/javas&lt;wbr&gt;cript"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,0); font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;你甚至可以压缩图片：&lt;/p&gt;&#xD;
&lt;p&gt;compressableMimeType=&amp;#8221;text/html,text/xml&amp;#8221;加入css和js：&lt;/p&gt;&#xD;
&lt;div style="padding-bottom: 0px"&gt;&lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,0); font-weight: bold"&gt;&amp;lt;Connector&lt;/span&gt; &lt;span style="color: rgb(0,0,102)"&gt;port&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"8080"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;.........&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,102)"&gt;compressableMimeType&lt;/span&gt;=&lt;span style="color: rgb(255,0,0)"&gt;"text/html,text/xml,text/css,text/javas&lt;wbr&gt;cript,image/gif,image/jpg"&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0,153,0)"&gt;&lt;span style="color: rgb(0,0,0); font-weight: bold"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;strong&gt;开启后重启Tomcat ，通过浏览器查看headers信息就能看到是否开启（firebug中有），如果开启了，那么transfer-encoding就会是&lt;span&gt;Gzip&lt;/span&gt;，否则就是chunked。&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;在代码级别完成web应用的&lt;span&gt;gzip&lt;/span&gt;压缩的开启：&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;1.Wrapper&amp;nbsp; 用来包装HttpServletResponse 对象&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="padding-bottom: 0px"&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;Java代码 &lt;embed height="15" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" src="http://8366.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" allowscriptaccess="never" allownetworking="internal" wmode="transparent" invokeurls="false" tplayername="SWF" splayername="SWF" mediawrapchecked="true" flashvars="clipboard=public%20class%20Wrapper%20extends%20HttpServletResponseWrapper%0A%7B%0A%09public%20static%20final%20int%20OT_NONE%20%3D%200%2C%20OT_WRITER%20%3D%201%2C%20OT_STREAM%20%3D%202%3B%0A%09private%20int%20outputType%20%3D%20OT_NONE%3B%0A%09private%20ServletOutputStream%20output%20%3D%20null%3B%0A%09private%20PrintWriter%20writer%20%3D%20null%3B%0A%09private%20ByteArrayOutputStream%20buffer%20%3D%20null%3B%0A%09public%20Wrapper(HttpServletResponse%20resp)%20throws%20IOException%20%7B%0A%09super(resp)%3B%0A%09buffer%20%3D%20new%20ByteArrayOutputStream()%3B%0A%09%7D%0A%09public%20PrintWriter%20getWriter()%20throws%20IOException%20%7B%0A%09if(outputType%3D%3DOT_STREAM)%0A%09throw%20new%20IllegalStateException()%3B%0A%09else%20if(outputType%3D%3DOT_WRITER)%0A%09return%20writer%3B%0A%09else%20%7B%0A%09outputType%20%3D%20OT_WRITER%3B%0A%09writer%20%3D%20new%20PrintWriter(new%20OutputStreamWriter(buffer%2C%20getCharacterEncoding()))%3B%0A%09return%20writer%3B%0A%09%7D%0A%09%7D%0A%09public%20ServletOutputStream%20getOutputStream()%20throws%20IOException%20%7B%0A%09if(outputType%3D%3DOT_WRITER)%0A%09throw%20new%20IllegalStateException()%3B%0A%09else%20if(outputType%3D%3DOT_STREAM)%0A%09return%20output%3B%0A%09else%20%7B%0A%09outputType%20%3D%20OT_STREAM%3B%0A%09output%20%3D%20new%20WrappedOutputStream(buffer)%3B%0A%09return%20output%3B%0A%09%7D%0A%09%7D%0A%09public%20void%20flushBuffer()%20throws%20IOException%20%7B%0A%09if(outputType%3D%3DOT_WRITER)%0A%09writer.flush()%3B%0A%09if(outputType%3D%3DOT_STREAM)%0A%09output.flush()%3B%0A%09%7D%0A%09public%20void%20reset()%20%7B%0A%09outputType%20%3D%20OT_NONE%3B%0A%09buffer.reset()%3B%0A%09%7D%0A%09public%20byte%5B%5D%20getResponseData()%20throws%20IOException%20%7B%0A%09flushBuffer()%3B%0A%09return%20buffer.toByteArray()%3B%0A%0A%09%7D%0A%09class%20WrappedOutputStream%20extends%20ServletOutputStream%20%7B%0A%09private%20ByteArrayOutputStream%20buffer%3B%0A%09public%20WrappedOutputStream(ByteArrayOutputStream%20buffer)%20%7B%0A%09this.buffer%20%3D%20buffer%3B%0A%09%7D%0A%09public%20void%20write(int%20b)%20throws%20IOException%20%7B%0A%09buffer.write(b)%3B%0A%09%7D%0A%09public%20byte%5B%5D%20toByteArray()%20%7B%0A%09return%20buffer.toByteArray()%3B%0A%09%7D%0A%09%7D%0A%7D%0A" quality="high"&gt;&lt;pre style="display: none"&gt;public class Wrapper extends HttpServletResponseWrapper&#xD;
{&#xD;
 public static final int OT_NONE = 0, OT_WRITER = 1, OT_STREAM = 2;&#xD;
 private int outputType = OT_NONE;&#xD;
 private ServletOutputStream output = null;&#xD;
 private PrintWriter writer = null;&#xD;
 private ByteArrayOutputStream buffer = null;&#xD;
 public Wrapper(HttpServletResponse resp) throws IOException {&#xD;
 super(resp);&#xD;
 buffer = new ByteArrayOutputStream();&#xD;
 }&#xD;
 public PrintWriter getWriter() throws IOException {&#xD;
 if(outputType==OT_STREAM)&#xD;
 throw new IllegalStateException();&#xD;
 else if(outputType==OT_WRITER)&#xD;
 return writer;&#xD;
 else {&#xD;
 outputType = OT_WRITER;&#xD;
 writer = new PrintWriter(new OutputStreamWriter(buffer, getCharacterEncoding()));&#xD;
 return writer;&#xD;
 }&#xD;
 }&#xD;
 public ServletOutputStream getOutputStream() throws IOException {&#xD;
 if(outputType==OT_WRITER)&#xD;
 throw new IllegalStateException();&#xD;
 else if(outputType==OT_STREAM)&#xD;
 return output;&#xD;
 else {&#xD;
 outputType = OT_STREAM;&#xD;
 output = new WrappedOutputStream(buffer);&#xD;
 return output;&#xD;
 }&#xD;
 }&#xD;
 public void flushBuffer() throws IOException {&#xD;
 if(outputType==OT_WRITER)&#xD;
 writer.flush();&#xD;
 if(outputType==OT_STREAM)&#xD;
 output.flush();&#xD;
 }&#xD;
 public void reset() {&#xD;
 outputType = OT_NONE;&#xD;
 buffer.reset();&#xD;
 }&#xD;
 public byte[] getResponseData() throws IOException {&#xD;
 flushBuffer();&#xD;
 return buffer.toByteArray();&#xD;
&#xD;
 }&#xD;
 class WrappedOutputStream extends ServletOutputStream {&#xD;
 private ByteArrayOutputStream buffer;&#xD;
 public WrappedOutputStream(ByteArrayOutputStream buffer) {&#xD;
 this.buffer = buffer;&#xD;
 }&#xD;
 public void write(int b) throws IOException {&#xD;
 buffer.write(b);&#xD;
 }&#xD;
 public byte[] toByteArray() {&#xD;
 return buffer.toByteArray();&#xD;
 }&#xD;
 }&#xD;
}&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;package com.shop.gzip;&lt;br /&gt;&lt;br /&gt;imp&lt;wbr&gt;ort java.io.ByteArrayOutputStream;&lt;br /&gt;imp&lt;wbr&gt;ort java.io.IOException;&lt;br /&gt;imp&lt;wbr&gt;ort java.io.OutputStreamWriter;&lt;br /&gt;imp&lt;wbr&gt;ort java.io.PrintWriter;&lt;br /&gt;&lt;br /&gt;imp&lt;wbr&gt;ort javax.servlet.ServletOutputStream;&lt;br /&gt;imp&lt;wbr&gt;ort javax.servlet.http.HttpServletResponse;&lt;br /&gt;imp&lt;wbr&gt;ort javax.servlet.http.HttpServletResponseWrapper;&lt;br /&gt;&lt;br /&gt;public class Wrapper extends HttpServletResponseWrapper {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static final int OT_NONE = 0, OT_WRITER = 1, OT_STREAM = 2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private int outputType = OT_NONE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private ServletOutputStream output = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private PrintWriter writer = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private ByteArrayOutputStream buffer = null;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Wrapper(HttpServletResponse resp) throws IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super(resp);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; buffer = new ByteArrayOutputStream();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public PrintWriter getWriter() throws IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (outputType == OT_STREAM)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new IllegalStateException();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else if (outputType == OT_WRITER)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return writer;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; outputType = OT_WRITER;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer = new PrintWriter(new OutputStreamWriter(buffer,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; getCharacterEncoding()));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return writer;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ServletOutputStream getOutputStream() throws IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (outputType == OT_WRITER)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new IllegalStateException();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else if (outputType == OT_STREAM)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return output;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; outputType = OT_STREAM;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; output = new WrappedOutputStream(buffer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return output;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void flushBuffer() throws IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (outputType == OT_WRITER)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.flush();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (outputType == OT_STREAM)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; output.flush();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void reset() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; outputType = OT_NONE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; buffer.reset();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public byte[] getResponseData() throws IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; flushBuffer();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return buffer.toByteArray();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class WrappedOutputStream extends ServletOutputStream {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private ByteArrayOutputStream buffer;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public WrappedOutputStream(ByteArrayOutputStream buffer) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.buffer = buffer;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void write(int b) throws IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; buffer.write(b);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public byte[] toByteArray() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return buffer.toByteArray();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;} &lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;2.过滤器&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;/p&gt;&#xD;
&lt;div style="padding-bottom: 0px"&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;Java代码 &lt;embed height="15" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" src="http://8366.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" allowscriptaccess="never" allownetworking="internal" wmode="transparent" invokeurls="false" tplayername="SWF" splayername="SWF" mediawrapchecked="true" flashvars="clipboard=public%20class%20GZipFilter%20implements%20Filter%0A%7B%0A%0A%09public%20void%20destroy()%0A%09%7B%0A%09%09%2F%2F%20TODO%20Auto-generated%20method%20stub%0A%09%09%0A%09%7D%0A%0A%09public%20void%20doFilter(ServletRequest%20request%2C%20ServletResponse%20response%2C%0A%09%09%09FilterChain%20chain)%20throws%20IOException%2C%20ServletException%20%0A%09%09%09%7B%0A%09%09%09System.out.println(%22%E8%BF%9B%E5%85%A5%E8%BF%87%E6%BB%A4%E5%99%A8%22)%3B%0A%09%09%09HttpServletResponse%20resp%20%3D%20(HttpServletResponse)response%3B%0A%09%09%09Wrapper%20wrapper%20%3D%20new%20Wrapper(resp)%3B%0A%09%09%09chain.doFilter(request%2C%20wrapper)%3B%0A%09%09%09byte%5B%5D%20gzipData%20%3D%20gzip(wrapper.getResponseData())%3B%0A%09%09%09resp.addHeader(%22Content-Encoding%22%2C%20%22gzip%22)%3B%0A%09%09%09resp.setContentLength(gzipData.length)%3B%0A%09%09%09ServletOutputStream%20output%20%3D%20response.getOutputStream()%3B%0A%09%09%09output.write(gzipData)%3B%0A%09%09%09output.flush()%3B%0A%09%09%09%7D%0A%0A%09public%20void%20init(FilterConfig%20arg0)%20throws%20ServletException%0A%09%7B%0A%09%09%2F%2F%20TODO%20Auto-generated%20method%20stub%0A%09%09%0A%09%7D%0A%0A%09private%20byte%5B%5D%20gzip(byte%5B%5D%20da&lt;wbr&gt;ta)%20%7B%0A%09%09ByteArrayOutputStream%20byteOutput%20%3D%20new%20ByteArrayOutputStream(10240)%3B%0A%09%09GZIPOutputStream%20output%20%3D%20null%3B%0A%09%09try%20%7B%0A%09%09output%20%3D%20new%20GZIPOutputStream(byteOutput)%3B%0A%09%09output.write(da&lt;wbr&gt;ta)%3B%0A%09%09%7D%0A%09%09catch%20(IOException%20e)%20%7B%7D%0A%09%09finally%20%7B%0A%09%09try%20%7B%0A%09%09output.close()%3B%0A%09%09%7D%0A%09%09catch%20(IOException%20e)%20%7B%7D%0A%09%09%7D%0A%09%09return%20byteOutput.toByteArray()%3B%0A%09%09%7D%0A%09%0A%7D%0A" quality="high"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div style="padding-bottom: 0px"&gt;&lt;pre style="display: none"&gt;public class GZipFilter implements &lt;span&gt;Filter&lt;/span&gt;&#xD;
{&#xD;
&#xD;
 public void destroy()&#xD;
 {&#xD;
  // TODO Auto-generated method stub&#xD;
  &#xD;
 }&#xD;
&#xD;
 public void doFilter(ServletRequest request, ServletResponse response,&#xD;
   FilterChain chain) throws IOException, ServletException &#xD;
   {&#xD;
   System.out.println("进入过滤器");&#xD;
   HttpServletResponse resp = (HttpServletResponse)response;&#xD;
   Wrapper wrapper = new Wrapper(resp);&#xD;
   chain.doFilter(request, wrapper);&#xD;
   byte[] gzipData = &lt;span&gt;gzip&lt;/span&gt;(wrapper.getResponseData());&#xD;
   resp.addHeader("Content-Encoding", "&lt;span&gt;gzip&lt;/span&gt;");&#xD;
   resp.setContentLength(gzipData.length);&#xD;
   ServletOutputStream output = response.getOutputStream();&#xD;
   output.write(gzipData);&#xD;
   output.flush();&#xD;
   }&#xD;
&#xD;
 public void init(FilterConfig arg0) throws ServletException&#xD;
 {&#xD;
  // TODO Auto-generated method stub&#xD;
  &#xD;
 }&#xD;
&#xD;
 private byte[] &lt;span&gt;gzip&lt;/span&gt;(byte[] da&lt;wbr&gt;ta) {&#xD;
  ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(10240);&#xD;
  GZIPOutputStream output = null;&#xD;
  try {&#xD;
  output = new GZIPOutputStream(byteOutput);&#xD;
  output.write(da&lt;wbr&gt;ta);&#xD;
  }&#xD;
  catch (IOException e) {}&#xD;
  finally {&#xD;
  try {&#xD;
  output.close();&#xD;
  }&#xD;
  catch (IOException e) {}&#xD;
  }&#xD;
  return byteOutput.toByteArray();&#xD;
  }&#xD;
 &#xD;
}&#xD;
&lt;/pre&gt;&lt;/div&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;package com.shop.gzip;&lt;br /&gt;&lt;br /&gt;imp&lt;wbr&gt;ort java.io.ByteArrayOutputStream;&lt;br /&gt;imp&lt;wbr&gt;ort java.io.IOException;&lt;br /&gt;imp&lt;wbr&gt;ort java.util.zip.GZIPOutputStream;&lt;br /&gt;&lt;br /&gt;imp&lt;wbr&gt;ort javax.servlet.Filter;&lt;br /&gt;imp&lt;wbr&gt;ort javax.servlet.FilterChain;&lt;br /&gt;imp&lt;wbr&gt;ort javax.servlet.FilterConfig;&lt;br /&gt;imp&lt;wbr&gt;ort javax.servlet.ServletException;&lt;br /&gt;imp&lt;wbr&gt;ort javax.servlet.ServletOutputStream;&lt;br /&gt;imp&lt;wbr&gt;ort javax.servlet.ServletRequest;&lt;br /&gt;imp&lt;wbr&gt;ort javax.servlet.ServletResponse;&lt;br /&gt;imp&lt;wbr&gt;ort javax.servlet.http.HttpServletRequest;&lt;br /&gt;imp&lt;wbr&gt;ort javax.servlet.http.HttpServletResponse;&lt;br /&gt;&lt;br /&gt;public class GZipFilter implements Filter {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void destroy() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; * 判断浏览器是否支持GZIP&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; * @param request&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; * @return&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; private static boolean isGZipEncoding(HttpServletRequest request){&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; boolean flag=false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String encoding=request.getHeader("Accept-Encoding");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(encoding.indexOf("gzip")!=-1){&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return flag;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void doFilter(ServletRequest request, ServletResponse response,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;FilterChain chain) throws IOException, ServletException {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;HttpServletResponse resp = (HttpServletResponse) response;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpServletRequest req=(HttpServletRequest)request;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(isGZipEncoding(req)){&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wrapper wrapper = new Wrapper(resp);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;chain.doFilter(request, wrapper);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;byte[] gzipData = gzip(wrapper.getResponseData());&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;resp.addHeader("Content-Encoding", "gzip");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;resp.setContentLength(gzipData.length);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ServletOutputStream output = response.getOutputStream();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;output.write(gzipData);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;output.flush();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chain.doFilter(request, response);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void init(FilterConfig arg0) throws ServletException {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private byte[] gzip(byte[] da&lt;wbr&gt;ta) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(10240);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GZIPOutputStream output = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;output = new GZIPOutputStream(byteOutput);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;output.write(da&lt;wbr&gt;ta);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;output.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return byteOutput.toByteArray();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;3.在web.xml中配置 GZipFilter,当我们访问应用中以.do结尾的资源的使用,服务器端就开启http &lt;span&gt;gzip&lt;/span&gt;压缩,将压缩后的信息通过http 协议传递给浏览器.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;/p&gt;&#xD;
&lt;div style="padding-bottom: 0px"&gt;&#xD;
&lt;div&gt;Xml代码 &lt;embed height="15" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" src="http://8366.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" allowscriptaccess="never" allownetworking="internal" wmode="transparent" invokeurls="false" tplayername="SWF" splayername="SWF" mediawrapchecked="true" flashvars="clipboard=%3Cfilter%3E%0A%09%09%3Cfilter-name%3EecsideExport%3C%2Ffilter-name%3E%0A%09%09%3Cfilter-class%3Ecn.com.xinli.test.GZipFilter%3C%2Ffilter-class%3E%0A%09%3C%2Ffilter%3E%0A%20%3Cfilter-mapping%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cfilter-name%3EecsideExport%3C%2Ffilter-name%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%3Curl-pattern%3E*.html%3C%2Furl-pattern%3E%0A%20%20%20%20%20%20%20%20%20%3C%2Ffilter-mapping%3E%20%0A%09" quality="high"&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;filter&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;　　&amp;lt;&lt;/span&gt;&lt;span&gt;filter&lt;/span&gt;-name&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;ecsideExport&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;filter&lt;/span&gt;-name&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;span&gt;　　&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;filter&lt;/span&gt;-class&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;com.web.servlet.GZipFilter&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;filter&lt;/span&gt;-class&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;span&gt;&amp;nbsp;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;filter&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;filter&lt;/span&gt;-mapping&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;filter&lt;/span&gt;-name&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;ecsideExport&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;filter&lt;/span&gt;-name&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;url-pattern&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;*.do&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;url-pattern&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-bottom: 0px"&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;filter&lt;/span&gt;-mapping&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xiaopeng84/aggbug/2017876.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiaopeng84/archive/2011/04/16/2017876.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xiaopeng84/archive/2010/10/13/1849844.html</id><title type="text">增强我们的Visual Studio</title><summary type="text">这位同事是用Java的，最近的一个.NET项目中，他来帮我们做。所以他也开始使用VS2005了，我觉得他至少具有一条Java开发人员的典型特征&amp;#8212;&amp;#8212;对微软相当鄙夷，这个也就罢了，跟我没多大关系。其后在开发过程中，他经常抱怨VS2005不好用，又说Eclipse如何如何好用云云。说实话，本来我对微软及其产品也没有太多好感，但毕竟跟VS朝夕相处，日久生情，于是经常是他说VS哪个地...</summary><published>2010-10-13T02:36:00Z</published><updated>2010-10-13T02:36:00Z</updated><author><name>Sunlight</name><uri>http://www.cnblogs.com/xiaopeng84/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiaopeng84/archive/2010/10/13/1849844.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiaopeng84/archive/2010/10/13/1849844.html"/><content type="html">&lt;p&gt;这位同事是用Java的，最近的一个.NET项目中，他来帮我们做。所以他也开始使用VS2005了，我觉得他至少具有一条Java开发人员的典型特征&amp;#8212;&amp;#8212;对微软相当鄙夷，这个也就罢了，跟我没多大关系。其后在开发过程中，他经常抱怨VS2005不好用，又说Eclipse如何如何好用云云。说实话，本来我对微软及其产品也没有太多好感，但毕竟跟VS朝夕相处，日久生情，于是经常是他说VS哪个地方不好用，我就会为VS进行一番辩护。一段时间下来，至少也向他证明了，Eclipse的大部分功能VS2005也具备了；同时，不得不承认，VS2005的IDE有其不足。&lt;/p&gt;&#xD;
&lt;p&gt;于是我通过google找到一篇文章 &lt;a href="http://msmvps.com/blogs/jon.skeet/archive/2005/12/22/79631.aspx" target="_blank"&gt;&lt;font color="#3d81ee"&gt;Visual Studio vs Eclipse&lt;/font&gt;&lt;/a&gt;，想看看两者究竟对比如何。这篇文章里Jon Skeet更青睐于Eclipse，他提到了以下几点：&lt;/p&gt;&#xD;
&lt;ul&gt;&lt;li&gt;定位类型/资源&lt;/li&gt;&lt;li&gt;重载智能感知&lt;/li&gt;&lt;li&gt;组织引入&lt;/li&gt;&lt;li&gt;JUnit集成&lt;/li&gt;&lt;li&gt;导航链接&lt;/li&gt;&lt;li&gt;SourceSafe集成&lt;/li&gt;&lt;li&gt;结构差异比较&lt;/li&gt;&lt;li&gt;保存时编译&lt;/li&gt;&lt;li&gt;组合的文件和类浏览器 &lt;/li&gt;&lt;/ul&gt;&#xD;
&lt;p&gt;Jon Skeet认为，在上述方面Eclipse要强于VS2005，同时他也提到了VS2005的一些解决方案。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1、&lt;a href="http://www.usysware.com/DPack/Default.aspx" target="_blank"&gt;&lt;font color="#3d81ee"&gt;DPack&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;DPack是一组用于VS 2003/2005的免费工具。其目标是极大地提高开发人员的生产力，自动化重复过程，对VS的一些特性进行扩展。它包含多个浏览器工具，帮助开发人员对类、方法和程序集类型快速定位。DPack也包括增强了的书签功能，各种代码导航工具以及改进了的Surround with功能。来看几幅截图：&lt;/p&gt;&#xD;
&lt;p&gt;1.1 代码浏览器&lt;/p&gt;&#xD;
&lt;p&gt;使用便利的对话框帮助开发人员快速定位到代码成员，如方法和属性。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/CodeBrowser_2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="CodeBrowser" src="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/CodeBrowser_thumb.png" width="244" height="210" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;它与VS2005中的&amp;#8220;Find Symbol&amp;#8221;不同。因为它是即时更新的搜索&amp;#8212;&amp;#8212;当你键入时，列表会即时更新。&lt;/p&gt;&#xD;
&lt;p&gt;1.2 文件浏览器&lt;/p&gt;&#xD;
&lt;p&gt;使用便利的对话框帮助开发人员快速定位到任意数量的文件。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/FileBrowser_2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="FileBrowser" src="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/FileBrowser_thumb.png" width="244" height="144" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;1.3 解决方案浏览器&lt;/p&gt;&#xD;
&lt;p&gt;解决方案浏览器是类浏览器和文件浏览器的结合。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/SolutionBrowser_2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="SolutionBrowser" src="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/SolutionBrowser_thumb.png" width="244" height="223" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;1.4 框架（Framework）浏览器&lt;/p&gt;&#xD;
&lt;p&gt;定位到一个类型，及其相应的命名空间和程序集。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/FCLBrowser_2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="FCLBrowser" src="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/FCLBrowser_thumb.png" width="244" height="115" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;1.5 计数书签（Numbered bookmark）&lt;/p&gt;&#xD;
&lt;p&gt;计数书签帮我们通过数字设置和定位书签。每个文件共有10个，从0到9。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/Bookmarks1_2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Bookmarks1" src="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/Bookmarks1_thumb.png" width="244" height="127" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;1.6 Surround With&lt;/p&gt;&#xD;
&lt;p&gt;Surround With特性帮助我们用一些最常用的代码结构来包含选中代码。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/SurroundWith_2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="SurroundWith" src="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/SurroundWith_thumb.png" width="239" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;1.7 代码导航&lt;/p&gt;&#xD;
&lt;p&gt;代码导航功能帮助我们在代码元素间跳转。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/CodeNav_2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="CodeNav" src="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/CodeNav_thumb.png" width="244" height="79" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;1.8 解决方案统计数据&lt;/p&gt;&#xD;
&lt;p&gt;解决方案统计工具帮助我们评估整个解决方案的体积。包括文件数，代码行数等。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/SolutionStats_2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="SolutionStats" src="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/SolutionStats_thumb.png" width="244" height="84" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;1.9 解决方案备份工具&lt;/p&gt;&#xD;
&lt;p&gt;备份工具可用来备份整个解决方案或其中的单个项目。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/SolutionBackup1_2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="SolutionBackup1" src="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/SolutionBackup1_thumb.png" width="244" height="124" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/SolutionBackup2_2.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="SolutionBackup2" src="http://images.cnblogs.com/cnblogs_com/anderslly/WindowsLiveWriter/VisualStudio_11EEE/SolutionBackup2_thumb.png" width="244" height="122" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;1.10 支持选项&lt;/p&gt;&#xD;
&lt;p&gt;1.11 键盘架构&lt;/p&gt;&#xD;
&lt;p&gt;该插件确实非常方便好用，&lt;strong&gt;强烈推荐&lt;/strong&gt;！&lt;/p&gt;&#xD;
&lt;p&gt;2. &lt;a href="http://www.testdriven.net/" target="_blank"&gt;&lt;font color="#3d81ee"&gt;TestDriven.NET&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们可以单独使用NUnit，但这需要经常在VS和NUnit间切换，TestDriven.NET与VS集成，可以免除此痛。&lt;/p&gt;&#xD;
&lt;p&gt;3. &lt;a href="http://www.roland-weigelt.de/ghostdoc/" target="_blank"&gt;&lt;font color="#3d81ee"&gt;GhostDoc&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;GhostDoc是Visual Studio的一个免费插件，可以帮助开发人员编写XML格式的注释文档。我曾翻译过一篇&lt;a href="http://www.cnblogs.com/anderslly/archive/2006/12/14/ghostdocintroduction.html" target="_blank"&gt;&lt;font color="#3d81ee"&gt;对其介绍的小文&lt;/font&gt;&lt;/a&gt;，有兴趣看看。&lt;/p&gt;&#xD;
&lt;p&gt;4. &lt;a href="http://www.gotdotnet.com/Community/UserSamples/Download.aspx?SampleGuid=91D1A529-0288-46D4-AE57-17446A6058F7" target="_blank"&gt;&lt;font color="#3d81ee"&gt;PInvoke.NET&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;PInvoke.NET是一个wiki，用于建立正确的P/Invoke签名。&lt;/p&gt;&#xD;
&lt;p&gt;先写这些，大家手头有什么好东东，也来一起推荐吧，把我们的VS打造为更好的IDE！&lt;/p&gt;&#xD;
&lt;p&gt;更新:2007-10-23&lt;/p&gt;&#xD;
&lt;p&gt;5.&lt;span id="ctl00_ctl00_Content_TabContentPanel_Content_wikiSourceLabel"&gt; &lt;a href="http://www.codeplex.com/vssdkassist" target="_blank"&gt;&lt;font color="#3d81ee"&gt;VSSDK Assist&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;芭蕉兄提供,一个用于扩展VS的可视化工具集,目标是提供扩展VS的工具和指导.&lt;/p&gt;&#xD;
&lt;p&gt;6. Microsoft Visual Studio 2005 IDE Enhancements&lt;/p&gt;&#xD;
&lt;p&gt;主要功能:&lt;/p&gt;&#xD;
&lt;ol&gt;&lt;li&gt;Index Find&lt;/li&gt;&lt;li&gt;代码结构查看器&lt;/li&gt;&lt;li&gt;文件比较 &lt;/li&gt;&lt;/ol&gt;&#xD;
&lt;p&gt;下载请点击&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=CD7C6E48-E41B-48E3-881E-A0E6E97F9534&amp;amp;displaylang=en" target="_blank"&gt;&lt;font color="#3d81ee"&gt;这里&lt;/font&gt;&lt;/a&gt;.园子里的介绍页面&lt;a href="http://www.cnblogs.com/yanrongpi/archive/2006/10/29/543835.html" target="_blank"&gt;&lt;font color="#3d81ee"&gt;链接&lt;/font&gt;&lt;/a&gt;.&lt;/p&gt;&#xD;
&lt;p&gt;更新:2007-10-24&lt;/p&gt;&#xD;
&lt;p&gt;7. &lt;a href="http://www.codeplex.com/modeling"&gt;&lt;font color="#3d81ee"&gt;PowerToys for the Class Designer and Distributed System Designer&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这组Add-In增强了VS2005中已有的类设计器和分布式系统设计器的功能。&lt;/p&gt;&#xD;
&lt;p&gt;8. &lt;a href="http://bordecal.mvps.org/Nicole/ImportsSorter/" target="_blank"&gt;&lt;font color="#3d81ee"&gt;Bordecal.ImportsSorter add-in for Visual Studio 2005&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们在文件的开头可能会引入多个命名空间，包括.NET Frameword的，第三方，我们自己的，如果手动写还好些，如果是采用快捷键Shift+Alt+F10导入的，就可能比较乱了，该Add-In就可以帮我们来整理排序。其排序规则一定程度上还可定制。&lt;/p&gt;&#xD;
&lt;p&gt;9. &lt;a href="http://www.slickedit.com/content/view/441" target="_blank"&gt;&lt;font color="#3d81ee"&gt;SlickEdit Gadgets for Microsoft Visual Studio 2005&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;几个颇有意思的小玩意儿。&lt;/p&gt;&#xD;
&lt;p&gt;10. &lt;a href="http://weblogs.asp.net/gmilano/archive/2005/11/10/430240.aspx" target="_blank"&gt;&lt;font color="#3d81ee"&gt;CoolCommands for Visual Studio 2005 RTM&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在VS中添加多个有用的命令。&lt;/p&gt;&#xD;
&lt;p&gt;11. &lt;a href="http://www.codeplex.com/ResourceRefactoring" target="_blank"&gt;&lt;font color="#3d81ee"&gt;Resource Refactoring Tool&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;为开发人员提供一种简单的方式,将代码中的字符串硬编码提取到资源文件中。&lt;/p&gt;&#xD;
&lt;p&gt;12. &lt;a href="http://codebetter.com/blogs/scott.bellware/archive/2006/02/28/139446.aspx" target="_blank"&gt;&lt;font color="#3d81ee"&gt;NUnit Code Snippets for Visual Studio 2005&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;针对NUnit的一些Code Snippet。&lt;/p&gt;&#xD;
&lt;p&gt;13. &lt;span &gt;&lt;a href="http://www.csharper.net/blog/mru_cleaner_v1_0_0_5___now_serving_your_file_cleaning_needs.aspx" target="_blank"&gt;&lt;font color="#3d81ee"&gt;MRU Cleaner v1.0.0.5&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;MRU即Most Recently Used, 指VS中的Recent Files和Recent Projects列表。在开发过程中，对于有些项目/文件，我们可能以后不再打开了；或者已经移除了；或者是通过添加已存在的项目命令打开的，我们都不希望在MRU列表中看到，该add-in可以帮助我们进行整理。&lt;/p&gt;&#xD;
&lt;p&gt;14. &lt;a href="http://www.csharper.net/blog/clipboard_manager_upgraded_to_package.aspx#new_clipboard_manager_upgrade_1_0_0_4.aspx" target="_blank"&gt;&lt;font color="#3d81ee"&gt;Clipboard Manager&lt;/font&gt;&lt;/a&gt;&lt;a href="http://codebetter.com/blogs/scott.bellware/archive/2006/02/28/139446.aspx" target="_blank"&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;维护剪贴板的内容，而且可以将这些内容&amp;#8220;持久化&amp;#8221;到机器上，非常方便！&lt;/p&gt;&#xD;
&lt;p&gt;15. &lt;a href="http://www.devexpress.com/go/CodeRushX.aspx" target="_blank"&gt;&lt;font color="#3d81ee"&gt;CodeRush Xpress for C#&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;它包含了Code Rush和Refactor! Pro中的一些特性，这些特性包括增强的导航、选择工具、代码创建功能以及强大的重构支持。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;最后，推荐两个链接，这里有大量有用的东东：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.hanselman.com/blog/CommentView.aspx?guid=cbb7f3df-b9dd-4a4a-8cc6-83d87c117d26" target="_blank"&gt;&lt;font color="#3d81ee"&gt;Scott Hanselman's 2005 Ultimate Developer and Power Users Tool List&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://en.csharp-online.net/Category:Visual_Studio_2005_Add-ins" target="_blank"&gt;&lt;font color="#3d81ee"&gt;Visual Studio 2005 Add-ins List on en.csharp-online.net&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xiaopeng84/aggbug/1849844.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiaopeng84/archive/2010/10/13/1849844.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xiaopeng84/archive/2010/08/31/1813946.html</id><title type="text">.Net 热调试</title><summary type="text">解决方案右键属性，配置项选择【Debug】,配置属性全部取消选择。项目右键属性页，1：生产页：【运行启动页之前】选择 无生成　　　　　　　　2：启动选项：【启动操作】选择 不打开页。等待来自外部应用程序的请求。</summary><published>2010-08-31T10:12:00Z</published><updated>2010-08-31T10:12:00Z</updated><author><name>Sunlight</name><uri>http://www.cnblogs.com/xiaopeng84/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiaopeng84/archive/2010/08/31/1813946.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiaopeng84/archive/2010/08/31/1813946.html"/><content type="html">&lt;p&gt;解决方案右键属性，配置项选择【Debug】,配置属性全部取消选择。&lt;/p&gt;&#xD;
&lt;p&gt;项目右键属性页，1：生产页：【运行启动页之前】选择 无生成&lt;/p&gt;&#xD;
&lt;p&gt;2：启动选项：【启动操作】选择 不打开页。等待来自外部应用程序的请求。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xiaopeng84/aggbug/1813946.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiaopeng84/archive/2010/08/31/1813946.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xiaopeng84/archive/2010/08/31/1813944.html</id><title type="text">Axis 客户端调用</title><summary type="text">生产客户端文件：1：Axia官网下载axis-bin-1_4.zip，解压；2：命令行 进入解压后的文件夹3：执行命令D:\Axis\axis-1_4&amp;gt; Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java &amp;#8211;p com.web.Interfacehttp://127.0.0.1:8080/HZWebService/ser...</summary><published>2010-08-31T10:04:00Z</published><updated>2010-08-31T10:04:00Z</updated><author><name>Sunlight</name><uri>http://www.cnblogs.com/xiaopeng84/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xiaopeng84/archive/2010/08/31/1813944.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xiaopeng84/archive/2010/08/31/1813944.html"/><content type="html">&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&lt;strong&gt;生产客户端文件：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1&lt;span style="font-family: 宋体"&gt;：&lt;/span&gt;Axia&lt;span style="font-family: 宋体"&gt;官网下载&lt;/span&gt;axis-bin-1_4.zip&lt;span style="font-family: 宋体"&gt;，解压；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2&lt;span style="font-family: 宋体"&gt;：命令行&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;进入解压后的文件夹&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3&lt;span style="font-family: 宋体"&gt;：执行命令&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;D:\Axis\axis-1_4&amp;gt; Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java &amp;#8211;p &amp;nbsp;com&lt;/p&gt;&#xD;
&lt;p&gt;.web.Interface&amp;nbsp;http://127.0.0.1:8080/HZWebService/services/hello?wsdl&lt;/p&gt;&#xD;
&lt;p&gt;-p&lt;span style="font-family: 宋体"&gt;：后面跟是的包名；可自定义&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;最后的发布的&lt;/span&gt;service&lt;span style="font-family: 宋体"&gt;地址；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&lt;strong&gt;调用代码：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;在当前目录下会生成包名的文件夹，把所有生产的文件拷入项目；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-family: 'Courier New'; color: black; font-size: 10pt"&gt;EmployeeManageServiceLocator svc=&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt"&gt;new&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Courier New'; color: black; font-size: 10pt"&gt; EmployeeManageServiceLocator();&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 'Courier New'; color: black; font-size: 10pt"&gt;EmployeeManage service=svc.getEmployeeService();&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;通过&lt;/span&gt;service&lt;span style="font-family: 宋体"&gt;就可以调用接口的方法了；&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xiaopeng84/aggbug/1813944.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xiaopeng84/archive/2010/08/31/1813944.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
