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

<channel>
	<title>ChenTaoqian&#039;s Blog &#187; web</title>
	<atom:link href="http://www.chentaoqian.com/archives/tag/web/feed" rel="self" type="application/rss+xml" />
	<link>http://www.chentaoqian.com</link>
	<description>主机,企业邮箱,域名,空间,服务器,Java,Oracle,PHP,Linux,JS,MySQL,Apache</description>
	<lastBuildDate>Wed, 30 Nov 2011 14:35:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>关注wap用户-删除JSP编译后的空行</title>
		<link>http://www.chentaoqian.com/archives/772</link>
		<comments>http://www.chentaoqian.com/archives/772#comments</comments>
		<pubDate>Sun, 08 Aug 2010 07:54:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JSP]]></category>
		<category><![CDATA[wap]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=772</guid>
		<description><![CDATA[wap用户不同于HTTP用户，对于他们小小的屏幕来说，每一行都是很宝贵的，任何一行无效的空行都会导致用户体验差。对于这种情况该如何呢？
方案1.在Tomcat安装目录/conf/web.xml中找到名叫&#8221;jsp&#8221;的servlet，添加下面一段代码：
&#60;init-param&#62;
&#60;param-name&#62;trimSpaces&#60;/param-name&#62;
&#60;param-value&#62;true&#60;/param-value&#62;
&#60;/init-param&#62;
添加代码后删除work缓存
方案2.&#60;%@ page trimDirectiveWhitespaces=&#8221;true&#8221; %&#62;每个页面加上,此方法最有效,但是比较麻烦
]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/772/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2个区别搞懂web.xml配置Session超时时间</title>
		<link>http://www.chentaoqian.com/archives/751</link>
		<comments>http://www.chentaoqian.com/archives/751#comments</comments>
		<pubDate>Wed, 07 Jul 2010 13:04:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[会话]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=751</guid>
		<description><![CDATA[为单个Web应用 配置超时时间可以在web.xml中使用&#60;session-config&#62;元素，如
&#60;web-app&#62;

&#60;!&#8211;filter.listener,servlet,and servlet- mapping等元素要在session-config之前&#8211;&#62;
 &#60;session-config&#62;
 &#60;session-timeout&#62;15 &#60;/session-timeout&#62;
 &#60;/session-config&#62;
 &#8230;

&#60;/web-app&#62;
这个时候的“15”单位是分钟！
 
如果在配置Servlet是指定初始化参数决定超时时间，例如下：
&#60;servlet&#62;
 &#60;servlet-name&#62;Example&#60;/servlet-name&#62;
 &#60;servlet-class&#62;exa.mp.le.Example2&#60;/servlet-class&#62;
 &#60;init-param&#62;
 &#60;param-name&#62;timeout&#60;/param-name&#62;
 &#60;param-value&#62;600&#60;/param-value&#62;
 &#60;/init-param&#62;
&#8230;
&#60;/servlet&#62;
这时候的“600”单位是秒钟！
另外，我们要注意HttpSession.getMaxInactiveInterval()方法返回的是与秒为单位的；
session.setMaxInactiveInterval(int seconds)方法参数的单位也是秒。
]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/751/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web缓存原理(三)</title>
		<link>http://www.chentaoqian.com/archives/414</link>
		<comments>http://www.chentaoqian.com/archives/414#comments</comments>
		<pubDate>Sun, 05 Jul 2009 03:25:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[计算机]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[原理]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=414</guid>
		<description><![CDATA[附：SQUID性能测试试验
phpMan.php是一个基于php的man page server，每个man page需要调用后台的man命令和很多页面格式化工具，系统负载比较高，提供了Cache Friendly的URL，以下是针对同样的页面的性能测试资料：
测试环境：Redhat 8 on Cyrix 266 / 192M Mem
测试程序：使用apache的ab(apache benchmark)：
测试条件：请求50次，并发50个连接
测试项目：直接通过apache 1.3 (80端口) vs squid 2.5(8000端口：加速80端口)
测试1：无CACHE的80端口动态输出：
ab -n 100 -c 10 http://www.chedong.com:81/phpMan.php/man/kill/1
This is ApacheBench, Version 1.3d &#60;$Revision: 1.1 $&#62; apache-1.3
Copyright &#38;copy; 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright &#38;copy; 1998-2001 The Apache Group, http://www.apache.org/
Benchmarking localhost (be patient)&#8230;..done
Server Software:        Apache/1.3.23              [...]]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/414/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Web缓存原理(二)</title>
		<link>http://www.chentaoqian.com/archives/412</link>
		<comments>http://www.chentaoqian.com/archives/412#comments</comments>
		<pubDate>Sun, 05 Jul 2009 03:21:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[计算机]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[原理]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=412</guid>
		<description><![CDATA[基于Squid的反向代理加速实现
Squid是一个更专用的代理服务器，性能和效率会比Apache的mod_proxy高很多。
如果需要combined格式日志补丁：
http://www.squid-cache.org/mail-archive/squid-dev/200301/0164.html
squid的编译：
./configure &#8211;enable-useragent-log  &#8211;enable-referer-log &#8211;enable-default-err-language=Simplify_Chinese &#8211;enable-err-languages=&#8221;Simplify_Chinese English&#8221; &#8211;disable-internal-dns  
make
#make install
#cd /usr/local/squid
make dir cache
chown squid.squid *
vi /usr/local/squid/etc/squid.conf
在/etc/hosts中：加入内部的DNS解析，比如：
192.168.0.4 www.chedong.com
192.168.0.4 news.chedong.com
192.168.0.3 bbs.chedong.com
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;cut here&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
# visible name
visible_hostname cache.example.com
# cache config: space use 1G and memory use 256M
cache_dir ufs /usr/local/squid/cache 1024 16 256
cache_mem 256 MB
cache_effective_user squid
cache_effective_group squid
http_port 80
httpd_accel_host virtual
httpd_accel_single_host off
httpd_accel_port 80
httpd_accel_uses_host_header on
httpd_accel_with_proxy on
# accelerater my domain only
acl acceleratedHostA dstdomain .example1.com
acl acceleratedHostB dstdomain .example2.com
acl acceleratedHostC [...]]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/412/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web缓存原理(一)</title>
		<link>http://www.chentaoqian.com/archives/408</link>
		<comments>http://www.chentaoqian.com/archives/408#comments</comments>
		<pubDate>Sun, 05 Jul 2009 03:18:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[计算机]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[原理]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=408</guid>
		<description><![CDATA[后台的内容管理系统的页面输出遵守可缓存的设计，这样就可以把性能问题交给前台的缓存服务器来解决了，从而大大简化CMS系统本身的复杂程度。
静态缓存和动态缓存的比较
静态页面的缓存可能有2种形式：其实主要区别就是CMS是否自己负责关联内容的缓存更新管理。

1. 静态缓存：是在新内容发布的同时就立刻生成相应内容的静态页面，比如：2003年3月22日，管理员通过后台内容管理界面录入一篇文章后，就立刻生成http://www.chentaoqian.com/tech/2003/03/22/001.html这个静态页面，并同步更新相关索引页上的链接。
2. 动态缓存：是在新内容发布以后，并不预先生成相应的静态页面，直到对相应内容发出请求时，如果前台缓存服务器找不到相应缓存，就向后台内容管理服务器发出请求，后台系统会生成相应内容的静态页面，用户第一次访问页面时可能会慢一点，但是以后就是直接访问缓存了。

如果去ZDNet等国外网站会发现他们使用的基于Vignette内容管理系统都有这样的页面名称：0,22342566,300458.html。其实这里的0,22342566,300458就是用逗号分割开的多个参数：
第一次访问找不到页面后，相当于会在服务器端产生一个doc_type= 0&#38;doc_id=22342566&#38;doc_template=300458的查询，
而查询结果会生成的缓存的静态页面： 0,22342566,300458.html

静态缓存的缺点：

复杂的触发更新机制：这两种机制在内容管理系统比较简单的时候都是非常适用的。但对于一个关系比较复杂的网站来说，页面之间的逻辑引用关系就成为一个非常非常复杂的问题。最典型的例子就是一条新闻要同时出现在新闻首页和相关的3个新闻专题中，在静态缓存模式中，每发一篇新文章，除了这篇新闻内容本身的页面外，还需要系统通过触发器生成多个新的相关静态页面，这些相关逻辑的触发也往往就会成为内容管理系统中最复杂的部分之一。
旧内容的批量更新： 通过静态缓存发布的内容，对于以前生成的静态页面的内容很难修改，这样用户访问旧页面时，新的模板根本无法生效。

在动态缓存模式中，每个动态页面只需要关心，而相关的其他页面能自动更新，从而大大减少了设计相关页面更新触发器的需要。
以前做小型应用的时候也用过类似方式：应用首次访问以后将数据库的查询结果在本地存成一个文件，下次请求时先检查本地缓存目录中是否有缓存文件，从而减少对后台数据库的访问。虽然这样做也能承载比较大的负载，但这样的内容管理和缓存管理一体的系统是很难分离的，而且数据完整性也不是很好保存，内容更新时，应用需要把相应内容的的缓存文件删除。但是这样的设计在缓存文件很多的时候往往还需要将缓存目录做一定的分布，否则一个目录下的文件节点超过3000，rm *都会出错。
这时候，系统需要再次分工，把复杂的内容管理系统分解成：内容输入和缓存这2个相对简单的系统实现。

后台：内容管理系统，专心的将内容发布做好，比如：复杂的工作流管理，复杂的模板规则等&#8230;&#8230;
前台：页面的缓存管理则可以使用缓存系统实现


所以分工后：内容管理和缓存管理2者，无论哪一方面可选的余地都是非常大的：软件（比如前台80端口使用SQUID对后台8080的内容发布管理系统进行缓存），缓存硬件，甚至交给akamai这样的专业服务商。
面向缓存的站点规划


一个利用SQUID对多个站点进行做WEB加速http acceleration方案：
原先一个站点的规划可能是这样的：
200.200.200.207 www.chentaoqian.com
200.200.200.208 news.chentaoqian.com
200.200.200.209 bbs.chentaoqian.com
200.200.200.205 images.chentaoqian.com
面向缓存服务器的设计中：所有站点都通过外部DNS指向到同一个IP：200.200.200.200/201这2台缓存服务器上（使用2台是为了冗余备份）

 

工作原理：
外部请求过来时，设置缓存根据配置文件进行转向解析。这样，服务器请求就可以转发到我们指定的内部地址上。
在处理多虚拟主机转向方面：mod_proxy比squid要简单一些：可以把不同服务转向后后台多个IP的不同端口上。
而squid只能通过禁用DNS解析，然后根据本地的/etc/hosts文件根据请求的域名进行地址转发，后台多个服务器必须使用相同的端口。
使用反向代理加速，我们不仅可以得到性能上的提升，而且还能获得额外的安全性和配置的灵活度：

配置灵活性提高：可以自己在内部服务器上控制后台服务器的DNS解析，当需要在服务器之间做迁移调整时，就不用大量修改外部DNS配置了，只需要修改内部DNS实现服务的调整。
数据安全性增加：所有后台服务器可以很方便的被保护在防火墙内。
后台应用设计复杂程度降低：原先为了效率常常需要建立专门的图片服务器images.chedong.com和负载比较高的应用服务器 bbs.chedong.com分离，在反向代理加速模式中，所有前台请求都通过缓存服务器：实际上就都是静态页面，这样，应用设计时就不用考虑图片和应用本身分离了，也大大降低了后台内容发布系统设计的复杂程度，由于数据和应用都存放在一起，也方便了文件系统的维护和管理。

基于Apache mod_proxy的反向代理缓存加速实现
Apache包含了mod_proxy模块，可以用来实现代理服务器，针对后台服务器的反向加速
安装apache 1.3.x 编译时：
&#8211;enable-shared=max &#8211;enable-module=most
注：Apache 2.x中mod_proxy已经被分离成mod_proxy和mod_cache：同时mod_cache有基于文件和基于内存的不同实现
创建/var/www/proxy，设置apache服务所用户可写
mod_proxy配置样例：反相代理缓存＋缓存
架设前台的www.example.com反向代理后台的www.backend.com的8080端口服务。
修改：httpd.conf
&#60;VirtualHost *&#62;
ServerName www.example.com
ServerAdmin admin@example.com
# reverse proxy setting
ProxyPass / http://www.backend.com:8080/
ProxyPassReverse / http://www.backend.com:8080/
# cache dir root
CacheRoot &#8220;/var/www/proxy&#8221;
# max cache storage
CacheSize 50000000
# hour: every 4 hour
CacheGcInterval 4
# max page expire time: hour
CacheMaxExpire 240
# Expire time = (now &#8211; last_modified) * CacheLastModifiedFactor
CacheLastModifiedFactor [...]]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/408/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>request.getAttribute和request.getParameter有什么区别？</title>
		<link>http://www.chentaoqian.com/archives/366</link>
		<comments>http://www.chentaoqian.com/archives/366#comments</comments>
		<pubDate>Tue, 23 Jun 2009 13:50:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JSP]]></category>
		<category><![CDATA[getAttribute]]></category>
		<category><![CDATA[getParameter]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[区别]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=366</guid>
		<description><![CDATA[HttpServletRequest类既有getAttribute()方法，也由getParameter()方法，这两个方法有以下区别：
（1）HttpServletRequest类有setAttribute()方法，而没有setParameter()方法
（2）当两个Web组件之间为链接关系时，被链接的组件通过getParameter()方法来获得请求参数，例如假定welcome.jsp和authenticate.jsp之间为链接关系，welcome.jsp中有以下代码：
&#60;a href=&#8221;authenticate.jsp?username=abcd&#8221;&#62;authenticate.jsp &#60;/a&#62;
或者：
&#60;form name=&#8221;form1&#8243; method=&#8221;post&#8221; action=&#8221;authenticate.jsp&#8221;&#62;
  请输入用户姓名：&#60;input type=&#8221;text&#8221; name=&#8221;username&#8221;&#62;
  &#60;input type=&#8221;submit&#8221; name=&#8221;Submit&#8221; value=&#8221;提交&#8221;&#62;
&#60;/form&#62;
在authenticate.jsp中通过request.getParameter(&#8220;username&#8221;)方法来获得请求参数username:
&#60;% String username=request.getParameter(&#8220;username&#8221;); %&#62;
（3）当两个Web组件之间为转发关系时，转发目标组件通过getAttribute()方法来和转发源组件共享request范围内的数据。假定authenticate.jsp和hello.jsp之间为转发关系。authenticate.jsp希望向hello.jsp传递当前的用户名字，如何传递这一数据呢？先在authenticate.jsp中调用setAttribute()方法：
&#60;%
String username=request.getParameter(&#8220;username&#8221;);
request.setAttribute(&#8220;username&#8221;，username);
%&#62;
&#60;jsp:forward page=&#8221;hello.jsp&#8221; /&#62;
在hello.jsp中通过getAttribute()方法获得用户名字:
&#60;% String username=(String)request.getAttribute(&#8220;username&#8221;); %&#62;
Hello: &#60;%=username %&#62;
从更深的层次考虑，request.getParameter()方法传递的数据，会从Web客户端传到Web服务器端，代表HTTP请求数据。request.getParameter()方法返回String类型的数据。
request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部，在具有转发关系的Web组件之间共享。这两个方法能够设置Object类型的共享数据。
]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/366/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>java类获取web应用的根目录</title>
		<link>http://www.chentaoqian.com/archives/161</link>
		<comments>http://www.chentaoqian.com/archives/161#comments</comments>
		<pubDate>Sat, 06 Jun 2009 09:29:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JSP]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[根目录]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=161</guid>
		<description><![CDATA[Java中获取web应用的根目录的方法有两种，分别是：
一、在servlet可以用一下方法取得：
request.getRealPath(&#8220;/&#8221;)
例如：filepach = request.getRealPath(&#8220;/&#8221;)+&#8221;//upload//&#8221;;
二、不从jsp,或servlet中获取,只从普通java类中获取：
String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
             saxReader = new SAXReader();
             if(path.indexOf(&#8220;WEB-INF&#8221;)&#62;0){
                path = path.substring(0,path.indexOf(&#8220;/WEB-INF/classes&#8221;)+16);//  &#8216;/WEB-INF/classes&#8217;为16位
                 document = saxReader.read(path+filename);
             }else{
                 document = saxReader.read(getClass().getResourceAsStream(filename));
             }
weblogic   tomcat 下都有效
String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
必须是在非静态方法中才可以使用
]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/161/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java获取IP对应的MAC地址</title>
		<link>http://www.chentaoqian.com/archives/146</link>
		<comments>http://www.chentaoqian.com/archives/146#comments</comments>
		<pubDate>Sat, 06 Jun 2009 08:46:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[nbtstat]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=146</guid>
		<description><![CDATA[用Java获取MAC地址，首先要获取IP地址，然后调用DOS下的nbtstat 命令来获取对应的MAC地址，具体代码如下：
public String getMACAddress(String ip){
    String str = &#8220;&#8221;;
    String macAddress = &#8220;&#8221;;
    try {
        Process p = Runtime.getRuntime().exec(&#8220;nbtstat -A &#8221; + ip);
        InputStreamReader ir = new InputStreamReader(p.getInputStream());
        LineNumberReader input = new LineNumberReader(ir);
        for (int i = 1; i &#60; 100; i++) {
            str = input.readLine();
            if (str != null) {
                if (str.indexOf(&#8220;MAC Address&#8221;) &#62; [...]]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/146/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP + MYSQL 对数据库内数据实现分页显示</title>
		<link>http://www.chentaoqian.com/archives/136</link>
		<comments>http://www.chentaoqian.com/archives/136#comments</comments>
		<pubDate>Sat, 06 Jun 2009 07:39:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[分页]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=136</guid>
		<description><![CDATA[　　很多PHP的初学者，都对于WEB页面的分页显示比较困惑，其实分页显示的原理非常简单。我顺手记下，以备不时之需。
问题：我的数据库结构如下
Create database book_list (
　id int unsigned not null auto_increment,
　name varchar(50) not null,
　author varchar(50) not null,
　primary key (id)
)
id： 为书籍的ID言标识，主键
name：书籍名称
author：书书籍作者
本例数据表的比较简单，主要是方便于解释。
现在我们需要这样分页显示这些数据，要求：数据表中已经有 11 条记录，每页显示数据为 5 条，分多页显示。
根据要求现在分析一下，
第一页显示 0 &#8211; 4 条记录
第二页显示 5 &#8211; 9 条记录
第三页显示 10 &#8211; 14 条记录
实际上可以得出如下结论，每次都需要从 $posion 条显示，显示数为 $pageSize ，在mysql中有这样一条SQL语句：
SELECT *
FROM book_list
WHERE 1
LIMIT 0, 5
意思是从第 0 条记录开始，读取 5 条记录。我们可以这一语句的特点来构建我们的函数，其实每次显示时就是要确定 $posion 即可了。实现代码如下：
$pageNO = 3; //确实显示第三页
$posion = ($pageNO &#8211; [...]]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/136/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>破解鼠标右键菜单屏蔽十一招</title>
		<link>http://www.chentaoqian.com/archives/107</link>
		<comments>http://www.chentaoqian.com/archives/107#comments</comments>
		<pubDate>Fri, 05 Jun 2009 15:56:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[破解]]></category>

		<guid isPermaLink="false">http://www.chentaoqian.com/?p=107</guid>
		<description><![CDATA[现在很多的网页设置了禁用鼠标右键，使很多的人没有办法继续操作，现在教你几招，让你轻松破解网页上的“鼠标右键菜单屏蔽”。
　　破解鼠标右键菜单屏蔽大法一：在网页上任意处将右键按下，等跳出对话框时不要放开右键，将鼠标移至对话框，用鼠标左键点“确定”，在将鼠标移动到想要的连接处，放开右键。 
　　破解鼠标右键菜单屏蔽大法二：同“1”，只是将鼠标移至对话框，用回车去“确认”。
　　破解鼠标右键菜单屏蔽大法三：用组合键“CTRL+F10”。
　　破解鼠标右键菜单屏蔽大法四： 在页面中点击右键，当出现警告窗口时，左手按键盘上的“CTRL+F4”键关闭提示窗口（以上的方法适用于仅禁用而没有隐藏右键菜单的网页）。
　　破解鼠标右键菜单屏蔽大法五：先用鼠标左键进入该页，记录下该页地址，用下载工具“添加新任务”强行下载（该方法适用于可以打开的连接）。
　　破解鼠标右键菜单屏蔽大法六： 同“4”，但是可以查看网页源代码，找到该连接后用下载工具“添加新任务”强行下载（该方法适合比较简单的网页）。
　　破解鼠标右键菜单屏蔽大法七：可以将该网页“另存为”到硬盘上，修改后直接下载（此法适用于有主页基础的人）。
　　破解鼠标右键菜单屏蔽大法八：在IE设置禁用所有的脚本文件，大胆下载后在改回原来的设置（此方法适用于对IE设置较了解的老鸟）。
　　破解鼠标右键菜单屏蔽大法九：直接将想要的图片用左键拖着，然后按下“WIN+D”键，这样一来就可以拖到桌面上保存（此方法适用于单手操作较灵活的同志）。
　　破解鼠标右键菜单屏蔽大法十：查看源代码如果发现用了这样的代码：
　　你可以在地址栏键入：javascript :alert(document.oncontextmenu=&#8221;&#8221;)回车，确定对话框后，直接使用右键。
　　破解鼠标右键菜单屏蔽大法十一：把该网站加入到IE的“受限制站点”（这个是在IE选项的→安全→受限制站点里面添加），这样限制网页中大部分脚本的运行，包括限制右键的脚本，然后刷新一下网页,一般来说就可以了，当然使用这种办法也有可能造成有的网页不能正常浏览，那就只好用上面一条了。
]]></description>
		<wfw:commentRss>http://www.chentaoqian.com/archives/107/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

