﻿<?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-Kelven Cheung-随笔分类-其它</title><link>http://www.blogjava.net/zhangrenquan/category/6022.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 07:43:06 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 07:43:06 GMT</pubDate><ttl>60</ttl><item><title>winXP自动关机命令</title><link>http://www.blogjava.net/zhangrenquan/archive/2006/08/07/62166.html</link><dc:creator>kelven</dc:creator><author>kelven</author><pubDate>Mon, 07 Aug 2006 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/zhangrenquan/archive/2006/08/07/62166.html</guid><wfw:comment>http://www.blogjava.net/zhangrenquan/comments/62166.html</wfw:comment><comments>http://www.blogjava.net/zhangrenquan/archive/2006/08/07/62166.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangrenquan/comments/commentRss/62166.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangrenquan/services/trackbacks/62166.html</trackback:ping><description><![CDATA[Windows XP的关机是由Shutdown.exe程序来控制的，位于Windows\System32文件夹中。如果想让Windows 2000也实现同样的效果，可以把Shutdown.exe复制到系统目录下。<br /><br />比如你的电脑要在22:00关机，可以选择“开始→运行”，输入“at 22:00 Shutdown -s”，这样，到了22点电脑就会出现“系统关机”对话框，默认有30秒钟的倒计时并提示你保存工作。如果你想以倒计时的方式关机，可以输入“Shutdown.exe -s -t 3600”，这里表示60分钟后自动关机，“3600”代表60分钟。<br /><br />设置好自动关机后，如果想取消的话，可以在运行中输入“shutdown -a”。另外输入“shutdown -i”，则可以打开设置自动关机对话框，对自动关机进行设置。<br /><br />Shutdown.exe的参数，每个都具有特定的用途，执行每一个都会产生不同的效果，比如“-s”就表示关闭本地计算机，“-a”表示取消关机操作，下面列出了更多参数，大家可以在Shutdown.exe中按需使用。<br /><br />  -f：强行关闭应用程序<br />　 -m：\\计算机名：控制远程计算机<br />　　-i：显示图形用户界面，但必须是Shutdown的第一个选项<br />　　-l：注销当前用户<br />　　-r：关机并重启<br />　　-t：时间：设置关机倒计时<br />　　-c：“消息内容”：输入关机对话框中的消息内容(不能超127个字符)<img src ="http://www.blogjava.net/zhangrenquan/aggbug/62166.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangrenquan/" target="_blank">kelven</a> 2006-08-07 14:18 <a href="http://www.blogjava.net/zhangrenquan/archive/2006/08/07/62166.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TOMCAT中数据库连接池的配置</title><link>http://www.blogjava.net/zhangrenquan/archive/2006/06/14/52684.html</link><dc:creator>kelven</dc:creator><author>kelven</author><pubDate>Wed, 14 Jun 2006 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/zhangrenquan/archive/2006/06/14/52684.html</guid><wfw:comment>http://www.blogjava.net/zhangrenquan/comments/52684.html</wfw:comment><comments>http://www.blogjava.net/zhangrenquan/archive/2006/06/14/52684.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangrenquan/comments/commentRss/52684.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangrenquan/services/trackbacks/52684.html</trackback:ping><description><![CDATA[
		<div class="postbody">1．将数据库驱动程序的JAR文件放在Tomcat的 common/lib 中；<br />2．在server.xml中设置数据源，以MySQL数据库为例，如下：<br />在&lt;GlobalNamingResources&gt; &lt;/GlobalNamingResources&gt;节点中加入，<br />      &lt;Resource<br />      name="jdbc/DBPool"<br />      type="javax.sql.DataSource"<br />      password="root"<br />      driverClassName="com.mysql.jdbc.Driver"<br />      maxIdle="2"<br />      maxWait="5000"<br />      username="root"<br />      url="jdbc:mysql://127.0.0.1:3306/test"<br />      maxActive="4"/&gt;<br />   属性说明：name，数据源名称，通常取”jdbc/XXX”的格式；<br />            type，”javax.sql.DataSource”;<br />            password，数据库用户密码；<br />            driveClassName，数据库驱动；<br />            maxIdle，最大空闲数，数据库连接的最大空闲时间。超过空闲时间，数据库连<br />                     接将被标记为不可用，然后被释放。设为0表示无限制。<br />            MaxActive，连接池的最大数据库连接数。设为0表示无限制。<br />            maxWait ，最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示<br />                     无限制。<br />3．在你的web应用程序的web.xml中设置数据源参考，如下：<br />  在&lt;web-app&gt;&lt;/web-app&gt;节点中加入，<br />  &lt;resource-ref&gt;<br />    &lt;description&gt;MySQL DB Connection Pool&lt;/description&gt;<br />    &lt;res-ref-name&gt;jdbc/DBPool&lt;/res-ref-name&gt;<br />    &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br />    &lt;res-auth&gt;Container&lt;/res-auth&gt;<br />    &lt;res-sharing-scope&gt;Shareable&lt;/res-sharing-scope&gt;<br /> &lt;/resource-ref&gt;<br />  子节点说明： description，描述信息；<br />               res-ref-name，参考数据源名字，同上一步的属性name；<br />               res-type，资源类型，”javax.sql.DataSource”；<br />               res-auth，”Container”；<br />               res-sharing-scope，”Shareable”；<br />4．在web应用程序的context.xml中设置数据源链接，如下：<br />  在&lt;Context&gt;&lt;/Context&gt;节点中加入，<br />  &lt;ResourceLink<br />   name="jdbc/DBPool" <br />   type="javax.sql.DataSource" <br />   global="jdbc/DBPool"/&gt;<br />   属性说明：name，同第2步和第3步的属性name值，和子节点res-ref-name值；<br />             type，同样取”javax.sql.DataSource”；<br />             global，同name值。<br /> <br />至此，设置完成，下面是如何使用数据库连接池。<br />1．建立一个连接池类，DBPool.java，用来创建连接池，代码如下：<br />import javax.naming.Context;<br />import javax.naming.InitialContext;<br />import javax.naming.NamingException;<br />import javax.sql.DataSource;<br /><br />public class DBPool {<br />    private static DataSource pool;<br />    static {<br />         Context env = null;<br />          try {<br />              env = (Context) new InitialContext().lookup("java:comp/env");<br />              pool = (DataSource)env.lookup("jdbc/DBPool");<br />              if(pool==null) <br />                  System.err.println("'DBPool' is an unknown DataSource");<br />               } catch(NamingException ne) {<br />                  ne.printStackTrace();<br />          }<br />      }<br />    public static DataSource getPool() {<br />        return pool;<br />    }<br />}<br /><br />2．在要用到数据库操作的类或jsp页面中，用DBPool.getPool().getConnection()，获得一个Connection对象，就可以进行数据库操作，最后别忘了对Connection对象调用close()方法，注意：这里不会关闭这个Connection，而是将这个Connection放回数据库连接池。<br /></div>
<img src ="http://www.blogjava.net/zhangrenquan/aggbug/52684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangrenquan/" target="_blank">kelven</a> 2006-06-14 11:17 <a href="http://www.blogjava.net/zhangrenquan/archive/2006/06/14/52684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网页素材</title><link>http://www.blogjava.net/zhangrenquan/archive/2006/03/24/37221.html</link><dc:creator>kelven</dc:creator><author>kelven</author><pubDate>Fri, 24 Mar 2006 06:59:00 GMT</pubDate><guid>http://www.blogjava.net/zhangrenquan/archive/2006/03/24/37221.html</guid><wfw:comment>http://www.blogjava.net/zhangrenquan/comments/37221.html</wfw:comment><comments>http://www.blogjava.net/zhangrenquan/archive/2006/03/24/37221.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangrenquan/comments/commentRss/37221.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangrenquan/services/trackbacks/37221.html</trackback:ping><description><![CDATA[
		<a href="http://www.021123.com/">http://www.021123.com/</a>
<img src ="http://www.blogjava.net/zhangrenquan/aggbug/37221.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangrenquan/" target="_blank">kelven</a> 2006-03-24 14:59 <a href="http://www.blogjava.net/zhangrenquan/archive/2006/03/24/37221.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat4/5连接池的设置及简单应用示例</title><link>http://www.blogjava.net/zhangrenquan/archive/2006/03/22/36810.html</link><dc:creator>kelven</dc:creator><author>kelven</author><pubDate>Wed, 22 Mar 2006 03:30:00 GMT</pubDate><guid>http://www.blogjava.net/zhangrenquan/archive/2006/03/22/36810.html</guid><wfw:comment>http://www.blogjava.net/zhangrenquan/comments/36810.html</wfw:comment><comments>http://www.blogjava.net/zhangrenquan/archive/2006/03/22/36810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangrenquan/comments/commentRss/36810.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangrenquan/services/trackbacks/36810.html</trackback:ping><description><![CDATA[1.安装JDK1.4和jakarta-tomcat-4.1.27.exe。<br /><br />  路径分别为 D:\jdk1.4 和 D:\Tomcat 4.1。<br />  安装Tomcat 4时，会要求填写web访问端口、用户名、密码等信息。<br />  web访问端口默认为8080，用户名默认为admin，密码自己填写。<br /><br />  启动Tomcat4，访问<a href="http://127.0.0.1:8080/"><u><font color="#0000ff">http://127.0.0.1:8080/</font></u></a> ，就能看到Apache Tomcat/4.1.27的欢迎访问页面，页面上有一些相关介绍信息等。<br /><br /><br />2.设置数据库的驱动<br /><br />  以Oracle的JDBC驱动设置为例：<br /><br />  Oracle8i的驱动在\oracle\ora81\jdbc\lib\目录下。名字为classes12.zip。<br /><br />  Oracle9i的驱动在\oracle9i\jdbc\lib\目录下，名字为ojdbc14.jar。<br /><br />  将这个文件copy到D:\Tomcat 4.1\common\lib 下。<br /><br />  注意，如果使用Oracle8i 的驱动，则需要在D:\Tomcat 4.1\common\lib 目录下将classes12.zip更名为classes12.jar，因为Tomcat4不认识zip的后缀名。<br /><br /><br />3.设置Web应用。<br /><br />  新建一个文件夹，名字为mypool，位置为D:\mypool。这个D:\mypool路径将是web应用的主目录。<br /><br />  打开D:\Tomcat 4.1\conf\server.xml 文件，找到如下行：<br />  <br />   &lt;!-- Tomcat Root Context --&gt;<br />     &lt;!--<br />         &lt;Context path="" docBase="ROOT" debug="0"/&gt;<br />     --&gt;<br /> <br /> <br />  在这下面，加入如下行：<br />  <br />  &lt;Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/&gt;<br /><br />  <br />  完成后，成为这个样子：<br /><br />    &lt;!-- Tomcat Root Context --&gt;<br />     &lt;!--<br />          &lt;Context path="" docBase="ROOT" debug="0"/&gt;<br />      --&gt;<br />    <br />     &lt;Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/&gt;<br /><br />  保存D:\Tomcat 4.1\conf\server.xml 文件。<br /><br />  配置完成后，重新启动Tomcat，就可以这样访问这个web应用了： <a href="http://127.0.0.1:8080/mypool/"><u><font color="#0000ff">http://127.0.0.1:8080/mypool/</font></u></a> 。<br /><br /><br />4.设置Tomcat的连接池数据源。<br /><br />  访问 <a href="http://127.0.0.1:8080/admin"><u><font color="#0000ff">http://127.0.0.1:8080/admin</font></u></a> 页面，用刚才安装 Tomcat4 时填写的用户名和密码登录。<br /><br />  登录成功后，会出现Tomcat 的web应用管理界面（Tomcat Web Server Administration Tool）。<br /><br />  然后在左边的目录树点击“Data Sources”项，右边可以看到JNDI配置的页面。<br /> <br />  在右上角的下拉框中选择“Create New Data Source”，接下来填写配置信息：<br />  <br />  JNDI Name: jdbc/myOrcl  <br />  Data Source URL: jdbc:oracle:thin:@192.168.6.40:1521:dbserver<br />  JDBC Driver Class: oracle.jdbc.driver.OracleDriver<br />  User Name: myname<br />  Password: mypassword<br />  Max. Active Connections:  可用默认值 <br />  Max. Idle Connections:    可用默认值<br />  Max. Wait for Connection: 可用默认值<br />  Validation Query: 可不填写。<br /><br />  然后，按下“save”按钮保存。<br />  再按下“Commit Changes”按钮将配置更改提交完成。<br /><br />  此时如果看看 Tomcat4 的窗口，会发现在最下面有一行文字提示：  <br /><br />   Debugging -- changes saved to conf/server.xml<br /> <br />  此时 D:\Tomcat 4.1\conf\server.xml 文件的配置已经更改保存完毕。<br /><br /><br />  如果此时打开D:\Tomcat 4.1\conf\server.xml 文件，会发现server.xml 文件的内容改变了很多。<br />  一些注释文字都被去掉了。<br /><br />  还会发现上面第三步配置Web应用的如下文字<br />    <br />   &lt;!-- Tomcat Root Context --&gt;<br />     &lt;!--<br />          &lt;Context path="" docBase="ROOT" debug="0"/&gt;<br />      --&gt;<br />    <br />     &lt;Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/&gt;<br /><br />  则被自动修改成了这样的：<br /><br />     &lt;Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" docBase="D:\mypool" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/mypool" privileged="true" reloadable="true" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"&gt;<br />        &lt;/Context&gt;<br /><br />    <br />   好了，至此位置，对Oracle的应用连接池已经配置完毕。<br />   <br />   仔细对照server.xml 文件，会发现刚才所配置的连接池信息被放置在&lt;GlobalNamingResources&gt;标签中，这意味着这个信息是可以被全局引用的，大致是如下的样子：<br /><br />    &lt;GlobalNamingResources&gt;<br />    &lt;Environment name="simpleValue" override="true" type="java.lang.Integer" value="30"/&gt;<br />    &lt;Resource name="jdbc/myOrcl" scope="Shareable" type="javax.sql.DataSource"/&gt;<br />    &lt;Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" scope="Shareable" type="org.apache.catalina.UserDatabase"/&gt;<br />    <br />    &lt;ResourceParams name="jdbc/myOrcl"&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;maxWait&lt;/name&gt;<br />        &lt;value&gt;5000&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;maxActive&lt;/name&gt;<br />        &lt;value&gt;200&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;password&lt;/name&gt;<br />        &lt;value&gt;mypassword&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;url&lt;/name&gt;<br />        &lt;value&gt;jdbc:oracle:thin:@192.168.6.40:1521:dbserver&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;driverClassName&lt;/name&gt;<br />        &lt;value&gt;oracle.jdbc.driver.OracleDriver&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;maxIdle&lt;/name&gt;<br />        &lt;value&gt;20&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;username&lt;/name&gt;<br />        &lt;value&gt;myname&lt;/value&gt;<br />      &lt;/parameter&gt;<br />    &lt;/ResourceParams&gt;<br />    &lt;ResourceParams name="UserDatabase"&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;factory&lt;/name&gt;<br />        &lt;value&gt;org.apache.catalina.users.MemoryUserDatabaseFactory&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;pathname&lt;/name&gt;<br />        &lt;value&gt;conf/tomcat-users.xml&lt;/value&gt;<br />      &lt;/parameter&gt;<br />    &lt;/ResourceParams&gt;<br />  &lt;/GlobalNamingResources&gt;  <br /><br /><br />5.设置web应用对连接池的引用。<br />  <br />  打开D:\Tomcat 4.1\conf\server.xml 文件，找到刚才配置的web应用文字，由于刚才server.xml 文件被自动修改过，并去掉了很多注释内容，所以刚才配置的web应用<br /><br />   &lt;Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/&gt;<br /><br />  被自动修改成了这样的：<br /><br />     &lt;Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" docBase="D:\mypool" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/mypool" privileged="true" reloadable="true" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"&gt;<br />        &lt;/Context&gt;<br /><br />  在&lt;Context&gt;&lt;/Context&gt;的描述中加上本web应用对全局连接池的引用说明，如下文字：<br /><br />    &lt;ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/&gt;  <br /><br />  设置完成后，web应用的描述大致如下面的样子：<br /><br />    &lt;Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" docBase="D:\mypool" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/mypool" privileged="true" reloadable="true" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper"&gt;   <br />   <br />      &lt;ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/&gt;      <br />   <br /> &lt;/Context&gt;<br /><br /><br />  保存D:\Tomcat 4.1\conf\server.xml 文件。<br /><br />  注意，设置这个连接池的引用说明是非常重要的一步。<br />  一些朋友在Tomcat4中配置连接池失败的原因大都归咎与此。还有网上一些文章说这是一个Tomcat4的一个Bug。<br />  我用了整整两天两夜的时间才明白其中的奥秘。[:(]<br />  当时离疯掉只查一点点。因为毕竟配置一个连接池是很简单的。[:(]<br /><br /><br />6.一般情况下，到此，连接池的设置就完成了。<br /><br />  然后需要重新启动Tomcat，这样就可以使用连接池来工作了。<br /><br />  但是，看到很多文章上说，还需要设置一下web.xml才能应用。我没有设置web.xml，连接池也可以完全使用。<br /><br />  现在说一下web.xml的配置方法。<br /><br />  在D:\mypool中新建文件夹，命名为WEB-INF，注意是大写的字母。<br /><br />  然后在D:\mypool\WEB-INF\ 下新建文件web.xml，其内容为：<br /><br />  &lt;web-app&gt;<br />    &lt;resource-ref&gt;<br />        &lt;description&gt;Oracle DataSource example&lt;/description&gt;<br />        &lt;res-ref-name&gt;jdbc/myOrcl&lt;/res-ref-name&gt;<br />        &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br />        &lt;res-auth&gt;Container&lt;/res-auth&gt;<br />    &lt;/resource-ref&gt;<br />  &lt;/web-app&gt;<br /><br />  保存D:\mypool\WEB-INF\web.xml 文件。<br /><br /><br />7.一个简单的应用示例。<br /><br />  写了一个简单的JSP页面，用连接池来访问数据库。<br /><br />内容如下：<br />－－－－－－－－－－－－－－－－－－－－－<br />&lt;%@ page contentType="text/html;charset=GBK"%&gt;<br />&lt;%@ page import="javax.naming.*"%&gt;<br />&lt;%@ page import="javax.sql.*"%&gt;<br />&lt;%@ page import="java.sql.*"%&gt;<br />&lt;%<br />    try<br />    {                   <br />       Context initCtx = new InitialContext();<br /> <br />       if(initCtx==null)<br />          throw new Exception("没有匹配的环境");<br /><br />       Context ctx = (Context) initCtx.lookup("java:comp/env");<br />      <br />       //获取连接池对象                   <br />       Object obj = (Object) ctx.lookup("jdbc/myOrcl");  <br />      <br />      //类型转换<br />       javax.sql.DataSource ds = (javax.sql.DataSource)obj;<br />         <br />       if(ds==null)<br />          throw new Exception("没有匹配数据库");  <br />    <br />       Connection conn = ds.getConnection();<br />      <br />       Statement stmt = conn.createStatement();                   <br />                             <br />       String strSql="select * from grade";  //SQL，要保证grade数据表里面有记录。<br />                      <br />       ResultSet rs=stmt.executeQuery(strSql);<br /><br />       if(rs.next())<br />         {                     <br />          out.println(rs.getString(1));                          <br />          out.println(rs.getString(2));                      <br />         }<br />       rs.close();      //关闭ResultSet  <br />       stmt.close();    //关闭Statement<br />       conn.close();    //将连接放回到连接池<br />     }<br /><br />     catch(Exception ex)<br /><br />     {    <br />         ex.printStackTrace();<br />         throw new SQLException("cannot get Connection pool."+ex);<br />     }<br />%&gt;<br /><br />&lt;hr&gt;<br />－－－－－－－－－－－－－－－－－－－－<br />  <br />记住，用完后的数据库连接要释放。<br />不然当打开的连接过多或恶意刷屏，连接池的连接数目会被用完。<br />当连接池的连接数目用完后，再访问jsp页面时，会在页面出现如下的错误信息，报告连接池的连接被耗尽：<br />java.sql.SQLException: DBCP could not obtain an idle db connection, pool exhausted<br /><br /><br /><br /><br />二、Win2k下Tomcat5 的连接池的配置<br /><br />安装jakarta-tomcat-5.0.13.exe，假如Tomcat5的安装目录为 D:\Tomcat 5.0 。<br /><br />别忘了把oracle的驱动程序classes12.jar文件copy到目录 D:\Tomcat 5.0\common\lib\ 下。<br /><br />Tomcat5的连接池设置和Tomcat4 的差不多，仅说明一下不同点或需要特别注意的地方。<br /><br /><br />1. Tomcat5启动后，访问 <a href="http://127.0.0.1:8080/admin"><u><font color="#0000ff">http://127.0.0.1:8080/admin</font></u></a> 页面，当设置完Tomcat的连接池数据源后，打开D:\Tomcat 5.0\conf\server.xml 文件，会看到配置的连接池相关信息大致如下样子：<br /><br />&lt;GlobalNamingResources&gt;<br />    &lt;Environment name="simpleValue" type="java.lang.Integer" value="30"/&gt;<br />    &lt;Resource name="jdbc/myOrcl" type="javax.sql.DataSource"/&gt;<br />    &lt;Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/&gt;<br />    &lt;ResourceParams name="jdbc/myOrcl"&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;maxWait&lt;/name&gt;<br />        &lt;value&gt;5000&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;maxActive&lt;/name&gt;<br />        &lt;value&gt;4&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;password&lt;/name&gt;<br />        &lt;value&gt;mypassword&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;url&lt;/name&gt;<br />        &lt;value&gt;jdbc:oracle:thin:@127.0.0.1:1521:dbserver&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;driverClassName&lt;/name&gt;<br />        &lt;value&gt;oracle.jdbc.driver.OracleDriver&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;maxIdle&lt;/name&gt;<br />        &lt;value&gt;2&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;username&lt;/name&gt;<br />        &lt;value&gt;myusername&lt;/value&gt;<br />      &lt;/parameter&gt;<br />    &lt;/ResourceParams&gt;<br />    &lt;ResourceParams name="UserDatabase"&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;factory&lt;/name&gt;<br />        &lt;value&gt;org.apache.catalina.users.MemoryUserDatabaseFactory&lt;/value&gt;<br />      &lt;/parameter&gt;<br />      &lt;parameter&gt;<br />        &lt;name&gt;pathname&lt;/name&gt;<br />        &lt;value&gt;conf/tomcat-users.xml&lt;/value&gt;<br />      &lt;/parameter&gt;<br />    &lt;/ResourceParams&gt;<br />  &lt;/GlobalNamingResources&gt;<br /><br />可以看到，一些连接池的信息配置参数已经和Tomcat4不同了。<br />但大致配置步骤和方法都是一样的。<br /><br /><br />2.设置web应用对连接池的引用。<br /><br /> 打开D:\Tomcat 5.0\conf\Catalina\localhost\ 目录，找到和web应用同名的xml文件（mypool.xml），打开这个文件，<br />修该其&lt;Context&gt;&lt;/Context&gt;的描述信息，添加如下行：<br /><br />   &lt;ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/&gt;  <br /><br />使mypool.xml文件的内容看起来大致这个：<br />  <br />   &lt;Context docBase="D:/mypool" path="/mypool" privileged="true" reloadable="true"&gt;<br />     &lt;ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/&gt;<br />   &lt;/Context&gt;<br /><br />然后保存mypool.xml，需要重新Tomcat5服务，使之生效。<br /><br /><br />3.JSP页面测试文件的写法也是一样的，不再赘述。<br /><br />4.一些补充：<br /><br />  如果web应用没有配置对连接池的引用，即没有配置&lt;ResourceLink&gt;，则会在访问jsp页面时出现如下错误：<br />    NameNotFoundException: Name jdbc is not bound in this Context<br /><br />  如果缺少Oracle的JDBC驱动，则会在访问jsp页面时出现如下错误：<br />    java.sql.SQLException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'<img src ="http://www.blogjava.net/zhangrenquan/aggbug/36810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangrenquan/" target="_blank">kelven</a> 2006-03-22 11:30 <a href="http://www.blogjava.net/zhangrenquan/archive/2006/03/22/36810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>诺基亚的一些查询指令</title><link>http://www.blogjava.net/zhangrenquan/archive/2006/02/09/30014.html</link><dc:creator>kelven</dc:creator><author>kelven</author><pubDate>Thu, 09 Feb 2006 04:35:00 GMT</pubDate><guid>http://www.blogjava.net/zhangrenquan/archive/2006/02/09/30014.html</guid><wfw:comment>http://www.blogjava.net/zhangrenquan/comments/30014.html</wfw:comment><comments>http://www.blogjava.net/zhangrenquan/archive/2006/02/09/30014.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangrenquan/comments/commentRss/30014.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangrenquan/services/trackbacks/30014.html</trackback:ping><description><![CDATA[诺基亚手机限制码－1234<BR>　　保密码&nbsp;－12345<BR>　　*#06#:看手机序列号。　　<BR>　　*#2820#&nbsp;：看兰牙版本信息，需要先将蓝牙设置为打开状态。<BR>　　*#92702689#&nbsp;：这个也是大家常用的一条命令，用来查看系统信息。<BR>　　*#335738#：删除Email,&nbsp;GPRS,&nbsp;MMS的设置信息<BR>　　*#7370925538#：删除电子钱包的内容和&nbsp;密码&nbsp;，这个比较实用，要是忘记了，你既可以用这个命令，也可以&nbsp;恢复出厂&nbsp;设置，不过这个更实用。<BR>　　*#7370#：软件格式化。删除存储空间的内容。<BR>　　*#7780#：一个&nbsp;恢复出厂&nbsp;设置的快捷操作。<BR>　　*#7220#:恢复一些功能<BR>&nbsp;&nbsp;&nbsp;&nbsp;*#92702689#LIFE：查系统版本<BR>&nbsp;&nbsp;&nbsp;&nbsp;*#0000#:查系统版本<BR><BR>以上是一些NOKIA机型的查询指令，不一定适合所有的NOKIA机型，但是基本上都可以使用。<img src ="http://www.blogjava.net/zhangrenquan/aggbug/30014.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangrenquan/" target="_blank">kelven</a> 2006-02-09 12:35 <a href="http://www.blogjava.net/zhangrenquan/archive/2006/02/09/30014.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SqlServer2000 pack3补丁</title><link>http://www.blogjava.net/zhangrenquan/archive/2006/01/17/28249.html</link><dc:creator>kelven</dc:creator><author>kelven</author><pubDate>Mon, 16 Jan 2006 17:37:00 GMT</pubDate><guid>http://www.blogjava.net/zhangrenquan/archive/2006/01/17/28249.html</guid><wfw:comment>http://www.blogjava.net/zhangrenquan/comments/28249.html</wfw:comment><comments>http://www.blogjava.net/zhangrenquan/archive/2006/01/17/28249.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangrenquan/comments/commentRss/28249.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangrenquan/services/trackbacks/28249.html</trackback:ping><description><![CDATA[下载地址：<A href="http://download.17hk.com/soft.asp?softid=44">http://download.17hk.com/soft.asp?softid=44</A>&nbsp;&nbsp;&nbsp;<FONT style="BACKGROUND-COLOR: #ffffff" color=#ff0000>(21.6M)<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="http://www.it1848.com/Soft/cyrjxz/yyrjxz/200510/Soft_20051014114011.html">http://www.it1848.com/Soft/cyrjxz/yyrjxz/200510/Soft_20051014114011.html</A>&nbsp;<FONT color=#ff0000>(46.4M)<BR></FONT><BR>(WindowsXP SP2系统上SQLServer2000必须要安装SP3之后的补丁才能正常使用)<BR><BR>由于SQL Server Service Packs按照累积形式进行组织，因此，SP3包含了先期发布的 Service Pack 1（SP1）与 Service Pack 2（SP2）中的所有修正程序，它既可应用于全新安装的系统，也可在已经安装SP1或SP2的系统上加以应用。<BR><BR>　　优势<BR>　　除提供最新更新内容与修正程序外，SQL Server 2000 SP3还能够为您提供以下优势：<BR><BR>　　可维护性<BR>　　在可维护性方面的改进包括： <BR>得以增强的错误报告功能。通过适当配置，SQL Server能够将关键性错误信息自动发送至Microsoft公司。 <BR>　　得以改进的多服务器管理功能。 <BR>　　用于实现监控的新增API。数据库管理员（DBA）或第三方工具可以对出现问题的进程加以诊断 <BR>　　性能<BR>　　SP3引入了针对QLogic’s VI-enabled SANblade QLA2350 Fibre Channel控制器的支持能力。通过在SQL Server网络互连层上应用虚拟接口（Virtual Interface）技术，在服务器和客户端系统上针对每条消息所消耗的CPU资源得以显著降低，同时，系统整体性能得到了相应提高。 <BR>　　安全性<BR>　　最新提供的安全特性与工具包括： <BR>　　针对SQL Server 2000在线图书的内容更新。SQL Server 2000在线图书为广大客户提供了用以进一步增强应用环境安全性所需的更多指导信息。 <BR>　　安全修补程序。SP3针对用户反映或在持续测试过程中发现的各种已知薄弱环节提供了相应的修复程序。 <BR>　　SQL Server Agent增强。SP3允许您在不具备管理员权限的情况下运行SQL Server Agent。<img src ="http://www.blogjava.net/zhangrenquan/aggbug/28249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangrenquan/" target="_blank">kelven</a> 2006-01-17 01:37 <a href="http://www.blogjava.net/zhangrenquan/archive/2006/01/17/28249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL 4.1x 中文乱码问题</title><link>http://www.blogjava.net/zhangrenquan/archive/2006/01/01/26238.html</link><dc:creator>kelven</dc:creator><author>kelven</author><pubDate>Sun, 01 Jan 2006 00:02:00 GMT</pubDate><guid>http://www.blogjava.net/zhangrenquan/archive/2006/01/01/26238.html</guid><wfw:comment>http://www.blogjava.net/zhangrenquan/comments/26238.html</wfw:comment><comments>http://www.blogjava.net/zhangrenquan/archive/2006/01/01/26238.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangrenquan/comments/commentRss/26238.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangrenquan/services/trackbacks/26238.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 现在多数host装的还是MySQL 4.0x 版本以下，如果升级到了4.1x 或者移动到使用4.1x 的主机上，估计会遇到一些问题。我在这上面遇到了两个问题。<BR>&nbsp;&nbsp;&nbsp; 一是数据导入。在phpMyAdmin内导入后，发现中文变成了乱码。搜索学习后，了解到需要设置数据库的collation (校勘)，如果你的数据库是utf-8的，设置为utf8_general_ci就可以了。<BR>&nbsp;&nbsp;&nbsp; 二是，即使正确导入了，在phpMyAdmin里也能正确显示，但页面上显示的文章内容都是“???”，而模板里面的汉字都能正常显示。这让我头疼了很久。搜索到Windix’s Weblog上有对此的说明：<BR>&nbsp;&nbsp;&nbsp; “从MySQL 4.1开始引入的多语言支持确实很棒，而且一些特性已经超过了其他的数据库系统。不过我在测试过程中发现使用适用于MySQL 4.1之前的PHP语句操作MySQL数据库会造成乱码，即使是设置过了表字符集也是如此。我读了一下新的MySQL在线手册中第十章‘Character Set Support’后终于找到了解决方法并测试通过。MySQL 4.1的字符集支持(Character Set Support)有两个方面：字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server)，数据库(database)，数据表(table)和连接(connection)。当我们按照原来的方式通过PHP存取MySQL数据库时，就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询，你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句：<BR>SET NAMES ‘utf8′;”<BR>&nbsp;&nbsp;&nbsp; 但是我依旧不知道，如何，在何处让WordPress运行这个SQL语句。后来在阿修的部落格上查到办法：<BR>&nbsp; “為著解決這個問題必須去修改wp-includes/wp-db.php內的資料連線設定。詳細的修改方式是這樣的：<BR>$this-&gt;dbh = @mysql_connect($dbhost,$dbuser,$dbpassword);<BR>//加上下面這行<BR>$this-&gt;query(”SET NAMES ‘utf8′”);”<BR>这样子终于能正常显示中文的WordPress了。虽然后来还是没用，但是觉得这个经验会对别人有用。记得有人用email和我讨论过这样子的中文显示问题，但是我那时哪里知道问题出在MySQL 4.1x上。<BR>还有，4.1x的数据库不向下兼容，所以升级的时候要三思啊。 <BR><img src ="http://www.blogjava.net/zhangrenquan/aggbug/26238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangrenquan/" target="_blank">kelven</a> 2006-01-01 08:02 <a href="http://www.blogjava.net/zhangrenquan/archive/2006/01/01/26238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Resin2.1.12的数据库连接池配置 </title><link>http://www.blogjava.net/zhangrenquan/archive/2005/12/16/24185.html</link><dc:creator>kelven</dc:creator><author>kelven</author><pubDate>Fri, 16 Dec 2005 04:58:00 GMT</pubDate><guid>http://www.blogjava.net/zhangrenquan/archive/2005/12/16/24185.html</guid><wfw:comment>http://www.blogjava.net/zhangrenquan/comments/24185.html</wfw:comment><comments>http://www.blogjava.net/zhangrenquan/archive/2005/12/16/24185.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangrenquan/comments/commentRss/24185.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangrenquan/services/trackbacks/24185.html</trackback:ping><description><![CDATA[<DIV class=postText>Resin的确是比较狠的应用服务器，运行速度快，配置又简单！这里介绍一下Resin2.1.12的数据库连接池配置方法。 <BR><BR>在%ResinHome%/conf/resin.conf中找到 <BR>&lt;!-- <BR>- Sample database pool configuration <BR>- The JDBC name is java:comp/env/jdbc/test <BR>--&gt; <BR>在其下加入相应的信息可以连接到不同的数据库。 <BR><BR>Mysql： <BR>&lt;resource-ref&gt; <BR>&lt;res-ref-name&gt;jdbc/blog&lt;/res-ref-name&gt; <BR>&lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt; <BR>&lt;init-param driver-name="com.caucho.jdbc.mysql.Driver"/&gt; <BR>&lt;init-param url="jdbc:mysql_caucho://localhost:3306/blog"/&gt; <BR>&lt;init-param user="root"/&gt; <BR>&lt;init-param password="****"/&gt; <BR>&lt;init-param max-connections="20"/&gt; <BR>&lt;init-param max-idle-time="30"/&gt; <BR>&lt;/resource-ref&gt; <BR><BR>将相应的驱动放到%Resin/lib/%下。 <BR><BR>MS-Sql： <BR>&lt;resource-ref&gt; <BR>&lt;res-ref-name&gt;jdbc/blog&lt;/res-ref-name&gt; <BR>&lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt; <BR>&lt;init-param driver-name="com.microsoft.jdbc.sqlserver.SQLServerDriver"/&gt; <BR>&lt;init-param url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=blog"/&gt; <BR>&lt;init-param user="sa"/&gt; <BR>&lt;init-param password="****"/&gt; <BR>&lt;init-param max-connections="20"/&gt; <BR>&lt;init-param max-idle-time="30"/&gt; <BR>&lt;/resource-ref&gt; <BR>首先要下载安装sqlserver-jdbc-驱动，然后将其lib下的三个jar文件放到%Resin/lib/%下。 </DIV><img src ="http://www.blogjava.net/zhangrenquan/aggbug/24185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangrenquan/" target="_blank">kelven</a> 2005-12-16 12:58 <a href="http://www.blogjava.net/zhangrenquan/archive/2005/12/16/24185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Resin使用</title><link>http://www.blogjava.net/zhangrenquan/archive/2005/12/15/24016.html</link><dc:creator>kelven</dc:creator><author>kelven</author><pubDate>Thu, 15 Dec 2005 05:22:00 GMT</pubDate><guid>http://www.blogjava.net/zhangrenquan/archive/2005/12/15/24016.html</guid><wfw:comment>http://www.blogjava.net/zhangrenquan/comments/24016.html</wfw:comment><comments>http://www.blogjava.net/zhangrenquan/archive/2005/12/15/24016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangrenquan/comments/commentRss/24016.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangrenquan/services/trackbacks/24016.html</trackback:ping><description><![CDATA[<STRONG>Resin使用简介</STRONG> 
<P class=a14>使用Resin开发Java Web项目时，需要建立自己的WebApp。这里不介绍Resin Cmp/Ejb的开发和使用，只介绍用Resin开发普通的jsp\java servlet项目。在这里还要谈到resin.conf的配置。Resin中的应用可以有2种方式发布：一是在Resin的目录下发布；二是打包成War发布。</P>
<P class=a14><I>1、在Resin的目录下发布</I></P>
<P class=a14>在resin.conf中查找&lt;web-app&gt;标签，该标签表示一个web应用。</P>
<P class=a14>标签中，id属性表示该应用的Web路径。如&lt;web-app id=’/test’&gt;，表示该应用在Web上访问的时候应该用http://hostname/test/来访问。app-dir属性表示该应用的实际路径。如&lt;app-dir&gt;d:\resin\doc\test&lt;/app-dir&gt;表示该应用在d:\resin\doc\test目录下面。默认值为根下面的和id同名的目录。Resin可以配置3种error-page：404错误也就是文件找不到错误页；Exception违例页；不能连接java引擎页。他们分别可以这样子设置。</P>
<P class=a14><I>404文件找不到页</I></P>
<P class=a14>&lt;web-app id='/app1'&gt;</P>
<P class=a14>&lt;error-page error-code='404' location='/file_not_found.jsp'/&gt;</P>
<P class=a14>&lt;/web-app&gt;</P>
<P class=a14><I>Exception 违例页</I></P>
<P class=a14>&lt;web-app id='/foo'&gt;</P>
<P class=a14>&lt;error-page exception-type='java.lang.NullPointerException'</P>
<P class=a14>location='/nullpointer.jsp'/&gt;</P>
<P class=a14>&lt;/web-app&gt;</P>
<P class=a14><I>不能连接到srun Servlet引擎错误页</I></P>
<P class=a14>该页设置和应用无关，属于服务器的设置。</P>
<P class=a14>&lt;http-server&gt;</P>
<P class=a14>&lt;error-page exception-type='connection'</P>
<P class=a14>location='/missing_file.html'/&gt;</P>
<P class=a14>&lt;/http-server&gt;</P>
<P class=a14><I>classpath的设置</I></P>
<P class=a14>参见下面的语句：</P>
<P class=a14>&lt;classpath id='WEB-INF/classes' source='WEB-INF/src' compile='true'/&gt;</P>
<P class=a14>id参数的值表示classpath中编译后的classpath的存放路径；source参数的值表示classpath中java源代码的存放路径；compile中的值可能是true或者false，表示是否由Resin的srun自动编译java源代码。Classpath的设置一般和javaBean或者Servlet的使用有关。id的值表示javaBean的编译好的包存放的根，source的值表示javaBean的java源代码存放的根。Servlet相同。</P>
<P class=a14><I>Servlet的设置</I></P>
<P class=a14>参见下面的语句：</P>
<P class=a14>&lt;servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/&gt;</P>
<P class=a14>&lt;servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/&gt;</P>
<P class=a14>&lt;servlet-mapping url-pattern='/servlet/*' servlet-name='invoker'/&gt;</P>
<P class=a14>一般就是指定那些需要通过srun的解析。比如在这里，把*.jsp改成*.jss，其他不变，那么只要在访问时遇到*.jss的文件就和原来遇到*.jsp一样处理。通过这个可以指定解析的引擎，如以下的配置：</P>
<P class=a14>&lt;servlet-mapping url-pattern='*.xtp' servlet-name='com.caucho.jsp.XtpServlet'/&gt;</P>
<P class=a14>在Servlet中，也可以指定servlet。如</P>
<P class=a14>&lt;servlet servlet-name='hello' servlet-class='test.HelloWorld'/&gt;</P>
<P class=a14>&lt;servlet-mapping url-pattern='/hello.html' servlet-name='hello'/&gt;</P>
<P class=a14>在servlet-mapping中有个重要的参数case-sensitive 如果在windows上，最好配置成false，忽略大小写，从而和windows的约定一致。</P>
<P class=a14><I>Session的配置</I></P>
<P class=a14>参见如下的配置语句：</P>
<P class=a14>&lt;session-config&gt;</P>
<P class=a14>&lt;session-max&gt;4096&lt;/session-max&gt;</P>
<P class=a14>&lt;session-timeout&gt;30&lt;/session-timeout&gt;</P>
<P class=a14>&lt;enable-cookies&gt;true&lt;/enable-cookies&gt;</P>
<P class=a14>&lt;enable-url-rewriting&gt;true&lt;/enable-url-rewriting&gt;</P>
<P class=a14>&lt;file-store&gt;WEB-INF/sessions&lt;/file-store&gt;</P>
<P class=a14>&lt;/session-config&gt;</P>
<P class=a14>session-max ：最大 session数量</P>
<P class=a14>session-timeout ：session过期时间，以分钟为单位。</P>
<P class=a14>是否允许cookie ：指session是否采用cookies。如果采用cookies，浏览器必须支持session才能使用，发布时建议改成false。enable-url-rewriting和enable-cookies一般配合使用。如果enable-cookies是false，enable-url-rewriting应该设成true比较合适。</P>
<P class=a14>file-store ：该配置指示服务器是否把session作为文件存放在服务器上。如果把该项注释掉，则在你的web-app目录下的WEB-Inf/sessions目录不保存序列化后的session对象。Session还有jdbc-store配置，对应着把session通过jdbc永久保存在数据库中。其实也就是会话变量的序列化后的保存和重新载入的物理实现。在这里session还支持了多服务器的设置问题，</P>
<P class=a14>通过tcp-store参数设置。由于涉及到负载平衡的问题，在这里不详细叙述，只简单写一个例子：</P>
<P class=a14>&lt;http-server&gt;</P>
<P class=a14>&lt;http id='a' port='80'/&gt;</P>
<P class=a14>&lt;srun id='a' host='host-a' port='6802'/&gt;</P>
<P class=a14>&lt;http id='b' port='80'/&gt;</P>
<P class=a14>&lt;srun id='b' host='host-b' port='6802'/&gt;</P>
<P class=a14>&lt;host id=''&gt;</P>
<P class=a14>&lt;web-app id=''&gt;</P>
<P class=a14>&lt;session-config&gt;</P>
<P class=a14>&lt;tcp-store/&gt;</P>
<P class=a14>&lt;always-load-session/&gt;</P>
<P class=a14>&lt;/session-config&gt;</P>
<P class=a14>&lt;/web-app&gt;</P>
<P class=a14>&lt;/host&gt;</P>
<P class=a14>&lt;/http-server&gt;</P>
<P class=a14>这个例子表示session是按照tcp ring的方式传递。</P>
<P class=a14><I>temp-dir 的设置</I></P>
<P class=a14>temp-dir指的是应用的临时目录。也就是在javax.servlet.context.tempdir中用到的目录。模认是应用目录下的WEB-INF\tmp目录。</P>
<P class=a14>以上的设置都可以在&lt;web-app&gt;标签对中设置，控制某个web应用的设置。</P>
<P class=a14><I>2、打包成War发布</I></P>
<P class=a14>以下是介绍对如何在resin下使用已经打包成War的java Web应用进行发布。</P>
<P class=a14>其实这个是最简单也是最清晰的良好方法。在j2ee中，所有的项目都打包成ear发布。其中，Web应用打包成war，ejb应用打包成jar。在resin中，这些都可以直接部署。这里我只对打包成war的Web应用的部署做介绍。</P>
<P class=a14>在resin.conf中，查找这个：&lt;war-dir id='webapps'/&gt;。他表示war文件应该被拷贝的路径。这里指的是相对于resin的安装路径，如以上的设置表示d:\resin\webapps。只要重新启动Resin就可以了。Resin会把该war自动解包到webapps目录下。你可以在command控制台或者stdout.log中看到类似于</P>
<P class=a14>[2002-04-27 09:56:21.680] initializing application http://haitaiserver:8080/rwtest 的语句。这个表示该Web应用是自动安装的。只要这个应用是符合j2ee标准的Web应用，应该不会有问题。通过如上显示的路径就可以访问到这个应用。如果你到d:\resin\webapps\rwtest中浏览，你会看到Resin已经为你生成了rwtest目录，下面是META-INF和WEB-INF还有你自己的JSP\servlet 文件和目录。是完全符合j2ee的结构的。你可以在rwtest目录下建立新的jsp\servlet，一样可以被编译和解析并运行的。在实际操作中，可以使用Jbuilder 或者 WebSphere等Ide工具进行集成调试和打包，非常的方便。</P>
<P class=a14><B>使用Resin进行java Web项目的开发和调试</B></P>
<P class=a14>这里篇幅有限，不可能讲太多，我只对实际中最有用的部分做介绍。</P>
<P class=a14>Resin中如果定义了错误页，则出错后最常见的一大串Exception不会被看到，直接跳转到错误页。所以建议开发中先不设置错误页。jsp错误中最常见的就是Nullpoint Exception，其次是名称的拼写错误。错误也可以在Resin安装目录下的log目录下的stderr.log中找到。通过对该log文件的分析可以看到很多有用的错误信息。</P>
<P class=a14>在调试jsp的时候，如果定义了compile为true，jsp先被翻译成Servlet的java文件，再被编译成class文件。可以在你自己的work目录中找到该文件。java的名称在Resin中是这样子定义的：原先的jsp文件名前加下划线，再加上_jsp这个字样。所以在java 应用中的命名不要以_jsp结尾，也不要出现中文名称等字符；其实名称以_jsp为开头也是不合法的。</P>
<P class=a14>关于java对多国语言的支持问题，在Resin中得到了很好的解决。以jsp为例，参考Resin自动生成的java Servlet文件。只要在任何的jsp文件的最开始处增加：</P>
<P class=a14>&lt;%@page contentType="text/html;charset=gb2312" %&gt;</P>
<P class=a14>中文问题就解决了。察看生成的Servlet源文件片断：</P>
<P class=a14>response.setContentType("text/html;charset=gb2312");</P>
<P class=a14>request.setCharacterEncoding("GB2312");</P>
<P class=a14>以上为设置字符集</P>
<P class=a14>private static byte []_jsp_string26;</P>
<P class=a14>private static byte []_jsp_string27;</P>
<P class=a14>_jsp_string26 = "\r\n&lt;/table&gt;\r\n&lt;table class=\"type\"&gt;\r\n&lt;tr&gt;\r\n &lt;td&gt;".getBytes("GB2312");</P>
<P class=a14>_jsp_string27 = "\r\n&lt;/td&gt;&lt;td&gt;\r\n&lt;/tr&gt;\r\n&lt;!--\r\n&lt;tr&gt;\r\n&lt;td&gt;\r\".getBytes("GB2312");</P>
<P class=a14>以上是对页面的显示的编码。其中，getBytes(“gb2312”)是静态编码，这是Resin为了解决某些环境下还是不能正常显示而设置的。在Resin的配置文件(/conf/resin.conf)中，可以通过设置&lt;jsp precompile='true' static-encoding='false' recompile-on-error='true'/&gt;中的static-encoding属性为true或者false，来控制是否静态编码。其实在Resin容器的内部，所有的字符都是按照iso-8859-1来处理的。iso-8859-1是一个大字符集，虽然中文的gb2312和8859在字的定义上有不同，但是编码是包容了gb2312的。按照解决多国语言的方法，在纯英文平台上用iso-8859-1处理内部编码，而把字符的显示推向客户端的机器。所以这样只要编码是正确的，</P>
<P class=a14>在页面上显示中文就不存在问题。Tomcat3.2不方便的地方是Tomcat对数据库的操作中文支持不好，需要手动在java Bean或者Servlet中硬编码。通过测试，在Resin中完全没有这个问题。Tomcat4.0解决了这个问题。不过个人习惯来讲还是觉得resin在配置方面方便一些。</P>
<P class=a14>在Resin中可以自动解决引入的jar。这个在使用特殊的类或者第三方提供的开发包非常有用。方法非常简单：只要把该jar或者是zip拷贝到Resin安装目录下的lib目录下面，重新启动Resin，就可以了。如db2用到的db2java.zip文件，只要轻松拷贝到d:\resin\lib中就可以了。</P>
<P class=a14>Resin提供了对Jbuilder的集成调试。可以到：</P>
<P class=a14>http://www.caucho.com/projects/jbuilder/resin-jbuilder.jar免费下载到resin的jbuilder的ide扩展包。然后，把该包该名成：resin-jbuilder.jar，拷贝到jbuilder6\lib\ext目录下。然后，把Resin2.1解包安装在jbuilder6\resin-2.1目录下，就可以了。打开任何的War项目，在project上点右键，选择properties，选择Servers标签。在原来的选择框上，就可以看到多了一项Resin2.1。这样子就可以象原来用tomcat一样调试jsp\servlet了，而且比Tomcat更方便。见图2：</P>
<P class=a14 align=center><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><?XML:NAMESPACE PREFIX = V /><V:SHAPETYPE id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><V:STROKE joinstyle="miter"></V:STROKE><V:FORMULAS><V:F eqn="if lineDrawn pixelLineWidth 0"></V:F><V:F eqn="sum @0 1 0"></V:F><V:F eqn="sum 0 0 @1"></V:F><V:F eqn="prod @2 1 2"></V:F><V:F eqn="prod @3 21600 pixelWidth"></V:F><V:F eqn="prod @3 21600 pixelHeight"></V:F><V:F eqn="sum @0 0 1"></V:F><V:F eqn="prod @6 1 2"></V:F><V:F eqn="prod @7 21600 pixelWidth"></V:F><V:F eqn="sum @8 21600 0"></V:F><V:F eqn="prod @7 21600 pixelHeight"></V:F><V:F eqn="sum @10 21600 0"></V:F></V:FORMULAS><V:PATH o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></V:PATH><?XML:NAMESPACE PREFIX = O /><O:LOCK v:ext="edit" aspectratio="t"></O:LOCK></V:SHAPETYPE><IMG height=448 src="http://www.ccw.com.cn/htm/center/skill/02_8_27_5b.jpg" width=410 v:shapes="_x0000_i1025"></SPAN><FONT face="宋体, MS Song"> </FONT></P>
<P class=a14 align=center>图2</P>
<P class=a14>调试方法和用Tomcat调试一样。</P>
<P class=a14><B>其他问题</B></P>
<P class=a14>使用Resin可以和apache结合使用。也就是利用apache做http服务器，而Resin做srun服务器。可以参考resin\conf\samples目录下的apache.conf。主要就是把 app-dir 设成 /usr/local/apache/htdocs（也就是apache的root）。同时在apache 中的http.conf也做了相应的设置。Resin还提供了对该过程的自动安装程式，运行resin\bin\setup，你可以在弹处的对话框中选择apache，这样子就可以了。只要你曾经安装过apache，resin可以自己找到httpd.conf文件所在的路径。</P>
<P class=a14>使用命令行方式启动Resin，如果改动了Resin.conf，Resin会自己重新启动适应新的配置。这个很适合初期安装时使用。</P>
<P class=a14>Resin对数据库缓冲池的支持很好。在这里，它提供了DBPool对缓冲池做了封装。实际使用时，只要在resin.conf这样配置：</P>
<P class=a14>&lt;dbpool.sql&gt;</P>
<P class=a14>&lt;id&gt;ORCL&lt;/id&gt;</P>
<P class=a14>&lt;driver&gt;oracle.jdbc.driver.OracleDriver&lt;/driver&gt;</P>
<P class=a14>&lt;url&gt;jdbc:oracle:thin:@localhost:1521:SMTH&lt;/url&gt;</P>
<P class=a14>&lt;!-- &lt;url&gt;jdbc:oracle:oci8:@SMTH&lt;/url&gt; --&gt;</P>
<P class=a14>&lt;user&gt;scott&lt;/user&gt;</P>
<P class=a14>&lt;password&gt;tiger&lt;/password&gt;</P>
<P class=a14>&lt;max-connections&gt;5&lt;/max-connections&gt;</P>
<P class=a14>&lt;/dbpool.sql&gt;</P>
<P class=a14>然后，在你的jsp或者servlet中就可以这样子使用了：</P>
<P class=a14>先导入 com.caucho.sql.*包，然后如下直接得到连接：</P>
<P class=a14>Connection conn = DBPool.getPool("ORCL").getConnection();</P>
<P class=a14>个人建议不要如上使用连接池，还是按照ejb的方法用从Context中直接找到的DataSource对象中得到连接通用性比较好。代码也很简单：</P>
<P class=a14>Context ctx = new InitialContext();</P>
<P class=a14>DataSource ds = (DataSource)ctx.lookup(“jdbc/EmployeeDB”);</P>
<P class=a14>Connection conn = ds.getConnection();</P>
<P class=a14>在Resin中如下配置jdbc就可以了：</P>
<P class=a14>&lt;resource-ref&gt;</P>
<P class=a14>&lt;res-ref-name&gt; jdbc/EmployeeDB&lt;/res-ref-name&gt;</P>
<P class=a14>&lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;</P>
<P class=a14>&lt;init-param driver-name="com.caucho.jdbc.mysql.Driver"/&gt;</P>
<P class=a14>&lt;init-param url="jdbc:mysql_caucho://localhost:3306/test"/&gt;</P>
<P class=a14>&lt;init-param user="name"/&gt;</P>
<P class=a14>&lt;init-param password="password"/&gt;</P>
<P class=a14>&lt;init-param max-connections="20"/&gt;</P>
<P class=a14>&lt;init-param max-idle-time="30"/&gt;</P>
<P class=a14>&lt;/resource-ref&gt;</P>
<P class=a14>用Resin Web Server开发还是比较愉快的。只是没有像Weblogic 或者WebSphere那样子提供现成的管理控制台而已。但是从稳定性和方便性来讲，Resin个人认为比Tomcat要好很多。况且Resin还有提供了resin-cmp 和 resin-ejb，功能更强大。</P><img src ="http://www.blogjava.net/zhangrenquan/aggbug/24016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangrenquan/" target="_blank">kelven</a> 2005-12-15 13:22 <a href="http://www.blogjava.net/zhangrenquan/archive/2005/12/15/24016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正则表达式学习</title><link>http://www.blogjava.net/zhangrenquan/archive/2005/12/12/23458.html</link><dc:creator>kelven</dc:creator><author>kelven</author><pubDate>Mon, 12 Dec 2005 05:38:00 GMT</pubDate><guid>http://www.blogjava.net/zhangrenquan/archive/2005/12/12/23458.html</guid><wfw:comment>http://www.blogjava.net/zhangrenquan/comments/23458.html</wfw:comment><comments>http://www.blogjava.net/zhangrenquan/archive/2005/12/12/23458.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangrenquan/comments/commentRss/23458.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangrenquan/services/trackbacks/23458.html</trackback:ping><description><![CDATA[<H3>目录</H3>正则表达式介绍<A href="/zhangrenquan/archive/2005/12/12/23458.html#man_match_mode"><BR>匹配模式</A><BR><A href="/zhangrenquan/archive/2005/12/12/23458.html#man_char_class">字符子集</A><BR><A href="/zhangrenquan/archive/2005/12/12/23458.html#man_line_terminator">行结束符</A><BR><A href="/zhangrenquan/archive/2005/12/12/23458.html#man_group">分组和引用</A><BR><A href="/zhangrenquan/archive/2005/12/12/23458.html#man_unicode">Unicode支持</A><BR><BR><BR><A href="/zhangrenquan/archive/2005/12/12/23458.html#reference">正则表达式语法参考</A><BR>
<OL>
<LI><A HREF="/zhangrenquan/archive/2005/12/12/23458.html#ref_chars">字符</A> 
<LI><A HREF="/zhangrenquan/archive/2005/12/12/23458.html#ref_logicopr">逻辑操作符</A> 
<LI><A HREF="/zhangrenquan/archive/2005/12/12/23458.html#ref_backref">向后引用</A> 
<LI><A HREF="/zhangrenquan/archive/2005/12/12/23458.html#ref_boundmeta">边界元字符</A> 
<LI><A HREF="/zhangrenquan/archive/2005/12/12/23458.html#ref_repeatindicator">重复指示符</A> 
<LI><A HREF="/zhangrenquan/archive/2005/12/12/23458.html#ref_char_class">字符子集</A> 
<LI><A HREF="/zhangrenquan/archive/2005/12/12/23458.html#ref_predef_meta">预定义子集（元字符）</A>
<LI>扩展子集（元字符） 
<LI><A HREF="/zhangrenquan/archive/2005/12/12/23458.html#ref_chinese_meta">扩展中文子集（元字符）</A> 
<LI><A HREF="/zhangrenquan/archive/2005/12/12/23458.html#ref_posix_subset">POSIX字符子集（只适用于ASCII）</A> 
<LI><A HREF="/zhangrenquan/archive/2005/12/12/23458.html#ref_unicode_category">Unicode块和分类</A><BR></LI></OL><BR>替换表达式<BR><A HREF="/zhangrenquan/archive/2005/12/12/23458.html#man_subexp">替换表达式<BR></A>
<OL>
<LI><A HREF="/zhangrenquan/archive/2005/12/12/23458.html#subexp_chars">特殊字符</A> 
<LI><A HREF="/zhangrenquan/archive/2005/12/12/23458.html#subexp_custtbl">自定义替换表</A><BR></LI></OL>
<HR width="100%" SIZE=2>

<H3><A name=man_match_mode></A>匹配模式</H3>匹配模式指得是正则表达式引擎将以何种模式匹配字符串。<BR>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top>模式名称<BR></TD>
<TD vAlign=top>启用，禁用<BR></TD>
<TD vAlign=top>缺省启用<BR></TD>
<TD vAlign=top>说明<BR></TD></TR>
<TR>
<TD vAlign=top>UNIX_LINES<BR></TD>
<TD vAlign=top>(?d)启用，(?-d)禁用<BR></TD>
<TD vAlign=top>是<BR></TD>
<TD vAlign=top>启用Unix行模式。<BR>在此模式下，只有 <TT>'\n'</TT>被认为是行结束符。它会影响<TT>.</TT>, <TT>^</TT>, 和 <TT>$</TT> 的行为。<BR><BR></TD></TR>
<TR>
<TD vAlign=top>CASE_INSENSITIVE<BR></TD>
<TD vAlign=top>(?i)启用，(?-i)禁用<BR></TD>
<TD vAlign=top>否<BR></TD>
<TD vAlign=top>启用忽略大小写模式。<BR>缺省时，忽略大小写模式只会影响 ASCII字符的匹配。 而Unicode范围的忽略大小写匹配需要通过 UNICODE_CASE 标志与本标志联合使用。<BR>启用此模式会影响匹配性能。<BR><BR></TD></TR>
<TR>
<TD vAlign=top>COMMENTS<BR></TD>
<TD vAlign=top>(?x)启用，(?-x)禁用<BR></TD>
<TD vAlign=top>否<BR></TD>
<TD vAlign=top>允许空格和注释出现在正则表达式中。<BR>在此模式下，空格被忽略，以#开始的单行注释被忽略。 <BR></TD></TR>
<TR>
<TD vAlign=top>MULTILINE<BR></TD>
<TD vAlign=top>(?m)启用，(?-m)禁用<BR></TD>
<TD vAlign=top>是<BR></TD>
<TD vAlign=top>启用多行模式。<BR>In multiline mode the expressions <TT>^</TT> and <TT>$</TT> match just after or just before, respectively, a line terminator or the end of the input sequence. By default these expressions only match at the beginning and the end of the entire input sequence. <BR><BR></TD></TR>
<TR>
<TD vAlign=top>DOTALL<BR></TD>
<TD vAlign=top>(?s)启用，(?-s)禁用<BR></TD>
<TD vAlign=top>否<BR></TD>
<TD vAlign=top>让.可以匹配行结束符。<BR>在此模式下，元字符<TT>.</TT>可以匹配行结束符。缺省不允许如此匹配。<BR><BR><BR></TD></TR>
<TR>
<TD vAlign=top>UNICODE_CASE<BR></TD>
<TD vAlign=top>(?u)启用，(?-u)禁用<BR></TD>
<TD vAlign=top>否<BR></TD>
<TD vAlign=top>Enables Unicode-aware case folding.<BR>When this flag is specified then case-insensitive matching, when enabled by the <CODE>CASE_INSENSITIVE</CODE> flag, is done in a manner consistent with the Unicode Standard. By default, case-insensitive matching assumes that only characters in the US-ASCII charset are being matched. 启用此模式会影响性能。<BR><BR></TD></TR>
<TR>
<TD vAlign=top>CANON_EQ<BR></TD>
<TD vAlign=top>(?c)启用，(?-c)禁用<BR></TD>
<TD vAlign=top>否<BR></TD>
<TD vAlign=top>Enables canonical equivalence.<BR>When this flag is specified then two characters will be considered to match if, and only if, their full canonical decompositions match. The expression <TT>"a\u030A"</TT>, for example, will match the string <TT>"?"</TT> when this flag is specified. By default, matching does not take canonical equivalence into account. <BR>启用此模式会影响性能。<BR><BR></TD></TR></TBODY></TABLE><BR><BR>
<H3><A name=man_char_class></A>字符子集</H3>字符子集可以含有别的字符子集，并且可以通过联合操作符（缺省）和交集操作符（&amp;&amp;）实现组合。联合操作符表示某个子集匹配它的子子集所匹配的任意字符。交集操作符表明某个字符子集只匹配它的子子集都匹配的字符。<BR>字符子集所能够有的操作符的优先级如下，从高到低：<BR>
<OL>
<LI>转义符\x 
<LI>成组符 [...] 
<LI>区间符 a-z 
<LI>联合符 [a-e][i-u] 
<LI>交集符 [a-z&amp;&amp;[aeiou]]</LI></OL>注意：在字符子集[]内部的语法根本不同于正则表达式其它部分中的语法。例如，在字符子集内部，正则表达式 . 失去了它原有的含义，而是成了一个匹配.的元字符。 <BR><BR>
<H3><A name=man_line_terminator></A>行结束符</H3>行结束符是一个或两个字符序列，用以表明输入字符序列中一行的结束。下面的字符被认为是行结束符：<BR>
<UL>
<LI>一个换行符('\n')。 
<LI>一个回车符加上一个换行符("\r\n")。 
<LI>一个单独的回车符('\r')。 
<LI>代表下一行的字符('\u0085')。 
<LI>行分隔符('\u2028')，Unicode中被定义。 
<LI>一个分段符('\u2029)，Unicode中被定义。</LI></UL>如果 UNIX_LINES 模式被启用，则只有换行符被认为是行结束符。<BR>如果 MULTILINE 模式被启用，。<BR><BR>
<H3><A name=man_group></A>分组和引用</H3>字符分组以它们的左括号的出现顺序来排序。例如在表达式((A)(B(C)))，有四个分组：<BR>
<OL>
<LI>((A)(B(C))) 
<LI>(A) 
<LI>(B(C)) 
<LI>(C)</LI></OL>第0组永远表示表达式本身。<BR>分组采用这样的命名方式，是因为，在一次匹配过程中，正则表达式会被匹配多次。以前的匹配子序列有可能在将来被使用；或者在匹配结束时，程序有可能需要重新获得所有匹配的子字符序列。<BR>对于正则表达式中的某个分组而言，永远只保留最后匹配的字符序列。如果对某个分组匹配尝试失败，则会保留上次匹配成功的字符序列。例如，对于正则表达式(a(b)?)+而言，字符序列"aba"，将会让分组2匹配的字符序列为"b"。<BR>以(?开始的分组，将不会计入分组数目，也不会被后续匹配所引用。<BR><BR>
<H3><A name=man_unicode></A>Unicode支持</H3>本正则表达式匹配引擎的实现遵循了《<A href="http://www.unicode.org/unicode/reports/tr18/">Unicode技术报告：Unicode正则表达式指南</A>》，实现了该指南的第二层所需的功能，但是在细微处有一些简单语法修改。<BR>Unicode块(Block)和分类(Category)通过\p和\P通配苻表示。\p{<B><I>prop</I></B>}匹配含有<B><I>prop</I></B>的输入序列，而\P{<B><I>prop</I></B>}匹配不含有<B><I>prop</I></B>的输入序列。Unicode块通过前缀<TT>In</TT>表示，如\p{InMongolian}。Unicode分类通过可选的前缀Is表示，因此\p{L}和\p{IsL}都代表Unicode分类 letters。Unicode块和分类都可以在正则表达式子集外部和内部使用。<BR>目前支持的Unicode块和分类是《<A href="http://www.unicode.org/unicode/standard/standard.html">Unicode标准，第三版</A>》中所指定的块和分类。 Unicode块名称在《<A href="http://www.unicode.org/Public/3.0-Update/UnicodeCharacterDatabase-3.0.0.html">Unicode 字符数据库</A>》的第14章被定义，文件名称叫<A href="http://www.unicode.org/Public/3.0-Update/Blocks-3.txt">Blocks-3.txt</A>，但是名称中的空格被去掉了。例如"Basic Latin"成了"BasicLatin"。无论是标准化的还是非标准化的分类，都在该标准的第88页的第4-5表中被全部定义。<BR><BR>
<H3><A name=man_compare_perl5></A>与Perl 5正则表达式语法对比 </H3>[TBD]<BR><BR>
<HR width="100%" SIZE=2>

<H2><A name=reference></A>正则表达式参考</H2><BR>
<HR width="100%" SIZE=2>

<H3><A name=ref_chars></A>字符</H3>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top width="30%">正则表达式字符串<BR></TD>
<TD vAlign=top>匹配的字符串<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">X<BR></TD>
<TD vAlign=top>字符X，包括 CJK ExtB 区汉字<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\\<BR></TD>
<TD vAlign=top>反斜杠\<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\0<B><I>n</I></B> </TD>
<TD vAlign=top>八进制0<B><I>n</I></B>代表的字符(0&lt;=n&lt;=7)<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\0<B><I>nn</I></B><BR></TD>
<TD vAlign=top>八进制0<B><I>nn</I></B>代表的字符(0&lt;=n&lt;=7)<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\0<B><I>mnn</I></B><BR></TD>
<TD vAlign=top>八进制0<B><I>mnn</I></B>代表的字符(0&lt;=m&lt;=3,0&lt;=n&lt;=7)<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\x<B><I>hh</I></B><BR></TD>
<TD vAlign=top>十六进制 0x<B><I>hh</I></B>所代表的字符<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\u<B><I>hhhh</I></B><BR></TD>
<TD vAlign=top>十六进制 0x<B><I>hhhh</I></B>所代表的字符。<FONT color=#ff0000>注意</FONT>，目前尚不支持CJK ExtB区汉字。<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\t<BR></TD>
<TD vAlign=top>制表符('\u0009')<BR></TD></TR>
<TR>
<TD vAlign=top>\n<BR></TD>
<TD vAlign=top>换行('\u000A')<BR></TD></TR>
<TR>
<TD vAlign=top>\r<BR></TD>
<TD vAlign=top>回车('\u000D')<BR></TD></TR>
<TR>
<TD vAlign=top>\a<BR></TD>
<TD vAlign=top>响铃符('\u0007')<BR></TD></TR>
<TR>
<TD vAlign=top>\e<BR></TD>
<TD vAlign=top>取消符Escape('\001B')<BR></TD></TR>
<TR>
<TD vAlign=top>\c<I><B>x</B></I><BR></TD>
<TD vAlign=top><I><B>x</B></I>所代表的控制字符<BR></TD></TR></TBODY></TABLE><BR>
<H3><A name=ref_logicopr></A>逻辑操作符</H3>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top width="30%">正则表达式字符串<BR></TD>
<TD vAlign=top>匹配的字符串<BR></TD></TR>
<TR>
<TD vAlign=top width="30%"><I>XY</I><BR></TD>
<TD vAlign=top><I>X</I>后面跟随<I>Y</I><BR></TD></TR>
<TR>
<TD vAlign=top width="30%"><I>X</I>|<I>Y</I><BR></TD>
<TD vAlign=top><I>X</I>或者<I>Y</I><BR></TD></TR>
<TR>
<TD vAlign=top width="30%">(<I>X</I>)<BR></TD>
<TD vAlign=top><I>X</I>作为分组表达式<BR></TD></TR></TBODY></TABLE><BR>
<H3><A name=ref_backref></A>向后引用</H3>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top width="30%">正则表达式字符串<BR></TD>
<TD vAlign=top>匹配的字符串<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\<B>n</B><BR></TD>
<TD vAlign=top>第<B>n</B>个匹配的分组<BR></TD></TR></TBODY></TABLE><BR>
<H3><A name=ref_boundmeta></A>边界元字符</H3>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top width="30%">边界字符<BR></TD>
<TD vAlign=top>匹配的字符串<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">^<BR></TD>
<TD vAlign=top>行首<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">$<BR></TD>
<TD vAlign=top>行末<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\b </TD>
<TD vAlign=top>字符边界<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\B<BR></TD>
<TD vAlign=top>非字符边界<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\A<BR></TD>
<TD vAlign=top>输入流的开始<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\G<BR></TD>
<TD vAlign=top>上次匹配的结束处<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\Z<BR></TD>
<TD vAlign=top>输入流的结束，或者是最后一个行结束符，参见<A href="file:///D:/source/jtextpro/src/dist/jtextpro/docs/regexp.html#man_line_terminator">行结束符</A>。<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\z<BR></TD>
<TD vAlign=top>输入流的结束<BR></TD></TR></TBODY></TABLE><BR>
<H3><A name=ref_repeatindicator></A>重复指示符</H3>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top width="30%">正则表达式字符串<BR></TD>
<TD vAlign=top>匹配的字符串<BR></TD></TR>
<TR>
<TD vAlign=top width="30%"><B>X</B>?<BR></TD>
<TD vAlign=top><B>X</B>重复一次，或者不重复<BR></TD></TR>
<TR>
<TD vAlign=top width="30%"><B>X</B>*<BR></TD>
<TD vAlign=top><B>X</B>重复0次或多次<BR></TD></TR>
<TR>
<TD vAlign=top width="30%"><B>X</B>+ <BR></TD>
<TD vAlign=top><B>X</B>重复1次或多次<BR></TD></TR>
<TR>
<TD vAlign=top width="30%"><B>X</B>{n}<BR></TD>
<TD vAlign=top><B>X</B>重复n次，不多也不少。<BR></TD></TR>
<TR>
<TD vAlign=top width="30%"><B>X</B>{n,}<BR></TD>
<TD vAlign=top><B>X</B>至少重复n次<BR></TD></TR>
<TR>
<TD vAlign=top width="30%"><B>X</B>{n,m}<BR></TD>
<TD vAlign=top><B>X</B>至少重复n次，至多重复m次。<BR></TD></TR></TBODY></TABLE>注：<B>X</B>{n,m}、?、*、+方式可以联合使用。<BR><BR>
<H3><A name=ref_char_class></A>字符子集</H3>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top width="30%">正则表达式字符串子集<BR></TD>
<TD vAlign=top width="50%">匹配的字符串<BR></TD>
<TD vAlign=top align=left width="20%">组合方式<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">[abc]<BR></TD>
<TD vAlign=top width="60%">字符a,b或c，包括 CJK ExtB 区汉字<BR></TD>
<TD vAlign=top align=left width="20%">简单子集<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">[^abc]<BR></TD>
<TD vAlign=top width="60%">任意非a,b或c的字符。<BR></TD>
<TD vAlign=top align=left width="20%">排除<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">[a-zA-Z] </TD>
<TD vAlign=top width="60%">从a到z，或者A到Z，包含a,z,A,Z。<BR></TD>
<TD vAlign=top align=left width="20%">区间<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">[a-d[m-p]]<BR></TD>
<TD vAlign=top width="60%">从a到d，或者m到p，等于[a-dm-p]。<BR></TD>
<TD vAlign=top align=left width="20%">联合<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">[a-z&amp;&amp;[def]]<BR></TD>
<TD vAlign=top width="60%">d,e或者f。<BR></TD>
<TD vAlign=top align=left width="20%">交集<BR></TD></TR>
<TR>
<TD vAlign=top>[a-z&amp;&amp;[^bc]]<BR></TD>
<TD vAlign=top width="60%">从a到z，除了b和c，等于[ad-z]<BR></TD>
<TD vAlign=top align=left width="20%">扣除<BR></TD></TR>
<TR>
<TD vAlign=top>[a-z&amp;&amp;[^m-p]]<BR></TD>
<TD vAlign=top>从a到z，并且不包括从m到p，等于[a-lq-z]<BR></TD>
<TD vAlign=top>扣除<BR></TD></TR></TBODY></TABLE><BR>
<H3><A name=ref_predef_meta></A>预定义子集（元字符）</H3>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top width="30%">边界字符<BR></TD>
<TD vAlign=top>匹配的字符串<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">.<BR></TD>
<TD vAlign=top>任意字符，可能匹配行结束符。<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\d<BR></TD>
<TD vAlign=top>数字[0-9]<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\D </TD>
<TD vAlign=top>非数字[^0-9]<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\s<BR></TD>
<TD vAlign=top>空白符[ \t\n\x0B\f\r]<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\S<BR></TD>
<TD vAlign=top>非空白符[^\s]<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\w<BR></TD>
<TD vAlign=top>单词符，包含有字母和数字[a-zA-Z_0-9]<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\W<BR></TD>
<TD vAlign=top>非单词符，不包含有字母和数字。<BR></TD></TR></TBODY></TABLE><BR>
<H3>扩展子集（元字符）</H3>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top width="30%">正则表达式字符串<BR></TD>
<TD vAlign=top>匹配的字符串<BR></TD></TR>
<TR>
<TD vAlign=top width="30%"><BR></TD>
<TD vAlign=top><BR></TD></TR></TBODY></TABLE><BR><BR>
<H3><A name=ref_chinese_meta></A>扩展中文子集（元字符）</H3>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top>名称<BR></TD>
<TD vAlign=top>块名称（\p{InXXX}）<BR></TD>
<TD vAlign=top>简化通配符<BR></TD>
<TD vAlign=top>标准Unicode块，或者汉字列表<BR></TD></TR>
<TR>
<TD vAlign=top>任意双字节字符（汉字或全角符号）<BR></TD>
<TD vAlign=top>\p{InQuqnJiao}<BR></TD>
<TD vAlign=top>\E<BR></TD>
<TD vAlign=top>任意由GBK表示的汉字，不包括GB18030扩展部分，<BR>以及CJK ExtB区的汉字。<BR></TD></TR>
<TR>
<TD vAlign=top>任意单字节字符<BR></TD>
<TD vAlign=top>\p{InFQuanJiao}<BR></TD>
<TD vAlign=top>\~E<BR></TD>
<TD vAlign=top>任意单字节字符。<BR></TD></TR>
<TR>
<TD vAlign=top>任意全角ASCII字符<BR></TD>
<TD vAlign=top>\p{InQJAscii}<BR></TD>
<TD vAlign=top>\H<BR></TD>
<TD vAlign=top>标准HalfwidthandFullwidthForms块<BR></TD></TR>
<TR>
<TD vAlign=top>任意收录在BIG5码集中的双字节字符<BR></TD>
<TD vAlign=top>\p{InBig5}<BR></TD>
<TD vAlign=top>\I<BR></TD>
<TD vAlign=top>Big5可编码双字节字符<BR></TD></TR>
<TR>
<TD vAlign=top>匹配未收录在BIG5码集中的双字节字符</TD>
<TD vAlign=top>\p{InFBig5}<BR></TD>
<TD vAlign=top>\~I<BR></TD>
<TD vAlign=top>非Big5可编码双字节字符<BR></TD></TR>
<TR>
<TD vAlign=top>匹配任意汉字(不包括符号)<BR></TD>
<TD vAlign=top>\p{InHanziOrCJKExtB}<BR></TD>
<TD vAlign=top>\X<BR></TD>
<TD vAlign=top>任意汉字，包括GB18030扩展部分。<BR></TD></TR>
<TR>
<TD vAlign=top>匹配任意汉字(不包括符号)<BR></TD>
<TD vAlign=top>\p{InHanzi}<BR></TD>
<TD vAlign=top>\M<BR></TD>
<TD vAlign=top>任意汉字，不包括GB18030扩展部分。<BR></TD></TR>
<TR>
<TD vAlign=top>匹配非汉字的双字节字符<BR></TD>
<TD vAlign=top>\p{InFHanzi}<BR></TD>
<TD vAlign=top>\~M<BR></TD>
<TD vAlign=top>任意非汉字的双字节字符，<BR>包括GB18030扩展部分。<BR></TD></TR>
<TR>
<TD vAlign=top>地支字符<BR></TD>
<TD vAlign=top>\p{InDiZhi}<BR></TD>
<TD vAlign=top>\U<BR></TD>
<TD vAlign=top>子丑寅卯辰巳午未申酉戌亥<BR></TD></TR>
<TR>
<TD vAlign=top>匹配收录在GB码集中的双字节字符<BR></TD>
<TD vAlign=top>\p{InGB}<BR></TD>
<TD vAlign=top>\g<BR></TD>
<TD vAlign=top>收录在GB码集中的双字节字符，<BR>不包括GB18030扩展部分。<BR></TD></TR>
<TR>
<TD vAlign=top>匹配非收录在GB码集中的双字节字符<BR></TD>
<TD vAlign=top>\p{InFGB}<BR></TD>
<TD vAlign=top>\~g<BR></TD>
<TD vAlign=top>未收录在GB码集中的双字节字符，<BR>不包括GB18030扩展部分。<BR></TD></TR>
<TR>
<TD vAlign=top>匹配收录在GBK码集中的双字节字符<BR></TD>
<TD vAlign=top>\p{InGBK}<BR></TD>
<TD vAlign=top>\h<BR></TD>
<TD vAlign=top>收录在GBK码集中的双字节字符，<BR>不包括GB18030扩展部分。<BR></TD></TR>
<TR>
<TD vAlign=top>匹配非收录在GBK码集中的双字节字符<BR></TD>
<TD vAlign=top>\p{InFGBK}<BR></TD>
<TD vAlign=top>\~h<BR></TD>
<TD vAlign=top>未收录在GBK码集中的双字节字符，<BR>不包括GB18030扩展部分。<BR></TD></TR>
<TR>
<TD vAlign=top>大写希腊字母<BR></TD>
<TD vAlign=top>\p{InDaXila}<BR></TD>
<TD vAlign=top>\K<BR></TD>
<TD vAlign=top>ΑΒΓΔΕΖΗΘΙΚΛΜΝ<BR>ΞΟΠΡΣΤΥΦΧΨΩ<BR></TD></TR>
<TR>
<TD vAlign=top>日文片假名<BR></TD>
<TD vAlign=top>\p{InPianJia}<BR></TD>
<TD vAlign=top>\j<BR></TD>
<TD vAlign=top>标准Katakana块<BR></TD></TR>
<TR>
<TD vAlign=top>日文平假名<BR></TD>
<TD vAlign=top>\p{InPingJia}<BR></TD>
<TD vAlign=top>\J<BR></TD>
<TD vAlign=top>标准Hiragana块<BR></TD></TR>
<TR>
<TD vAlign=top>小写希腊字母<BR></TD>
<TD vAlign=top>\p{InXiaoXila}<BR></TD>
<TD vAlign=top>\k<BR></TD>
<TD vAlign=top>αβγδεζηθικλμν<BR>ξοπρστυφχψω<BR></TD></TR>
<TR>
<TD vAlign=top>数学符号<BR></TD>
<TD vAlign=top>\p{InMathe}<BR></TD>
<TD vAlign=top>\m<BR></TD>
<TD vAlign=top>±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙<BR>∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴<BR></TD></TR>
<TR>
<TD vAlign=top>中文数字<BR></TD>
<TD vAlign=top>\p{InCnDigit}<BR></TD>
<TD vAlign=top>\i<BR></TD>
<TD vAlign=top>〇一二三四五六七八九十百千万亿兆吉京<BR></TD></TR>
<TR>
<TD vAlign=top>大写中文数字<BR></TD>
<TD vAlign=top>\p{InDaCnDigit}<BR></TD>
<TD vAlign=top>\N<BR></TD>
<TD vAlign=top>零壹贰叁肆伍陆柒捌玖拾佰仟萬亿兆吉京<BR></TD></TR>
<TR>
<TD vAlign=top>全角标点符号<BR></TD>
<TD vAlign=top>\p{InQJBiaoDian}<BR></TD>
<TD vAlign=top>\o<BR></TD>
<TD vAlign=top>、。·ˉˇ¨〃々—～‖…‘’“”〔〕<BR>〈〉《》「」『』〖〗【】！＂＇（），<BR>－．：；＜＝＞？［］｛｜｝｀﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚<BR>﹛﹜﹝﹞︵︶︹︺︿﹀︽︾﹁﹂﹃﹄<BR>︻︼︷︸︱︳︴<BR></TD></TR>
<TR>
<TD vAlign=top>小写俄文字母<BR></TD>
<TD vAlign=top>\p{InXiaoEWen}<BR></TD>
<TD vAlign=top>\l<BR></TD>
<TD vAlign=top>абвгдеёжзийклмн<BR>опрстуфхцчшщъыьэюя<BR></TD></TR>
<TR>
<TD vAlign=top>大写俄文字母<BR></TD>
<TD vAlign=top>\p{InDaEWen}<BR></TD>
<TD vAlign=top>\R<BR></TD>
<TD vAlign=top>АБВГДЕЁЖЗИЙКЛМНО<BR>ПРСТУФХЦЧШЩЪЫЬЭЮЯ<BR></TD></TR>
<TR>
<TD vAlign=top>中文序号<BR></TD>
<TD vAlign=top>\p{InCnSN}<BR></TD>
<TD vAlign=top>\q<BR></TD>
<TD vAlign=top>ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ<BR>ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ<BR>再加上Unicode标准EnclosedAlphanumerics块<BR></TD></TR>
<TR>
<TD vAlign=top>天干字符<BR></TD>
<TD vAlign=top>\p{InTianGan}<BR></TD>
<TD vAlign=top>\T<BR></TD>
<TD vAlign=top>甲乙丙丁戊己庚辛壬癸<BR></TD></TR>
<TR>
<TD vAlign=top>竖排标点符号<BR></TD>
<TD vAlign=top>\p{InSPBiaoDian}<BR></TD>
<TD vAlign=top>\V<BR></TD>
<TD vAlign=top>︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴<BR></TD></TR>
<TR>
<TD vAlign=top>拼音字符<BR></TD>
<TD vAlign=top>\p{InPinyin}<BR></TD>
<TD vAlign=top>\y<BR></TD>
<TD vAlign=top>āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňɡ<BR>GBK -&gt; 0xA8A1- 0xA8C0<BR>只是Unicode标准LatinExtended-A块的一部分。<BR></TD></TR>
<TR>
<TD vAlign=top>注音字符<BR></TD>
<TD vAlign=top>\p{InZhuyin}<BR></TD>
<TD vAlign=top>\Y<BR></TD>
<TD vAlign=top>标准Bopomofo块<BR></TD></TR>
<TR>
<TD vAlign=top>制表字符<BR></TD>
<TD vAlign=top>\p{InZhiBiao}<BR></TD>
<TD vAlign=top>\C<BR></TD>
<TD vAlign=top>标准BoxDrawing块。<BR>经检查发现 textpro 的算法含有部分非标<BR>准Unicode制表符：“∟∣≒≦≧⊿═”。<BR></TD></TR></TBODY></TABLE><BR>
<H3><A name=ref_posix_subset></A>POSIX字符子集（只适用于ASCII）</H3>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top width="30%">正则表达式字符串<BR></TD>
<TD vAlign=top>匹配的字符串<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\p{Lower}<BR></TD>
<TD vAlign=top>小写字母[a-z]<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\p{Upper}<BR></TD>
<TD vAlign=top>大写字母[A-Z]<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\p{ASCII}<BR></TD>
<TD vAlign=top>所有的ASCII字符[\x00-\x7F]<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\p{Alpha}<BR></TD>
<TD vAlign=top>大小写字母[\p{Lower}\p{Upper}]<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\p{Digit}<BR></TD>
<TD vAlign=top>数字[0-9]<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\p{Alnum}<BR></TD>
<TD vAlign=top>字母数字符，包含大小写字母和数字[\p{Alpha}\p{Digit}]<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\p{Punct}<BR></TD>
<TD vAlign=top>标点符号，!"#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^_`{|}~之一。<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\p{Graph}<BR></TD>
<TD vAlign=top>可显示字符[\p{Alnum}\p{Punct}]<BR></TD></TR>
<TR>
<TD vAlign=top>\p{Print}<BR></TD>
<TD vAlign=top>可打印字符[\p{Graph}]<BR></TD></TR>
<TR>
<TD vAlign=top>\p{Blank}<BR></TD>
<TD vAlign=top>空格或者制表符[ \t]<BR></TD></TR>
<TR>
<TD vAlign=top>\p{Cntrl}<BR></TD>
<TD vAlign=top>控制字符[\x00-\x1F\x7F<BR></TD></TR>
<TR>
<TD vAlign=top>\p{XDigit}<BR></TD>
<TD vAlign=top>十六进制数字[0-9a-fA-F]<BR></TD></TR>
<TR>
<TD vAlign=top>\p{Space}<BR></TD>
<TD vAlign=top>空白符[ \t\n\x0B\f\r]<BR></TD></TR></TBODY></TABLE><BR>
<H3><A name=ref_unicode_category></A>Unicode块和分类</H3>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top>块<BR></TD>
<TD vAlign=top>中文名称（摘自Word XP）<BR></TD>
<TD vAlign=top>代码区域<BR></TD></TR>
<TR>
<TD vAlign=top>BasicLatin<BR></TD>
<TD vAlign=top>基本拉丁语<BR></TD>
<TD vAlign=top>\u0000-\u007F<BR></TD></TR>
<TR>
<TD vAlign=top>Latin-1Supplement<BR></TD>
<TD vAlign=top>拉丁语-1<BR></TD>
<TD vAlign=top>\u0080-\u00FF<BR></TD></TR>
<TR>
<TD vAlign=top>LatinExtended-A<BR></TD>
<TD vAlign=top>拉丁语扩充-A<BR></TD>
<TD vAlign=top>\u0100-\u017F<BR></TD></TR>
<TR>
<TD vAlign=top>LatinExtended-Bound<BR></TD>
<TD vAlign=top>拉丁语扩充-B<BR></TD>
<TD vAlign=top>\u0180-\u024F<BR></TD></TR>
<TR>
<TD vAlign=top>IPAExtensions<BR></TD>
<TD vAlign=top>国际音标扩充<BR></TD>
<TD vAlign=top>\u0250-\u02AF<BR></TD></TR>
<TR>
<TD vAlign=top>SpacingModifierLetters<BR></TD>
<TD vAlign=top>进格的修饰字符<BR></TD>
<TD vAlign=top>\u02B0-\u02FF<BR></TD></TR>
<TR>
<TD vAlign=top>CombiningDiacriticalMarks<BR></TD>
<TD vAlign=top>组合用发音符<BR></TD>
<TD vAlign=top>\u0300-\u036F<BR></TD></TR>
<TR>
<TD vAlign=top>Greek<BR></TD>
<TD vAlign=top>基本希腊语<BR></TD>
<TD vAlign=top>\u0370-\u03FF<BR></TD></TR>
<TR>
<TD vAlign=top>Cyrillic<BR></TD>
<TD vAlign=top>西里尔语<BR></TD>
<TD vAlign=top>\u0400-\u04FF<BR></TD></TR>
<TR>
<TD vAlign=top>Armenian<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0530-\u058F<BR></TD></TR>
<TR>
<TD vAlign=top>Hebrew<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0590-\u05FF<BR></TD></TR>
<TR>
<TD vAlign=top>Arabic<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0600-\u06FF<BR></TD></TR>
<TR>
<TD vAlign=top>Syriac<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0700-\u074F<BR></TD></TR>
<TR>
<TD vAlign=top>Thaana<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0780-\u07BF<BR></TD></TR>
<TR>
<TD vAlign=top>Devanagari<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0900-\u097F<BR></TD></TR>
<TR>
<TD vAlign=top>Bengali<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0980-\u09FF<BR></TD></TR>
<TR>
<TD vAlign=top>Gurmukhi<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0A00-\u0A7F<BR></TD></TR>
<TR>
<TD vAlign=top>Gujarati<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0A80-\u0AFF<BR></TD></TR>
<TR>
<TD vAlign=top>Oriya<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0B00-\u0B7F<BR></TD></TR>
<TR>
<TD vAlign=top>Tamil<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0B80-\u0BFF<BR></TD></TR>
<TR>
<TD vAlign=top>Telugu<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0C00-\u0C7F<BR></TD></TR>
<TR>
<TD vAlign=top>Kannada<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0C80-\u0CFF<BR></TD></TR>
<TR>
<TD vAlign=top>Malayalam<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0D00-\u0D7F<BR></TD></TR>
<TR>
<TD vAlign=top>Sinhala<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0D800-\uDFF<BR></TD></TR>
<TR>
<TD vAlign=top>Thai<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0E00-\u0E7F<BR></TD></TR>
<TR>
<TD vAlign=top>Lao<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u0E80-\u0EFF<BR></TD></TR>
<TR>
<TD vAlign=top>Tibetan<BR></TD>
<TD vAlign=top>藏语<BR></TD>
<TD vAlign=top>\u0F00-\u0FFF<BR></TD></TR>
<TR>
<TD vAlign=top>Myanmar<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u1000-\u109F<BR></TD></TR>
<TR>
<TD vAlign=top>Georgian<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u10A0-\u10FF<BR></TD></TR>
<TR>
<TD vAlign=top>HangulJamo<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u1100-\u11FF<BR></TD></TR>
<TR>
<TD vAlign=top>Ethiopic<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u1200-\u137F<BR></TD></TR>
<TR>
<TD vAlign=top>Cherokee<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u13A0-\u13FF<BR></TD></TR>
<TR>
<TD vAlign=top>UnifiedCanadianAboriginalSyllabics<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u1400-\u167F<BR></TD></TR>
<TR>
<TD vAlign=top>Ogham<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u1680-\u169F<BR></TD></TR>
<TR>
<TD vAlign=top>Runic<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u16A0-\u16FF<BR></TD></TR>
<TR>
<TD vAlign=top>Khmer<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u1780-\u17FF<BR></TD></TR>
<TR>
<TD vAlign=top>Mongolian<BR></TD>
<TD vAlign=top>蒙古语<BR></TD>
<TD vAlign=top>\u1800-\u18AF<BR></TD></TR>
<TR>
<TD vAlign=top>LatinExtendedAdditional<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u1E00-\u1EFF<BR></TD></TR>
<TR>
<TD vAlign=top>GreekExtended<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u1F00-\u1FFF<BR></TD></TR>
<TR>
<TD vAlign=top>GeneralPunctuation<BR></TD>
<TD vAlign=top>广义标点<BR></TD>
<TD vAlign=top>\u2000-\u206F<BR></TD></TR>
<TR>
<TD vAlign=top>SuperscriptsandSubscripts<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u2070-\u209F<BR></TD></TR>
<TR>
<TD vAlign=top>CurrencySymbols<BR></TD>
<TD vAlign=top>货币符号<BR></TD>
<TD vAlign=top>\u20A0-\u20CF<BR></TD></TR>
<TR>
<TD vAlign=top>CombiningMarksforSymbols<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u20D0-\u20FF<BR></TD></TR>
<TR>
<TD vAlign=top>LetterlikeSymbols<BR></TD>
<TD vAlign=top>类似字母的符号<BR></TD>
<TD vAlign=top>\u2100-\u214F<BR></TD></TR>
<TR>
<TD vAlign=top>NumberForms<BR></TD>
<TD vAlign=top>数字形式<BR></TD>
<TD vAlign=top>\u2150-\u218F<BR></TD></TR>
<TR>
<TD vAlign=top>Arrows<BR></TD>
<TD vAlign=top>箭头<BR></TD>
<TD vAlign=top>\u2190-\u21FF<BR></TD></TR>
<TR>
<TD vAlign=top>MathematicalOperators<BR></TD>
<TD vAlign=top>数学运算符<BR></TD>
<TD vAlign=top>\u2200-\u22FF<BR></TD></TR>
<TR>
<TD vAlign=top>MiscellaneousTechnical<BR></TD>
<TD vAlign=top>零杂技术用符号<BR></TD>
<TD vAlign=top>\u2300-\u23FF<BR></TD></TR>
<TR>
<TD vAlign=top>ControlPictures<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u2400-\u243F<BR></TD></TR>
<TR>
<TD vAlign=top>OpticalCharacterRecognition<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u2440-\u245F<BR></TD></TR>
<TR>
<TD vAlign=top>EnclosedAlphanumerics<BR></TD>
<TD vAlign=top>带括号的字母数字<BR></TD>
<TD vAlign=top>\u2460-\u24FF<BR></TD></TR>
<TR>
<TD vAlign=top>BoxDrawing<BR></TD>
<TD vAlign=top>制表符<BR></TD>
<TD vAlign=top>\u2500-\u257F<BR></TD></TR>
<TR>
<TD vAlign=top>BlockElements<BR></TD>
<TD vAlign=top>方块图形<BR></TD>
<TD vAlign=top>\u2580-\u259F<BR></TD></TR>
<TR>
<TD vAlign=top>GeometricShapes<BR></TD>
<TD vAlign=top>几何图形<BR></TD>
<TD vAlign=top>\u25A0-\u25FF<BR></TD></TR>
<TR>
<TD vAlign=top>MiscellaneousSymbols<BR></TD>
<TD vAlign=top>零杂丁贝符（示意符等）<BR></TD>
<TD vAlign=top>\u2600-\u26FF<BR></TD></TR>
<TR>
<TD vAlign=top>Dingbats<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u2700-\u27BF<BR></TD></TR>
<TR>
<TD vAlign=top>BraillePatterns<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u2800-\u28FF<BR></TD></TR>
<TR>
<TD vAlign=top>CJKRadicalsSupplement<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u2E80-\u2EFF<BR></TD></TR>
<TR>
<TD vAlign=top>KangxiRadicals<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u2F00-\u2FDF<BR></TD></TR>
<TR>
<TD vAlign=top>IdeographicDescriptionCharacters<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u2FF0-\u2FFF<BR></TD></TR>
<TR>
<TD vAlign=top>CJKSymbolsandPunctuation<BR></TD>
<TD vAlign=top>CJK符号和标点<BR></TD>
<TD vAlign=top>\u3000-\u303F<BR></TD></TR>
<TR>
<TD vAlign=top>Hiragana<BR></TD>
<TD vAlign=top>平假名<BR></TD>
<TD vAlign=top>\u3040-\u309F<BR></TD></TR>
<TR>
<TD vAlign=top>Katakana<BR></TD>
<TD vAlign=top>片假名<BR></TD>
<TD vAlign=top>\u30A0-\u30FF<BR></TD></TR>
<TR>
<TD vAlign=top>Bopomofo<BR></TD>
<TD vAlign=top>注音<BR></TD>
<TD vAlign=top>\u3100-\u312F<BR></TD></TR>
<TR>
<TD vAlign=top>HangulCompatibilityJamo<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u3130-\u318F<BR></TD></TR>
<TR>
<TD vAlign=top>Kanbun<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\u3190-\u319F<BR></TD></TR>
<TR>
<TD vAlign=top>BopomofoExtended<BR></TD>
<TD vAlign=top>扩展注音<BR></TD>
<TD vAlign=top>\u31A0-\u31BF<BR></TD></TR>
<TR>
<TD vAlign=top>EnclosedCJKLettersandMonths<BR></TD>
<TD vAlign=top>带括号的CJK字母及月份<BR></TD>
<TD vAlign=top>\u3200-\u32FF<BR></TD></TR>
<TR>
<TD vAlign=top>CJKCompatibility<BR></TD>
<TD vAlign=top>CJK兼容字符<BR></TD>
<TD vAlign=top>\u3300-\u33FF <BR></TD></TR>
<TR>
<TD vAlign=top>CJKUnifiedIdeographsExtensionA<BR></TD>
<TD vAlign=top>CJK统一汉字扩展-A<BR></TD>
<TD vAlign=top>\u3400-\u4dBF<BR></TD></TR>
<TR>
<TD vAlign=top>CJKUnifiedIdeographs<BR></TD>
<TD vAlign=top>CJK统一汉字<BR></TD>
<TD vAlign=top>\u4E00-\u9fAF<BR></TD></TR>
<TR>
<TD vAlign=top>YiSyllables<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\uA000-\uA48F<BR></TD></TR>
<TR>
<TD vAlign=top>YiRadicals<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\uA490-\uA4CF<BR></TD></TR>
<TR>
<TD vAlign=top>HangulSyllables<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\uAC00-\uD7A3<BR></TD></TR>
<TR>
<TD vAlign=top>HighSurrogates<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\uD800-\uDB7F<BR></TD></TR>
<TR>
<TD vAlign=top>HighPrivateUseSurrogates<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\uDB80-\uDBFF<BR></TD></TR>
<TR>
<TD vAlign=top>LowSurrogates<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\uDC00-\uDFFF<BR></TD></TR>
<TR>
<TD vAlign=top>PrivateUse<BR></TD>
<TD vAlign=top>专用区<BR></TD>
<TD vAlign=top>\uE000-\uF8FF<BR></TD></TR>
<TR>
<TD vAlign=top>CJKCompatibilityIdeographs<BR></TD>
<TD vAlign=top>CJK兼容汉字<BR></TD>
<TD vAlign=top>\uF900-\uFAFF<BR></TD></TR>
<TR>
<TD vAlign=top>AlphabeticPresentationForms<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\uFB00-\uFB4F<BR></TD></TR>
<TR>
<TD vAlign=top>ArabicPresentationForms-A<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\uFB50-\uFDFF<BR></TD></TR>
<TR>
<TD vAlign=top>CombiningHalfMarks<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\uFE20-\uFE2F<BR></TD></TR>
<TR>
<TD vAlign=top>CJKCompatibilityForms<BR></TD>
<TD vAlign=top>CJK兼容形式<BR></TD>
<TD vAlign=top>\uFE30-\uFE4F<BR></TD></TR>
<TR>
<TD vAlign=top>SmallFormVariants<BR></TD>
<TD vAlign=top>小写变体<BR></TD>
<TD vAlign=top>\uFE50-\uFE6F<BR></TD></TR>
<TR>
<TD vAlign=top>ArabicPresentationForms-Bound<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\uFE70-\ufeFF<BR></TD></TR>
<TR>
<TD vAlign=top>Specials<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>\uFFF0-\uFFFF<BR></TD></TR>
<TR>
<TD vAlign=top>HalfwidthandFullwidthForms<BR></TD>
<TD vAlign=top>半形及全形字符<BR></TD>
<TD vAlign=top>\uFF00-\uFFEF<BR></TD></TR></TBODY></TABLE><BR><BR>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top>分类<BR></TD>
<TD vAlign=top>全称<BR></TD>
<TD vAlign=top>说明<BR></TD></TR>
<TR>
<TD vAlign=top>Cn<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>UNASSIGNED<BR></TD></TR>
<TR>
<TD vAlign=top>Lu<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>UPPERCASE_LETTER<BR></TD></TR>
<TR>
<TD vAlign=top>Ll<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>LOWERCASE_LETTER<BR></TD></TR>
<TR>
<TD vAlign=top>Lt<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>TITLECASE_LETTER<BR></TD></TR>
<TR>
<TD vAlign=top>Lm<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>MODIFIER_LETTER<BR></TD></TR>
<TR>
<TD vAlign=top>Lo<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>OTHER_LETTER<BR></TD></TR>
<TR>
<TD vAlign=top>Mn<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>NON_SPACING_MARK<BR></TD></TR>
<TR>
<TD vAlign=top>Me<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>ENCLOSING_MARK<BR></TD></TR>
<TR>
<TD vAlign=top>Mc<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>COMBINING_SPACING_MARK<BR></TD></TR>
<TR>
<TD vAlign=top>Nd<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>DECIMAL_DIGIT_NUMBER<BR></TD></TR>
<TR>
<TD vAlign=top>Nl<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>LETTER_NUMBER<BR></TD></TR>
<TR>
<TD vAlign=top>No<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>OTHER_NUMBER<BR></TD></TR>
<TR>
<TD vAlign=top>Zs<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>SPACE_SEPARATOR<BR></TD></TR>
<TR>
<TD vAlign=top>Zl<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>LINE_SEPARATOR<BR></TD></TR>
<TR>
<TD vAlign=top>Zp<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>PARAGRAPH_SEPARATOR<BR></TD></TR>
<TR>
<TD vAlign=top>Cc<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>CNTRL<BR></TD></TR>
<TR>
<TD vAlign=top>Cf<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>FORMAT<BR></TD></TR>
<TR>
<TD vAlign=top>Co<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>PRIVATE_USE<BR></TD></TR>
<TR>
<TD vAlign=top>Cs<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>SURROGATE<BR></TD></TR>
<TR>
<TD vAlign=top>Pd<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>DASH_PUNCTUATION<BR></TD></TR>
<TR>
<TD vAlign=top>Ps<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>START_PUNCTUATION<BR></TD></TR>
<TR>
<TD vAlign=top>Pe<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>END_PUNCTUATION<BR></TD></TR>
<TR>
<TD vAlign=top>Pc<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>CONNECTOR_PUNCTUATION<BR></TD></TR>
<TR>
<TD vAlign=top>Po<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>OTHER_PUNCTUATION<BR></TD></TR>
<TR>
<TD vAlign=top>Sm<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>MATH_SYMBOL<BR></TD></TR>
<TR>
<TD vAlign=top>Sc<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>CURRENCY_SYMBOL<BR></TD></TR>
<TR>
<TD vAlign=top>Sk<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>MODIFIER_SYMBOL<BR></TD></TR>
<TR>
<TD vAlign=top>So<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>OTHER_SYMBOL<BR></TD></TR>
<TR>
<TD vAlign=top>L<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>LETTER<BR></TD></TR>
<TR>
<TD vAlign=top>M<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>MARK<BR></TD></TR>
<TR>
<TD vAlign=top>N<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>NUMBER<BR></TD></TR>
<TR>
<TD vAlign=top>Z<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>SEPARATOR<BR></TD></TR>
<TR>
<TD vAlign=top>C<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>CONTROL<BR></TD></TR>
<TR>
<TD vAlign=top>P<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>PUNCTUATION<BR></TD></TR>
<TR>
<TD vAlign=top>S<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>SYMBOL</TD></TR>
<TR>
<TD vAlign=top>LD<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>LETTER_OR_DIGIT<BR></TD></TR>
<TR>
<TD vAlign=top>L1<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>Latin-1<BR></TD></TR>
<TR>
<TD vAlign=top>all<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>ALL<BR></TD></TR>
<TR>
<TD vAlign=top>ASCII<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>ASCII<BR></TD></TR>
<TR>
<TD vAlign=top>Alnum<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>字母数字(0-9,a-z,A-Z)<BR></TD></TR>
<TR>
<TD vAlign=top>Alpha<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>字母(a-z,A-Z)<BR></TD></TR>
<TR>
<TD vAlign=top>Blank<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>空格和制表符(' '|\t)<BR></TD></TR>
<TR>
<TD vAlign=top>Cntrl<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>控制字符，不可打印<BR></TD></TR>
<TR>
<TD vAlign=top>Digit<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>数字(0-9)<BR></TD></TR>
<TR>
<TD vAlign=top>Graph<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>可打印且可视字母（例如空格' '是可打印的但不是可视字母，而 `a' 两者都是。）<BR></TD></TR>
<TR>
<TD vAlign=top>Lower<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>小写字母<BR></TD></TR>
<TR>
<TD vAlign=top>Print<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>可打印字母（非控制字符）<BR></TD></TR>
<TR>
<TD vAlign=top>Punct<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>标符号（字母、数字、控制、空白符以外的字母），如：!@#$%}{&lt;&gt;,./?[]等等。<BR></TD></TR>
<TR>
<TD vAlign=top>Space<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>空白符(' ',\t,0x09,0x0A,0x0B,0x0C,0x0D,0x20)<BR></TD></TR>
<TR>
<TD vAlign=top>Upper<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>大写字母<BR></TD></TR>
<TR>
<TD vAlign=top>XDigit<BR></TD>
<TD vAlign=top><BR></TD>
<TD vAlign=top>十六进制数字(0-9，a-f, A-F)<BR></TD></TR></TBODY></TABLE><BR>
<HR width="100%" SIZE=2>
<BR><BR><BR>
<H3><A name=man_subexp></A>替换表达式</H3><A name=subexp_chars></A>特殊字符<BR>
<TABLE cellSpacing=2 cellPadding=2 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top width="30%">特殊字符介绍<BR></TD>
<TD vAlign=top>描述<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\n<BR></TD>
<TD vAlign=top>换行<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\b<BR></TD>
<TD vAlign=top>向前删除一个字符。当这个字符位于替换串之首时，将删除匹配串之前的一个字符。若匹配串位于行首，将使匹配串所在行与前一行相合并。<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\d<BR></TD>
<TD vAlign=top>向后删除一个字符。当这个字符位于替换串之末时，将删除匹配串之后的一个字符。若匹配串位于行末，将使匹配串所在行与下一行相合并。<BR></TD></TR>
<TR>
<TD vAlign=top width="30%">\e<BR></TD>
<TD vAlign=top>插入一个ESC字符<BR></TD></TR>
<TR>
<TD vAlign=top>\t<BR></TD>
<TD vAlign=top>插入一个TAB字符<BR></TD></TR>
<TR>
<TD vAlign=top>\<I><B>n</B></I><BR></TD>
<TD vAlign=top>n代表查找正则表达式中的子表达式（组）。\1代表第一个子表达式，\2代表第二个子表达式，依次类推。\0代表整个匹配到的字符串。<BR></TD></TR>
<TR>
<TD vAlign=top>\v<BR></TD>
<TD vAlign=top>大写下一个字母<BR></TD></TR>
<TR>
<TD vAlign=top>\U<BR></TD>
<TD vAlign=top>全部大写以后的字母，直到碰到其它指示符为止。<BR></TD></TR>
<TR>
<TD vAlign=top>\l<BR></TD>
<TD vAlign=top>小写下一个字母<BR></TD></TR>
<TR>
<TD vAlign=top>\L<BR></TD>
<TD vAlign=top>全部小写以后的字母，直到碰到其它指示符为止。<BR></TD></TR>
<TR>
<TD vAlign=top>\E<BR></TD>
<TD vAlign=top>取消所有的字母大小写指示符。<BR></TD></TR></TBODY></TABLE><BR><BR><A name=subexp_custtbl></A>自定义替换表<BR><BR>在查找／替换中使用自定义替换表 <BR>有的时候，上述简单的自定义替换功能是不够的。例如，用户可能希望只把出现在括号内的源串替换为目标串。这种文本处理可以通过在查找/替换中使用自定义替换表来解决。 <BR><BR>在查找/替换功能中使用自定义替换表的替换函数是\Tn，其中n是0-9的数字， 注意n为0表示第10张替换表。如果略去n，其效果相当于\T1，即使用第一张替换表。例如要把所有放在方括号中的汉字替换为拼音，可以查找“\[(\E)\]”，替换为“\T{\1}”。即把第一个子表达式的匹配内容按自定义替换表转换。注意，如果\T函数的参数不在替换表的源串中，\T函数的结果与源串相同，即不做任何变换。 <BR><BR>有些情况下，用户可能希望只使用替换表的一部分内容。还是以拼音为例，前面给出的替换表中包含了拼音的音调，如果在替换时不希望加上这些音调数字，可以使用“过滤”功能。所谓过滤，其实是用一个正则表达式去分析替换表的目标串，并把其中的某个子表达式取出来。 <BR><BR>使用“过滤”时，在“设置自定义替换表”对话框中，点“过滤”按钮，在弹出的对话框中填入一个正则表达式。再以拼音为例，表达式可以写为“(\p{Alpha}+)(\d)”，其中第一对括号中的是不含音调的拼音，第二对括号是音调。在调用\T函数时，JTextPro会在目标串中查找这个正则表达式。但是如何把其中的子表达式取出来呢？\T函数还有一个可选的下标，取第n个子表达式的值就写作\T{...}[n]。所以，把放在方括号中的汉字替换为不带调的拼音，可以查找“\[(\E)\]”，替换为“\T{\1}[1]” <BR><BR><img src ="http://www.blogjava.net/zhangrenquan/aggbug/23458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangrenquan/" target="_blank">kelven</a> 2005-12-12 13:38 <a href="http://www.blogjava.net/zhangrenquan/archive/2005/12/12/23458.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse插件</title><link>http://www.blogjava.net/zhangrenquan/archive/2005/12/12/23457.html</link><dc:creator>kelven</dc:creator><author>kelven</author><pubDate>Mon, 12 Dec 2005 05:30:00 GMT</pubDate><guid>http://www.blogjava.net/zhangrenquan/archive/2005/12/12/23457.html</guid><wfw:comment>http://www.blogjava.net/zhangrenquan/comments/23457.html</wfw:comment><comments>http://www.blogjava.net/zhangrenquan/archive/2005/12/12/23457.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangrenquan/comments/commentRss/23457.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangrenquan/services/trackbacks/23457.html</trackback:ping><description><![CDATA[<FONT size=2>我收集的Eclipse插件<BR><BR>Poperties Editor<BR>&nbsp; </FONT><A href="http://propedit.sourceforge.jp/eclipse/updates/"><FONT size=2>http://propedit.sourceforge.jp/eclipse/updates/</FONT></A>
<P><FONT size=2>eclipseME<BR>&nbsp; </FONT><A href="http://eclipseme.org/updates/"><FONT size=2>http://eclipseme.org/updates/</FONT></A><BR></P>
<P><FONT size=2>Eclipse加速插件KeepResident</FONT><A href="http://suif.stanford.edu/pub/keepresident/"><BR><FONT size=2>http://suif.stanford.edu/pub/keepresident/</FONT></A><BR><FONT size=2>&nbsp;<BR>MyEclipse&nbsp; J2EE开发插件，支持SERVLET/JSP/EJB/数据库操纵等<BR></FONT><A href="http://www.myeclipseide.com/"><FONT size=2>www.myeclipseide.com</FONT></A><BR><FONT size=2>&nbsp;<BR>Properties Editor&nbsp; 编辑java的属性文件，并可以自动存盘为Unicode格式<BR></FONT><A href="http://propedit.sourceforge.jp/index_en.html"><FONT size=2>http://propedit.sourceforge.jp/index_en.html</FONT></A><BR><A href="http://propedit.sourceforge.jp/eclipse/updates/"><FONT size=2>http://propedit.sourceforge.jp/eclipse/updates/</FONT></A><BR><FONT size=2>&nbsp;<BR>Colorer Take&nbsp; 为上百种类型的文件按语法着色<BR></FONT><A href="http://colorer.sourceforge.net/"><FONT size=2>http://colorer.sourceforge.net/</FONT></A><BR><FONT size=2>&nbsp;<BR>XMLBuddy 编辑xml文件<BR></FONT><A href="http://www.xmlbuddy.com/"><FONT size=2>www.xmlbuddy.com</FONT></A><BR><FONT size=2>&nbsp;<BR>Code Folding&nbsp; 加入多种代码折叠功能（比eclipse自带的更多）<BR></FONT><A href="http://www.coffee-bytes.com/servlet/PlatformSupport"><FONT size=2>http://www.coffee-bytes.com/servlet/PlatformSupport</FONT></A><BR><FONT size=2>&nbsp;<BR>Easy Explorer&nbsp; 从eclipse中访问选定文件、目录所在的文件夹<BR></FONT><A href="http://easystruts.sourceforge.net/"><FONT size=2>http://easystruts.sourceforge.net/</FONT></A><BR><FONT size=2>&nbsp;<BR>Fat Jar 打包插件，可以方便的完成各种打包任务，可以包含外部的包等<BR></FONT><A href="http://fjep.sourceforge.net/"><FONT size=2>http://fjep.sourceforge.net/</FONT></A><BR><FONT size=2>&nbsp;<BR>RegEx Test 测试正则表达式<BR></FONT><A href="http://brosinski.com/stephan/archives/000028.php"><FONT size=2>http://brosinski.com/stephan/archives/000028.php</FONT></A><BR><FONT size=2>&nbsp;<BR>JasperAssistant 报表插件（强，要钱的）<BR></FONT><A href="http://www.jasperassistant.com/"><FONT size=2>http://www.jasperassistant.com/</FONT></A><BR><FONT size=2>&nbsp;<BR>Jigloo GUI Builder ＪＡＶＡ的ＧＵＩ编辑插件<BR></FONT><A href="http://cloudgarden.com/jigloo/"><FONT size=2>http://cloudgarden.com/jigloo/</FONT></A><BR><FONT size=2>&nbsp;<BR>Profiler 性能跟踪、测量工具，能跟踪、测量ＢＳ程序<BR></FONT><A href="http://sourceforge.net/projects/eclipsecolorer/"><FONT size=2>http://sourceforge.net/projects/eclipsecolorer/</FONT></A><BR><FONT size=2>&nbsp;<BR>AdvanQas 提供对if/else等条件语句的提示和快捷帮助（自动更改结构等）<BR></FONT><A href="http://eclipsecolorer.sourceforge.net/advanqas/index.html"><FONT size=2>http://eclipsecolorer.sourceforge.net/advanqas/index.html</FONT></A><BR><FONT size=2>&nbsp;<BR>Log4E&nbsp;&nbsp;&nbsp;&nbsp; Log4j插件，提供各种和Log4j相关的任务，如为方法、类添加一个logger等<BR></FONT><A href="http://log4e.jayefem.de/index.php/Main_Page"><FONT size=2>http://log4e.jayefem.de/index.php/Main_Page</FONT></A><BR><FONT size=2>&nbsp;<BR>VSSPlugin VSS插件<BR></FONT><A href="http://sourceforge.net/projects/vssplugin"><FONT size=2>http://sourceforge.net/projects/vssplugin</FONT></A><BR><FONT size=2>&nbsp;<BR>Implementors&nbsp;&nbsp; 提供跳转到一个方法的实现类，而不是接中的功能（实用!）<BR></FONT><A href="http://eclipse-tools.sourceforge.net/implementors/"><FONT size=2>http://eclipse-tools.sourceforge.net/implementors/</FONT></A><BR><FONT size=2>&nbsp;<BR>Call Hierarchy 显示一个方法的调用层次（被哪些方法调，调了哪些方法）<BR></FONT><A href="http://eclipse-tools.sourceforge.net/call-hierarchy/index.html"><FONT size=2>http://eclipse-tools.sourceforge.net/call-hierarchy/index.html</FONT></A><BR><FONT size=2>&nbsp;<BR>EclipseTidy 检查和格式化HTML/XML文件<BR></FONT><A href="http://eclipsetidy.sourceforge.net/"><FONT size=2>http://eclipsetidy.sourceforge.net/</FONT></A><BR><FONT size=2>&nbsp;<BR>Checkclipse 检查代码的风格、写法是否符合规范<BR></FONT><A href="http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm"><FONT size=2>http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm</FONT></A><BR><FONT size=2>&nbsp;<BR>Hibernate Synchronizer Hibernate插件，自动映射等<BR></FONT><A href="http://www.binamics.com/hibernatesync/"><FONT size=2>http://www.binamics.com/hibernatesync/</FONT></A><BR><FONT size=2>&nbsp;<BR>spring updatesite 插件<BR></FONT><A href="http://springide.org/updatesite/"><FONT size=2>http://springide.org/updatesite/</FONT></A></P>
<P><FONT size=2>VeloEclipse&nbsp; Velocity插件<BR></FONT><A href="http://propsorter.sourceforge.net/"><FONT size=2>http://propsorter.sourceforge.net/</FONT></A><BR><FONT size=2>&nbsp;<BR>EditorList&nbsp;&nbsp; 方便的列出所有打开的Editor<BR></FONT><A href="http://editorlist.sourceforge.net/"><FONT size=2>http://editorlist.sourceforge.net/</FONT></A><BR><FONT size=2>&nbsp;<BR>MemoryManager 内存占用率的监视<BR></FONT><A href="http://cloudgarden.com/memorymanager/"><FONT size=2>http://cloudgarden.com/memorymanager/</FONT></A><FONT size=2> </FONT></P>
<P><FONT size=2>Eclipse的游戏插件<BR></FONT><A href="http://eclipse-games.sourceforge.net/"><FONT size=2>http://eclipse-games.sourceforge.net/</FONT></A></P>
<P><FONT size=2>JBoss-IDE<BR></FONT><A href="http://jboss.sourceforge.net/jbosside/updates/"><FONT size=2>http://jboss.sourceforge.net/jbosside/updates/</FONT></A></P>
<P><FONT size=2>自动反编译class，安装后要设定class文件缺省关联到jode<BR></FONT><A href="http://www.technoetic.com/eclipse/update"><FONT size=2>http://www.technoetic.com/eclipse/update</FONT></A></P>
<P><BR><FONT size=2>jigloo swing/sw设计工具，里面自带的form/anchor布局很好用！<BR></FONT><A href="http://cloudgarden.soft-gems.net/update-site/"><FONT size=2>http://cloudgarden.soft-gems.net/update-site/</FONT></A></P>
<P><FONT size=2>jinto的资源文件编辑工具，同时编辑多种语言，而且自动转换成iso8859-1编码。很好用！<BR></FONT><A href="http://www.guh-software.de/eclipse/"><FONT size=2>http://www.guh-software.de/eclipse/</FONT></A><BR></P><img src ="http://www.blogjava.net/zhangrenquan/aggbug/23457.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangrenquan/" target="_blank">kelven</a> 2005-12-12 13:30 <a href="http://www.blogjava.net/zhangrenquan/archive/2005/12/12/23457.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>