EL自定义函数

JSP 标准标记库 (JSTL) 是自定义标记库的集合,它将许多 JSP 应用程序通用的核心功能封装为简单的标记,但有时候仍然无法满足我们的需求,这时候就要用到 EL 的自定义函数了。

创建 EL 自定义函数只需简单 3 步就可以轻松完成了。

1、新建一个类:

2、在/WEB-INF目录下新建一个 tld 文件:

3、将 tld 文件引入到要使用的 jsp 页面,并进行使用:

Win7操作系统搜索功能不可用的修复方法

可能遇到此问题的朋友并不多,我是这么认为的。

前几个月我就发现我的电脑中不可以使用搜索功能,由于没有对搜索功能有太大的需求,在Google中查找了很久后没找到答案,类似的问题也不多,我便以为可能是电脑一时的问题,或者Win7的搜索就有Bug,于是便放弃了。但随着电脑中的学习资料的增加,想要找特定的资料时由于文件名的命名都是以01、02这样的数字开头的,这样之前使用按文件名排序的功能也无法将同类的资料很好的排列出来了。只好再继续搜索解决方法了,最后终于找到了解决方法。但是通过一个非常不“主流”的关键字找不到,所以特写此文,希望可以帮到有需要的朋友:)

主要是对注册表的修复,所以直接上附件了:修复Windows 7搜索功能

如果不想下载附件的朋友可以继续往下看,下面有注册表的修改方法。

按键盘win+r以调出运行对话框,输入regedit打开注册表,然后找开 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace ,根据下面的信息检查你的注册表是否正确(以下的注册表项是与Win7搜索功能相关的)

以上是注册表文件的代码,你可以根据内容自行修改,也可以下载前面提供的附件。如果上面的已经修改完了,那么我们继续吧!

这些项目和值都比较长,所以建议直接下载附件或者将下面的内容复制一下,然后自己创建一个.reg的注册表文件,导入即可。

注:文件导入的时候可能会提示“无法导入”的错误信息,你可以在安全模式下修改。也可以不用理会,没有导入的项目说明是已经存在并且使用中的项目,所以不会产生影响。

使用JAVA请求需要Basic身份验证的网页

通过JAVA抓取页面时,有些页面会返回401(Unauthorized)响应状态码和www-authenticate响应头来要求客户端进行身份认证。这种认证有两种方式:BASIC和DIGEST,BASIC验证要求客户端对用户名和密码进行BASE64编码后传送给服务器。DIGEST的认证方式的细节比较复杂,会经过一系列的加密,所以很难被破译。

JAVA提供一个用于启用身份认证的类,可以支持HTTP协议中的多个认证方式,这个类是java.net.Authenticator,使用方法如下:

只需要创建一个继续自Authenticator的类,并且重写其中的getPasswordAuthentication()方法,将用户名和密码放入方法中,这样在需要使用身份认证的地方实现这个类就可以了。

Akismet(防Spam垃圾留言)的ASP类

今天将原来的日志评论审核机制换成了Akismet识别的方式。

AkismetWordPress中的一个优秀的防止Spam的插件,使用Akismet必须要去申请一个WordPress的Key,这个Key只要注册WordPress官方的用户就可以免费得到。但并不是只可以在WordPress中使用,只要你去阅读Akismet的API,你就可以整合到其他的博客程序中了。我这里提供一个Akismet的ASP类和一些API说明,想在自己的ASP程序中整合的话不妨看一看。

请先下载Akismet(ASP),废话不多说了,先看一段下面的代码:

最后,你可以根据 isSpam 这个变量返回的值来执行相应的操作。

我的这个类中,在类初始化函数中自动获取了用户的IP,你也可以自己来写一个函数,然后在调用类的时候来指定IP地址。类中“submitSpam()”函数是用来向Akismet报道一个Spam,报告后要通过审核,所以并不是会立即生效,所以你也可以在自己的程序中加入相应的屏蔽操作。“submitHam()”函数是来向Akismet说明提交的是一个标记错误的Spam,也要经过相应的审核。

PS,发现做为一个网民,不翻墙不行,所以今天下载了最新的Tor,终于又可以顺利的翻墙了:)

让IIS 7显示ASP的详细错误信息

由于要调试一些ASP程序,所以今天安装了IIS,安装时要注意展开“Internet 信息服务”——“万维网服务”——“应用程序开发功能”,在里面勾选“ASP”选项,IIS 7默认安装是不启用ASP的。

安装完成后调试页面时,当ASP代码出现问题后不会提示详细的错误信息,无论什么样的代码错误,只显示“500 – 内部服务器错误。”。因为IIS 7.5和IIS 6的管理方式完全不同,所以也无从下手,不知道在哪里设置显示详细错误信息,所以就去网上搜索相关的问题。

看来有很多网友也遇到这个问题了,解决方法很简单:

打开Internet 信息服务(IIS)管理器(运行——inetmgr),然后双击“ASP”打开属性页,如图一

Internet 信息服务(IIS)管理器
图一(Internet 信息服务(IIS)管理器)

然后展开“调试属性”,将“将错误发送到浏览器”的值改为“True”,然后点击右侧的“应用”以保存设置。如图二

“ASP”属性页
图二(“ASP”属性页)

最后双击打开“错误页”属性页,然后点击右侧的“编辑功能设置”,选择“详细错误(D)”。如图三

编辑错误页设置
图三(编辑错误页设置)

 

最后只需要在IE的“Internet 选项”中将“显示友好 HTTP 错误信息”勾选掉,这样就可以显示ASP的详细错误信息了。

确实,这样设置后IIS就已经设置好了,可是还有的网友显示“无法显示页面,因为发生内部服务器错误。”的提示,其实这是在你调试的网站的根目录下有一个名为“web.config”的文件,原来是这个文件在做怪,只要将其删除就就可以了。

这个问题让我足足费了3个小时的时间,可网上没有任何这种解决方法的资料,所以记录下来以便以后使用,也希望可以帮到遇到同样问题的朋友。

一个简单的Flex实例演示

早些时间就下载了Flex的教程,不过之前由于工作原因,一直没有好好学,每次都是看2、3个教程就没有耐心看下去了。现在的时间是充足的很,所以就可以好好的学习了。很想学JAVA,但没有相应的书籍,机子上有Flex的教程,所以先学这个。

今天看了很多教程,基本上是都吸收了,现在只会一些简单的实例,与PHP等网页编程语言结合还有数据绑定部分还没有开始学,不过今天很兴趣,Flex的应用真的太让人惊讶了。

废话少说,发来一个实例,想了解的朋友可以看一下这个实例。我想如果你看过这个实例,一定也很想学Flex了,因为她真的是很强大。很简单的代码,所以不提供源代码了,用户名是“唏嘘一世”,密码是“test”。

Flex表单登陆实例

Flex表单登陆实例

删除网页快照的方法

近来有很多网友加我QQ,向我询问如何删除网页快照,大多数是谷歌中的快照。

昨天在CCTV 2看到一篇关于删除网页快照的报道,还有专门这样的网络公关公司,真是惊叹他们的赚钱方式。

因为他们都反映,在百度删除一个快照只需要发封邮件就可以马上删除了,而谷歌却找不到删除的办法。其实谷歌有一套非常完善的网页快照删除方案,而且也非常容易操作,最重要的是这种删除方法非常公平,不会被竞争对手所利用(赞一下谷歌)。

在谷歌中删除网页快照的方法,主要用到的工具叫做“网页删除请求工具”,可以通过这个工具删除3种情况的网页快照和索引:

这里我重点讲一下如何删除“显示在 Google 搜索结果中的信息或图片”,我想这种情况也是大多数网友所关注的。这种情况又分3种详细的解决方案:

  1. 已经修改或删除该页内容,不再包含与我有关的信息或图片。
  2. 网站所有者已经通过修改robots.txt或元标记拦截此网页,以使其不会被编入索引中。
  3. 无法与网站所有者取得联系,但搜索结果中的信息属于下列其中一种:
    * 我的社保号或身份证号
    * 我的银行帐户或信用卡卡号
    * 我的手写签名图
    * 我的全名或我公司的名称出现在了包含成人内容的网站上,该网站在滥用 Google 的搜索结果。

上面提到的1条是最常用到的。很多网友在其他网站发布过自己的QQ号码、邮箱地址、真实姓名等个人信息,但后来不想让搜索引擎抓录和收取,这时就要用到第一种删除网页快照的方法了。这个方法必须要使被删除的网页符合以下要求中的任意一项:

  • 网页已经删除。
  • 网页已经修改并且不包括所搜索的关键字。

要达到以上的要求,网友们自己可以通过会员管理通道可以进行删除或者修改,也可以联系网站管理员协助来删除或者修改,但最后的目的是要达到上面的要求中的任何一项,达到上面的要求后,便可以通过 网页删除请求工具 来提交删除请求了,这个过程一般需要2、3天的时间。

基本网友是遇到第一种情况 ,后面的几点情况我就不说了,其实在这些文档官方都有非常详细的说明,但可能很少网友去查看,所以在这里发表出来,希望可以帮助需要帮助的网友们。更多更加详细的信息,可以通过访问 网页删除请求工具 来了解。

谷歌现在已经对“网页删除请求工具”做了更新,使用度可以更加方便的使用此工具提交删除请求,你只需要访问“网页删除请求工具”页面“提交新的删除请求”即可。另百度的快照删除除了拨打电话外还可以通过“网页投诉中心”进行删除请求。

修改QQ年龄为0,超级简单的方法

QQ个人资料

前天发现,我一直非常拉风的QQ年龄(年龄资料中没有数字,连0也没有)竟然成了19,很是郁闷。我记的从来没有改过QQ资料里的信息啊?难道腾讯神机妙算,知道我19了?再仔细回忆才发现,由于前段时间有好友在QQ上给我发来生日祝福,莫名其妙的说,自己的生日还早着呢,怎么会提前给我祝福了呢?原来是QQ空间里的资料被好友误以为是我的生日了,所以避免再引起误会,就去QQ空间将自己的生日资料改了一下,没想到这一改把我一直非常拉风的QQ资料中的年龄也改了,这都是QQ推出的“资料整合计划”造的孽。真是后悔呀,自从有这个QQ以来就一直没去填写QQ资料里的年龄才取得如此拉风的效果,没想到就让我这么给悔了。

哎,悔以晚矣,找个补救的方法吧,改成0也行!

QQ的个人设置中对年龄做了限制,只可以填写1-119之间的数字,改成0也不行。Google搜索了一下,很多网友都说可以用QQ早期的一些版本,如QQ2000、QQ2004可以修改,但是这些版本都已经不可以使用了,要么只有去找修改过的版本,下载安装太麻烦,所以没有去弄。

QQ空间里的资料既然可以同步到QQ资料中,那为什么不在这里下文章呢?QQ空间中没有“年龄”这一项,倒是有一个“生日”的填写项,可以选择的年份可以从1902年到2009年,2009年的生日年龄不就0了吗,我真是太聪明了。

知道如何修改了吧?在QQ空间的个人资料修改中,将生日的年份选择成2009,然后保存,这样QQ资料中的年龄就成了0了。

利用jQuery写的Tips(提示)效果

不得不说,jQuery真的很强大。今天突然想用jQuery替换掉原来的Tips提示功能。因为我考虑到原本的Tips插件“title”的值必须要有“::”这类的字符来区分标题和正文,有点不太友好。

我用Tips主要使用在“abbr”和“acronym”标签中,大家应该都知道,“abbr”是缩写的意思,“acronym”是取首字母的缩写词。原本的插件必需在“title”中加入“::”才会达到好的效果:

在这看来这样是错误的,CSS是Cascading Style Sheets取首字母后的缩写词,而并非是CSS::Cascading Style Sheets,但是要想使用原本的Tips实现效果,必须要将“title”的值设为“CSS::Cascading Style Sheets”。我自己写的Tips效果已经不存在这样的问题了,她会将CSS自动设置为Tips的标题来显示:

这样一来,不论是对用户还是搜索引擎都是很友好的,关键是这样做是正确的。

[Code]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title> Tips提示效果 </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content="唏嘘一世"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> <style> .tool-tips{ position: absolute; visibility: hidden; z-index: 13000; color: #fff; width:200px; } .tool-title{ font-size:13px; font-weight:bold; margin: 0; color: #9FD4FF; text-align: center; padding: 6px 6px 4px; background: url(http://zhangqian.me/theme/xixuyishi/bubble.png) top left; } .tool-text{ padding: 4px 8px 8px; font-size:12px; color: #cf9; background: url(http://zhangqian.me/theme/xixuyishi/bubble.png) bottom right; } </style> </head> <body> <script> $(document).ready(function(){ $(‘<div class="tool-tips"><div class="tool-title"></div><div class="tool-text"></div></div>’).appendTo(‘body’); $(‘abbr,acronym’).mouseover(function(){ $(this).css(‘cursor’,'help’); $(‘.tool-tips’).css(‘visibility’,'visible’); var xixu = this; if(xixu.title){xixu.yishi=xixu.title;xixu.title=”;} var dual = xixu.yishi.split(‘::’); if(dual.length>1){ myTitle = dual[0]; myText = dual[1]; }else{ myTitle = $(this).text(); myText = xixu.yishi; } $(‘.tool-title’).html(myTitle); $(‘.tool-text’).html(myText); }).mousemove(function(e){ $(‘.tool-tips’).css(‘top’,e.pageY+15); $(‘.tool-tips’).css(‘left’,e.pageX+15); }).mouseout(function(){ $(‘.tool-tips’).css(‘visibility’,'hidden’); }) }) </script> <abbr title="China">CN</abbr> <acronym title="Cascading Style Sheets">CSS</acronym> </body> </html>[/Code]

博客中的Ping分析

在博客中发表文章时,利用XML-RPC将博客中的更新信息通过Ping的方式通知各Feed服务商、搜索引擎,以便在最短的时间内让Feed更新和搜索引擎收录。但国内的有些Ping API却无法正常运行,下面是对国内一些常用的Ping API的测试结果。

http://blogsearch.google.com/ping/RPC2

这是谷歌“博客搜索”的Ping API地址,响应速度非常快 ,而且也很稳定。Ping发送后新发表的文章在10分钟内就被收录!

http://api.my.yahoo.com/RPC2

网上的Ping列表中都包括雅虎的这个API,但测试时一直提示响应解析失败,直接访问也无法访问,可能地址已经更改。

http://www.feedsky.com/api/RPC2

这是飞递(FeedSky)的Ping Server API地址。返回结果正确,但是不太稳定。

http://blog.youdao.com/ping/RPC2

这是有道的Ping地址,返回正确,但要注意360000毫秒内只能提交一次,还要注意,有道Ping的调用方法名是:weblogUpdates.extendedPing,写成weblogUpdates.Ping会出错,还有一点要注意,发送的数据的URL参数中必需包含4个参数,即:1.网站名称;2.网站地址;3.文章地址;4.feed地址,否则就会出错。

http://www.xianguo.com/xmlrpc/ping.php

这是鲜果的Ping地址,返回正确!

http://blog.iask.com/RPC2

这是新浪的Ping地址,当请求多个分类标签时返回错误:sorry,failing,但如果提交的的参数中,网址的参数只有一个时,返回正确。

从上面的测试结果可以看出,可用的Ping地址有:

http://blogsearch.google.com/ping/RPC2
http://www.feedsky.com/api/RPC2
http://blog.youdao.com/ping/RPC2
http://www.xianguo.com/xmlrpc/ping.php

http://blog.iask.com/RPC2

其中FeedSky返回的信息不明确 ,所以不知道可不可用。而新浪可接收的Ping数据中的网址不可以超过1个,有道接收的Ping信息不可以少于3个网址,并且调用方法名必须是:weblogUpdates.extendedPing(除FeedSky以外都可以用这个调用方法名),所以在提交Ping数据的时候要根据不同的情况做不同的判断,这样才能保证发送的Ping都可以正常运行!

今天发现百度也可以通过Ping服务来通知博客更新了,具体的参数及方法可以在百度搜索的帮助文档中查找。