﻿<?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-amp@java-随笔分类-WEB</title><link>http://www.blogjava.net/amplifier/category/21700.html</link><description>amplifier's java blog
&lt;br&gt;
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "ca-pub-5575070670019942";
/* blogjava */
google_ad_slot = "7055672771";
google_ad_width = 728;
google_ad_height = 90;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;</description><language>zh-cn</language><lastBuildDate>Wed, 13 Jan 2016 01:15:06 GMT</lastBuildDate><pubDate>Wed, 13 Jan 2016 01:15:06 GMT</pubDate><ttl>60</ttl><item><title>用httpclient和正则表达式完成一些无聊的重复性任务</title><link>http://www.blogjava.net/amplifier/archive/2016/01/12/429014.html</link><dc:creator>amp@java</dc:creator><author>amp@java</author><pubDate>Tue, 12 Jan 2016 07:54:00 GMT</pubDate><guid>http://www.blogjava.net/amplifier/archive/2016/01/12/429014.html</guid><wfw:comment>http://www.blogjava.net/amplifier/comments/429014.html</wfw:comment><comments>http://www.blogjava.net/amplifier/archive/2016/01/12/429014.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amplifier/comments/commentRss/429014.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amplifier/services/trackbacks/429014.html</trackback:ping><description><![CDATA[最近新部署了一个信息系统，厂家居然没有升级方案，所有数据都要重新输入，包括用户、角色等都要重新配置，真是操蛋。要是一个个录入简直是日狗了，这些用户在其他信息系统早已存在，但是每个都复制粘贴提交一遍也不是办法，于是就想用程序自动完成这些操作。步骤如下：<br />1、从其他信息系统的数据库导出用户信息，也可以直接从其他信息系统的界面把所有用户信息复制下来放在一个文本文件里，反正就是准备好数据源；<br />2、在需要录入用户信息的系统中，用人工操作的方式登录系统，并录入一个用户，同时用Wireshark抓包，查看整个过程要提交一些什么样的表单数据；<br />3、在程序中用httpclient提交同样的数据，完成登录，并从第1步的数据源中读取用户信息，然后循环提交录入用户所需的数据，完成用户的录入；<br />4、新系统没有默认的用户角色，是需要一个个修改的，是根据用户的ID来确定当前修改的用户，并且提交一个角色ID来进行设定，因此需要首先获取用户的ID，然后根据该ID来提交角色ID，而用户ID是通过用户列表页面获取到的，因此还需要通过正则表达式来获取所有用户的ID，然后循环提交角色ID，完成角色设定。<br /><br />花了不少时间才搞定，有几个地方需要注意：<br />1、如果表单数据不包含中文，直接把表单的Name和Value加在HttpPost的URL的?后面即可，不需要专门建立NameValuePair，如下所示：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">HttpPost&nbsp;httppost&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;HttpPost(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">http://1.1.1.1/test/adduser?userid=abc&amp;username=efg</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />httpclient.execute(httppost);</span></div><br />但是，如果表单数据包含中文，例如姓名，用这种方式提交的表单数据会出现乱码，即使通过URLEncoder进行编码后再发也不行，必须建立NameValuePair，再加到HttpPost的Entity里面，如下所示：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">HttpPost&nbsp;httppost&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;HttpPost(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">http://1.1.1.1/test/adduser?userid=abc</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">NameValuePair</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;nvps&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ArrayList</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">NameValuePair</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">();<br />nvps.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BasicNameValuePair(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">username</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">张三</span><span style="color: #000000; ">"</span><span style="color: #000000; ">));<br />httppost.setEntity(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;UrlEncodedFormEntity(nvps,&nbsp;HTTP.UTF_8));<br />httpclient.execute(httppost);</span></div><br />2、用于网页内容查找的正则表达式的使用方式一般为：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Pattern&nbsp;p&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Pattern.compile(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">.*?abc(whattoget)123.*?");</span><span style="color: #000000; "><br /></span><span style="color: #000000; ">Matcher&nbsp;m&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;p.matcher(line);<br /></span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(m.matches()){<br />&nbsp;&nbsp;&nbsp;&nbsp; String&nbsp;whattoget&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;m.group(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />}</span></div><div><span style="color: #000000; "></span><div><span style="color: #000000; ">"</span><span style="color: #000000; ">.*?abc(whattoget)123.*?"</span><span style="color: #000000; ">就是一个正则表达式，如果用于匹配一行的时候，由于要查找的内容是在行中间，所以前后需要加上.*?，表示前后可以是任意字符，也可以什么都没有，而表达式中间的(whattoget)就表示一个group，编号为1，编号为0的group是整个匹配的字符串，找到之后提取group(1)即可得到想要的内容。<br />测试正则表达式是一项很麻烦的工作，不过有个很好的软件可以完成此工作：RegexBuddy，支持各种语言的正则表达式的调试。<br />学习正则表达式的宝典是《Mastering Regular Expression》。<br /></span></div></div><img src ="http://www.blogjava.net/amplifier/aggbug/429014.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amplifier/" target="_blank">amp@java</a> 2016-01-12 15:54 <a href="http://www.blogjava.net/amplifier/archive/2016/01/12/429014.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为了你的幸福，请不要把提交按钮的name设置为submit</title><link>http://www.blogjava.net/amplifier/archive/2010/12/09/340146.html</link><dc:creator>amp@java</dc:creator><author>amp@java</author><pubDate>Thu, 09 Dec 2010 07:02:00 GMT</pubDate><guid>http://www.blogjava.net/amplifier/archive/2010/12/09/340146.html</guid><wfw:comment>http://www.blogjava.net/amplifier/comments/340146.html</wfw:comment><comments>http://www.blogjava.net/amplifier/archive/2010/12/09/340146.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amplifier/comments/commentRss/340146.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amplifier/services/trackbacks/340146.html</trackback:ping><description><![CDATA[这个不仅仅是IE6的错，而是所有IE的错！！<br />
IE有一个特别随意的功能，就是能够通过Element的name来操作一个Element，有些人觉得这个功能很方便，实际它不仅不符合标准，还会导致IE自己变得莫名其妙。<br />
假如你的Form有一个提交按钮的name="submit"，那么，很遗憾，你这个form无论如何都不能通过Javascript来提交，只要你一调用了这个form的submit()方法，IE就会告诉你它不支持这个方法！这不是搞笑吗？哪个浏览器会不支持form的submit()方法？虽然IE不标准，也不至于这样吧？对不起，就是这样。<br />
<br />
因为当你调用form的方法submit()，它首先想到的是你的提交按钮！<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">theForm.submit()</span></div>
这个语句在IE看来并不是调用theForm的submit方法，而是调用了名字为submit的提交按钮！如果你在某个元素对象后面加个括号，会有什么效果？当然就是出错。在IE的独特视角下，上面这个语句与下面这个语句的效果一样：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">(theForm.submit)();</span></div>
前一个括号代表了名称为submit的按钮对象，后面那个括号就无法理解了，所以IE告诉你不支持这个方法。<br />
<br />
IE整个家族都是如此的丑陋！<br />
<br />
<img src ="http://www.blogjava.net/amplifier/aggbug/340146.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amplifier/" target="_blank">amp@java</a> 2010-12-09 15:02 <a href="http://www.blogjava.net/amplifier/archive/2010/12/09/340146.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>丑陋的IE6</title><link>http://www.blogjava.net/amplifier/archive/2010/12/08/340095.html</link><dc:creator>amp@java</dc:creator><author>amp@java</author><pubDate>Wed, 08 Dec 2010 12:51:00 GMT</pubDate><guid>http://www.blogjava.net/amplifier/archive/2010/12/08/340095.html</guid><wfw:comment>http://www.blogjava.net/amplifier/comments/340095.html</wfw:comment><comments>http://www.blogjava.net/amplifier/archive/2010/12/08/340095.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/amplifier/comments/commentRss/340095.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amplifier/services/trackbacks/340095.html</trackback:ping><description><![CDATA[一直都看到很多人说，IE6是Web开发人员的恶梦，以前我单位的内部网络，所有电脑装的都是IE6，我只针对IE6开发，似乎没什么感觉，反正在我的电脑上看到什么样的，其他电脑上看到也是一样的。<br />
后来因为某公司给我们做的一个系统运行速度实在太慢，我把自己的电脑更新到IE8，发现速度快了很多，但是有些东西不兼容，我对那些不兼容的功能使用得比较少，就不管了。<br />
终于，我自己又要开发一个小项目，用了一个网上下载的CSS模板，发现里面很多针对IE的注释，从IE 5到IE 8都有，反正我电脑上看着效果不错，于是就用了。<br />
辛苦了好几天，我那项目基本完工了，想在IE6上看看效果，Shit，本来显示在页面右方主要区域的表格掉在了左边导航栏的下面，表格里面一些DIV的下划线莫名其妙地不见了，这些东西在我的电脑上显示得好好的，也没用到什么特别的东西，怎么差别会这么大呢？<br />
一个个问题排查：<br />
表格问题，在IE6上表现得有些诡异，显示完之后表格是在下面的，但是鼠标晃过导航栏里面的链接，表格又会自动跳到右方区域，真见鬼。改了一下布局的padding，一个表格好了。另外一个却还是掉下去，仔细研究了一下，把表格的宽度减少10px，好了。<br />
下划线问题，我用的是：
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #800000;">border-bottom:1px&nbsp;solid&nbsp;grey</span></div>
结果IE6不会显示出这条下划线。搜索一下才知道这是IE6的bug，它理解不了这么长的句子！必须写成这样：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #800000;">border-bottom-width:1px;<br />
border-bottom-style:solid;<br />
border-bottom-color:grey;</span></div>
还有比这更傻逼的吗？有！<br />
它显示出的线是黑色的，不是grey的！而且根据DIV里面内容的颜色不同，它还会变色！如果里面是红色的字，那么它下面的线也是红色，如果是绿色的字，下面的线也是绿色，如果没有指定颜色，它就是黑色，非常智能，但就是不显示你要的颜色！<br />
后来知道原来它根本不知道grey的意思，必须指定颜色代码才能解决。<br />
<br />
<br />
这就是IE6，没想到微软这么大一个公司还出了这么一个垃圾，而且出了那么多年，至今还占据中国浏览器市场的半壁江山！<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/amplifier/aggbug/340095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amplifier/" target="_blank">amp@java</a> 2010-12-08 20:51 <a href="http://www.blogjava.net/amplifier/archive/2010/12/08/340095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jQuery DateTimePicker 日期时间控件</title><link>http://www.blogjava.net/amplifier/archive/2009/05/22/277405.html</link><dc:creator>amp@java</dc:creator><author>amp@java</author><pubDate>Fri, 22 May 2009 11:37:00 GMT</pubDate><guid>http://www.blogjava.net/amplifier/archive/2009/05/22/277405.html</guid><wfw:comment>http://www.blogjava.net/amplifier/comments/277405.html</wfw:comment><comments>http://www.blogjava.net/amplifier/archive/2009/05/22/277405.html#Feedback</comments><slash:comments>19</slash:comments><wfw:commentRss>http://www.blogjava.net/amplifier/comments/commentRss/277405.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amplifier/services/trackbacks/277405.html</trackback:ping><description><![CDATA[
		<p>jQuery UI里面只有一个DatePicker，只能选择日期，不能选择时间，有人做了一个可以选择时间的DateTimePicker，在这里（<a href="http://razum.si/jQuery-calendar/TimeCalendar.html">http://razum.si/jQuery-calendar/TimeCalendar.html</a>）可以看到，把jquery.js，jquery-calendar.js，jquery-calendar.css下回来之后就可以用了。<br />但是有几个Bug需要自己修改：<br />1、当输入框里面的时间是0点时，控件显示不完整，这是因为有个函数有bug，如下所示：<br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">    </span>
				<span style="COLOR: #008000">/*</span>
				<span style="COLOR: #008000"> Ensure numbers are not treated as octal. </span>
				<span style="COLOR: #008000">*/</span>
				<span style="COLOR: #000000">
						<br />    trimNumber: </span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(value) {<br />        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000"> (value </span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #000000"> '')<br />            </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> '';<br />        </span>
				<span style="COLOR: #0000ff">while</span>
				<span style="COLOR: #000000"> (value.charAt(</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #000000"> '</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">' </span>
				<span style="COLOR: #000000">) {<br />            value </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> value.substring(</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">);<br />        }<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> value;<br />    },</span>
		</div>
		<p>
				<span style="COLOR: #0000ff">
						<font color="#000000">        </font>
						<span style="COLOR: #0000ff">while</span>
						<span style="COLOR: #000000"> (value.charAt(</span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">) </span>
						<span style="COLOR: #000000">==</span>
						<span style="COLOR: #000000"> '</span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">' </span>
						<span style="COLOR: #000000">) {<br />            value </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> value.substring(</span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">);<br />        }</span>
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>这一句，如果是0点的话，最终会出错，因为它的长度最后是1，不能执行substring(1)，改成下面就好了：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">    </span>
				<span style="COLOR: #008000">/*</span>
				<span style="COLOR: #008000"> Ensure numbers are not treated as octal. </span>
				<span style="COLOR: #008000">*/</span>
				<span style="COLOR: #000000">
						<br />    trimNumber: </span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(value) {<br />        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000"> (value </span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #000000"> '')<br />            </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> '';<br />        </span>
				<span style="COLOR: #0000ff">while</span>
				<span style="COLOR: #000000"> (value.charAt(</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">) </span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #000000"> '</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">' </span>
				<span style="COLOR: #000000">&amp;&amp;</span>
				<span style="COLOR: #000000"> value.length</span>
				<span style="COLOR: #000000">&gt;1</span>
				<span style="COLOR: #000000">) {<br />            value </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> value.substring(</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">);<br />        }<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> value;<br />    },</span>
		</div>
		<br />2、作者是在jQuery 1.1.2版本下实现的，现在最新版本是1.3.2，这个控件在1.3.2下会出现异常，不能选择日期，这是因为有几个选择器有问题：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span> <span style="COLOR: #000000">        $('.calendar_daysRow td[a]').hover( </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> highlight current day</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 2</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">() {<br /></span><span style="COLOR: #008080"> 3</span> <span style="COLOR: #000000">                $(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">).addClass('calendar_daysCellOver');<br /></span><span style="COLOR: #008080"> 4</span> <span style="COLOR: #000000">            }, </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">() {<br /></span><span style="COLOR: #008080"> 5</span> <span style="COLOR: #000000">                $(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">).removeClass('calendar_daysCellOver');<br /></span><span style="COLOR: #008080"> 6</span> <span style="COLOR: #000000">        });<br /></span><span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000">        $('.calendar_daysRow td[a]').click(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">() { </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> select day</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 8</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">            popUpCal.selectedDay </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> $(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">).html();<br /></span><span style="COLOR: #008080"> 9</span> <span style="COLOR: #000000">            popUpCal.selectDate();<br /></span><span style="COLOR: #008080">10</span> <span style="COLOR: #000000">        });</span></div>上面的$('.calendar_daysRow td[a]')在jQuery 1.3.2中不能使用，$(<span style="COLOR: #000000">"</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">)也是有问题的，同时，在FireFox中，&lt;a&gt;的不能设置背景颜色，所以hover函数不起作用，把它设在&lt;td&gt;也能达到相同的效果，改成以下代码即可：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span> <span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">$('.calendar_daysRow td a').hover( // highlight current day</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 2</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">        $('.calendar_daysRow td').hover( </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> highlight current day</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 3</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">() {<br /></span><span style="COLOR: #008080"> 4</span> <span style="COLOR: #000000">                $(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">).addClass('calendar_daysCellOver');<br /></span><span style="COLOR: #008080"> 5</span> <span style="COLOR: #000000">            }, </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">() {<br /></span><span style="COLOR: #008080"> 6</span> <span style="COLOR: #000000">                $(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">).removeClass('calendar_daysCellOver');<br /></span><span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000">        });<br /></span><span style="COLOR: #008080"> 8</span> <span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">$('.calendar_daysRow td[a]').click(function() { // select day</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080"> 9</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">        $('.calendar_daysRow td a').click(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">() { </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> select day</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">10</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">alert("click");</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">11</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">popUpCal.selectedDay = $("a",this).html();</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">12</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">            popUpCal.selectedDay </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> $(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">).html();<br /></span><span style="COLOR: #008080">13</span> <span style="COLOR: #000000">            popUpCal.selectDate();<br /></span><span style="COLOR: #008080">14</span> <span style="COLOR: #000000">        });</span></div></span><br />经过修改之后在IE7和FireFox3都能在jQuery 1.3.2环境下正常运行。<img src ="http://www.blogjava.net/amplifier/aggbug/277405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amplifier/" target="_blank">amp@java</a> 2009-05-22 19:37 <a href="http://www.blogjava.net/amplifier/archive/2009/05/22/277405.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jQuery初体验</title><link>http://www.blogjava.net/amplifier/archive/2009/05/21/272061.html</link><dc:creator>amp@java</dc:creator><author>amp@java</author><pubDate>Thu, 21 May 2009 10:42:00 GMT</pubDate><guid>http://www.blogjava.net/amplifier/archive/2009/05/21/272061.html</guid><wfw:comment>http://www.blogjava.net/amplifier/comments/272061.html</wfw:comment><comments>http://www.blogjava.net/amplifier/archive/2009/05/21/272061.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amplifier/comments/commentRss/272061.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amplifier/services/trackbacks/272061.html</trackback:ping><description><![CDATA[
		<p>初次使用jQuery，发现真是个好东西，把很多东西都简化了，循环基本上都去掉了，可以说是开创了JS的一种新模式，虽然开始觉得有点不习惯，但是很容易学习也很容易看懂。一个神奇的$原来有那么多的功能，很强大，呵呵。<br />最让人欣慰的是它屏蔽了所有浏览器的差别，可以在各种浏览器上用相同的代码实现相同的效果。<br /></p>
<img src ="http://www.blogjava.net/amplifier/aggbug/272061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amplifier/" target="_blank">amp@java</a> 2009-05-21 18:42 <a href="http://www.blogjava.net/amplifier/archive/2009/05/21/272061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BlueShoes的JavaScript控件</title><link>http://www.blogjava.net/amplifier/archive/2008/02/26/182182.html</link><dc:creator>amp@java</dc:creator><author>amp@java</author><pubDate>Tue, 26 Feb 2008 03:28:00 GMT</pubDate><guid>http://www.blogjava.net/amplifier/archive/2008/02/26/182182.html</guid><wfw:comment>http://www.blogjava.net/amplifier/comments/182182.html</wfw:comment><comments>http://www.blogjava.net/amplifier/archive/2008/02/26/182182.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amplifier/comments/commentRss/182182.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amplifier/services/trackbacks/182182.html</trackback:ping><description><![CDATA[之前用过一个带CheckBox的Tree控件，叫dhtmlXTree，支持xml数据，功能很好很强大，但是有个问题怎么也解决不了，不知道什么原因，就是第一次显示的时候能够正常显示树形列表，但第二次进入相同页面就会显示错误，所有图片都看不见，只看到其中的文字，而且这时候整个浏览器像死了一样，点击上面的任何链接都没反应，必须关闭重新打开才有效，或者等上十几分钟才反应过来，不知道是不是一直在后台运行某个Javascript脚本。虽然这个控件的源代码可以看到，但是一条注释都没有，都不知道哪个部分出了问题。<br />
<br />
在google上搜索替代方案时，看到了BlueShoes的树形控件，具有多种形态，包括CheckBox，RadioButton等，每种形态都有例子，而且有详细的规范的文档（phpdocument，与JavaDoc类似），关键是代码里面也有详细的注释，可以看到每个部分的实现原理。与dhtmlXTree使用XML存储数据不同的是，这个树形控件使用多维数组来存储数据，似乎可读性和效率稍差，但出错的几率也少了，不需要用到浏览器的XML处理。与前者一样也支持IE5。<br />
<br />
关于BlueShoes的树形控件的详细的情况可以看这里：<a href="http://www.blueshoes.org/en/javascript/tree/" target="_blank">http://www.blueshoes.org/en/javascript/tree/<br />
</a><br />
那个网站上还有很多其他控件，也是很优秀的，虽然它的后台是php框架，但客户端控件同样可以用于JSP。
<img src ="http://www.blogjava.net/amplifier/aggbug/182182.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amplifier/" target="_blank">amp@java</a> 2008-02-26 11:28 <a href="http://www.blogjava.net/amplifier/archive/2008/02/26/182182.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决AJAX中的浏览器缓存问题</title><link>http://www.blogjava.net/amplifier/archive/2008/02/26/182159.html</link><dc:creator>amp@java</dc:creator><author>amp@java</author><pubDate>Tue, 26 Feb 2008 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/amplifier/archive/2008/02/26/182159.html</guid><wfw:comment>http://www.blogjava.net/amplifier/comments/182159.html</wfw:comment><comments>http://www.blogjava.net/amplifier/archive/2008/02/26/182159.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/amplifier/comments/commentRss/182159.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amplifier/services/trackbacks/182159.html</trackback:ping><description><![CDATA[浏览器的缓存有时候显得很讨厌，明明已经更新了内容，就是不显示新的，只要URL不变，浏览器就不会去检查服务器是否已经更新，而是用缓存里的东西，起码在IE里是这样。<br />
使用AJAX经常需要动态更新某一过程的状态，例如短信发送的状态，如果相隔几秒查询一次，URL不变的话，显示出来的状态永远不会改变，因为浏览器第一次获取了内容之后就不再更新了。<br />
为了解决这个问题，最简单的办法就是在URL后面加上一个不断改变的查询字符串（query string），例如：<br />
request.jsp?q=q<span style="color: #ff0000">&amp;date=(<span class="keyword">new</span>&nbsp;Date()).getTime()<br />
</span><font style="color: #000000" color="#ff0000">红色部分就是不断改变的查询字符串。<br />
<br />
感谢<a href="http://wangcheng.javaeye.com/blog/135887">http://wangcheng.javaeye.com/blog/135887</a>的提示<br />
<br />
<a href="http://batmanwl.blog.sohu.com/71841783.html">http://batmanwl.blog.sohu.com/71841783.html</a>这里还可以看到多种解决方案</font>
<img src ="http://www.blogjava.net/amplifier/aggbug/182159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amplifier/" target="_blank">amp@java</a> 2008-02-26 10:33 <a href="http://www.blogjava.net/amplifier/archive/2008/02/26/182159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Now SMS/MMS 发送中国移动彩信</title><link>http://www.blogjava.net/amplifier/archive/2007/09/18/146235.html</link><dc:creator>amp@java</dc:creator><author>amp@java</author><pubDate>Tue, 18 Sep 2007 11:32:00 GMT</pubDate><guid>http://www.blogjava.net/amplifier/archive/2007/09/18/146235.html</guid><wfw:comment>http://www.blogjava.net/amplifier/comments/146235.html</wfw:comment><comments>http://www.blogjava.net/amplifier/archive/2007/09/18/146235.html#Feedback</comments><slash:comments>18</slash:comments><wfw:commentRss>http://www.blogjava.net/amplifier/comments/commentRss/146235.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amplifier/services/trackbacks/146235.html</trackback:ping><description><![CDATA[<a href="http://www.nowsms.com" target="_blank">Now SMS/MMS</a>是一个强大的短信/彩信发送服务器，它内置了彩信中心，在某些运营商的网络内可以通过普通的短信猫发送彩信，而不需要使用支持GPRS的短信猫，也就是说系统本身就具有了运营商的彩信中心的功能。然而，在中国移动的网络内是不能实现这种方式发送彩信的，必须通过移动梦网的彩信中心转发。<br />
彩信的发送其实是两个过程：<br />
1、向目标手机发送一条普通的提醒短信，其中包含了发送者号码、彩信的URL等信息，该URL指向彩信中心的某个web目录下的某个彩信文件；<br />
2、目标手机接收到这条提醒短信后，主动发起GPRS连接，根据短信中的URL向彩信中心提取该彩信，并显示出来。<br />
Now SMS/MMS 自带的彩信中心其实就是一个支持手机连接的web服务器，它把制作好的彩信放在某个web目录下，手机连接时就可以下载。<br />
然而，实践证明，如果使用中国移动的SIM卡，无论使用的是什么短信猫，都不能通过系统自带的彩信中心发送彩信。<br />
要设置成通过移动公司的彩信中心发送彩信，必须把系统的默认设置——使用自带的MMSC（彩信中心）——改为使用移动公司的MMSC。方法如下：<br />
在Now SMS/MMS Gateway配置程序中选择MMSC Routing，然后点击Add按钮，在弹出的对话框中建立一个新的MMSC配置，其中Acount Name和Account Description可以随便填，只是用来识别配置名称，因为系统可以设置多个MMSC。<span style="color: #ff0000">Default Sender Address必须留空，否则发送很难成功（有极少部分能够发送成功）。Allow Sender Address Override前的复选框也必须留空。Route messages to this account for recipient phone number(s)不用填（这是一个掩码，只有符合要求的号码才用这个路由，按照官方文档的说法，不填的话是不会用这个路由的，但实际上把它设成默认路由的话，即使不填也会用这个，也许填上+861*,1*会好些，表示中国的手机都用这个发）。Route messages to VASP via选择MM1，之后会出现更多的输入框，点击Look up Operator Seetings，出现一个选择运营商的对话框，很幸运，中国移动在里面，选择China - China Mobile，然后OK即可，系统自动把适合中国移动的内容填了进去。但是Network Connection和Modem Used两个下拉列表还没选好。这里必须使用对应的GPRS猫的调制解调器（在控制面板-电话和调制解调器选项-调制解调器-添加，按照提示一步步就能找到GPRS猫，看好哪个调制解调器对应哪个端口，从而知道哪个调制解调器对应哪个GPRS猫）。填好这些东西后点击Test Connection可以检测连接，成功就可以了，检测时间比较长，要耐心等待。填好之后点击OK，在MMSC Routing标签页里的Additional Routes里面就能看到刚才的那个配置名称，然后在Default Route里面选择刚才的配置名称作为默认路由就可以了。<br />
<span style="color: #000000">之后打开MMSC标签，配置自带的MMSC。虽然我们使用的是中国移动的MMSC，但通过web发送彩信时，必须先发送到系统自带的MMSC，再转发到移动的MMSC，所以必须把系统的MMSC也配置好。这里就是普通web服务器的配置（还有SMTP的配置，可选），把端口和IP选好后，还要注意Local Host Name or IP Address里要填入一个本机的IP，如果在仅在内网使用，可以直接填本机IP（外网的情况没有研究过，看看说明书先）。其他默认的就可以了。<br />
再打开Web标签页，把Web服务器配置好。<br />
打开浏览器，输入http://服务器IP:web服务器端口/，就能看到发送各种短信、彩信的链接，然后就可以发送彩信进行测试了。如果发送不成功，可以打开Serial #标签页，把底下的三个Debug选项都勾上，再发送一下，然后在Now SMS/MMS 的安装目录下找到MMSCDEBUG.LOG等几个LOG文件查看究竟是什么问题。文件太大会导致发送失败，系统不会自动检查的。文件大小的上限还不清楚，但超过100KB似乎就肯定不行。<br />
今天搞了一天这个东西，终于能正常发送彩信了。在这里备忘一下。慢慢再作深入研究。</span></span> <br />
<br />
感谢：<a href="http://blog.csdn.net/phiger/archive/2006/12/19/1449176.aspx " target="_blank">http://blog.csdn.net/phiger/archive/2006/12/19/1449176.aspx </a><br />
<br />
官方文档：<a href="http://www.nowsms.com/documentation/http://www.nowsms.com/documentation/ProductDocumentation/mms_notifications_and_content/Connecting_to_operator_MMSC.htm#SendingMMSMessagesProductDocumentation/mms_notifications_and_content/Connecting_to_operator_MMSC.htm#SendingMMSMessages">http://www.nowsms.com/documentation/ProductDocumentation/mms_notifications_and_content/Connecting_to_operator_MMSC.htm#SendingMMSMessages</a> 
<img src ="http://www.blogjava.net/amplifier/aggbug/146235.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amplifier/" target="_blank">amp@java</a> 2007-09-18 19:32 <a href="http://www.blogjava.net/amplifier/archive/2007/09/18/146235.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP出现随机性乱码</title><link>http://www.blogjava.net/amplifier/archive/2007/09/10/144080.html</link><dc:creator>amp@java</dc:creator><author>amp@java</author><pubDate>Mon, 10 Sep 2007 11:48:00 GMT</pubDate><guid>http://www.blogjava.net/amplifier/archive/2007/09/10/144080.html</guid><wfw:comment>http://www.blogjava.net/amplifier/comments/144080.html</wfw:comment><comments>http://www.blogjava.net/amplifier/archive/2007/09/10/144080.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/amplifier/comments/commentRss/144080.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amplifier/services/trackbacks/144080.html</trackback:ping><description><![CDATA[一个使用了JSTL的JSP页面，当字符集设为GB18030时，总会随机的出现一些乱码，莫名其妙的，有时候有，有时候没有，刷新一下可能会变，也可能不变；最令人懊恼的是，利用JSTL生成的JavaScript语句经常会漏掉一两个字母，害得整个JS程序段出错，每次漏的字目都不一样，根本没法改。<br />
似乎google搜不到相关信息，没办法，后来把编码改为UTF-8，就不会再出现这种情况了，但不知道以后还会不会出现。<br />
有时候上网易，也会见到一些字符出现乱码，刷新一下就没有了，看来这是JSP的通病，为什么就没有人提出解决方案呢？ 
<img src ="http://www.blogjava.net/amplifier/aggbug/144080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amplifier/" target="_blank">amp@java</a> 2007-09-10 19:48 <a href="http://www.blogjava.net/amplifier/archive/2007/09/10/144080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat的资源锁定</title><link>http://www.blogjava.net/amplifier/archive/2007/06/27/126465.html</link><dc:creator>amp@java</dc:creator><author>amp@java</author><pubDate>Wed, 27 Jun 2007 01:35:00 GMT</pubDate><guid>http://www.blogjava.net/amplifier/archive/2007/06/27/126465.html</guid><wfw:comment>http://www.blogjava.net/amplifier/comments/126465.html</wfw:comment><comments>http://www.blogjava.net/amplifier/archive/2007/06/27/126465.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/amplifier/comments/commentRss/126465.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amplifier/services/trackbacks/126465.html</trackback:ping><description><![CDATA[更新了某个webapp，把新的WAR包放到webapps目录下，Tomcat就会自动把原来的同名webapp删除，并把WAR包解压，运行新的webapp。但是，有时候Tomcat并不能把旧的webapp完全删除，通常会留下WEB-INF/lib下的某个jar包，必须关闭Tomcat才能删除，这就导致自动部署失败。<br>解决方法是在&lt;Context&gt;元素中增加一个属性<font face="Courier New">antiResourceLocking="true"，默认是"false"。但是这样会带来一个问题，Tomcat在运行对应的webapp时，会把下面的文件复制到一个临时目录里，所以如果你在服务器运行的时候修改了某个JSP,Tomcat并不会发现，看到的还是修改前的那个页面。<br><br>
<fieldset><legend>以下内容来自Tomcat文档：Context标签的位置</legend></font><span style="FONT-SIZE: 12pt" twffan="done">
<p><strong>Context</strong> elements may be explicitly defined:
<ul>
    <li>in the <code>$CATALINA_HOME/conf/context.xml</code> file: the Context element information will be loaded by all webapps
    <li>in the <code>$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default</code> file: the Context element information will be loaded by all webapps of that host
    <li>in individual files (with a ".xml" extension) in the <code>$CATALINA_HOME/conf/[enginename]/[hostname]/</code> directory. The name of the file (less the .xml) extension will be used as the context path. Multi-level context paths may be defined using #, e.g. <code>context#path.xml</code>. The default web application may be defined by using a file called <code>ROOT.xml</code>.
    <li>if the previous file was not found for this application, in an individual file at <code>/META-INF/context.xml</code> inside the application files
    <li>inside a <a href="http://tomcat.apache.org/tomcat-5.5-doc/config/host.html"><u><font color=#0000ff>Host</font></u></a> element in the main <code>conf/server.xml</code> </li>
</ul>
</span></fieldset><br><br>参考资料：<br>Tomcat 5.5 文档：<a href="http://tomcat.apache.org/tomcat-5.5-doc/config/context.html">http://tomcat.apache.org/tomcat-5.5-doc/config/context.html</a><br>关于antiResourceLocking的bug：<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37668">http://issues.apache.org/bugzilla/show_bug.cgi?id=37668</a><br>
<img src ="http://www.blogjava.net/amplifier/aggbug/126465.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amplifier/" target="_blank">amp@java</a> 2007-06-27 09:35 <a href="http://www.blogjava.net/amplifier/archive/2007/06/27/126465.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript按找拼音排序</title><link>http://www.blogjava.net/amplifier/archive/2007/04/16/110955.html</link><dc:creator>amp@java</dc:creator><author>amp@java</author><pubDate>Mon, 16 Apr 2007 07:08:00 GMT</pubDate><guid>http://www.blogjava.net/amplifier/archive/2007/04/16/110955.html</guid><wfw:comment>http://www.blogjava.net/amplifier/comments/110955.html</wfw:comment><comments>http://www.blogjava.net/amplifier/archive/2007/04/16/110955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amplifier/comments/commentRss/110955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amplifier/services/trackbacks/110955.html</trackback:ping><description><![CDATA[<p>JavaScript里的Array有一个sort方法：<br></p>
<fieldset><legend>来自微软的Jscript文档</legend>
<p>返回一个元素已经进行了排序的 <strong>Array</strong> 对象。</p>
<pre class=syntax>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done"><span style="COLOR: #000000" twffan="done">arrayobj.sort(sortfunction)&nbsp;</span></div>
</pre>
<h4 class=dtH4>参数</h4>
<dl>
<dt><em>arrayObj</em>
<dd>必选项。任意 <strong>Array</strong> 对象。
<dt><em>sortFunction</em>
<dd>可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略，那么元素将按照 ASCII 字符顺序进行升序排列。 </dd></dl>
<h4 class=dtH4>说明</h4>
<p><strong>sort</strong> 方法将 <strong>Array</strong> 对象进行适当的排序；在执行过程中并不会创建新的 <strong>Array</strong> 对象。</p>
<p>如果为 <em>sortfunction</em> 参数提供了一个函数，那么该函数必须返回下列值之一：
<ul type=disc>
    <li>负值，如果所传递的第一个参数比第二个参数小。
    <li>零，如果两个参数相等。
    <li>正值，如果第一个参数比第二个参数大。 </li>
</ul>
</fieldset>
<p><br>因此，排序的关键就在于如何设置sortfunction这个函数了。<br>在JavaScript中，字符串有一个localeCompare方法，能够根据区域设置来排序，中文的话就是按照拼音排序了。<br><br></p>
<fieldset><legend>来自微软的Jscript文档</legend>
<p>返回一个值，指出在当前的区域设置中两个字符串是否相同。</p>
<pre class=syntax><font color=#0000ff><em>stringVar</em></font>.<strong>localeCompare(</strong><em><font color=#0000ff>stringExp</font></em><strong>)</strong></pre>
<h4 class=dtH4>参数</h4>
<dl>
<dt><em>stringVar</em>
<dd>必选项。一个 <strong>String </strong>对象文字。
<dt><em>stringExp</em>
<dd>必选项。将与 <em>stringVar</em> 进行比较的字符串。 </dd></dl>
<h4 class=dtH4>说明</h4>
<p><strong>localeCompare</strong> 可以对 <em>stringVar</em> 和 <em>stringExp </em>进行一个区分区域设置的字符串比较并返回 &#8211;1、0 或 +1，这取决于系统中缺省区域设置的排序。</p>
<p>如果 <em>stringVar</em> 排序在 <em>stringExp</em> 之前，那么 <strong>localeCompare</strong> 返回 &#8211;1；如果 <em>stringVar</em> 排序在 <em>stringExp</em> 之后，则返回 +1。如果返回值为 0，那就说明这两个字符串是相同的。</p>
</fieldset><br>把以上两个方法结合，就可以轻松实现按照拼音顺序对多个字符串进行排序了。<br><br>例子可以见这里：<br><a href="http://hi.baidu.com/aaxh/blog/item/eb6ddaf953327858252df218.html">http://hi.baidu.com/aaxh/blog/item/eb6ddaf953327858252df218.html</a> 
<img src ="http://www.blogjava.net/amplifier/aggbug/110955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amplifier/" target="_blank">amp@java</a> 2007-04-16 15:08 <a href="http://www.blogjava.net/amplifier/archive/2007/04/16/110955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>