﻿<?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-BlueSpace</title><link>http://www.blogjava.net/wufalong/</link><description>思想有多远，我们就能走多远！</description><language>zh-cn</language><lastBuildDate>Sat, 02 May 2026 17:43:07 GMT</lastBuildDate><pubDate>Sat, 02 May 2026 17:43:07 GMT</pubDate><ttl>60</ttl><item><title>jquery radio取值，checkbox取值，select取值，radio选中，checkbox选中</title><link>http://www.blogjava.net/wufalong/articles/292615.html</link><dc:creator>crazy</dc:creator><author>crazy</author><pubDate>Wed, 26 Aug 2009 03:11:00 GMT</pubDate><guid>http://www.blogjava.net/wufalong/articles/292615.html</guid><wfw:comment>http://www.blogjava.net/wufalong/comments/292615.html</wfw:comment><comments>http://www.blogjava.net/wufalong/articles/292615.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wufalong/comments/commentRss/292615.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wufalong/services/trackbacks/292615.html</trackback:ping><description><![CDATA[
		<div class="tit">jquery radio取值，checkbox取值，select取值，radio选中，checkbox选中</div>
		<div class="date">2009-05-18 16:27</div>
		<table style="TABLE-LAYOUT: fixed; WIDTH: 100%">
				<tbody>
						<tr>
								<td>
										<div class="cnt" id="blog_text">
												<p>文章简介：获取select被选中项的文本，select下拉框的第二个元素为当前选中值，radio单选组的第二个元素为当前选中值，获取值：文本框，文本区域：$("#txt").attr("value")；多选框checkbox：$("#checkbox_id").attr("value")；单选组radio： $("input[@type=radio][@checked]").val();下拉框select： $('#sel').val(); …… <br />jquery radio取值，checkbox取值，select取值，radio选中，checkbox选中，select选中，及其相关 获取一组radio被选中项的值</p>
												<p>var item = $('input[@name=items][@checked]').val();</p>
												<p>
														<br />获取select被选中项的文本</p>
												<p>var item = $("select[@name=items] option[@selected]").text();</p>
												<p>
														<br />select下拉框的第二个元素为当前选中值</p>
												<p>$('#select_id')[0].selectedIndex = 1;</p>
												<p>
														<br />radio单选组的第二个元素为当前选中值</p>
												<p>$('input[@name=items]').get(1).checked = true;</p>
												<p>
														<br />获取值：</p>
												<p>文本框，文本区域：$("#txt").attr("value")；</p>
												<p>多选框checkbox：$("#checkbox_id").attr("value")；</p>
												<p>单选组radio： $("input[@type=radio][@checked]").val();</p>
												<p>下拉框select： $('#sel').val();</p>
												<p>控制表单元素：</p>
												<p>文本框，文本区域：$("#txt").attr("value",'');//清空内容</p>
												<p>   $("#txt").attr("value",'11');//填充内容</p>
												<p>
														<br />多选框checkbox： $("#chk1").attr("checked",'');//不打勾</p>
												<p>   $("#chk2").attr("checked",true);//打勾</p>
												<p>   if($("#chk1").attr('checked')==undefined) //判断是否已经打勾</p>
												<p>
														<br />单选组radio： $("input[@type=radio]").attr("checked",'2');//设置value=2的项目为当前选中项</p>
												<p>
														<br />下拉框select： $("#sel").attr("value",'-sel3');//设置value=-sel3的项目为当前选中项</p>
												<p>   $("&lt;optionvalue='1'&gt;1111&lt;/option&gt;&lt;optionvalue='2'&gt;2222&lt;/option&gt;").appendTo("#sel")//添加</p>
												<p>
														<br />下拉框的option</p>
												<p>   $("#sel").empty()；//清空下拉框</p>
												<p>
														<br />获取一组radio被选中项的值</p>
												<p>var item = $('input[@name=items][@checked]').val();</p>
												<p>
														<br />获取select被选中项的文本</p>
												<p>var item = $("select[@name=items] option[@selected]").text();</p>
												<p>
														<br />select下拉框的第二个元素为当前选中值</p>
												<p>$('#select_id')[0].selectedIndex = 1;</p>
												<p>
														<br />radio单选组的第二个元素为当前选中值</p>
												<p>$('input[@name=items]').get(1).checked = true;</p>
												<p>
														<br />获取值：</p>
												<p>文本框，文本区域：$("#txt").attr("value")；</p>
												<p>
														<br />多选框checkbox：$("#checkbox_id").attr("value")；</p>
												<p>
														<br />单选组radio： $("input[@type=radio][@checked]").val();</p>
												<p>
														<br />下拉框select： $('#sel').val();</p>
												<p>
														<br />控制表单元素：</p>
												<p>文本框，文本区域：$("#txt").attr("value",'');//清空内容</p>
												<p>
														<br />$("#txt").attr("value",'11');//填充内容</p>
												<p>
														<br />多选框checkbox： $("#chk1").attr("checked",'');//不打勾</p>
												<p>
														<br />$("#chk2").attr("checked",true);//打勾</p>
												<p>
														<br />if($("#chk1").attr('checked')==undefined) //判断是否已经打勾</p>
												<p>
														<br />单选组radio： $("input[@type=radio]").attr("checked",'2');//设置value=2的项目为当前选中项</p>
												<p>
														<br />下拉框select： $("#sel").attr("value",'-sel3');//设置value=-sel3的项目为当前选中项</p>
												<p>
														<br />$("&lt;option value='1'&gt;1111&lt;/option&gt;&lt;option value='2'&gt;2222&lt;/option&gt;").appendTo("#sel")//添加下拉框的option</p>
												<p>
														<br />$("#sel").empty()；//清空下拉框</p>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/wufalong/aggbug/292615.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wufalong/" target="_blank">crazy</a> 2009-08-26 11:11 <a href="http://www.blogjava.net/wufalong/articles/292615.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle hibernate 主键自增</title><link>http://www.blogjava.net/wufalong/articles/262477.html</link><dc:creator>crazy</dc:creator><author>crazy</author><pubDate>Fri, 27 Mar 2009 09:31:00 GMT</pubDate><guid>http://www.blogjava.net/wufalong/articles/262477.html</guid><wfw:comment>http://www.blogjava.net/wufalong/comments/262477.html</wfw:comment><comments>http://www.blogjava.net/wufalong/articles/262477.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wufalong/comments/commentRss/262477.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wufalong/services/trackbacks/262477.html</trackback:ping><description><![CDATA[
		<p>对oracle的主键自增<br />1。用hibernate的方式<br />第一步,建立表，并设置主键为tableName_id.<br />第二步,建立sequence视图,sql语句如下<br />create sequence tableName_id<br />      minvalue 1<br />      start with 1<br />      increment by 1<br />      nocycle<br />      nocache;<br />其中,minvalue表示最小值,start with表示开始值,increment by表示每次增加数,nocycle表示主键不循环,nocache表示不缓存<br />cache可以加快速度，但出现异常时可能会出现不连续的ID。<br />第三步，hibernate中的xml映射<br />&lt;id name="id" type="java.lang.Long"&gt;<br />    &lt;column name="tableName_id" /&gt;<br />    &lt;generator class="sequence"&gt;<br /> &lt;param name="sequence"&gt;tableName_id&lt;/param&gt;<br />    &lt;/generator&gt; <br />&lt;/id&gt;</p>
		<p>说明:<br />每个表的主键id对应一个your_sequence_name<br />查询sequence为 select * from user_sequences;<br />删除sequence为 drop  your_sequence_name;</p>
<img src ="http://www.blogjava.net/wufalong/aggbug/262477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wufalong/" target="_blank">crazy</a> 2009-03-27 17:31 <a href="http://www.blogjava.net/wufalong/articles/262477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle常用查询 转 </title><link>http://www.blogjava.net/wufalong/articles/260272.html</link><dc:creator>crazy</dc:creator><author>crazy</author><pubDate>Tue, 17 Mar 2009 08:22:00 GMT</pubDate><guid>http://www.blogjava.net/wufalong/articles/260272.html</guid><wfw:comment>http://www.blogjava.net/wufalong/comments/260272.html</wfw:comment><comments>http://www.blogjava.net/wufalong/articles/260272.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wufalong/comments/commentRss/260272.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wufalong/services/trackbacks/260272.html</trackback:ping><description><![CDATA[今天想查询一下Oracle数据库下所有的表名或某个用户下的所有表,半天没想起来.还是在网上找到了答案.<br /><strong>select table_name from all_tables;//所有的表明<br />select table_name from user_all_tables;//用户的所有的表<br />一下是转贴的sql语句的帖子.<br /><br /></strong><div class="middleSize" id="articleContent"><div>select * from user_objects;                 //查询所有的表<br />select * from dba_tables;                        //查询所有的表<br />select * from all_tables;                        //查询所有的表<br />select * from user_users                    //查出一个用户 <br />select * from all_users                                //查询所有用户<br />select * from dba_users                         //查询所有用户<br />select name,dbid from v$database;        //查询数据库名和它的ID<br />select * from sys.user_tab_columns; //查询表名 ，并显示列名<br />describe 表名                         //查询表结构<br />2: 查询数据库参数</div><div>show parameter db;</div><div>3：查询数据库的实例名</div><div>select instance_name from v$instance;</div><div>4: 数据库域名</div><div>数据库安装结束后，如果要知道正在运行额数据库是否有域名以及数据库域名名称可以用</div><div>select value from v$parameter where name='db_domain'</div><div>show parameter domain</div><div>5:数据库服务名</div><div>如果数据库有域名，则数据库服务名就是全局数据库名，如果该数据库没有定义域名，则数据库服务名与数据库名相同</div><div>show parameter service_name</div><div> </div><div>6:显示当前用户<br /></div><div><br />show user</div><div>7:直接登陆</div><div>sqlplus "/as sysdba"</div><div>8:当前ORACLE系统时间</div><div>select sysdate from dual;<br /> <br />9:查询数据库字典v$nls_parameter产看字符集相关参数</div><div>select * from v$nls_parameters;<br /><br />//*************<br /><table class="tbl" cellspacing="1" cellpadding="1" width="100%" border="0"><tbody><tr><td height="25"><strong>oracle基本操作语句（适合初学者）</strong></td></tr><tr><td class="tb">oracle操作语句： <br />1.创建表 <br />create table 表名( <br /> 列名1 类型， <br /> 列名2 类型 <br />); <br />2.修改类属性 <br />alter table 表名 modify(列名 类型); <br />3.添加列 <br />alter table 表名 add(列名 类型); <br />4.添加主键约束和非空约束 <br />alter table 表名 add constraint pk_表名 primary key(列名); <br />alter table 表名 modify(列名 not null); <br />5.删除主键约束 <br />alter table 表名 drop primary key; <br />alter table 表名 drop constraint pk_表名; <br />6.失效约束 <br />alter table 表名 disable primary key; <br />alter table 表名 disable constraint pk_表名; <br />7.有效约束 <br />alter table 表名 enable primary key; <br />alter table 表名 enable constraint pk_表名; <br />8.删除列 <br />alter table 表名 drop column 列名; <br />9.设置某列不可用，然后删除 <br />alter table 表名 set unused(列名); <br />alter table 表名 drop unused columns; <br />10.修改表名 <br />rename 表名1 to 表名2 <br />alter 表名1 rename to 表名2; <br />11.截断表 <br />truncate table 表名; <br />12.截断表保留行空间 <br />truncate table 表名 resue storage; <br />13.查看表结构 <br />desc table 表名; <br />14.删除表 <br />drop table 表名; <br />15.插入记录 <br />例：insert into 表名 values(内容1,内容2,内容3,内容4); <br />16.带参数对话方式插入行 <br />例:insert into 表名 values(&amp;列名1,&amp;列名2); <br />  insert into 表名 values(内容1,内容2); <br />17.插入某几列记录 <br />insert into 表名(列名1,列名2) values(内容1,内容2); <br />18.为列插入空值（其列不能为not null） <br />insert into 表名 values(内容1,null,null); <br />19.创建表（包括主键及外键设置）方法一 <br />create table 表名( <br />  列名1 类型 <br />  constraint pk_表名 primary key, <br />  列名2 类型 not null, <br />  列名3 类型  <br />  constraint fk_表名 reference 表名(列名), <br />  列名3 类型 <br />  constraint ck_表名 check(列名3 in(''内容1'',''内容2'',''内容3''))  <br />); <br />20.查询所有行 <br />select * from 表名; <br />21.查询某几列 <br />select 列名1,列名2 from 表名; <br /><br />22.重复行消除 <br />select distict 列名 from 表名; <br />23.where语句查询 <br />select * from 表名 where 条件 order by 列名; <br />(注：如number类型查出自动按升序排列，如要按降序排列，则select * from 表名 where 条件 order by 列名 desc;) <br />24.创建表,方法二 <br />create table 表名( <br /> 列名1 类型 primary key, <br /> 列名2 类型 not null, <br /> 列名3 类型 check(列名3 in('''','''','''')), <br /> 列名4 类型 refernce 表名(列名) <br />); <br /><br />25.修改 列=‘？’的数据 <br />update 表名 set (列=？) where 列=‘？’; <br /><br />26.删除行 <br />delete from 表名 where 条件; <br /><br />27.事务处理 <br />--事务处理 <br />update 表名 <br />set 列名（日期） = ''30-5月-98'' <br />where 条件; <br />savepoint mark1; <br />delete from 表名 where 条件; <br />savepoint mark2; <br />rollback to savepoint mark1; <br />rollback; <br />28.建立用户user1，密码为password <br />授予用户connect,resource的权限 <br />connect角色用于登录 <br />resource角色用于建表等. <br />connect system/manager <br />create user user1 identified by password; <br />grant connect,resource to password; <br />29.数据控制语言 <br />connect scott/tiger <br />30.把对表1查询和修改的权限授予user1 <br />grant select,update on 表1 to user1; <br />31.把对表表1中列1和列2修改的权限授予user1 <br />grant update(列1,列2) on 表1 to user1; <br />32.把对表表1查询的权限授予用户user1 <br />并且user1用户还可以把这个权限授予别的用户(with grant option) <br />grant select on 表1 to user1 with grant option; <br />33.从用户user1撤销对表1查询和修改的权限 <br />revoke select,update on 表1 from user1; </td></tr></tbody></table></div></div><img src ="http://www.blogjava.net/wufalong/aggbug/260272.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wufalong/" target="_blank">crazy</a> 2009-03-17 16:22 <a href="http://www.blogjava.net/wufalong/articles/260272.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java HttpClient</title><link>http://www.blogjava.net/wufalong/articles/233127.html</link><dc:creator>crazy</dc:creator><author>crazy</author><pubDate>Wed, 08 Oct 2008 05:50:00 GMT</pubDate><guid>http://www.blogjava.net/wufalong/articles/233127.html</guid><wfw:comment>http://www.blogjava.net/wufalong/comments/233127.html</wfw:comment><comments>http://www.blogjava.net/wufalong/articles/233127.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wufalong/comments/commentRss/233127.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wufalong/services/trackbacks/233127.html</trackback:ping><description><![CDATA[
		<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">
				<img id="Codehighlighter1_0_154_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_154_Open_Text.style.display='none'; Codehighlighter1_0_154_Closed_Image.style.display='inline'; Codehighlighter1_0_154_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_0_154_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_154_Closed_Text.style.display='none'; Codehighlighter1_0_154_Open_Image.style.display='inline'; Codehighlighter1_0_154_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span id="Codehighlighter1_0_154_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_0_154_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * Created on 2007-1-20<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> *<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * TODO To change the template for this generated file go to<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * Window - Preferences - Java - Code Style - Code Templates<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">package</span>
				<span style="COLOR: #000000"> test;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.apache.commons.httpclient.HttpClient;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.apache.commons.httpclient.HttpMethod;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.apache.commons.httpclient.methods.GetMethod;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.apache.commons.httpclient.methods.PostMethod;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_384_548_Open_Image" onclick="this.style.display='none'; Codehighlighter1_384_548_Open_Text.style.display='none'; Codehighlighter1_384_548_Closed_Image.style.display='inline'; Codehighlighter1_384_548_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_384_548_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_384_548_Closed_Text.style.display='none'; Codehighlighter1_384_548_Open_Image.style.display='inline'; Codehighlighter1_384_548_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_384_548_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
				<span id="Codehighlighter1_384_548_Open_Text">
						<span style="COLOR: #008000">/**</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * </span>
						<span style="COLOR: #808080">@author</span>
						<span style="COLOR: #008000"> Administrator<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> *<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * TODO To change the template for this generated type comment go to<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * Window - Preferences - Java - Code Style - Code Templates<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img id="Codehighlighter1_570_1636_Open_Image" onclick="this.style.display='none'; Codehighlighter1_570_1636_Open_Text.style.display='none'; Codehighlighter1_570_1636_Closed_Image.style.display='inline'; Codehighlighter1_570_1636_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_570_1636_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_570_1636_Closed_Text.style.display='none'; Codehighlighter1_570_1636_Open_Image.style.display='inline'; Codehighlighter1_570_1636_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> URLUtil</span>
				<span id="Codehighlighter1_570_1636_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_570_1636_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">private</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> String url </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">""</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">private</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">final</span>
						<span style="COLOR: #000000"> String loginUrl </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">""</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">private</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> HttpClient client </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">private</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> PostMethod method </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img id="Codehighlighter1_776_793_Open_Image" onclick="this.style.display='none'; Codehighlighter1_776_793_Open_Text.style.display='none'; Codehighlighter1_776_793_Closed_Image.style.display='inline'; Codehighlighter1_776_793_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_776_793_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_776_793_Closed_Text.style.display='none'; Codehighlighter1_776_793_Open_Image.style.display='inline'; Codehighlighter1_776_793_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> setUrl(String url1)</span>
						<span id="Codehighlighter1_776_793_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_776_793_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        url </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> url1;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img id="Codehighlighter1_823_1066_Open_Image" onclick="this.style.display='none'; Codehighlighter1_823_1066_Open_Text.style.display='none'; Codehighlighter1_823_1066_Closed_Image.style.display='inline'; Codehighlighter1_823_1066_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_823_1066_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_823_1066_Closed_Text.style.display='none'; Codehighlighter1_823_1066_Open_Image.style.display='inline'; Codehighlighter1_823_1066_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> init()</span>
						<span id="Codehighlighter1_823_1066_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_823_1066_Open_Text">
								<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_845_1063_Open_Image" onclick="this.style.display='none'; Codehighlighter1_845_1063_Open_Text.style.display='none'; Codehighlighter1_845_1063_Closed_Image.style.display='inline'; Codehighlighter1_845_1063_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_845_1063_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_845_1063_Closed_Text.style.display='none'; Codehighlighter1_845_1063_Open_Image.style.display='inline'; Codehighlighter1_845_1063_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">if</span>
								<span style="COLOR: #000000">(client </span>
								<span style="COLOR: #000000">==</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">)</span>
								<span id="Codehighlighter1_845_1063_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_845_1063_Open_Text">
										<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_854_963_Open_Image" onclick="this.style.display='none'; Codehighlighter1_854_963_Open_Text.style.display='none'; Codehighlighter1_854_963_Closed_Image.style.display='inline'; Codehighlighter1_854_963_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_854_963_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_854_963_Closed_Text.style.display='none'; Codehighlighter1_854_963_Open_Image.style.display='inline'; Codehighlighter1_854_963_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
										<span style="COLOR: #0000ff">try</span>
										<span style="COLOR: #000000"> </span>
										<span id="Codehighlighter1_854_963_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
												<img src="http://www.blogjava.net/images/dot.gif" />
										</span>
										<span id="Codehighlighter1_854_963_Open_Text">
												<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                client </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #0000ff">new</span>
												<span style="COLOR: #000000"> HttpClient();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                method </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #0000ff">new</span>
												<span style="COLOR: #000000"> PostMethod(loginUrl);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                client.executeMethod(method);<br /><img id="Codehighlighter1_985_1059_Open_Image" onclick="this.style.display='none'; Codehighlighter1_985_1059_Open_Text.style.display='none'; Codehighlighter1_985_1059_Closed_Image.style.display='inline'; Codehighlighter1_985_1059_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_985_1059_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_985_1059_Closed_Text.style.display='none'; Codehighlighter1_985_1059_Open_Image.style.display='inline'; Codehighlighter1_985_1059_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span>
										</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">catch</span>
										<span style="COLOR: #000000"> (Exception e) </span>
										<span id="Codehighlighter1_985_1059_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
												<img src="http://www.blogjava.net/images/dot.gif" />
										</span>
										<span id="Codehighlighter1_985_1059_Open_Text">
												<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                System.out.println(</span>
												<span style="COLOR: #000000">"</span>
												<span style="COLOR: #000000">----系统初始化失败!----</span>
												<span style="COLOR: #000000">"</span>
												<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                e.printStackTrace();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
										</span>
										<span style="COLOR: #000000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img id="Codehighlighter1_1101_1414_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1101_1414_Open_Text.style.display='none'; Codehighlighter1_1101_1414_Closed_Image.style.display='inline'; Codehighlighter1_1101_1414_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1101_1414_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1101_1414_Closed_Text.style.display='none'; Codehighlighter1_1101_1414_Open_Image.style.display='inline'; Codehighlighter1_1101_1414_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> String getHtml()</span>
						<span id="Codehighlighter1_1101_1414_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_1101_1414_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String contentStr </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">""</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        init();<br /><img id="Codehighlighter1_1144_1339_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1144_1339_Open_Text.style.display='none'; Codehighlighter1_1144_1339_Closed_Image.style.display='inline'; Codehighlighter1_1144_1339_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1144_1339_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1144_1339_Closed_Text.style.display='none'; Codehighlighter1_1144_1339_Open_Image.style.display='inline'; Codehighlighter1_1144_1339_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">try</span>
								<span id="Codehighlighter1_1144_1339_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_1144_1339_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            HttpMethod postMethod </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> GetMethod(url);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            client.executeMethod(postMethod);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            contentStr </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> postMethod.getResponseBodyAsString();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            postMethod.releaseConnection();<br /><img id="Codehighlighter1_1358_1390_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1358_1390_Open_Text.style.display='none'; Codehighlighter1_1358_1390_Closed_Image.style.display='inline'; Codehighlighter1_1358_1390_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1358_1390_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1358_1390_Closed_Text.style.display='none'; Codehighlighter1_1358_1390_Open_Image.style.display='inline'; Codehighlighter1_1358_1390_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #0000ff">catch</span>
								<span style="COLOR: #000000">(Exception e)</span>
								<span id="Codehighlighter1_1358_1390_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_1358_1390_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            release();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            getHtml();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> contentStr;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img id="Codehighlighter1_1447_1533_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1447_1533_Open_Text.style.display='none'; Codehighlighter1_1447_1533_Closed_Image.style.display='inline'; Codehighlighter1_1447_1533_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1447_1533_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1447_1533_Closed_Text.style.display='none'; Codehighlighter1_1447_1533_Open_Image.style.display='inline'; Codehighlighter1_1447_1533_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> release()</span>
						<span id="Codehighlighter1_1447_1533_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_1447_1533_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">if</span>
								<span style="COLOR: #000000">(method </span>
								<span style="COLOR: #000000">!=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">)method.releaseConnection();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">if</span>
								<span style="COLOR: #000000">(client </span>
								<span style="COLOR: #000000">!=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">)client </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img id="Codehighlighter1_1576_1634_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1576_1634_Open_Text.style.display='none'; Codehighlighter1_1576_1634_Closed_Image.style.display='inline'; Codehighlighter1_1576_1634_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1576_1634_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1576_1634_Closed_Text.style.display='none'; Codehighlighter1_1576_1634_Open_Image.style.display='inline'; Codehighlighter1_1576_1634_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> main(String[] args)</span>
						<span id="Codehighlighter1_1576_1634_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_1576_1634_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        URLUtil.setUrl(</span>
								<span style="COLOR: #000000">""</span>
								<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        System.out.println(getHtml());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
<img src ="http://www.blogjava.net/wufalong/aggbug/233127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wufalong/" target="_blank">crazy</a> 2008-10-08 13:50 <a href="http://www.blogjava.net/wufalong/articles/233127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>取得页面的大小 宽高等各种信息</title><link>http://www.blogjava.net/wufalong/articles/214667.html</link><dc:creator>crazy</dc:creator><author>crazy</author><pubDate>Mon, 14 Jul 2008 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/wufalong/articles/214667.html</guid><wfw:comment>http://www.blogjava.net/wufalong/comments/214667.html</wfw:comment><comments>http://www.blogjava.net/wufalong/articles/214667.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wufalong/comments/commentRss/214667.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wufalong/services/trackbacks/214667.html</trackback:ping><description><![CDATA[&lt;body&gt;<br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />function test(){<br />var  s = "";<br />s += "\r\n网页可见区域宽："+ document.body.clientWidth;<br />s += "\r\n网页可见区域高："+ document.body.clientHeight;<br />s += "\r\n网页可见区域宽："+ document.body.offsetWidth  +" (包括边线的宽)";<br />s += "\r\n网页可见区域高："+ document.body.offsetHeight +" (包括边线的宽)";<br />s += "\r\n网页正文全文宽："+ document.body.scrollWidth;<br />s += "\r\n网页正文全文高："+ document.body.scrollHeight;<br />s += "\r\n网页被卷去的高："+ document.body.scrollTop;<br />s += "\r\n网页被卷去的左："+ document.body.scrollLeft;<br />s += "\r\n网页正文部分上："+ window.screenTop;<br />s += "\r\n网页正文部分左："+ window.screenLeft;<br />s += "\r\n屏幕分辨率的高："+ window.screen.height;<br />s += "\r\n屏幕分辨率的宽："+ window.screen.width;<br />s += "\r\n屏幕可用工作区高度："+ window.screen.availHeight;<br />s += "\r\n屏幕可用工作区宽度："+ window.screen.availWidth;<br />alert(s);<br />}<br />&lt;/SCRIPT&gt;<br />&lt;A HREF="javascript:test()"&gt;点击我查看信息&lt;/A&gt;<br />&lt;/body&gt;<img src ="http://www.blogjava.net/wufalong/aggbug/214667.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wufalong/" target="_blank">crazy</a> 2008-07-14 09:47 <a href="http://www.blogjava.net/wufalong/articles/214667.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>google 提示</title><link>http://www.blogjava.net/wufalong/articles/214428.html</link><dc:creator>crazy</dc:creator><author>crazy</author><pubDate>Sat, 12 Jul 2008 06:21:00 GMT</pubDate><guid>http://www.blogjava.net/wufalong/articles/214428.html</guid><wfw:comment>http://www.blogjava.net/wufalong/comments/214428.html</wfw:comment><comments>http://www.blogjava.net/wufalong/articles/214428.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wufalong/comments/commentRss/214428.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wufalong/services/trackbacks/214428.html</trackback:ping><description><![CDATA[
		<p>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;<br />&lt;script type='text/javascript' src='/dwr/interface/jsuser.js'&gt;&lt;/script&gt;   <br />&lt;script type='text/javascript' src='/dwr/engine.js'&gt;&lt;/script&gt;   <br />&lt;script type='text/javascript' src='/dwr/util.js'&gt;&lt;/script&gt;   <br />&lt;script&gt;<br />function smanPrompt(obj){<br />var objouter = document.getElementById("__smanDisp") //显示的DIV对象<br />var objInput = document.getElementById(obj.id); //文本框对象<br />var selectedIndex = -1;<br />var intTmp; //循环用的<br />//文本框失去焦点<br />objInput.onblur = function()<br />{<br /> objouter.style.display = 'none';<br />}<br />window.onfocus = function(){<br /> objouter.style.display = 'none';<br />}<br />//文本框按键抬起<br />objInput.onkeyup = checkKeyCode;<br />//文本框得到焦点<br />objInput.onfocus = checkAndShow;<br />function checkKeyCode()<br />{<br /> var ie = (document.all) ? true : false<br /> if (ie) <br /> {<br />  var keyCode = event.keyCode<br />  if (keyCode == 40 || keyCode == 38) <br />  { //下上<br />   var isUp = false<br />   if (keyCode == 40) <br />    isUp = true;<br />   chageSelection(isUp)<br />  }<br />  else <br />   if (keyCode == 13) <br />   {//回车<br />    outSelection(selectedIndex);<br />   }<br />   else <br />   {<br />    checkAndShow()<br />   }<br /> }<br /> else <br /> {<br />  checkAndShow()<br /> }<br /> divPosition()<br />}<br />function checkAndShow()<br />{<br /> var strInput = objInput.value<br /> if (strInput != "") {<br />  divPosition();<br />  objouter.innerHTML = "";<br />  bOnClick();<br /> }<br /> else {<br />  objouter.style.display = 'none';<br /> }</p>
		<p> function bOnClick()   <br /> {   <br />   jsuser.getKeyHTMl(strInput,callback);  <br /> }   <br /> function callback(msg)   <br /> {   <br />  objouter.innerHTML = msg; <br />  if(msg=="")<br />  {<br />   objouter.style.display = 'none';<br />  }else<br />  {<br />   objouter.style.display = '';<br />  }<br /> }   <br />   <br />}<br />function chageSelection(isUp){<br /> if (objouter.style.display == 'none'&amp;&amp; objInput.value !="" &amp;&amp; objouter.innerHTML!="") <br /> {<br />  objouter.style.display = '';<br /> }<br /> else {<br />  if (isUp) <br />   selectedIndex++<br />  else <br />   selectedIndex--<br /> }<br /> var maxIndex = objouter.children.length - 1;<br /> if (selectedIndex &lt; 0) {<br />  selectedIndex = -1<br /> }<br /> if (selectedIndex &gt; maxIndex) {<br />  selectedIndex = 0<br /> }<br /> for (intTmp = 0; intTmp &lt;= maxIndex; intTmp++) {<br />  if (intTmp == selectedIndex) {<br />   objouter.children[intTmp].className = "sman_selectedStyle";<br />  }<br />  else {<br />   objouter.children[intTmp].className = "";<br />  }<br /> }<br />}<br />function outSelection(Index){<br /> if (!objouter.children[Index]) <br />  return;<br /> objInput.value = objouter.children[Index].innerText;<br /> objouter.style.display = 'none';<br />}<br />function divPosition(){<br /> objouter.style.top = getAbsoluteHeight(objInput) + getAbsoluteTop(objInput);<br /> objouter.style.left = getAbsoluteLeft(objInput);<br /> objouter.style.width = getAbsoluteWidth(objInput)<br />}</p>
		<p>function getAbsoluteHeight(ob)<br />{<br /> return ob.offsetHeight<br />}<br />function getAbsoluteWidth(ob)<br />{<br /> return ob.offsetWidth<br />}<br />function getAbsoluteLeft(ob)<br />{<br /> var s_el = 0;<br /> el = ob;<br /> while (el) {<br />  s_el = s_el + el.offsetLeft;<br />  el = el.offsetParent;<br /> };<br /> return s_el<br />}<br />function getAbsoluteTop(ob)<br />{<br /> var s_el = 0;<br /> el = ob;<br /> while (el) {<br />  s_el = s_el + el.offsetTop;<br />  el = el.offsetParent;<br /> };<br /> return s_el<br />}<br />}</p>
		<p>&lt;/script&gt;<br />&lt;style&gt;<br />.inp {border: 1px solid #999;padding: 0px 0 0 2px;height: 23px;line-height: 23px;font-size: 14px;color: #666}<br />.inp.sffocus {background: #fff;border: 1px solid #f90;color: blue;}<br />.sman_selectedStyle{background-Color:#102681;color:#FFFFFF}<br />&lt;/style&gt;<br />&lt;input name="textinput" onfocus="smanPrompt(this)"  tabindex="1" type="text" size="45" class="inp" value="" id="inputer" /&gt;<br />&lt;div id="__smanDisp" style="position:absolute;display:none;background:#E8F7EB;border: 1px solid #CCCCCC;font-size:14px;cursor: default;onbulr"&gt; &lt;/div&gt;<br /><br /><br /><br /> public String getKeyHTMl(String key)<br />    {<br />     //System.out.println(key);<br />     String temp = "";<br />     Pattern p = Pattern.compile("^("+key+")");//&lt;[^&gt;]+&gt;<br />     Matcher m = null;<br />     for(int i=0; i&lt;keyarry.length; i++)<br />     {<br />       m = p.matcher(keyarry[i]);<br />      if(m.find())<br />      {<br />       temp = temp + "&lt;div onmouseover=\"this.className='sman_selectedStyle'\" " +<br />    "onmouseout=\"this.className=''\" " +<br />    "onmousedown=\"document.getElementById('inputer').value='" + keyarry[i] + "';window.focus();\"&gt;" + keyarry[i].replace(key, "&lt;font color=red&gt;"+key+"&lt;/font&gt;") + "&lt;/div&gt;";<br />      }<br />     }<br />     return temp;<br />    }</p>
<img src ="http://www.blogjava.net/wufalong/aggbug/214428.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wufalong/" target="_blank">crazy</a> 2008-07-12 14:21 <a href="http://www.blogjava.net/wufalong/articles/214428.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux文件管理</title><link>http://www.blogjava.net/wufalong/articles/212512.html</link><dc:creator>crazy</dc:creator><author>crazy</author><pubDate>Fri, 04 Jul 2008 02:53:00 GMT</pubDate><guid>http://www.blogjava.net/wufalong/articles/212512.html</guid><wfw:comment>http://www.blogjava.net/wufalong/comments/212512.html</wfw:comment><comments>http://www.blogjava.net/wufalong/articles/212512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wufalong/comments/commentRss/212512.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wufalong/services/trackbacks/212512.html</trackback:ping><description><![CDATA[
		<strong>
				<font size="4">0、关于路径的理解；<br /></font>
		</strong>
		<p>
				<strong>请参考：</strong>
		</p>
		<p>
				<a href="http://www.linuxsir.org/main/?q=node/193">
						<b>《关于Linux 文件系统中路径的理解》</b>
				</a>
		</p>
		<p>
				<font id="1" size="4">
						<b>
								<br />1、列文件或目录的信息工具 ls或dir;<br /></b>
				</font>
		</p>
		<p>ls 命令可以用于显示目录的内容，也可以显示文件的属性，比如节点、文件种类、权限、拥有者、大小、创建时间等；在目前最新版本的Linux中dir和ls命令的用法是一样的；有兴趣的不仿尝试一下；</p>
		<p>
				<font id="1.1" size="3">
						<b>
								<br />1.1 ls 的基础语法和参数；<br /></b>
				</font>
		</p>
		<p>
				<b>语法格式：</b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>#ls ［参数]   [目录或文件名]</code>
		</div>
		<p>
		</p>
		<p>
				<b>参数：</b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>-a 显示所有文件，包含隐藏文件；包括“.“和“..“<br />-A 显示所有文件，包含隐藏文件，不包括“.“和“..“目录；<br />-B 不列出文件名以~结尾的文件；<br />-C 按列列出文件；<br />-d 仅可以查看目录的属性参数及信息；<br />-F 这个参数加上后，能给目录添加上/，给可执行文件加上*，给符号链接加上@  等等，来标记文件名，目的是让用户方便查看； <br />-l 长格式输出<br />-h 习惯人们可阅读的方式来显示文件或目录的大小，比如K、M或G等；<br />-p 在目录的后面附加/标记；<br />-r 逆序列出文件；<br />-t  按文件最后访问（或修改）的时间排序，最新的排在最前面；<br />-U 按原始排序，<br />-L 递归显示，也就是说，当我们列某个目录的下的所有文件和目录时，能把它的下级目录的内容显示出来。<br />--help  获得帮助；</code>
		</div>
		<p>
		</p>
		<p>在这里，位于[]之内的都是可选的。如果您只输入ls ，就会列出用户所处当前目录的所有文件，用短格式输出，但不会列出隐藏文件。</p>
		<p>判断用户所处目录的命令是pwd，也就是</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# pwd<br />/root</code>
		</div>
		<p>
		</p>
		<p>
				<font id="1.2" size="3">
						<b>
								<br />1.2 ls 的参数示例应用；<br /></b>
				</font>
		</p>
		<p>
				<font id="1.21" size="2">
						<b>
								<br />1.21 列出目录下所有文件，包含或不包含隐藏文件，-a 参数及-l参数的运用；<br /></b>
				</font>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>#ls -la ［目录名]</code>
		</div>
		<p>
		</p>
		<p>如果不接目录名，表示输出当前用户所处目录内的所有文件，包括隐藏文件；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# pwd<br />/root<br />[root@localhost ~]# ls -la</code>
		</div>
		<p>
		</p>
		<p>
				<b>列出某一目录下的的文件或目录，但不包括隐藏文件，我们只用-l参数</b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>#ls -l  目录</code>
		</div>
		<p>
		</p>
		<p>比如：<br /></p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls  -l /root/<br />总计 13968<br />-rw-r--r-- 1 root root         0 04-19 14:09 123.txt<br />-rw------- 1 root root      1375 03-16 08:55 anaconda-ks.cfg<br />-rw-r--r-- 1 root root         2 03-27 02:00 fonts.scale<br />-rw-r--r-- 1 root root      5423 03-16 08:52 install.log.syslog<br />-rw-r--r-- 1 root root  14087155 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm<br />lrwxrwxrwx 1 root root        33 04-19 11:27 kernel.rpm -&gt; kernel-2.6.15-1.2025_FC5.i686.rpm<br />drwxr-xr-x 2 1000 users     4096 04-04 23:30 mkuml-2004.07.17<br />-rw-r--r-- 1 root root     68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2<br />drwxr-xr-x 2 root root      4096 04-19 10:53 mydir<br />-rw-r--r-- 1 root root     53992 03-16 08:54 myinstall.log<br />-rw-r--r-- 1 root root         0 04-19 14:10 plinux.txt<br />drwxr-xr-x 2 root root      4096 03-17 04:25 Public<br />-rw-r--r-- 1 root root       613 03-26 18:41 upgrade.log<br />-rw-r--r-- 1 root root         0 03-26 18:39 upgrade.log.syslog<br />lrwxrwxrwx 1 root root         6 04-19 11:17 yourdir -&gt; mydir/</code>
		</div>
		<p>
		</p>
		<p>
				<b>说明：如果以长格式输入，总共显示出八段内容：</b>
		</p>
		<p>
				<b>第一段</b>文件种类及权限，也就是类似这样的-rw-r--r-- ，我们在前面讲到，如果在这段中，第一字符表示文件的类型，如果出现-，表示普通文件。如果是d开头的就是目录。在这个例子中，123.txt是普通文件，而mkuml-2004.07.17就是一个目录。关于文件的种类，请参考 ：<br />rw-r--r--是权限位，我们在以后的教程中会讲到。<br /><b>第二段</b> 硬链接个数（文件系增加一个硬链接，数字会增加1，默认从1开始，1表示无硬链接文件，如果是一个目录，它的默认值应该是2。目录是不能做硬链接的）<br />如果我们不以长格式输出的话，可以把参数省略；<br /><b>第三段</b> 文件或目录所占用的字节数，如果您想用K来表示，请用ls -lh /root<br /><b>第四段 </b>最后访问日期<br /><b>第五段</b> 最后访问时间<br /><b>第六段</b> 文件名</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls /root</code>
		</div>
		<p>
		</p>
		<p>
				<font id="1.22" size="2">
						<b>
								<br />1.22 仅查看目录的属性的-d参数的运用示例；<br /></b>
				</font>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls -ld  /etc  /boot  注：查看/etc和/boot目录的信息；<br /><br />drwxr-xr-x   4 root root  4096 04-11 16:22 /boot<br />drwxr-xr-x 108 root root 12288 04-20 12:36 /etc</code>
		</div>
		<p>
		</p>
		<p>
				<font id="1.23" size="2">
						<b>
								<br />1.23 查看文件或目录的inode节点，-i参数的运用；<br /></b>
				</font>
		</p>
		<p>查看文件或目录的节点，我们要用到i参数。如果节点相同，能确认他们是相同的文件，是通过通过ln 创建的硬链接文件；链接接有何用？如果您想把一个文件复制时保持原文件或目录的节点、大小、权限以及访问（或修改）时间都和原文件一致的文件。必须通过硬链接来实现，用cp命令是不可能实现的。</p>
		<p>
				<b>比如：</b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls -li /root</code>
		</div>
		<br />
		<br />
		<br />
		<div class="codeblock">
				<code>[root@localhost ~]# ls -li kernel*<br />2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel00.rpm<br />2408270 lrwxrwxrwx 1 root root       33 04-19 14:56 kernel1.rpm -&gt; kernel-2.6.15-1.2025_FC5.i686.rpm<br />2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm<br />2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel.rpm</code>
		</div>
		<p>
		</p>
		<p>我们看一下kernel00.rpm 、kernel.rpm 和 kernel-2.6.15-1.2025_FC5.i686.rpm 是不是节点相同？？他们的大小是不是一样，他们的访问日期是不是一样？只是他们的文件名不一样。文件名不一样没有关系，这能证明其中两个文件是由另一个文件通过ln 创建而成。</p>
		<p>您可以尝试着用cp 把 kernel-2.6.15-1.2025_FC5.i686.rpm 复制为kernel002.rpm ，看看能不能保持节点相同？</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls -li kernel*<br />2408272 -rw-r--r-- 1 root root 14087155 04-19 16:05 kernel002.rpm<br />2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel00.rpm<br />2408270 lrwxrwxrwx 1 root root       33 04-19 14:56 kernel1.rpm -&gt; kernel-2.6.15-1.2025_FC5.i686.rpm<br />2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm<br />2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel.rpm</code>
		</div>
		<p>
		</p>
		<p>不是是kernel002.rpm 的节点和 kernel-2.6.15-1.2025_FC5.i686.rpm 不一样了？</p>
		<p>
				<font id="1.24" size="2">
						<b>
								<br />1.24 关于排序的参数的应用；<br /></b>
				</font>
		</p>
		<p>
				<font color="blue">ls 显示目录的内容时，会将文件按a到z的字母顺序显示，优先级如下；</font>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>数字  <br />a-z  <br />A-Z</code>
		</div>
		<p>
		</p>
		<p>也就是说如果不加任何排序的参数，文件名第一个字母是数字的，将优先显示；其次才是A－Z，然后才是a-z；下面是几个排序的参数，大家练习一下就知道了；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>在文件的大小排序上，我们要用到-S参数； <br />如果是逆序排序时，我们要用到-r参数；<br />按最后访问的时候排序，要用到-t参数；<br />根据扩展名进行排序，要用到参数 -X ； </code>
		</div>
		<p>
		</p>
		<p>
				<b>举例</b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls<br />123.txt          fonts.scale         kernel                           myinstall.log  upgrade.log<br />anaconda-ks.cfg  install.log.syslog  mkuml-2004.07.17-ananas.tar.bz2  plinux.txt     upgrade.log.syslog</code>
		</div>
		<p>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls -lS /root<br />[root@localhost ~]# ls -lS<br />总计 180<br />-rw-r--r-- 1 root root 68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2<br />-rw-r--r-- 1 root root 53992 03-16 08:54 myinstall.log<br />-rw-r--r-- 1 root root  5423 03-16 08:52 install.log.syslog<br />drwxr-xr-x 2 root root  4096 04-19 20:04 kernel<br />-rw------- 1 root root  1375 04-19 15:04 anaconda-ks.cfg<br />-rw-r--r-- 1 root root   613 03-26 18:41 upgrade.log<br />-rw-r--r-- 1 root root    21 04-19 15:06 123.txt<br />-rw-r--r-- 1 root root     2 03-27 02:00 fonts.scale<br />-rw-r--r-- 1 root root     0 04-19 14:10 plinux.txt<br />-rw-r--r-- 1 root root     0 03-26 18:39 upgrade.log.syslog</code>
		</div>
		<p>
		</p>
		<p>举例：</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls -lr<br />总计 180<br />-rw-r--r-- 1 root root     0 03-26 18:39 upgrade.log.syslog<br />-rw-r--r-- 1 root root   613 03-26 18:41 upgrade.log<br />-rw-r--r-- 1 root root     0 04-19 14:10 plinux.txt<br />-rw-r--r-- 1 root root 53992 03-16 08:54 myinstall.log<br />-rw-r--r-- 1 root root 68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2<br />drwxr-xr-x 2 root root  4096 04-19 20:04 kernel<br />-rw-r--r-- 1 root root  5423 03-16 08:52 install.log.syslog<br />-rw-r--r-- 1 root root     2 03-27 02:00 fonts.scale<br />-rw------- 1 root root  1375 04-19 15:04 anaconda-ks.cfg<br />-rw-r--r-- 1 root root    21 04-19 15:06 123.txt</code>
		</div>
		<p>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls -lt<br />总计 180<br />drwxr-xr-x 2 root root  4096 04-19 20:04 kernel<br />-rw-r--r-- 1 root root    21 04-19 15:06 123.txt<br />-rw------- 1 root root  1375 04-19 15:04 anaconda-ks.cfg<br />-rw-r--r-- 1 root root     0 04-19 14:10 plinux.txt<br />-rw-r--r-- 1 root root 68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2<br />-rw-r--r-- 1 root root     2 03-27 02:00 fonts.scale<br />-rw-r--r-- 1 root root   613 03-26 18:41 upgrade.log<br />-rw-r--r-- 1 root root     0 03-26 18:39 upgrade.log.syslog<br />-rw-r--r-- 1 root root 53992 03-16 08:54 myinstall.log<br />-rw-r--r-- 1 root root  5423 03-16 08:52 install.log.syslog</code>
		</div>
		<p>
		</p>
		<p>
				<font id="1.25" size="2">
						<b>
								<br />1.25 递归显示目录的文件，-R参数的应用；<br /></b>
				</font>
		</p>
		<p>递归显示目录下的所有文件，如果该目录下有子目录，也会把子目录的文件一并显示出来。</p>
		<p>
				<b>比如</b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls -lR /</code>
		</div>
		<p>
		</p>
		<p>
				<b>注：</b>也就是把Linux下/根目录下的所有文件显示出来，但不会显示隐藏文件。自己试着输入上面的命令就知道怎么回事了。</p>
		<p>
				<font id="1.26" size="2">
						<b>
								<br />1.26 关于ls 输出内容在终端显示颜色的参数 --color；<br /></b>
				</font>
		</p>
		<p>在一般的情况下，ls输出内容是有颜色的，比如目录是蓝色，压缩文件是红字的显示。如果没有颜色，可以加上参数。当然也可以去掉颜色。</p>
		<p>
		</p>
		<div class="codeblock">
				<code>--color=never  表示输出输出没有彩色<br />--color=auto  表示自动<br />--color=always 表示输出内容有彩色 </code>
		</div>
		<p>
		</p>
		<p>
				<b>举例：</b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls -la --color=never <br />[root@localhost ~]# ls -la --color=any<br />[root@localhost ~]# ls -la --color=always</code>
		</div>
		<p>
		</p>
		<p>如果您的终端或控制台输出的内容没有颜色，可以自己来定义。在当前用户的家目录下的.bashrc 中加入下面的一行；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>alias ls="ls --color=always"</code>
		</div>
		<p>
		</p>
		<p>
				<font id="1.27" size="2">
						<b>
								<br />1.27 ls的-F参数的示例；<br /></b>
				</font>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls -F<br />crondw.sh*  kernel/  mkuml-2004.07.17-ananas.tar.bz2  openQreadme.txt@  sun.txt  upgrade.log  youdir/<br /><br />[root@localhost ~]# ls -lF<br />总计 92<br />-rwxr-xr-x 1 root root     0 04-20 14:18 crondw.sh*<br />drwxr-xr-x 3 root root  4096 04-20 14:17 kernel/<br />-rw-r--r-- 1 root root 68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2<br />lrwxrwxrwx 1 root root     7 04-20 14:18 openQreadme.txt -&gt; sun.txt<br />-rw-r--r-- 1 root root    11 04-20 14:17 sun.txt<br />-rw-r--r-- 1 root root   613 03-26 18:41 upgrade.log<br />drwxr-xr-x 6 root root  4096 04-20 14:17 youdir/</code>
		</div>
		<p>
		</p>
		<p>
				<font id="1.3" size="3">
						<b>
								<br />1.3 通配符在ls命令中的应用；<br /></b>
				</font>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>* 代表0个或多个字符<br />[]内部包括任何字符<br />? 任何单个字符</code>
		</div>
		<p>
		</p>
		<p>
				<b>举例：</b>
		</p>
		<p>比如我们显示以k开头的所有文件，在/root目录中的；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls /root/k*<br />kernel002.rpm  kernel00.rpm  kernel1.rpm  kernel-2.6.15-1.2025_FC5.i686.rpm  kernel.rpm</code>
		</div>
		<p>
		</p>
		<p>我们显示以数字开头的所有文件；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls [0-9]*<br />123.txt  234.txt  2kexe.txt  6mns.doc</code>
		</div>
		<p>
		</p>
		<p>下面是一个?通配符的示例：</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls *.t?t<br />123.txt  234.txt  2kexe.txt  333.tot  plinux.txt</code>
		</div>
		<p>
		</p>
		<p>
				<font id="1.4" size="3">
						<b>
								<br />1.4 获得ls 的帮助；<br /></b>
				</font>
		</p>
		<p>ls 的用法比较简单，至于更详细的参考，还是查man和help。遇到不会的，就查手册，我也是这么做的。</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls --help<br />[root@localhost ~]# man ls<br />[root@localhost ~]# info ls </code>
		</div>
		<p>
		</p>
		<p>
				<font id="2" size="4">
						<b>
								<br />2、移动文件或目录的命令 mv ；<br /></b>
				</font>
		</p>
		<p>mv 命令是用来移动文件或目录的；有以下几种格式；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>#mv file1 file2  注：把file1移动到file2，如果file2不存在，则创建file2文件名；<br />#mv file1 dir 注：把一个文件移动到一个事实存在的目录；<br />#mv dir1 dir2   移动目录dir1 到 dir2 ，如果dir2不存在，则创建它；<br />#mv file1 file2 file3 ... ...  dir   移动file1、file2、file3等多个文件到dir目录中；<br />#mv dir1 dir2 ... ... dirn   注：移动目录dir1和dir2等多个目录到dirn目录中</code>
		</div>
		<p>
		</p>
		<p>
				<b>参数-i ，表示人机交互模式；提示警告信息；</b>
		</p>
		<p>
				<b>举例：</b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# mv -i 123.txt  234.txt<br />mv：是否覆盖“234.txt”? y 注：要在这里输入y，表示允许覆盖234.txt文件；如果是n，请示不允许；</code>
		</div>
		<p>
		</p>
		<p>
				<b>mv 也能和通配符结合一起使用，这样能把相似特征的文件移动到某处；</b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>* 代表0个或多个字符<br />[]内部包括任何字符<br />? 任何单个字符</code>
		</div>
		<p>
		</p>
		<p>
				<b>
						<br />举例：比如移动以数字开头的文件或目录到 root目录下的tmp目录中；<br /></b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# pwd<br />/root<br />[root@localhost ~]# mv [0-9]* tmp/<br />[root@localhost ~]# ls -lh tmp/<br />总计 4.0K<br />-rw-r--r-- 1 root root 21 04-19 15:06 234.txt<br />-rw-r--r-- 1 root root  0 04-19 22:23 2kexe.txt<br />-rw-r--r-- 1 root root  0 04-19 22:25 333.tot<br />-rw-r--r-- 1 root root  0 04-19 22:23 6mns.doc</code>
		</div>
		<p>
		</p>
		<p>
				<font id="3" size="4">
						<b>
								<br />3、文件或目录的复制工具cp ；<br /></b>
				</font>
		</p>
		<p>
				<font id="3.1" size="3">
						<b>
								<br />3.1 cp 的语法和参数<br /></b>
				</font>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>#cp  ［参数选项]   源文件或目录      目标文件或目录</code>
		</div>
		<p>
		</p>
		<p>
				<b>注：</b>参数是可选的，常用参数比如 -r,-R,-p,-i ；</p>
		<p>
				<b>参数说明（部份）</b>
		</p>
		<p>-a 等同于-dpR参数一起使用；在复制过程中尽可能保留源文件或目录的属性；<br />-b 给被覆盖的文件做备份。比如我们把file1 复制到file2时，如果file2存在，我们把file2覆盖掉，用这个参数就能同时生成一个file2~的文件，注意文件名后有~结尾<br />-d 不间接引用符号链接，保持源文件和目标文件之间的硬链接关系；<br />-f 删除已存在的目标文件；<br />-i 覆盖已存在的目标文件之前给出警告提示，这是人机交互的选项；<br />-l 建立文件硬链接，而不是复制；<br />-p 保存源文件或目录的最后修改时间和模式，比如要保持目标目录或文件的属主、组、权限和最后访问（或修改）时间；<br />-R 复制目录时，包括淅目录下所有的子目录和文件；<br />-s 建立源文件的符号链接，而不是复制源文件。源文件名必须用绝对路径；<br />-r 复制目录时，包括淅目录下所有的子目录和文件；-r选项不同于-R之处在于 尝试打开目的地文件前先删除已存在的目的地文件<br />-i 人机交互模式，显法覆盖已存在的文件或目录的警告信息；<br />-v 在复制之前，输出每个文件的名字；<br />--help 查看帮助 ；</p>
		<p>
				<font id="3.2" size="3">
						<b>
								<br />3.2 示例说明cp应用；<br /></b>
				</font>
		</p>
		<p>
				<font id="3.21" size="2">
						<b>
								<br />3.21 参数-i的示例；<br /></b>
				</font>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls<br />anaconda-ks.cfg  install.log.syslog  Kernel.rpm                       mydir       Plist  upgrade.log         youdir<br />fonts.scale      kernel              mkuml-2004.07.17-ananas.tar.bz2  plinux.txt  sun    upgrade.log.syslog<br />[root@localhost ~]# pwd<br />/root<br /><br />[root@localhost ~]# cp  -i Kernel.rpm Plist<br />cp：是否覆盖“Plist”? y </code>
		</div>
		<p>
		</p>
		<p>
				<b>注：</b>人机交互在数-i的运用；如果源文件复制到目标文件，如果目标文件存在，则提示警告；</p>
		<p>
				<font id="3.22" size="2">
						<b>
								<br />3.22 参数-a的示例及说明；<br /></b>
				</font>
		</p>
		<p>把源目录复制到另外的一个目标，相当于克隆了一个目录，源目录和目标目录在用户组、权限及修改或访问时间保持一致；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# cp -a mydir youdir </code>
		</div>
		<p>
		</p>
		<p>
				<b>注：</b>复制目录mydir 到youdir ，如果yourdir目录不存在，则创建。并且把mydir中所有的文件下级子目录都复制到 yourdir目录中。也就是说mydir目录的文件和youdir是一样的。-a 参数等同于-dpR，并且源目录和目标目录的属性（用户组、权限、最后访问及修改时间）都一致；</p>
		<p>
				<font id="3.23" size="2">
						<b>
								<br />3.23 参数-b的示例应用；<br /></b>
				</font>
		</p>
		<p>把源文件复制为目标文件；并且尝试-b参数的运用；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# cp fonts.scale fonts.dir  把一个文件复制为另一个文件；<br /><br />[root@localhost ~]# cp -bi fonts.scale fonts.dir <br /><br />cp：是否覆盖“fonts.dir”? y  注：因为用了-i 参数，如果目标文件存在，则报警提示；<br /><br />[root@localhost ~]# ls -lh fonts.*<br />-rw-r--r-- 1 root root 2 04-20 10:24 fonts.dir<br />-rw-r--r-- 1 root root 2 04-20 10:24 fonts.dir~  注：-b参数运用的效果就是生成已存在目标文件的覆盖之前备份。<br />-rw-r--r-- 1 root root 2 03-27 02:00 fonts.scale</code>
		</div>
		<p>
		</p>
		<p>
				<font id="3.24" size="2">
						<b>
								<br />3.24 把多个文件复制到目录目录中示例；<br /></b>
				</font>
		</p>
		<p>比如我们把位于用户当前目录下的fonts.dir、Kernel.rpm和Plist文件，复制到当前用户所处的目录下的sun目录中；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# pwd  注：判断用户所处的位置，也就是所处的目录；<br />/root<br /><br />[root@localhost ~]# mv fonts.dir Kernel.rpm  Plist  sun/ <br />[root@localhost ~]# ls sun/<br />fonts.dir  Kernel.rpm  Plist</code>
		</div>
		<p>
		</p>
		<p>
				<b>注：</b>如果您想把多个目录或文件复制到目标目录时，您得加参数 -R</p>
		<p>
				<font id="3.25" size="2">
						<b>
								<br />3.25 复制目录时-R参数的应用；<br /></b>
				</font>
		</p>
		<p>复制一个目录到另一个目录时，我们要用到 -r或-R 或-a ， 如果目标目录不存在，则创建它，如果目标目录存在，则复制源目录到目标目录之下；看看-a和-R或-r有什么不同？尝试看看；</p>
		<p>比如我们在用户当前操作的目录中，有mydir目录，我们想把mydir复制为medir（在复制之前medir是不存在的）。</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# cp -R mydir medir 注：如果medir目录不存在，则创建medir目录，并且medir目录中的内容和mydir中的一样；</code>
		</div>
		<p>
		</p>
		<p>如果您把-R参数换成-a参数，会有什么不同？看看前面的例子所说的；</p>
		<p>
				<font id="4" size="4">
						<b>
								<br />4、 目录创建工具mkdir和删除空目录工具rmdir；<br /></b>
				</font>
		</p>
		<p>
				<font id="4.1" size="3">
						<b>
								<br />4.1 mkdir 是目录创建工具；<br /></b>
				</font>
		</p>
		<p>
				<font id="4.11" size="2">
						<b>
								<br />4.11 mkdir语法格式及参数；<br /></b>
				</font>
		</p>
		<p>
				<b>语法格式</b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>#mkdir [参数选项]  目录</code>
		</div>
		<p>
		</p>
		<p>
				<b>参数常用的如下：</b>
		</p>
		<p>-m 在创建目录时要授其权限，要和chmod的授权格式；<br />-p 如果中间目录不存在，则创建它</p>
		<p>
				<font id="4.12" size="2">
						<b>
								<br />4.12 参数 -p 的应用示例<br /></b>
				</font>
		</p>
		<p>我们要创建一个目录linuxsir，并且linuxsir目录下包含子目录sirdoc，sirdoc目录下还有 redhat目录；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# mkdir -p  linuxsir/sirdoc/redhat </code>
		</div>
		<p>
		</p>
		<p>
				<b>举例：</b> -m 参数的应用示例；</p>
		<p>我们以不同的权限来创建目录，然后查看我们所创建目录的属性；这要涉及到chown 来改变目录的权限的格式。我们会在以后讲到chown改变目录或文件的权限。在这里不同的是，在目录创建之时就给其授权了；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# mkdir -m  644 sundir<br />[root@localhost ~]# mkdir -m 755 moondir<br />[root@localhost ~]# mkdir -m 000 beinandir<br />[root@localhost ~]# ls -ld sundir moondir beinandir<br />d--------- 2 root root 4096 04-20 11:01 beinandir <br />drwxr-xr-x 2 root root 4096 04-20 11:01 moondir<br />drw-r--r-- 2 root root 4096 04-20 11:00 sundir</code>
		</div>
		<p>
		</p>
		<p>
				<font id="4.2" size="3">
						<b>
								<br />4.2 删除空目录工具 rmdir 和rm ；<br /></b>
				</font>
		</p>
		<p>rmdir 是用来删除空目录用的，如果目录中有文件或子目录，必须先删除文件或子目录，其语法格式如下：</p>
		<p>
		</p>
		<div class="codeblock">
				<code>#rmdir ［参数]  目录 </code>
		</div>
		<p>
		</p>
		<p>
				<b>
						<br />rmdir 参数常用的有：<br /></b>
		</p>
		<p>-p 删除目录时是一级一级的时行的，值得注意的是，首先从最里面的目录开始。下面是一个例子；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# mkdir -p  linuxsir/sirdoc/redhat/  <br /><br />注：首先在当前目录下创建linuxsir目录，他的子目录是sirdoc，sirdoc内又有一个子目录redhat <br /><br />[root@localhost ~]# rmdir -p linuxsir/sirdoc/redhat/  注：删除linuxsir目录，要用到参数-p<br />[root@localhost ~]# ls linuxsir  注：检查一下是不是还有这个目录？ <br />ls: linuxsir: 没有那个文件或目录</code>
		</div>
		<p>
		</p>
		<p>rmdir 所删除的目录，每级目录中都是空的，没有其它的文件。如果任何一级的目录有文件，也不能删除。这时您要用到rm -rf 命令强制删除。不过用rm -rf 删除时有点不安全，还是用rf -ri 比较好一点，因为在删除的时候，会有警告提示。这对于安全操作来说是很重要的；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls -lh sun/  注：这是sun目录，里面有内容；<br />总计 28K<br />-rw------- 1 root root 1.4K 04-19 15:04 anaconda-ks.cfg<br />-rw-r--r-- 1 root root    2 04-20 10:24 fonts.dir<br />-rw-r--r-- 1 root root    2 03-27 02:00 fonts.scale<br />-rw-r--r-- 1 root root 5.3K 03-16 08:52 install.log.syslog<br />-rw-r--r-- 1 root root    0 04-19 20:44 Kernel.rpm<br />-rw-r--r-- 1 root root    0 04-20 10:20 Plist<br />[root@localhost ~]# rmdir sun/  注：我们尝试用rmdir来删除，<br />rmdir: sun/: 目录非空   <br /><br />[root@localhost ~]# rm -rf sun/  注：强制用rm -rf 来删除；<br /><br />[root@localhost ~]# ls sun    注：检查是否删除，删除成功；<br />ls: sun: 没有那个文件或目录</code>
		</div>
		<p>
		</p>
		<p>
				<font id="5" size="4">
						<b>
								<br />5、创建一个空文件的工具：用 touch、echo、cat等工具；<br /></b>
				</font>
		</p>
		<p>有时我们为了方便，可能在控制台或终端下创建一个不存在的空文件，然后我们再用编辑器来编辑它；创建空文件有时还有点用。说说也无妨。我们在这里用touch、ech0及cat 工具。其实这些工具，创建文件只是他们的一个小小的功能，我们以后再介绍这些工具，先说他们创建文件的功能。</p>
		<p>注意：创建这些文件，在我们操作创建文件之前，这些文件在用户当前操作目录下是不存在的，我们在这里只是创建一个新的文件名，并且它里面没有任何空容的；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls 123456.txt 654321.txt 98765.txt<br />ls: 123456.txt: 没有那个文件或目录<br />ls: 654321.txt: 没有那个文件或目录<br />ls: 98765.txt: 没有那个文件或目录</code>
		</div>
		<p>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# echo &gt; 123456.txt  注：用ech0 来创建，在创建之前在此操作目录下不存不123456.txt文件；<br />[root@localhost ~]# ls 123456.txt     注：查看一下看有没有生成？<br />123456.txt </code>
		</div>
		<p>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# touch 654321.txt  注：用 touch 来创建，在创建之前在此操作目录下不存在654321.txt文件；<br />[root@localhost ~]# ls 654321.txt  注：查看一下看有没有生成？<br />654321.txt</code>
		</div>
		<p>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# cat &gt; 98765.txt  注：用ech0 来创建，在创建之前在此操作目录下不存在98765.txt 文件；然后按ctrl+c组合键退出；<br /><br />[root@localhost ~]# ls 98765.txt   注：查看一下看有没有生成？<br />98765.txt</code>
		</div>
		<p>
		</p>
		<p>
				<font id="6" size="4">
						<b>
								<br />6、删除文件工具rm；<br /></b>
				</font>
		</p>
		<p>rm 是用来删除一个或多个文件的工具，并且能用于删除非空目录。我们前面提到了可以加参数-rf 就可以强制删除一个非空目录。</p>
		<p>
				<b>rm的语法格式；</b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>#rm ［参数选项］ file1 file2 ... ... <br />#rm  ［参数选项]  dir1 dir2 dir3 ... ...</code>
		</div>
		<p>
		</p>
		<p>
				<b>rm 常用参数：</b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>-f  不显示警告或提示信息就删除，用的时候需要小心；<br />-i  删除文件时，显示警告信息，要多用，这样比较安全；根据提示，输入y就表示删除，输入n，请示不删除；<br />-r或-R  表示可以删除整个目录（包括子目录及所有文件），要小心用；</code>
		</div>
		<p>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# rm -i 123.sh  注：这是删除一个文件，用-i参数的示例，有警告提示；<br /><br />rm：是否删除一般空文件“123.sh”? y</code>
		</div>
		<p>
		</p>
		<p>比如我们想删除mydir目录及所有下级目录和文件，要有提示的警告信息，可以用-r参数和-i参数的组合；如果您想终止rm命令，请按ctrl+c组合健退出rm；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# rm -ri mydir/<br /><br />rm：是否进入目录“mydir/”? y<br />rm：是否进入目录“mydir//youdir”? y<br />rm：是否删除一般文件“mydir//youdir/enteruml.sh”?</code>
		</div>
		<p>
		</p>
		<p>如果您想没有任何警告信息的删除mydir目录下的所有文件及子目录，可以用-r和-f参数的组合；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# rm -rf mydir</code>
		</div>
		<p>
		</p>
		<p>
				<font id="7" size="4">
						<b>
								<br />7、修改文件名工具 mv<br /></b>
				</font>
		</p>
		<p>mv 可以移动一个文件（或目录）到另一个文件（或目录），如果文件（或目录）不存在，则创建它。其实mv 这个过程也可以理解为改名过程，所以说mv工具能修改文件名和目录名。</p>
		<p>
		</p>
		<div class="codeblock">
				<code>#mv 原文件名或目录名  新文件或目录名 </code>
		</div>
		<p>
		</p>
		<p>
				<b>注意：</b>新文件名或目录名应该不能与现有文件名（或目录名）同名。</p>
		<p>
				<b>举例：</b>
		</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls<br />crondw.sh  kernel  mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  upgrade.log  youdir<br /><br />[root@localhost ~]# mv crondw.sh 123.sh  注：移动crondw.sh 到123.sh ，其实就是把文件名改为了123.sh<br /><br />[root@localhost ~]# ls<br />123.sh  kernel  mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  upgrade.log  youdir<br /></code>
		</div>
		<p>
		</p>
		<p>再看一例mv 修改目录的。当然mv是把文件（或目录）从一个地方移到另一个地方。如果另一地方没有和源文件（或目录）同名的，就创建。这也相当于改名；</p>
		<p>
		</p>
		<div class="codeblock">
				<code>[root@localhost ~]# ls<br />123.sh  kernel  mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  upgrade.log  youdir<br /><br />[root@localhost ~]# mv kernel/ kernelBak<br /><br />[root@localhost ~]# ls<br />123.sh  kernelBak  mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  upgrade.log  youdir</code>
		</div>
<img src ="http://www.blogjava.net/wufalong/aggbug/212512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wufalong/" target="_blank">crazy</a> 2008-07-04 10:53 <a href="http://www.blogjava.net/wufalong/articles/212512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>html正则处理</title><link>http://www.blogjava.net/wufalong/articles/211647.html</link><dc:creator>crazy</dc:creator><author>crazy</author><pubDate>Mon, 30 Jun 2008 06:09:00 GMT</pubDate><guid>http://www.blogjava.net/wufalong/articles/211647.html</guid><wfw:comment>http://www.blogjava.net/wufalong/comments/211647.html</wfw:comment><comments>http://www.blogjava.net/wufalong/articles/211647.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wufalong/comments/commentRss/211647.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wufalong/services/trackbacks/211647.html</trackback:ping><description><![CDATA[
		<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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">String resource </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;TD&gt;&lt;span id=\</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">AjaxHolde\</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> style=\</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">color:Red\</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;请输入标题Red标请输入标题Red标&lt;/span&gt;&lt;/TD&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        Pattern p </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> Pattern.compile(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;[^&gt;&lt;]*Red[^&gt;&lt;]*&lt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">&lt;[^&gt;]+&gt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">Pattern p = Pattern.compile("&lt;[^&gt;]+&gt;");</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">&lt;[^&gt;]+&gt;</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">         Matcher m </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> p.matcher(resource);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         StringBuffer sb </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> StringBuffer();<br /><img id="Codehighlighter1_320_395_Open_Image" onclick="this.style.display='none'; Codehighlighter1_320_395_Open_Text.style.display='none'; Codehighlighter1_320_395_Closed_Image.style.display='inline'; Codehighlighter1_320_395_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_320_395_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_320_395_Closed_Text.style.display='none'; Codehighlighter1_320_395_Open_Image.style.display='inline'; Codehighlighter1_320_395_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />         </span>
				<span style="COLOR: #0000ff">while</span>
				<span style="COLOR: #000000"> (m.find()) </span>
				<span id="Codehighlighter1_320_395_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_320_395_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />             m.appendReplacement(sb, m.group().replace(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">Red</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">, </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">wufalong</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />         }</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         m.appendTail(sb);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         System.out.println(sb.toString());</span>
		</div>
<img src ="http://www.blogjava.net/wufalong/aggbug/211647.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wufalong/" target="_blank">crazy</a> 2008-06-30 14:09 <a href="http://www.blogjava.net/wufalong/articles/211647.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正则2</title><link>http://www.blogjava.net/wufalong/articles/210972.html</link><dc:creator>crazy</dc:creator><author>crazy</author><pubDate>Thu, 26 Jun 2008 15:01:00 GMT</pubDate><guid>http://www.blogjava.net/wufalong/articles/210972.html</guid><wfw:comment>http://www.blogjava.net/wufalong/comments/210972.html</wfw:comment><comments>http://www.blogjava.net/wufalong/articles/210972.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wufalong/comments/commentRss/210972.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wufalong/services/trackbacks/210972.html</trackback:ping><description><![CDATA[
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<b>三、应用实例</b>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">下面我们来看看Jakarta-ORO库的一些应用实例。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<b>3.1 日志文件处理</b>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">任务：分析一个Web服务器日志文件，确定每一个用户花在网站上的时间。在典型的BEA WebLogic日志文件中，日志记录的格式如下： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182956708.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">分析这个日志记录，可以发现，要从这个日志文件提取的内容有两项：IP地址和页面访问时间。你可以用分组符号（圆括号）从日志记录提取出IP地址和时间标记。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">首先我们来看看IP地址。IP地址有4个字节构成，每一个字节的值在0到255之间，各个字节通过一个句点分隔。因此，IP地址中的每一个字节有至少一个、最多三个数字。图八显示了为IP地址编写的正则表达式： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="WIDTH: 419px; CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182956670.gif" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />图八：匹配IP地址</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">IP地址中的句点字符必须进行转义处理（前面加上“\”），因为IP地址中的句点具有它本来的含义，而不是采用正则表达式语法中的特殊含义。句点在正则表达式中的特殊含义本文前面已经介绍。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">日志记录的时间部分由一对方括号包围。你可以按照如下思路提取出方括号里面的所有内容：首先搜索起始方括号字符（“[”），提取出所有不超过结束方括号字符（“]”）的内容，向前寻找直至找到结束方括号字符。图九显示了这部分的正则表达式。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182956807.gif" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />图九：匹配至少一个字符，直至找到“]”</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">现在，把上述两个正则表达式加上分组符号（圆括号）后合并成单个表达式，这样就可以从日志记录提取出IP地址和时间。注意，为了匹配“- -”（但不提取它），正则表达式中间加入了“\s-\s-\s”。完整的正则表达式如图十所示。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="WIDTH: 435px; CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182956844.gif" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />图十：匹配IP地址和时间标记</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">现在正则表达式已经编写完毕，接下来可以编写使用正则表达式库的Java代码了。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">为使用Jakarta-ORO库，首先创建正则表达式字符串和待分析的日志记录字符串： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182957498.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">这里使用的正则表达式与图十的正则表达式差不多完全相同，但有一点例外：在Java中，你必须对每一个向前的斜杠（“\”）进行转义处理。图十不是Java的表示形式，所以我们要在每个“\”前面加上一个“\”以免出现编译错误。遗憾的是，转义处理过程很容易出现错误，所以应该小心谨慎。你可以首先输入未经转义处理的正则表达式，然后从左到右依次把每一个“\”替换成“\\”。如果要复检，你可以试着把它输出到屏幕上。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">初始化字符串之后，实例化PatternCompiler对象，用PatternCompiler编译正则表达式创建一个Pattern对象： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182957172.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">现在，创建PatternMatcher对象，调用PatternMatcher接口的contain()方法检查匹配情况： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182957177.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">接下来，利用PatternMatcher接口返回的MatchResult对象，输出匹配的组。由于logEntry字符串包含匹配的内容，你可以看到类如下面的输出： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182957678.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<b>3.2 HTML处理实例一</b>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">下面一个任务是分析HTML页面内FONT标记的所有属性。HTML页面内典型的FONT标记如下所示： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182957521.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">程序将按照如下形式，输出每一个FONT标记的属性： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182957848.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">在这种情况下，我建议你使用两个正则表达式。第一个如图十一所示，它从字体标记提取出“"face="Arial, Serif" size="+2" color="red"”。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="WIDTH: 429px; CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182958733.gif" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />图十一：匹配FONT标记的所有属性</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">第二个正则表达式如图十二所示，它把各个属性分割成名字-值对。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="WIDTH: 430px; CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182958614.gif" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />图十二：匹配单个属性，并把它分割成名字-值对</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">分割结果为： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182958769.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">现在我们来看看完成这个任务的Java代码。首先创建两个正则表达式字符串，用Perl5Compiler把它们编译成Pattern对象。编译正则表达式的时候，指定Perl5Compiler.CASE_INSENSITIVE_MASK选项，使得匹配操作不区分大小写。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">接下来，创建一个执行匹配操作的Perl5Matcher对象。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182958989.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">假设有一个String类型的变量html，它代表了HTML文件中的一行内容。如果html字符串包含FONT标记，匹配器将返回true。此时，你可以用匹配器对象返回的MatchResult对象获得第一个组，它包含了FONT的所有属性： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182958830.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">接下来创建一个PatternMatcherInput对象。这个对象允许你从最后一次匹配的位置开始继续进行匹配操作，因此，它很适合于提取FONT标记内属性的名字-值对。创建PatternMatcherInput对象，以参数形式传入待匹配的字符串。然后，用匹配器实例提取出每一个FONT的属性。这通过指定PatternMatcherInput对象（而不是字符串对象）为参数，反复地调用PatternMatcher对象的contains()方法完成。PatternMatcherInput对象之中的每一次迭代将把它内部的指针向前移动，下一次检测将从前一次匹配位置的后面开始。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">本例的输出结果如下： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/2005112618300516.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<b>3.3 HTML处理实例二</b>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">下面我们来看看另一个处理HTML的例子。这一次，我们假定Web服务器从widgets.acme.com移到了newserver.acme.com。现在你要修改一些页面中的链接： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/2005112618300616.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">执行这个搜索的正则表达式如图十三所示： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="WIDTH: 497px; CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/2005112618300616.gif" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />图十三：匹配修改前的链接</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">如果能够匹配这个正则表达式，你可以用下面的内容替换图十三的链接： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<a href="http://newserver.acme.com/interface.html#$1" target="_blank">
										</a>
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/2005112618301112.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">注意#字符的后面加上了$1。Perl正则表达式语法用$1、$2等表示已经匹配且提取出来的组。图十三的表达式把所有作为一个组匹配和提取出来的内容附加到链接的后面。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">现在，返回Java。就象前面我们所做的那样，你必须创建测试字符串，创建把正则表达式编译到Pattern对象所必需的对象，以及创建一个PatternMatcher对象：<img style="WIDTH: 426px; CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/2005112618301541.jpg" onload="return imgzoom(this,550);" /></td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">接下来，用com.oroinc.text.regex包Util类的substitute()静态方法进行替换，输出结果字符串： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/2005112618301841.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">Util.substitute()方法的语法如下： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/2005112618301144.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">这个调用的前两个参数是以前创建的PatternMatcher和Pattern对象。第三个参数是一个Substiution对象，它决定了替换操作如何进行。本例使用的是Perl5Substitution对象，它能够进行Perl5风格的替换。第四个参数是想要进行替换操作的字符串，最后一个参数允许指定是否替换模式的所有匹配子串（Util.SUBSTITUTE_ALL），或只替换指定的次数。</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/wufalong/aggbug/210972.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wufalong/" target="_blank">crazy</a> 2008-06-26 23:01 <a href="http://www.blogjava.net/wufalong/articles/210972.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正则</title><link>http://www.blogjava.net/wufalong/articles/210957.html</link><dc:creator>crazy</dc:creator><author>crazy</author><pubDate>Thu, 26 Jun 2008 14:21:00 GMT</pubDate><guid>http://www.blogjava.net/wufalong/articles/210957.html</guid><wfw:comment>http://www.blogjava.net/wufalong/comments/210957.html</wfw:comment><comments>http://www.blogjava.net/wufalong/articles/210957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wufalong/comments/commentRss/210957.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wufalong/services/trackbacks/210957.html</trackback:ping><description><![CDATA[
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<b>一、正则表达式基础知识</b>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">我们先从简单的开始。假设你要搜索一个包含字符“cat”的字符串，搜索用的正则表达式就是“cat”。如果搜索对大小写不敏感，单词“catalog”、“Catherine”、“sophisticated”都可以匹配。也就是说： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182950494.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<b>1.1 句点符号</b>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">假设你在玩英文拼字游戏，想要找出三个字母的单词，而且这些单词必须以“t”字母开头，以“n”字母结束。另外，假设有一本英文字典，你可以用正则表达式搜索它的全部内容。要构造出这个正则表达式，你可以使用一个通配符——句点符号“.”。这样，完整的表达式就是“t.n”，它匹配“tan”、“ten”、“tin”和“ton”，还匹配“t#n”、“tpn”甚至“t n”，还有其他许多无意义的组合。这是因为句点符号匹配所有字符，包括空格、Tab字符甚至换行符： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182950143.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<b>1.2 方括号符号</b>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">为了解决句点符号匹配范围过于广泛这一问题，你可以在方括号（“[]”）里面指定看来有意义的字符。此时，只有方括号里面指定的字符才参与匹配。也就是说，正则表达式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配，因为在方括号之内你只能匹配单个字符： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182950216.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<b>1.3 “或”符号</b>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">如果除了上面匹配的所有单词之外，你还想要匹配“toon”，那么，你可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。要匹配“toon”，使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号，因为方括号只允许匹配单个字符；这里必须使用圆括号“()”。圆括号还可以用来分组，具体请参见后面介绍。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182951440.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<b>1.4 表示匹配次数的符号</b>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">表一显示了表示匹配次数的符号，这些符号用来确定紧靠该符号左边的符号出现的次数： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182951978.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">假设我们要在文本文件中搜索美国的社会安全号码。这个号码的格式是999-99-9999。用来匹配它的正则表达式如图一所示。在正则表达式中，连字符（“-”）有着特殊的意义，它表示一个范围，比如从0到9。因此，匹配社会安全号码中的连字符号时，它的前面要加上一个转义字符“\”。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182951175.gif" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />图一：匹配所有123-12-1234形式的社会安全号码</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">假设进行搜索的时候，你希望连字符号可以出现，也可以不出现——即，999-99-9999和999999999都属于正确的格式。这时，你可以在连字符号后面加上“？”数量限定符号，如图二所示： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182951711.gif" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />图二：匹配所有123-12-1234和123121234形式的社会安全号码</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">下面我们再来看另外一个例子。美国汽车牌照的一种格式是四个数字加上二个字母。它的正则表达式前面是数字部分“[0-9]{4}”，再加上字母部分“[A-Z]{2}”。图三显示了完整的正则表达式。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182953490.gif" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />图三：匹配典型的美国汽车牌照号码，如8836KV</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">1.5 “否”符号 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">“^”符号称为“否”符号。如果用在方括号内，“^”表示不想要匹配的字符。例如，图四的正则表达式匹配所有单词，但以“X”字母开头的单词除外。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182953318.gif" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />图四：匹配所有单词，但“X”开头的除外</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">1.6 圆括号和空白符号 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">假设要从格式为“June 26, 1951”的生日日期中提取出月份部分，用来匹配该日期的正则表达式可以如图五所示： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182953762.gif" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />图五：匹配所有Moth DD,YYYY格式的日期</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">新出现的“\s”符号是空白符号，匹配所有的空白字符，包括Tab字符。如果字符串正确匹配，接下来如何提取出月份部分呢？只需在月份周围加上一个圆括号创建一个组，然后用ORO API（本文后面详细讨论）提取出它的值。修改后的正则表达式如图六所示： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182953186.gif" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />图六：匹配所有Month DD,YYYY格式的日期，定义月份值为第一个组</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<b>1.7 其它符号</b>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">为简便起见，你可以使用一些为常见正则表达式创建的快捷符号。如表二所示： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">表二：常用符号 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182953854.jpg" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">例如，在前面社会安全号码的例子中，所有出现“[0-9]”的地方我们都可以使用“\d”。修改后的正则表达式如图七所示： </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />
										<img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://www.newasp.net/tech/UploadPic/2005-7/20051126182954135.gif" onload="return imgzoom(this,550);" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<br />图七：匹配所有123-12-1234格式的社会安全号码</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<b>二、Jakarta-ORO库</b>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">有许多源代码开放的正则表达式库可供Java程序员使用，而且它们中的许多支持Perl 5兼容的正则表达式语法。我在这里选用的是Jakarta-ORO正则表达式库，它是最全面的正则表达式API之一，而且它与Perl 5正则表达式完全兼容。另外，它也是优化得最好的API之一。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">Jakarta-ORO库以前叫做OROMatcher，Daniel Savarese大方地把它赠送给了Jakarta Project。你可以按照本文最后参考资源的说明下载它。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">我首先将简要介绍使用Jakarta-ORO库时你必须创建和访问的对象，然后介绍如何使用Jakarta-ORO API。 </td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">
										<b>▲ PatternCompiler对象</b>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="ubb" cellspacing="0">
				<tbody>
						<tr>
								<td class="ubb">首先，创建一个Perl5Compiler类的实例，并把它赋值给PatternCompiler接口对象。Perl5Compiler是PatternCompiler接口的一个实现，允许你把正则表达式编译成用来匹配的Pattern对象。 </td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/wufalong/aggbug/210957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wufalong/" target="_blank">crazy</a> 2008-06-26 22:21 <a href="http://www.blogjava.net/wufalong/articles/210957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>