﻿<?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-☆蓝色梦想☆-随笔分类-Other</title><link>http://www.blogjava.net/zlsunnan/category/6365.html</link><description>世界总是反反覆覆错错落落地飘去 来不及叹息 生活不是平平淡淡从从容容的东西 不能放弃</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 03:18:22 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 03:18:22 GMT</pubDate><ttl>60</ttl><item><title>在线印章</title><link>http://www.blogjava.net/zlsunnan/archive/2006/08/30/66623.html</link><dc:creator>☆蓝色梦想☆</dc:creator><author>☆蓝色梦想☆</author><pubDate>Wed, 30 Aug 2006 03:38:00 GMT</pubDate><guid>http://www.blogjava.net/zlsunnan/archive/2006/08/30/66623.html</guid><wfw:comment>http://www.blogjava.net/zlsunnan/comments/66623.html</wfw:comment><comments>http://www.blogjava.net/zlsunnan/archive/2006/08/30/66623.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlsunnan/comments/commentRss/66623.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlsunnan/services/trackbacks/66623.html</trackback:ping><description><![CDATA[
		<a href="http://caishu.unihan.com.cn/de-webKZ.asp">http://caishu.unihan.com.cn/de-webKZ.asp</a>
		<br />
		<br />
		<a href="http://www.makepic.com/">http://www.makepic.com/</a>
		<br />
		<img height="120" alt="20064917571421224.gif" src="http://www.blogjava.net/images/blogjava_net/zlsunnan/20064917571421224.gif" width="120" border="0" />
		<br />
		<br />
		<img height="124" alt="printpic.gif" src="http://www.blogjava.net/images/blogjava_net/zlsunnan/printpic.gif" width="124" border="0" /> <br /><br /><a href="http://flashface.ctapt.de/">http://flashface.ctapt.de/</a><br /><br /><a href="http://www.eoool.com/" target="_blank">http://www.eoool.com</a><img src ="http://www.blogjava.net/zlsunnan/aggbug/66623.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlsunnan/" target="_blank">☆蓝色梦想☆</a> 2006-08-30 11:38 <a href="http://www.blogjava.net/zlsunnan/archive/2006/08/30/66623.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java实现FTP功能（源代码）</title><link>http://www.blogjava.net/zlsunnan/archive/2006/06/08/51556.html</link><dc:creator>☆蓝色梦想☆</dc:creator><author>☆蓝色梦想☆</author><pubDate>Thu, 08 Jun 2006 15:17:00 GMT</pubDate><guid>http://www.blogjava.net/zlsunnan/archive/2006/06/08/51556.html</guid><wfw:comment>http://www.blogjava.net/zlsunnan/comments/51556.html</wfw:comment><comments>http://www.blogjava.net/zlsunnan/archive/2006/06/08/51556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlsunnan/comments/commentRss/51556.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlsunnan/services/trackbacks/51556.html</trackback:ping><description><![CDATA[
		<a href="http://www.manbu.net/Lib/Class4/Sub5/1/1.asp">java实现FTP功能（源代码）</a>
<img src ="http://www.blogjava.net/zlsunnan/aggbug/51556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlsunnan/" target="_blank">☆蓝色梦想☆</a> 2006-06-08 23:17 <a href="http://www.blogjava.net/zlsunnan/archive/2006/06/08/51556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>仿google判断用户密码强度</title><link>http://www.blogjava.net/zlsunnan/archive/2006/06/08/51554.html</link><dc:creator>☆蓝色梦想☆</dc:creator><author>☆蓝色梦想☆</author><pubDate>Thu, 08 Jun 2006 15:14:00 GMT</pubDate><guid>http://www.blogjava.net/zlsunnan/archive/2006/06/08/51554.html</guid><wfw:comment>http://www.blogjava.net/zlsunnan/comments/51554.html</wfw:comment><comments>http://www.blogjava.net/zlsunnan/archive/2006/06/08/51554.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlsunnan/comments/commentRss/51554.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlsunnan/services/trackbacks/51554.html</trackback:ping><description><![CDATA[灵感来自GOOGLE--Gmail的注册表单，这是结合XMLHTTP和servlet以及客户端脚本Javascript来实现的一个给死板的表单程序增加亲和力的一个小玩意。下午看到遂花了几小时模仿着写了一个。前端代码均来自GMAIL的表单注册那里，后段验证密码强度的servlet是自己做的，算法有待商戳不过效果算是出来了。<br />·<a class="txt" href="http://www.gamvan.com/developer/java/J2SE/2005/832.html"><font color="#008800">[xml,jsp,servlet]仿google判断用户密码强度</font></a><br /><br />先来看客户端的JS代码，命名文  gvUserReg.js<br /><table cellspacing="1" cellpadding="4" width="98%" align="center" bgcolor="#bad5ef" border="0"><form><tbody><tr><td style="FONT-SIZE: 12px" bgcolor="#e6eef7" height="25">程序代码：</td></tr><tr><td style="FONT-SIZE: 12px" bgcolor="#ffffff"><span style="COLOR: #3f7f5f">// this code powered by <a href="http://www.google.com/" target="_blank">google</a></span><br />var agt = navigator.userAgent.toLowerCase();<br />var is_op = (agt.indexOf(<span style="COLOR: #2a00ff">"opera"</span>) != -1);<br />var is_ie = (agt.indexOf(<span style="COLOR: #2a00ff">"msie"</span>) != -1) &amp;&amp; <span style="FONT-WEIGHT: bold; COLOR: #7f0055">document</span>.all &amp;&amp; !is_op;<br />var is_ie5 = (agt.indexOf(<span style="COLOR: #2a00ff">"msie 5"</span>) != -1) &amp;&amp; <span style="FONT-WEIGHT: bold; COLOR: #7f0055">document</span>.all &amp;&amp; !is_op;<br /><br />function CreateXmlHttpReq(handler) {<br />  var xmlhttp = <span style="FONT-WEIGHT: bold; COLOR: #7f0055">null</span>;<br />  if (is_ie) {<br />    <span style="COLOR: #3f7f5f">// Guaranteed to be ie5 or ie6</span><br />    var control = (is_ie5) ? <span style="COLOR: #2a00ff">"Microsoft.XMLHTTP"</span> : <span style="COLOR: #2a00ff">"Msxml2.XMLHTTP"</span>;<br />    <span style="FONT-WEIGHT: bold; COLOR: #7f0055">try</span> {<br />      xmlhttp = <span style="FONT-WEIGHT: bold; COLOR: #7f0055">new </span>ActiveXObject(control);<br />      xmlhttp.onreadystatechange = handler;<br />    } <span style="FONT-WEIGHT: bold; COLOR: #7f0055">catch</span> (ex) {<br />      <span style="COLOR: #3f7f5f">// TODO: better help message</span><br />      alert(<span style="COLOR: #2a00ff">"You need to enable active scripting and activeX controls"</span>);  <br />    }<br />  } <span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span> {<br />    <span style="COLOR: #3f7f5f">// Mozilla</span><br />    xmlhttp = <span style="FONT-WEIGHT: bold; COLOR: #7f0055">new </span>XMLHttpRequest();<br />    xmlhttp.onload = handler;<br />    xmlhttp.onerror = handler;<br />  }<br />  <span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span>xmlhttp;<br />}<br />alert();<br /><span style="COLOR: #3f7f5f">// XMLHttp send POST request</span><br />function XmlHttpPOST(xmlhttp, url, data) {<br />  <span style="FONT-WEIGHT: bold; COLOR: #7f0055">try</span> {<br />    xmlhttp.open(<span style="COLOR: #2a00ff">"POST"</span>, url, <span style="FONT-WEIGHT: bold; COLOR: #7f0055">true</span>);<br />    xmlhttp.setRequestHeader(<span style="COLOR: #2a00ff">"Content-Type"</span>, <span style="COLOR: #2a00ff">"application/x-www-form-urlencoded; charset=UTF-8"</span>);<br />    xmlhttp.send(data);<br /><br />  } <span style="FONT-WEIGHT: bold; COLOR: #7f0055">catch</span> (ex) {<br />    <span style="COLOR: #3f7f5f">// do nothing</span><br />  }<br />}<br /><br /><span style="COLOR: #3f7f5f">// XMLHttp send GEt request</span><br />function XmlHttpGET(xmlhttp, url) {<br />  <span style="FONT-WEIGHT: bold; COLOR: #7f0055">try</span> {<br />    xmlhttp.open(<span style="COLOR: #2a00ff">"GET"</span>, url, <span style="FONT-WEIGHT: bold; COLOR: #7f0055">true</span>); <br />    xmlhttp.send(<span style="FONT-WEIGHT: bold; COLOR: #7f0055">null</span>);<br />  } <span style="FONT-WEIGHT: bold; COLOR: #7f0055">catch</span> (ex) {<br />    <span style="COLOR: #3f7f5f">// do nothing</span><br />  }<br />}<br /> var myxmlhttp;<br />  var isBrowserCompatible;<br />  var hidePasswordBar;<br />  ratingMsgs = <span style="FONT-WEIGHT: bold; COLOR: #7f0055">new </span>Array(6);<br />  ratingMsgColors = <span style="FONT-WEIGHT: bold; COLOR: #7f0055">new </span>Array(6);<br />  barColors = <span style="FONT-WEIGHT: bold; COLOR: #7f0055">new </span>Array(6);<br />  ratingMsgs[0] = <span style="COLOR: #2a00ff">"未评级"</span>;<br />  ratingMsgs[1] = <span style="COLOR: #2a00ff">"太短"</span>;<br />  ratingMsgs[2] = <span style="COLOR: #2a00ff">"弱"</span>;<br />  ratingMsgs[3] = <span style="COLOR: #2a00ff">"一般"</span>;<br />  ratingMsgs[4] = <span style="COLOR: #2a00ff">"很好"</span>;<br />  ratingMsgs[5] = <span style="COLOR: #2a00ff">"极佳"</span>; <span style="COLOR: #3f7f5f">//If the password server is down</span><br />  ratingMsgColors[0] = <span style="COLOR: #2a00ff">"#808080"</span>;<br />  ratingMsgColors[1] = <span style="COLOR: #2a00ff">"#da5301"</span>;<br />  ratingMsgColors[2] = <span style="COLOR: #2a00ff">"#ccbe00"</span>;<br />  ratingMsgColors[3] = <span style="COLOR: #2a00ff">"#1e91ce"</span>;<br />  ratingMsgColors[4] = <span style="COLOR: #2a00ff">"#0000FF"</span>;<br />  ratingMsgColors[5] = <span style="COLOR: #2a00ff">"#ff0000"</span>;<br />  barColors[0] = <span style="COLOR: #2a00ff">"#e0e0e0"</span>;<br />  barColors[1] = <span style="COLOR: #2a00ff">"#da5301"</span>;<br />  barColors[2] = <span style="COLOR: #2a00ff">"#f0e54b"</span>;<br />  barColors[3] = <span style="COLOR: #2a00ff">"#1e91ce"</span>;<br />  barColors[4] = <span style="COLOR: #2a00ff">"#0000FF"</span>;<br />  barColors[5] = <span style="COLOR: #2a00ff">"#ff0000"</span>;<br />  hidePasswordBar = <span style="FONT-WEIGHT: bold; COLOR: #7f0055">false</span>;<br />  function CreateRateUserPassReq(formKey) {<br />    if (!isBrowserCompatible) {<br />      return;<br />    }<br />    var passwd = <span style="FONT-WEIGHT: bold; COLOR: #7f0055">document</span>.forms[formKey].gvUserPass.value;<br />var min_passwd_len = 6;<br />    var passwdKey = <span style="COLOR: #2a00ff">"passwd"</span>;<br />    if (passwd.length &lt; min_passwd_len) {<br />     DrawBar(1);<br />    }<span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span>{<br />     <span style="COLOR: #3f7f5f">//We need to escape the password now so it won't mess up with length test</span><br />      passwd = escape(passwd);<br />      var params = passwdKey + <span style="COLOR: #2a00ff">"="</span> + passwd<br />      myxmlhttp = CreateXmlHttpReq(RateUserPassXmlHttpHandler);<br />      XmlHttpPOST(myxmlhttp, <span style="COLOR: #2a00ff">"/club/rateUserPass.gv"</span>, params);<br />    }<br />  }<br /><br />  function getElement(name) {<br />    if (<span style="FONT-WEIGHT: bold; COLOR: #7f0055">document</span>.all) {<br />      <span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span><span style="FONT-WEIGHT: bold; COLOR: #7f0055">document</span>.all(name);<br />    }<br />    <span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span><span style="FONT-WEIGHT: bold; COLOR: #7f0055">document</span>.getElementById(name);<br />  }<br /><br />  function RateUserPassXmlHttpHandler() {<br />    <span style="COLOR: #3f7f5f">// Can't check status since safari doesn't support it</span><br />    if (myxmlhttp.readyState !=4 ) {<br />      return;<br />    }<br />    rating = parseInt(myxmlhttp.responseText);<br />    DrawBar(rating);<br />  }<br /><br />  function DrawBar(rating) {<br />    var posbar = getElement('posBar');<br />    var negbar = getElement('negBar');<br />    var passwdRating = getElement('passwdRating');<br />    var barLength = getElement('passwdBarDiv').width;<br />    if (rating &gt;= 0 &amp;&amp; rating &lt;= 5) {  <span style="COLOR: #3f7f5f">//We successfully got a rating</span><br />      posbar.style.width = barLength / 5 * rating;<br />      negbar.style.width = barLength / 5 * (5 - rating);<br />    } <span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span> {<br />      posbar.style.width = 0;<br />      negbar.style.width = barLength;<br />      rating = 5; <span style="COLOR: #3f7f5f">// Not rated Rating</span><br />    }<br />    posbar.style.background = barColors[rating]<br />    passwdRating.innerHTML = <span style="COLOR: #2a00ff">"&lt;font color='"</span> + ratingMsgColors[rating] +<br />                             <span style="COLOR: #2a00ff">"'&gt;"</span> + ratingMsgs[rating] + <span style="COLOR: #2a00ff">"&lt;/font&gt;"</span>;<br />  }<br /></td></tr></tbody></form></table><br />表单部分只是列出密码选框部分<br /><table cellspacing="1" cellpadding="4" width="98%" align="center" bgcolor="#bad5ef" border="0"><form><tbody><tr><td style="FONT-SIZE: 12px" bgcolor="#e6eef7" height="25">程序代码：</td></tr><tr><td style="FONT-SIZE: 12px" bgcolor="#ffffff"><br />要引入刚才那个JS文件<br />&lt;script language=<span style="COLOR: #2a00ff">"javascript"</span> src=<span style="COLOR: #2a00ff">"gvUserReg.js"</span>&gt;&lt;/script&gt;<br />&lt;form action=<span style="COLOR: #2a00ff">"userRegPost.jsp"</span> method=<span style="COLOR: #2a00ff">"post"</span>  name=<span style="COLOR: #2a00ff">"Gforms"</span> onSubmit=<span style="COLOR: #2a00ff">"<span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span>CheckForm();"</span>&gt;<br />&lt;table width=<span style="COLOR: #2a00ff">"100%"</span>  border=<span style="COLOR: #2a00ff">"0"</span> cellpadding=<span style="COLOR: #2a00ff">"0"</span> cellspacing=<span style="COLOR: #2a00ff">"0"</span>&gt;<br />        &lt;tr&gt;<br />        &lt;td width=<span style="COLOR: #2a00ff">"100"</span>&gt;&lt;input style=<span style="COLOR: #2a00ff">"width:200 px"</span> onKeyUp=<span style="COLOR: #2a00ff">"CreateRateUserPassReq('Gforms')"</span> name=<span style="COLOR: #2a00ff">"gvUserPass"</span> type=<span style="COLOR: #2a00ff">"password"</span> id=<span style="COLOR: #2a00ff">"gvUserPass"</span> size=<span style="COLOR: #2a00ff">"30"</span> maxlength=<span style="COLOR: #2a00ff">"30"</span> /&gt;            &lt;/td&gt;<br />        &lt;td width=<span style="COLOR: #2a00ff">"10"</span>&gt;&lt;/td&gt;&lt;td&gt;<br />&lt;TABLE  width=<span style="COLOR: #2a00ff">"200"</span> border=0 cellPadding=0 cellSpacing=0 &gt;<br />&lt;TBODY&gt;&lt;TR&gt;&lt;TD vAlign=top noWrap width=0&gt;<br />&lt;A href=<span style="COLOR: #2a00ff">"#"</span>&gt;密码强度：&lt;/A&gt; <br />&lt;/TD&gt;<br />&lt;TD&gt;&lt;DIV  id=<span style="COLOR: #2a00ff">"passwdRating"</span>&gt;太短&lt;/DIV&gt;<br />&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height=3&gt;&lt;/TD&gt;&lt;/TR&gt;<br />&lt;TR&gt;&lt;TD colSpan=2&gt;<br />&lt;TABLE  id=<span style="COLOR: #2a00ff">"passwdBarDiv"</span> cellSpacing=0 cellPadding=0 width=<span style="COLOR: #2a00ff">"200"</span>  bgColor=<span style="COLOR: #2a00ff">"#ffffff"</span> border=0&gt;<br />&lt;TBODY&gt;&lt;TR&gt;<br />&lt;TD id=<span style="COLOR: #2a00ff">"posBar"</span> width=<span style="COLOR: #2a00ff">"0%"</span> bgColor=<span style="COLOR: #2a00ff">"#e0e0e0"</span> height=<span style="COLOR: #2a00ff">"4"</span>&gt;&lt;/TD&gt;<br />&lt;TD id=<span style="COLOR: #2a00ff">"negBar"</span> width=<span style="COLOR: #2a00ff">"100%"</span> bgColor=<span style="COLOR: #2a00ff">"#e0e0e0"</span>  height=<span style="COLOR: #2a00ff">"4"</span>&gt;&lt;/TD&gt;<br />&lt;/TR&gt;&lt;/TBODY&gt;<br />&lt;/TABLE&gt;<br />&lt;/TD&gt;&lt;/TR&gt;<br />&lt;/TBODY&gt;&lt;/TABLE&gt; &lt;/td&gt;<br />    &lt;/tr&gt;<br />    &lt;/table&gt;<br />&lt;script language=<span style="COLOR: #2a00ff">"javascript"</span>&gt;<br />&lt;!--<br /><span style="COLOR: #3f7f5f">/* Checks Browser Compatibility */</span><br /><span style="COLOR: #3f7f5f">//<span style="FONT-WEIGHT: bold; COLOR: #7f0055">document</span>.getElementById(<span style="COLOR: #2a00ff">"passwdBarDiv"</span>).style.display = <span style="COLOR: #2a00ff">"block"</span>;</span><br />var agt = navigator.userAgent.toLowerCase();<br />var is_op = (agt.indexOf(<span style="COLOR: #2a00ff">"opera"</span>) != -1);<br />var is_ie = (agt.indexOf(<span style="COLOR: #2a00ff">"msie"</span>) != -1) &amp;&amp; <span style="FONT-WEIGHT: bold; COLOR: #7f0055">document</span>.all &amp;&amp; !is_op;<br />var is_mac = (agt.indexOf(<span style="COLOR: #2a00ff">"mac"</span>) != -1);<br />var is_gk = (agt.indexOf(<span style="COLOR: #2a00ff">"gecko"</span>) != -1);<br />var is_sf = (agt.indexOf(<span style="COLOR: #2a00ff">"safari"</span>) != -1);<br />function gff(str, pfx) {<br />var i = str.indexOf(pfx);<br />if (i != -1) {<br />var v = parseFloat(str.substring(i + pfx.length));<br />if (!isNaN(v)) {<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span>v;<br />}<br />}<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span><span style="FONT-WEIGHT: bold; COLOR: #7f0055">null</span>;<br />}<br />function Compatible() {<br />if (is_ie &amp;&amp; !is_op &amp;&amp; !is_mac) {<br />var v = gff(agt, <span style="COLOR: #2a00ff">"msie "</span>);<br />if (v != <span style="FONT-WEIGHT: bold; COLOR: #7f0055">null</span>) {<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span>(v &gt;= 6.0);<br />}<br />}<br />if (is_gk &amp;&amp; !is_sf) {<br />var v = gff(agt, <span style="COLOR: #2a00ff">"rv:"</span>);<br />if (v != <span style="FONT-WEIGHT: bold; COLOR: #7f0055">null</span>) {<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span>(v &gt;= 1.4);<br />}<span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span>{<br />v = gff(agt, <span style="COLOR: #2a00ff">"galeon/"</span>);<br />if (v != <span style="FONT-WEIGHT: bold; COLOR: #7f0055">null</span>) {<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span>(v &gt;= 1.3);<br />}<br />}<br />}<br />if (is_sf) {<br />var v = gff(agt, <span style="COLOR: #2a00ff">"applewebkit/"</span>);<br />if (v != <span style="FONT-WEIGHT: bold; COLOR: #7f0055">null</span>) {<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span>(v &gt;= 124);<br />}<br />}<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span><span style="FONT-WEIGHT: bold; COLOR: #7f0055">false</span>;<br />}<br />  <span style="COLOR: #3f7f5f">/* We also <span style="FONT-WEIGHT: bold; COLOR: #7f0055">try</span> to create an xmlhttp object to see if the browser supports it */</span><br />myxmlhttp = CreateXmlHttpReq(RateUserPassXmlHttpHandler);<br />isBrowserCompatible = Compatible() &amp;&amp; myxmlhttp;<br />if (!isBrowserCompatible || hidePasswordBar) {<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">document</span>.getElementById(<span style="COLOR: #2a00ff">"passwdBarDiv"</span>).style.display = <span style="COLOR: #2a00ff">"none"</span>;<br />}<br /><span style="COLOR: #3f7f5f">//--&gt; </span><br />&lt;/script&gt;<br />&lt;/form&gt;<br /></td></tr></tbody></form></table><br />Servlet部分，验证密码强度的JAVA类<br /><table cellspacing="1" cellpadding="4" width="98%" align="center" bgcolor="#bad5ef" border="0"><form><tbody><tr><td style="FONT-SIZE: 12px" bgcolor="#e6eef7" height="25">程序代码：</td></tr><tr><td style="FONT-SIZE: 12px" bgcolor="#ffffff"><span style="COLOR: #3f7f5f">/* <br /> * 2005-12-14<br /> * Made in GamVan<br /> */</span><br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">package</span> com.gamvan.club.servlet;<br /><br />import java.io.IOException;<br />import java.io.PrintWriter;<br /><br />import javax.servlet.ServletException;<br />import javax.servlet.http.HttpServlet;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br /><br />import com.gamvan.tools.EncodeString;<br /><span style="COLOR: #3f7f5f">/**<br /> * @author GamVan by 我容易么我<br /> * Powered by GamVan.com<br /> */</span><br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">public </span>class RateUserPass extends HttpServlet {<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">private </span><span style="FONT-WEIGHT: bold; COLOR: #7f0055">static </span><span style="FONT-WEIGHT: bold; COLOR: #7f0055">final </span><span style="FONT-WEIGHT: bold; COLOR: #7f0055">long </span>serialVersionUID = 1L;<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">private </span><span style="FONT-WEIGHT: bold; COLOR: #7f0055">int </span>rate = 0;<br /><br /><span style="COLOR: #3f7f5f">/**<br /> * 口令强弱等级判定,强度算法有待商戳，功能基本实现<br /> * @param pass<br /> * @return<br /> * 2005-12-14 16:55:03 Made In GamVan<br /> * com.gamvan.club.servlet<br /> */</span><br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">public </span><span style="FONT-WEIGHT: bold; COLOR: #7f0055">int </span>rateUserPass(String pass){<br /><span style="COLOR: #3f7f5f">/*<br /> * i 值指示口令等级<br /> * 0 不合法口令<br /> * 1 太短<br /> * 2 弱<br /> * 3 一般<br /> * 4 很好<br /> * 5 极佳<br /> */</span><br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">int </span>i = 0;<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(pass==<span style="FONT-WEIGHT: bold; COLOR: #7f0055">null</span> || pass.length()==0){<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span>0;<br />}<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">int </span>hasLetter = EncodeString.matcherStr(pass,<span style="COLOR: #2a00ff">"[a-zA-Z]"</span>,<span style="COLOR: #2a00ff">""</span>).length();<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">int </span>hasNumber = EncodeString.matcherStr(pass,<span style="COLOR: #2a00ff">"[0-9]"</span>,<span style="COLOR: #2a00ff">""</span>).length(); <br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">int </span>passLen = pass.length();<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(passLen&gt;=6){<br /><span style="COLOR: #3f7f5f">/* 如果仅包含数字或仅包含字母 */</span><br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>((passLen-hasLetter)==0 || (passLen-hasNumber)==0){<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(passLen&lt;8){<br />i = 2;<br />}<span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span> {<br />i = 3;<br />}<br />}<br /><span style="COLOR: #3f7f5f">/* 如果口令大于6位且即包含数字又包含字母 */</span><br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span> <span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(hasLetter&gt;0 &amp;&amp; hasNumber&gt;0){ <br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(passLen&gt;=10){<br />i = 5;<br />}<span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span> <span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(passLen&gt;=8){<br />i = 4;<br />}<span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span>{<br />i = 3;<br />}<br />}<br /><span style="COLOR: #3f7f5f">/* 如果既不包含数字又不包含字母 */</span><br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span> <span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(hasLetter==0 &amp;&amp; hasNumber==0){<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(passLen&gt;=7){<br />i = 5;<br />}<span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span>{<br />i = 4;<br />}<br />}<br /><span style="COLOR: #3f7f5f">/* 字母或数字有一方为0 */</span><br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span> <span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(hasNumber==0||hasLetter==0){<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>((passLen-hasLetter)==0 || (passLen-hasNumber)==0){<br />i = 2;<br />}<br /><span style="COLOR: #3f7f5f">/* <br /> * 字母数字任意一种类型小于6且总长度大于等于6<br /> * 则说明此密码是字母或数字加任意其他字符组合而成<br /> */</span><br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span>{<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(passLen&gt;8){<br />i = 5;<br />}<span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span> <span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(passLen==8){<br />i = 4;<br />}<span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span>{<br />i = 3;<br />}<br />}<br />}<br />}<span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span>{ <span style="COLOR: #3f7f5f">//口令小于6位则显示太短</span><br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(passLen&gt;0){<br />i = 1; <span style="COLOR: #3f7f5f">//口令太短</span><br />}<span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span>{<br />i = 0;<br />}<br />}<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span>i;<br />}<br /><br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">public </span>void service(HttpServletRequest request,HttpServletResponse response)<br />throws ServletException, IOException <br />{<br />String userPass = request.getParameter(<span style="COLOR: #2a00ff">"passwd"</span>);<br />rate = rateUserPass(userPass);<br />response.setContentType(<span style="COLOR: #2a00ff">"text/HTML;charset=UTF-8"</span>); <br />PrintWriter out = response.getWriter();<br />out.print(rate);<br />out.close();<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(<span style="FONT-WEIGHT: bold; COLOR: #7f0055">true</span>)return;<br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span>;<br />}<br /><br />}<br /></td></tr></tbody></form></table><br />下面这个是强度验证的servlet用到的一个正则表达式工具类，这里我只把我们这篇文章用到的其中一个方法贴出来给大家<br /><table cellspacing="1" cellpadding="4" width="98%" align="center" bgcolor="#bad5ef" border="0"><form><tbody><tr><td style="FONT-SIZE: 12px" bgcolor="#e6eef7" height="25">程序代码：</td></tr><tr><td style="FONT-SIZE: 12px" bgcolor="#ffffff"><br /><span style="COLOR: #3f7f5f">/* <br /> * Made in GamVan<br /> */</span><br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">package</span> com.gamvan.tools;<br />import java.io.UnsupportedEncodingException;<br />import java.security.MessageDigest;<br />import sun.misc.BASE64Encoder;<br />import java.util.regex.*;<br />import com.gamvan.tools.MD5;<br /><span style="COLOR: #3f7f5f">/**<br /> * 字符串操作集合类<br /> * @author GamVan by 我容易么我<br /> * Powered by GamVan.com<br /> */</span><br /><span style="FONT-WEIGHT: bold; COLOR: #7f0055">public </span>class EncodeString{<br />    <span style="COLOR: #3f7f5f">/**<br />     * 循环找出匹配内容<br />     * @param str<br />     * @param cp<br />     * @param s<br />     * @return<br />     * 2005-12-11 18:45:25 Made In GamVan<br />     * com.gamvan.tools<br />     */</span><br />    <span style="FONT-WEIGHT: bold; COLOR: #7f0055">public </span><span style="FONT-WEIGHT: bold; COLOR: #7f0055">static </span>String matcherStr(String str, String cp, String s){<br />        <span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(str==<span style="FONT-WEIGHT: bold; COLOR: #7f0055">null</span> || str.equals(<span style="COLOR: #2a00ff">""</span>)){<br />            <span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span><span style="COLOR: #2a00ff">""</span>;<br />        }<br />        String txt = <span style="FONT-WEIGHT: bold; COLOR: #7f0055">new </span>String();<br />        txt = str;<br />        <span style="FONT-WEIGHT: bold; COLOR: #7f0055">if</span>(str!=<span style="FONT-WEIGHT: bold; COLOR: #7f0055">null</span> &amp;&amp; !str.equals(<span style="COLOR: #2a00ff">""</span>)){<br />            txt = str;<br />            Pattern p = Pattern.compile(cp,2); <span style="COLOR: #3f7f5f">//参数2表示大小写不区分</span><br />            Matcher m = p.matcher(txt);<br />            StringBuffer sb = <span style="FONT-WEIGHT: bold; COLOR: #7f0055">new </span>StringBuffer();<br />            <span style="FONT-WEIGHT: bold; COLOR: #7f0055">int </span>i=0;<br />            boolean result = m.find();<br />            <span style="COLOR: #3f7f5f">//使用循环将句子里所有匹配的内容找出并替换再将内容加到sb里</span><br />            <span style="FONT-WEIGHT: bold; COLOR: #7f0055">while</span>(result) {<br />                i++;<br />                sb.append(m.group());<br />                sb.append(s);<br />                <span style="COLOR: #3f7f5f">//继续查找下一个匹配对象</span><br />                result = m.find();<br />            }<br />            txt = String.valueOf(sb);<br />        }<span style="FONT-WEIGHT: bold; COLOR: #7f0055">else</span>{<br />            txt = <span style="COLOR: #2a00ff">""</span>;<br />        }<br />        <span style="FONT-WEIGHT: bold; COLOR: #7f0055">return </span>txt;       <br />    }<br />}<br /></td></tr></tbody></form></table><div class="content">地球人都知道servlet需要部署才能用我这里这个应用在web.xml是这么部署的！大家可以根据需要自己改。<br /><table cellspacing="1" cellpadding="4" width="98%" align="center" bgcolor="#bad5ef" border="0"><form><tbody><tr><td style="FONT-SIZE: 12px" bgcolor="#e6eef7" height="25">程序代码：</td></tr><tr><td style="FONT-SIZE: 12px" bgcolor="#ffffff">&lt;servlet&gt;<br />&lt;servlet-name&gt;RateUserPass&lt;/servlet-name&gt;<br />&lt;servlet-class&gt;com.gamvan.club.servlet.RateUserPass&lt;/servlet-class&gt;<br />&lt;/servlet&gt;<br />&lt;servlet-mapping&gt;<br />&lt;servlet-name&gt;RateUserPass&lt;/servlet-name&gt;<br />&lt;url-pattern&gt;/club/rateUserPass.gv&lt;/url-pattern&gt;<br />&lt;/servlet-mapping&gt; </td></tr></tbody></form></table><br /><br /></div><img src ="http://www.blogjava.net/zlsunnan/aggbug/51554.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlsunnan/" target="_blank">☆蓝色梦想☆</a> 2006-06-08 23:14 <a href="http://www.blogjava.net/zlsunnan/archive/2006/06/08/51554.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>这里发布的大多是关于java的录像，希望大家喜欢</title><link>http://www.blogjava.net/zlsunnan/archive/2006/01/06/26924.html</link><dc:creator>☆蓝色梦想☆</dc:creator><author>☆蓝色梦想☆</author><pubDate>Fri, 06 Jan 2006 09:53:00 GMT</pubDate><guid>http://www.blogjava.net/zlsunnan/archive/2006/01/06/26924.html</guid><wfw:comment>http://www.blogjava.net/zlsunnan/comments/26924.html</wfw:comment><comments>http://www.blogjava.net/zlsunnan/archive/2006/01/06/26924.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlsunnan/comments/commentRss/26924.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlsunnan/services/trackbacks/26924.html</trackback:ping><description><![CDATA[<A HREF="/oksonic/">这里发布的大多是关于java的录像，希望大家喜欢</A><img src ="http://www.blogjava.net/zlsunnan/aggbug/26924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlsunnan/" target="_blank">☆蓝色梦想☆</a> 2006-01-06 17:53 <a href="http://www.blogjava.net/zlsunnan/archive/2006/01/06/26924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>