<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 22,comments - 35,trackbacks - 0
    Windows XP的關(guān)機(jī)是由Shutdown.exe程序來(lái)控制的,位于Windows\System32文件夾中。如果想讓W(xué)indows 2000也實(shí)現(xiàn)同樣的效果,可以把Shutdown.exe復(fù)制到系統(tǒng)目錄下。

    比如你的電腦要在22:00關(guān)機(jī),可以選擇“開(kāi)始→運(yùn)行”,輸入“at 22:00 Shutdown -s”,這樣,到了22點(diǎn)電腦就會(huì)出現(xiàn)“系統(tǒng)關(guān)機(jī)”對(duì)話框,默認(rèn)有30秒鐘的倒計(jì)時(shí)并提示你保存工作。如果你想以倒計(jì)時(shí)的方式關(guān)機(jī),可以輸入“Shutdown.exe -s -t 3600”,這里表示60分鐘后自動(dòng)關(guān)機(jī),“3600”代表60分鐘。

    設(shè)置好自動(dòng)關(guān)機(jī)后,如果想取消的話,可以在運(yùn)行中輸入“shutdown -a”。另外輸入“shutdown -i”,則可以打開(kāi)設(shè)置自動(dòng)關(guān)機(jī)對(duì)話框,對(duì)自動(dòng)關(guān)機(jī)進(jìn)行設(shè)置。

    Shutdown.exe的參數(shù),每個(gè)都具有特定的用途,執(zhí)行每一個(gè)都會(huì)產(chǎn)生不同的效果,比如“-s”就表示關(guān)閉本地計(jì)算機(jī),“-a”表示取消關(guān)機(jī)操作,下面列出了更多參數(shù),大家可以在Shutdown.exe中按需使用。

    ? -f:強(qiáng)行關(guān)閉應(yīng)用程序
      -m:\\計(jì)算機(jī)名:控制遠(yuǎn)程計(jì)算機(jī)
      -i:顯示圖形用戶界面,但必須是Shutdown的第一個(gè)選項(xiàng)
      -l:注銷當(dāng)前用戶
      -r:關(guān)機(jī)并重啟
      -t:時(shí)間:設(shè)置關(guān)機(jī)倒計(jì)時(shí)
      -c:“消息內(nèi)容”:輸入關(guān)機(jī)對(duì)話框中的消息內(nèi)容(不能超127個(gè)字符)
    posted @ 2006-08-07 14:18 kelven 閱讀(434) | 評(píng)論 (0)編輯 收藏
    http://popkart.tiancity.com/homepage/
    posted @ 2006-07-10 13:18 kelven 閱讀(355) | 評(píng)論 (2)編輯 收藏
    1.將數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的JAR文件放在Tomcat的?common/lib?中;
    2.在server.xml中設(shè)置數(shù)據(jù)源,以MySQL數(shù)據(jù)庫(kù)為例,如下:
    在<GlobalNamingResources>?</GlobalNamingResources>節(jié)點(diǎn)中加入,
    ??????<Resource
    ??????name="jdbc/DBPool"
    ??????type="javax.sql.DataSource"
    ??????password="root"
    ??????driverClassName="com.mysql.jdbc.Driver"
    ??????maxIdle="2"
    ??????maxWait="5000"
    ??????username="root"
    ??????url="jdbc:mysql://127.0.0.1:3306/test"
    ??????maxActive="4"/>
    ???屬性說(shuō)明:name,數(shù)據(jù)源名稱,通常取”jdbc/XXX”的格式;
    ????????????type,”javax.sql.DataSource”;
    ????????????password,數(shù)據(jù)庫(kù)用戶密碼;
    ????????????driveClassName,數(shù)據(jù)庫(kù)驅(qū)動(dòng);
    ????????????maxIdle,最大空閑數(shù),數(shù)據(jù)庫(kù)連接的最大空閑時(shí)間。超過(guò)空閑時(shí)間,數(shù)據(jù)庫(kù)連
    ?????????????????????接將被標(biāo)記為不可用,然后被釋放。設(shè)為0表示無(wú)限制。
    ????????????MaxActive,連接池的最大數(shù)據(jù)庫(kù)連接數(shù)。設(shè)為0表示無(wú)限制。
    ????????????maxWait?,最大建立連接等待時(shí)間。如果超過(guò)此時(shí)間將接到異常。設(shè)為-1表示
    ?????????????????????無(wú)限制。
    3.在你的web應(yīng)用程序的web.xml中設(shè)置數(shù)據(jù)源參考,如下:
    ??在<web-app></web-app>節(jié)點(diǎn)中加入,
    ??<resource-ref>
    ????<description>MySQL?DB?Connection?Pool</description>
    ????<res-ref-name>jdbc/DBPool</res-ref-name>
    ????<res-type>javax.sql.DataSource</res-type>
    ????<res-auth>Container</res-auth>
    ????<res-sharing-scope>Shareable</res-sharing-scope>
    ?</resource-ref>
    ??子節(jié)點(diǎn)說(shuō)明:?description,描述信息;
    ???????????????res-ref-name,參考數(shù)據(jù)源名字,同上一步的屬性name;
    ???????????????res-type,資源類型,”javax.sql.DataSource”;
    ???????????????res-auth,”Container”;
    ???????????????res-sharing-scope,”Shareable”;
    4.在web應(yīng)用程序的context.xml中設(shè)置數(shù)據(jù)源鏈接,如下:
    ??在<Context></Context>節(jié)點(diǎn)中加入,
    ??<ResourceLink
    ???name="jdbc/DBPool"?
    ???type="javax.sql.DataSource"?
    ???global="jdbc/DBPool"/>
    ???屬性說(shuō)明:name,同第2步和第3步的屬性name值,和子節(jié)點(diǎn)res-ref-name值;
    ?????????????type,同樣取”javax.sql.DataSource”;
    ?????????????global,同name值。
    ?
    至此,設(shè)置完成,下面是如何使用數(shù)據(jù)庫(kù)連接池。
    1.建立一個(gè)連接池類,DBPool.java,用來(lái)創(chuàng)建連接池,代碼如下:
    import?javax.naming.Context;
    import?javax.naming.InitialContext;
    import?javax.naming.NamingException;
    import?javax.sql.DataSource;

    public?class?DBPool?{
    ????private?static?DataSource?pool;
    ????static?{
    ?????????Context?env?=?null;
    ??????????try?{
    ??????????????env?=?(Context)?new?InitialContext().lookup("java:comp/env");
    ??????????????pool?=?(DataSource)env.lookup("jdbc/DBPool");
    ??????????????if(pool==null)?
    ??????????????????System.err.println("'DBPool'?is?an?unknown?DataSource");
    ???????????????}?catch(NamingException?ne)?{
    ??????????????????ne.printStackTrace();
    ??????????}
    ??????}
    ????public?static?DataSource?getPool()?{
    ????????return?pool;
    ????}
    }

    2.在要用到數(shù)據(jù)庫(kù)操作的類或jsp頁(yè)面中,用DBPool.getPool().getConnection(),獲得一個(gè)Connection對(duì)象,就可以進(jìn)行數(shù)據(jù)庫(kù)操作,最后別忘了對(duì)Connection對(duì)象調(diào)用close()方法,注意:這里不會(huì)關(guān)閉這個(gè)Connection,而是將這個(gè)Connection放回?cái)?shù)據(jù)庫(kù)連接池。
    posted @ 2006-06-14 11:17 kelven 閱讀(937) | 評(píng)論 (0)編輯 收藏

    <%@ page import="java.io.*"%>
    <%
    String root=application.getRealPath("/");
    String fileName=request.getParameter("fileName");
    String filePath=request.getParameter("filePath");

    response.setContentType("application/octet-stream");
    response.setHeader("Content-Disposition",
    "attachment; filename=\"" +fileName+ "\"");

    try{
    java.io.OutputStream os = response.getOutputStream(); //不加此行將只能下載文本文件.下載jpg等就會(huì)出現(xiàn)打不開(kāi)的現(xiàn)象.
    java.io.FileInputStream fis = new java.io.FileInputStream(root+filePath);
    byte[] b = new byte[1024];
    int i = 0;
    while ( (i = fis.read(b)) > 0 )
    {
    os.write(b, 0, i);
    }

    fis.close();
    os.flush();
    os.close();
    }
    catch ( Exception e )
    {
    System.out.println ( "IOException." + e );
    }
    %>

    java.io.FileInputStream fis = new java.io.FileInputStream(文件的真實(shí)路徑);
    也可以

    <%
    if (request.getParameter("fileUrl") != null)
    {
    String strFileUrl = request.getParameter("fileUrl");

    //獲取文件名(DealFile是自己寫(xiě)的一個(gè)處理文件的一個(gè)類)
    DealFile dealFile = new DealFile(strFileUrl);
    String filename = dealFile.getFileName();

    response.setHeader("content-type","application/octet-stream");
    response.setHeader("Content-Disposition","attachment;filename=\""+ filename+"\"");

    BufferedInputStream bis = null;
    BufferedOutputStream bos = null;
    try
    {
    //從文件所在目錄以流的方式讀取文件
    bis = new BufferedInputStream(new FileInputStream(getServletContext().getRealPath(strFileUrl)));

    bos = new BufferedOutputStream(response.getOutputStream());

    byte[] buff = new byte[2048];
    int bytesRead;

    while(-1 != (bytesRead = bis.read(buff, 0, buff.length)))
    {
    bos.write(buff,0,bytesRead);
    }
    bos.flush();
    }
    catch(final IOException e)
    {
    System.out.println ( "IOException." + e );
    }
    finally
    {
    if (bis != null)
    bis.close();
    if (bos != null)
    bos.close();
    }
    return;
    }
    %>

    posted @ 2006-04-14 16:04 kelven 閱讀(1478) | 評(píng)論 (0)編輯 收藏

    [http://www.javaalmanac.com] - Java開(kāi)發(fā)者年鑒一書(shū)的在線版本. 要想快速查到某種Java技巧的用法及示例代碼, 這是一個(gè)不錯(cuò)的去處.
    [http://www.onjava.com] - O'Reilly的Java網(wǎng)站. 每周都有新文章.
    [http://java.sun.com] - 官方的Java開(kāi)發(fā)者網(wǎng)站 - 每周都有新文章發(fā)表.
    [http://www.developer.com/java] - 由Gamelan.com 維護(hù)的Java技術(shù)文章網(wǎng)站.
    [http://www.java.net] - Sun公司維護(hù)的一個(gè)Java社區(qū)網(wǎng)站.
    [http://www.builder.com] - Cnet的Builder.com網(wǎng)站 - 所有的技術(shù)文章, 以Java為主.
    [http://www.ibm.com/developerworks/java] - IBM的Developerworks技術(shù)網(wǎng)站; 這是其中的Java技術(shù)主頁(yè).
    [http://www.javaworld.com] - 最早的一個(gè)Java站點(diǎn). 每周更新Java技術(shù)文章.
    [http://www.devx.com/java] - DevX維護(hù)的一個(gè)Java技術(shù)文章網(wǎng)站.
    [http://www.fawcette.com/javapro] - JavaPro在線雜志網(wǎng)站.
    [http://www.sys-con.com/java] - Java Developers Journal的在線雜志網(wǎng)站.
    [http://www.javadesktop.org] - 位于Java.net的一個(gè)Java桌面技術(shù)社區(qū)網(wǎng)站.
    [http://www.theserverside.com] - 這是一個(gè)討論所有Java服務(wù)器端技術(shù)的網(wǎng)站.
    [http://www.jars.com] - 提供Java評(píng)論服務(wù). 包括各種framework和應(yīng)用程序.
    [http://www.jguru.com] - 一個(gè)非常棒的采用Q&A形式的Java技術(shù)資源社區(qū).
    [http://www.javaranch.com] - 一個(gè)論壇,得到Java問(wèn)題答案的地方,初學(xué)者的好去處。
    [http://www.ibiblio.org/javafaq/javafaq.html] - comp.lang.java的FAQ站點(diǎn) - 收集了來(lái)自comp.lang.java新聞組的問(wèn)題和答案的分類目錄.
    http://java.sun.com/docs/books/tutorial/] - 來(lái)自SUN公司的官方Java指南 - 對(duì)于了解幾乎所有的java技術(shù)特性非常有幫助.
    http://www.javablogs.com] - 互聯(lián)網(wǎng)上最活躍的一個(gè)Java Blog網(wǎng)站.
    http://java.about.com/] - 來(lái)自About.com的Java新聞和技術(shù)文章網(wǎng)站.

    posted @ 2006-04-05 14:03 kelven 閱讀(419) | 評(píng)論 (0)編輯 收藏
    http://www.021123.com/
    posted @ 2006-03-24 14:59 kelven 閱讀(372) | 評(píng)論 (0)編輯 收藏
    1.安裝JDK1.4和jakarta-tomcat-4.1.27.exe。

    ? 路徑分別為 D:\jdk1.4 和 D:\Tomcat 4.1。
    ? 安裝Tomcat 4時(shí),會(huì)要求填寫(xiě)web訪問(wèn)端口、用戶名、密碼等信息。
    ? web訪問(wèn)端口默認(rèn)為8080,用戶名默認(rèn)為admin,密碼自己填寫(xiě)。

    ? 啟動(dòng)Tomcat4,訪問(wèn)http://127.0.0.1:8080/ ,就能看到Apache Tomcat/4.1.27的歡迎訪問(wèn)頁(yè)面,頁(yè)面上有一些相關(guān)介紹信息等。


    2.設(shè)置數(shù)據(jù)庫(kù)的驅(qū)動(dòng)

    ? 以O(shè)racle的JDBC驅(qū)動(dòng)設(shè)置為例:

    ? Oracle8i的驅(qū)動(dòng)在\oracle\ora81\jdbc\lib\目錄下。名字為classes12.zip。

    ? Oracle9i的驅(qū)動(dòng)在\oracle9i\jdbc\lib\目錄下,名字為ojdbc14.jar。

    ? 將這個(gè)文件copy到D:\Tomcat 4.1\common\lib 下。

    ? 注意,如果使用Oracle8i 的驅(qū)動(dòng),則需要在D:\Tomcat 4.1\common\lib 目錄下將classes12.zip更名為classes12.jar,因?yàn)門(mén)omcat4不認(rèn)識(shí)zip的后綴名。


    3.設(shè)置Web應(yīng)用。

    ? 新建一個(gè)文件夾,名字為mypool,位置為D:\mypool。這個(gè)D:\mypool路徑將是web應(yīng)用的主目錄。

    ? 打開(kāi)D:\Tomcat 4.1\conf\server.xml 文件,找到如下行:
    ?
    ? ?<!-- Tomcat Root Context -->
    ? ? ?<!--
    ? ? ? ? ?<Context path="" docBase="ROOT" debug="0"/>
    ? ? ?-->
    ?
    ?
    ? 在這下面,加入如下行:
    ?
    ? <Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/>

    ?
    ? 完成后,成為這個(gè)樣子:

    ? ? <!-- Tomcat Root Context -->
    ? ? ?<!--
    ? ? ? ? ? <Context path="" docBase="ROOT" debug="0"/>
    ? ? ? -->
    ? ?
    ? ? ?<Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/>

    ? 保存D:\Tomcat 4.1\conf\server.xml 文件。

    ? 配置完成后,重新啟動(dòng)Tomcat,就可以這樣訪問(wèn)這個(gè)web應(yīng)用了: http://127.0.0.1:8080/mypool/


    4.設(shè)置Tomcat的連接池?cái)?shù)據(jù)源。

    ? 訪問(wèn) http://127.0.0.1:8080/admin 頁(yè)面,用剛才安裝 Tomcat4 時(shí)填寫(xiě)的用戶名和密碼登錄。

    ? 登錄成功后,會(huì)出現(xiàn)Tomcat 的web應(yīng)用管理界面(Tomcat Web Server Administration Tool)。

    ? 然后在左邊的目錄樹(shù)點(diǎn)擊“Data Sources”項(xiàng),右邊可以看到JNDI配置的頁(yè)面。
    ?
    ? 在右上角的下拉框中選擇“Create New Data Source”,接下來(lái)填寫(xiě)配置信息:
    ?
    ? JNDI Name: jdbc/myOrcl ?
    ? Data Source URL: jdbc:oracle:thin:@192.168.6.40:1521:dbserver
    ? JDBC Driver Class: oracle.jdbc.driver.OracleDriver
    ? User Name: myname
    ? Password: mypassword
    ? Max. Active Connections: ?可用默認(rèn)值
    ? Max. Idle Connections: ? ?可用默認(rèn)值
    ? Max. Wait for Connection: 可用默認(rèn)值
    ? Validation Query: 可不填寫(xiě)。

    ? 然后,按下“save”按鈕保存。
    ? 再按下“Commit Changes”按鈕將配置更改提交完成。

    ? 此時(shí)如果看看 Tomcat4 的窗口,會(huì)發(fā)現(xiàn)在最下面有一行文字提示: ?

    ? ?Debugging -- changes saved to conf/server.xml
    ?
    ? 此時(shí) D:\Tomcat 4.1\conf\server.xml 文件的配置已經(jīng)更改保存完畢。


    ? 如果此時(shí)打開(kāi)D:\Tomcat 4.1\conf\server.xml 文件,會(huì)發(fā)現(xiàn)server.xml 文件的內(nèi)容改變了很多。
    ? 一些注釋文字都被去掉了。

    ? 還會(huì)發(fā)現(xiàn)上面第三步配置Web應(yīng)用的如下文字
    ? ?
    ? ?<!-- Tomcat Root Context -->
    ? ? ?<!--
    ? ? ? ? ? <Context path="" docBase="ROOT" debug="0"/>
    ? ? ? -->
    ? ?
    ? ? ?<Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/>

    ? 則被自動(dòng)修改成了這樣的:

    ? ? ?<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">
    ? ? ? ? </Context>

    ? ?
    ? ?好了,至此位置,對(duì)Oracle的應(yīng)用連接池已經(jīng)配置完畢。
    ? ?
    ? ?仔細(xì)對(duì)照server.xml 文件,會(huì)發(fā)現(xiàn)剛才所配置的連接池信息被放置在<GlobalNamingResources>標(biāo)簽中,這意味著這個(gè)信息是可以被全局引用的,大致是如下的樣子:

    ? ? <GlobalNamingResources>
    ? ? <Environment name="simpleValue" override="true" type="java.lang.Integer" value="30"/>
    ? ? <Resource name="jdbc/myOrcl" scope="Shareable" type="javax.sql.DataSource"/>
    ? ? <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" scope="Shareable" type="org.apache.catalina.UserDatabase"/>
    ? ?
    ? ? <ResourceParams name="jdbc/myOrcl">
    ? ? ? <parameter>
    ? ? ? ? <name>maxWait</name>
    ? ? ? ? <value>5000</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>maxActive</name>
    ? ? ? ? <value>200</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>password</name>
    ? ? ? ? <value>mypassword</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>url</name>
    ? ? ? ? <value>jdbc:oracle:thin:@192.168.6.40:1521:dbserver</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>driverClassName</name>
    ? ? ? ? <value>oracle.jdbc.driver.OracleDriver</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>maxIdle</name>
    ? ? ? ? <value>20</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>username</name>
    ? ? ? ? <value>myname</value>
    ? ? ? </parameter>
    ? ? </ResourceParams>
    ? ? <ResourceParams name="UserDatabase">
    ? ? ? <parameter>
    ? ? ? ? <name>factory</name>
    ? ? ? ? <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>pathname</name>
    ? ? ? ? <value>conf/tomcat-users.xml</value>
    ? ? ? </parameter>
    ? ? </ResourceParams>
    ? </GlobalNamingResources> ?


    5.設(shè)置web應(yīng)用對(duì)連接池的引用。
    ?
    ? 打開(kāi)D:\Tomcat 4.1\conf\server.xml 文件,找到剛才配置的web應(yīng)用文字,由于剛才server.xml 文件被自動(dòng)修改過(guò),并去掉了很多注釋內(nèi)容,所以剛才配置的web應(yīng)用

    ? ?<Context path="/mypool" docBase="D:\mypool" privileged="true" reloadable="true"/>

    ? 被自動(dòng)修改成了這樣的:

    ? ? ?<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">
    ? ? ? ? </Context>

    ? 在<Context></Context>的描述中加上本web應(yīng)用對(duì)全局連接池的引用說(shuō)明,如下文字:

    ? ? <ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/> ?

    ? 設(shè)置完成后,web應(yīng)用的描述大致如下面的樣子:

    ? ? <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"> ?
    ? ?
    ? ? ? <ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/> ? ? ?
    ? ?
    ?</Context>


    ? 保存D:\Tomcat 4.1\conf\server.xml 文件。

    ? 注意,設(shè)置這個(gè)連接池的引用說(shuō)明是非常重要的一步。
    ? 一些朋友在Tomcat4中配置連接池失敗的原因大都?xì)w咎與此。還有網(wǎng)上一些文章說(shuō)這是一個(gè)Tomcat4的一個(gè)Bug。
    ? 我用了整整兩天兩夜的時(shí)間才明白其中的奧秘。[:(]
    ? 當(dāng)時(shí)離瘋掉只查一點(diǎn)點(diǎn)。因?yàn)楫吘古渲靡粋€(gè)連接池是很簡(jiǎn)單的。[:(]


    6.一般情況下,到此,連接池的設(shè)置就完成了。

    ? 然后需要重新啟動(dòng)Tomcat,這樣就可以使用連接池來(lái)工作了。

    ? 但是,看到很多文章上說(shuō),還需要設(shè)置一下web.xml才能應(yīng)用。我沒(méi)有設(shè)置web.xml,連接池也可以完全使用。

    ? 現(xiàn)在說(shuō)一下web.xml的配置方法。

    ? 在D:\mypool中新建文件夾,命名為WEB-INF,注意是大寫(xiě)的字母。

    ? 然后在D:\mypool\WEB-INF\ 下新建文件web.xml,其內(nèi)容為:

    ? <web-app>
    ? ? <resource-ref>
    ? ? ? ? <description>Oracle DataSource example</description>
    ? ? ? ? <res-ref-name>jdbc/myOrcl</res-ref-name>
    ? ? ? ? <res-type>javax.sql.DataSource</res-type>
    ? ? ? ? <res-auth>Container</res-auth>
    ? ? </resource-ref>
    ? </web-app>

    ? 保存D:\mypool\WEB-INF\web.xml 文件。


    7.一個(gè)簡(jiǎn)單的應(yīng)用示例。

    ? 寫(xiě)了一個(gè)簡(jiǎn)單的JSP頁(yè)面,用連接池來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。

    內(nèi)容如下:
    ---------------------
    <%@ page contentType="text/html;charset=GBK"%>
    <%@ page import="javax.naming.*"%>
    <%@ page import="javax.sql.*"%>
    <%@ page import="java.sql.*"%>
    <%
    ? ? try
    ? ? { ? ? ? ? ? ? ? ? ?
    ? ? ? ?Context initCtx = new InitialContext();
    ?
    ? ? ? ?if(initCtx==null)
    ? ? ? ? ? throw new Exception("沒(méi)有匹配的環(huán)境");

    ? ? ? ?Context ctx = (Context) initCtx.lookup("java:comp/env");
    ? ? ?
    ? ? ? ?//獲取連接池對(duì)象 ? ? ? ? ? ? ? ? ?
    ? ? ? ?Object obj = (Object) ctx.lookup("jdbc/myOrcl"); ?
    ? ? ?
    ? ? ? //類型轉(zhuǎn)換
    ? ? ? ?javax.sql.DataSource ds = (javax.sql.DataSource)obj;
    ? ? ? ? ?
    ? ? ? ?if(ds==null)
    ? ? ? ? ? throw new Exception("沒(méi)有匹配數(shù)據(jù)庫(kù)"); ?
    ? ?
    ? ? ? ?Connection conn = ds.getConnection();
    ? ? ?
    ? ? ? ?Statement stmt = conn.createStatement(); ? ? ? ? ? ? ? ? ?
    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
    ? ? ? ?String strSql="select * from grade"; ?//SQL,要保證grade數(shù)據(jù)表里面有記錄。
    ? ? ? ? ? ? ? ? ? ? ?
    ? ? ? ?ResultSet rs=stmt.executeQuery(strSql);

    ? ? ? ?if(rs.next())
    ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ?
    ? ? ? ? ? out.println(rs.getString(1)); ? ? ? ? ? ? ? ? ? ? ? ? ?
    ? ? ? ? ? out.println(rs.getString(2)); ? ? ? ? ? ? ? ? ? ? ?
    ? ? ? ? ?}
    ? ? ? ?rs.close(); ? ? ?//關(guān)閉ResultSet ?
    ? ? ? ?stmt.close(); ? ?//關(guān)閉Statement
    ? ? ? ?conn.close(); ? ?//將連接放回到連接池
    ? ? ?}

    ? ? ?catch(Exception ex)

    ? ? ?{ ? ?
    ? ? ? ? ?ex.printStackTrace();
    ? ? ? ? ?throw new SQLException("cannot get Connection pool."+ex);
    ? ? ?}
    %>

    <hr>
    --------------------
    ?
    記住,用完后的數(shù)據(jù)庫(kù)連接要釋放。
    不然當(dāng)打開(kāi)的連接過(guò)多或惡意刷屏,連接池的連接數(shù)目會(huì)被用完。
    當(dāng)連接池的連接數(shù)目用完后,再訪問(wèn)jsp頁(yè)面時(shí),會(huì)在頁(yè)面出現(xiàn)如下的錯(cuò)誤信息,報(bào)告連接池的連接被耗盡:
    java.sql.SQLException: DBCP could not obtain an idle db connection, pool exhausted




    二、Win2k下Tomcat5 的連接池的配置

    安裝jakarta-tomcat-5.0.13.exe,假如Tomcat5的安裝目錄為 D:\Tomcat 5.0 。

    別忘了把oracle的驅(qū)動(dòng)程序classes12.jar文件copy到目錄 D:\Tomcat 5.0\common\lib\ 下。

    Tomcat5的連接池設(shè)置和Tomcat4 的差不多,僅說(shuō)明一下不同點(diǎn)或需要特別注意的地方。


    1. Tomcat5啟動(dòng)后,訪問(wèn) http://127.0.0.1:8080/admin 頁(yè)面,當(dāng)設(shè)置完Tomcat的連接池?cái)?shù)據(jù)源后,打開(kāi)D:\Tomcat 5.0\conf\server.xml 文件,會(huì)看到配置的連接池相關(guān)信息大致如下樣子:

    <GlobalNamingResources>
    ? ? <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
    ? ? <Resource name="jdbc/myOrcl" type="javax.sql.DataSource"/>
    ? ? <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>
    ? ? <ResourceParams name="jdbc/myOrcl">
    ? ? ? <parameter>
    ? ? ? ? <name>maxWait</name>
    ? ? ? ? <value>5000</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>maxActive</name>
    ? ? ? ? <value>4</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>password</name>
    ? ? ? ? <value>mypassword</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>url</name>
    ? ? ? ? <value>jdbc:oracle:thin:@127.0.0.1:1521:dbserver</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>driverClassName</name>
    ? ? ? ? <value>oracle.jdbc.driver.OracleDriver</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>maxIdle</name>
    ? ? ? ? <value>2</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>username</name>
    ? ? ? ? <value>myusername</value>
    ? ? ? </parameter>
    ? ? </ResourceParams>
    ? ? <ResourceParams name="UserDatabase">
    ? ? ? <parameter>
    ? ? ? ? <name>factory</name>
    ? ? ? ? <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
    ? ? ? </parameter>
    ? ? ? <parameter>
    ? ? ? ? <name>pathname</name>
    ? ? ? ? <value>conf/tomcat-users.xml</value>
    ? ? ? </parameter>
    ? ? </ResourceParams>
    ? </GlobalNamingResources>

    可以看到,一些連接池的信息配置參數(shù)已經(jīng)和Tomcat4不同了。
    但大致配置步驟和方法都是一樣的。


    2.設(shè)置web應(yīng)用對(duì)連接池的引用。

    ?打開(kāi)D:\Tomcat 5.0\conf\Catalina\localhost\ 目錄,找到和web應(yīng)用同名的xml文件(mypool.xml),打開(kāi)這個(gè)文件,
    修該其<Context></Context>的描述信息,添加如下行:

    ? ?<ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/> ?

    使mypool.xml文件的內(nèi)容看起來(lái)大致這個(gè):
    ?
    ? ?<Context docBase="D:/mypool" path="/mypool" privileged="true" reloadable="true">
    ? ? ?<ResourceLink global="jdbc/myOrcl" name="jdbc/myOrcl" type="javax.sql.DataSource"/>
    ? ?</Context>

    然后保存mypool.xml,需要重新Tomcat5服務(wù),使之生效。


    3.JSP頁(yè)面測(cè)試文件的寫(xiě)法也是一樣的,不再贅述。

    4.一些補(bǔ)充:

    ? 如果web應(yīng)用沒(méi)有配置對(duì)連接池的引用,即沒(méi)有配置<ResourceLink>,則會(huì)在訪問(wèn)jsp頁(yè)面時(shí)出現(xiàn)如下錯(cuò)誤:
    ? ? NameNotFoundException: Name jdbc is not bound in this Context

    ? 如果缺少Oracle的JDBC驅(qū)動(dòng),則會(huì)在訪問(wèn)jsp頁(yè)面時(shí)出現(xiàn)如下錯(cuò)誤:
    ? ? java.sql.SQLException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
    posted @ 2006-03-22 11:30 kelven 閱讀(1653) | 評(píng)論 (1)編輯 收藏
         摘要:         首先XMLHttpRequest不是web標(biāo)準(zhǔn),而是大部分主流瀏覽器都支持的一種擴(kuò)展技術(shù)。它被認(rèn)為是一種異步調(diào)用的實(shí)現(xiàn)技術(shù),因?yàn)樗緛?lái)是被設(shè)計(jì)在后臺(tái)取數(shù)據(jù)用的。在IE中它被作為一個(gè)ActiveX控件提供,而其他一些瀏覽器都提供一些本地API以供調(diào)用。下面是一些關(guān)于XMLHttpRequest的基本方法: 1、獲...  閱讀全文
    posted @ 2006-02-26 13:42 kelven 閱讀(404) | 評(píng)論 (0)編輯 收藏
    1、女人永遠(yuǎn)也不知道男人為什么要學(xué)會(huì)堅(jiān)強(qiáng)?
    因?yàn)樗麄冏约褐?他們雖然外表堅(jiān)強(qiáng).但內(nèi)心很脆弱.他們永遠(yuǎn)想讓自己身邊的她覺(jué)得自己是最棒的.

    2、女人永遠(yuǎn)也不知道男人為什么不會(huì)輕易掉眼淚?
    因?yàn)樗麄冏约褐?他們不是不會(huì)掉眼淚.只是他明白.一但眼淚掉下來(lái)了.這段感情也就結(jié) 束了.


    3、女人永遠(yuǎn)也不知道男人為什么每次在心煩的時(shí)候那么喜歡抽煙?
    因?yàn)樗麄冏约褐?只有在煙霧中才能憶起他們過(guò)去美好的時(shí)光來(lái)尋求一點(diǎn)心里的平衡.


    4、女人永遠(yuǎn)也不知道男人為什么要在分手以后還會(huì)對(duì)她噓寒問(wèn)暖?
    因?yàn)樗麄冏约褐?他們并不是想跟你做朋友.只是想挽回這段曾經(jīng)屬于他的感情.


    5、女人永遠(yuǎn)也不知道男人為什么每次在聽(tīng)到她被欺負(fù)了會(huì)顯得那么發(fā)狂?
    因?yàn)樗麄冏约褐?哪怕這次架打輸了.躺下了.他也會(huì)覺(jué)得高興.因?yàn)樗麄儗幵缸约菏艿絺?/FONT>害.也不愿意看到你哭泣.


    6、女人永遠(yuǎn)也不知道男人為什么在分手以后會(huì)夜夜買醉?

    因?yàn)樗麄冎?如果今晚不麻醉自己.那么今晚只能在思念中度過(guò).


    7. 女人永遠(yuǎn)也不知道男人為什么每次出門(mén)會(huì)出手那么大方?

    因?yàn)樗麄冎?他們寧愿自己一個(gè)人省吃檢用.也不愿意你看到你被別人看不起.


    8.女人永遠(yuǎn)也不知道男人為什么會(huì)那么愛(ài)對(duì)她發(fā)脾氣?
    因?yàn)樗麄冏约褐?對(duì)她發(fā)脾氣并不是不愛(ài)她.只是希望她在以后的路上不被別人所欺騙.

    9.女人永遠(yuǎn)也不知道男人為什么會(huì)那么在意你以前的男朋友?
    因?yàn)樗麄冏约褐?并不是他們不自信.只是他們害怕有一天你會(huì)離他而去.

    10. 女人永遠(yuǎn)也不知道男人為什么看到你為別人寫(xiě)的日記之后還會(huì)那么鎮(zhèn)靜的聽(tīng)你解釋?

    因?yàn)樗麄冏约褐?自己并不是不想發(fā)火.只是希望能從你的口中得知到底是他重要還是別人重要?


    11、女人永遠(yuǎn)也不知道男人為什么不對(duì)她說(shuō)我愛(ài)你⒊個(gè)字?

    因?yàn)樗麄冎?并不是不想說(shuō).只是他們自己明白.⒈萬(wàn)句我愛(ài)你用在身上也不夠.

    12. 女人永遠(yuǎn)也不知道男人為什么會(huì)跑到這里來(lái)發(fā)貼?
    因?yàn)樗麄冎?希望有一天這貼能被你看見(jiàn).以此來(lái)證明你對(duì)他的不理解.只有他自己心里明 白.這貼要是沒(méi)人回的話.很快便會(huì)消失了.你更不知道一個(gè)男人的幸福生活來(lái)之不易,那是 他將每一個(gè)看過(guò)的貼子都頂了的緣故。


    (如果你不能為你心愛(ài)的女人穿上嫁衣,請(qǐng)停下你解她衣扣的手)


    愿天下有情人終成眷屬.當(dāng)你們看到這貼時(shí)心里最想的那個(gè)人也就是你們最愛(ài)的那個(gè)人!
    posted @ 2006-02-25 11:50 kelven 閱讀(400) | 評(píng)論 (0)編輯 收藏
    Java文件中,連接SQLserver數(shù)據(jù)庫(kù)時(shí),需要一個(gè)連接數(shù)據(jù)庫(kù)的驅(qū)動(dòng)文件。

    在你安裝JDK的路徑下的lib文件夾里拷貝一個(gè)文件jtds-0.6.jar,并且在環(huán)境變量里設(shè)置classpath,例如:你的jdk裝在c:\jdk,那么環(huán)境變量classpath的路徑應(yīng)設(shè)為c:\jdk\lib\jtds-0.6.jar。(環(huán)境變量知道這么設(shè)吧?在我的電腦的屬性,高級(jí)里。多個(gè)路徑之間用分號(hào)隔開(kāi)。)

    這里提供SQLserver連接驅(qū)動(dòng)文件jtds-0.6.jar,下載解壓后拷貝到j(luò)dk路徑下的lib文件夾里。

    具體在文件中的應(yīng)用:

    import java.sql.*;
    String url="JDBC:jtds:sqlserver://localhost:1433/‘?dāng)?shù)據(jù)庫(kù)名′";
    String driver="net.sourceforge.jtds.jdbc.Driver";
    Class.forName(driver);
    Connection conn=DriverManager.getConnection(url,"用戶名","密碼");
    就可以連接到你的數(shù)據(jù)庫(kù)了。

    1433是SQLserver默認(rèn)的端口號(hào),如果要連接到其他機(jī)器上,要將localhost改為其他機(jī)器的IP地址,如192.168.0.101。


    其中數(shù)據(jù)庫(kù)名是你所新建的數(shù)據(jù)庫(kù)的名稱,用戶名和密碼是你登陸SQLserver是的用戶名和密碼。

    有的人安裝SQLserver時(shí)用的是Windows身份驗(yàn)證,那么用戶名和密碼都為空。如果不能登陸,或者要用SQL身份驗(yàn)證的話,需要修改注冊(cè)表。在運(yùn)行里打開(kāi)regedit,然后查找loginmode(具體位置:hkey_local_machine\software\microsoft\MSSQLserver\
    mssqlserver\),僅用Windows身份驗(yàn)證的值為1,混合身份驗(yàn)證的值為2。只要將1改為2,就可以用SQL身份驗(yàn)證了,用戶名為‘sa',密碼為空。
    posted @ 2006-02-17 11:59 kelven 閱讀(598) | 評(píng)論 (0)編輯 收藏


        String root = getServletContext().getRealPath("/");
        String path 
    = request.getParameter("path");
        String name 
    = request.getParameter("name");


        response.setContentType(
    "unknown");
        response.addHeader(
    "Content-Disposition""filename=\"" + name + "\"");


        
    try
        
    {
            java.io.OutputStream    os  
    = response.getOutputStream();
            java.io.FileInputStream fis 
    = new java.io.FileInputStream(root + path + name);


            
    byte[] b = new byte[1024];
            
    int    i = 0;


            
    while ( (i = fis.read(b)) > 0 ) 
            
    {
                os.write(b, 
    0, i);
            }



            fis.close();
            os.flush();
            os.close();
        }

        
    catch ( Exception e )
        
    {
        }
    posted @ 2006-02-16 12:21 kelven 閱讀(1995) | 評(píng)論 (1)編輯 收藏
    諾基亞手機(jī)限制碼-1234
      保密碼 -12345
      *#06#:看手機(jī)序列號(hào)。  
      *#2820# :看蘭牙版本信息,需要先將藍(lán)牙設(shè)置為打開(kāi)狀態(tài)。
      *#92702689# :這個(gè)也是大家常用的一條命令,用來(lái)查看系統(tǒng)信息。
      *#335738#:刪除Email, GPRS, MMS的設(shè)置信息
      *#7370925538#:刪除電子錢包的內(nèi)容和 密碼 ,這個(gè)比較實(shí)用,要是忘記了,你既可以用這個(gè)命令,也可以 恢復(fù)出廠 設(shè)置,不過(guò)這個(gè)更實(shí)用。
      *#7370#:軟件格式化。刪除存儲(chǔ)空間的內(nèi)容。
      *#7780#:一個(gè) 恢復(fù)出廠 設(shè)置的快捷操作。
      *#7220#:恢復(fù)一些功能
        *#92702689#LIFE:查系統(tǒng)版本
        *#0000#:查系統(tǒng)版本

    以上是一些NOKIA機(jī)型的查詢指令,不一定適合所有的NOKIA機(jī)型,但是基本上都可以使用。
    posted @ 2006-02-09 12:35 kelven 閱讀(1075) | 評(píng)論 (0)編輯 收藏
    下載地址:http://download.17hk.com/soft.asp?softid=44   (21.6M)
                        http://www.it1848.com/Soft/cyrjxz/yyrjxz/200510/Soft_20051014114011.html (46.4M)

    (WindowsXP SP2系統(tǒng)上SQLServer2000必須要安裝SP3之后的補(bǔ)丁才能正常使用)

    由于SQL Server Service Packs按照累積形式進(jìn)行組織,因此,SP3包含了先期發(fā)布的 Service Pack 1(SP1)與 Service Pack 2(SP2)中的所有修正程序,它既可應(yīng)用于全新安裝的系統(tǒng),也可在已經(jīng)安裝SP1或SP2的系統(tǒng)上加以應(yīng)用。

      優(yōu)勢(shì)
      除提供最新更新內(nèi)容與修正程序外,SQL Server 2000 SP3還能夠?yàn)槟峁┮韵聝?yōu)勢(shì):

      可維護(hù)性
      在可維護(hù)性方面的改進(jìn)包括:
    得以增強(qiáng)的錯(cuò)誤報(bào)告功能。通過(guò)適當(dāng)配置,SQL Server能夠?qū)㈥P(guān)鍵性錯(cuò)誤信息自動(dòng)發(fā)送至Microsoft公司。
      得以改進(jìn)的多服務(wù)器管理功能。
      用于實(shí)現(xiàn)監(jiān)控的新增API。數(shù)據(jù)庫(kù)管理員(DBA)或第三方工具可以對(duì)出現(xiàn)問(wèn)題的進(jìn)程加以診斷
      性能
      SP3引入了針對(duì)QLogic’s VI-enabled SANblade QLA2350 Fibre Channel控制器的支持能力。通過(guò)在SQL Server網(wǎng)絡(luò)互連層上應(yīng)用虛擬接口(Virtual Interface)技術(shù),在服務(wù)器和客戶端系統(tǒng)上針對(duì)每條消息所消耗的CPU資源得以顯著降低,同時(shí),系統(tǒng)整體性能得到了相應(yīng)提高。
      安全性
      最新提供的安全特性與工具包括:
      針對(duì)SQL Server 2000在線圖書(shū)的內(nèi)容更新。SQL Server 2000在線圖書(shū)為廣大客戶提供了用以進(jìn)一步增強(qiáng)應(yīng)用環(huán)境安全性所需的更多指導(dǎo)信息。
      安全修補(bǔ)程序。SP3針對(duì)用戶反映或在持續(xù)測(cè)試過(guò)程中發(fā)現(xiàn)的各種已知薄弱環(huán)節(jié)提供了相應(yīng)的修復(fù)程序。
      SQL Server Agent增強(qiáng)。SP3允許您在不具備管理員權(quán)限的情況下運(yùn)行SQL Server Agent。
    posted @ 2006-01-17 01:37 kelven 閱讀(3235) | 評(píng)論 (1)編輯 收藏
        現(xiàn)在多數(shù)host裝的還是MySQL 4.0x 版本以下,如果升級(jí)到了4.1x 或者移動(dòng)到使用4.1x 的主機(jī)上,估計(jì)會(huì)遇到一些問(wèn)題。我在這上面遇到了兩個(gè)問(wèn)題。
        一是數(shù)據(jù)導(dǎo)入。在phpMyAdmin內(nèi)導(dǎo)入后,發(fā)現(xiàn)中文變成了亂碼。搜索學(xué)習(xí)后,了解到需要設(shè)置數(shù)據(jù)庫(kù)的collation (校勘),如果你的數(shù)據(jù)庫(kù)是utf-8的,設(shè)置為utf8_general_ci就可以了。
        二是,即使正確導(dǎo)入了,在phpMyAdmin里也能正確顯示,但頁(yè)面上顯示的文章內(nèi)容都是“???”,而模板里面的漢字都能正常顯示。這讓我頭疼了很久。搜索到Windix’s Weblog上有對(duì)此的說(shuō)明:
        “從MySQL 4.1開(kāi)始引入的多語(yǔ)言支持確實(shí)很棒,而且一些特性已經(jīng)超過(guò)了其他的數(shù)據(jù)庫(kù)系統(tǒng)。不過(guò)我在測(cè)試過(guò)程中發(fā)現(xiàn)使用適用于MySQL 4.1之前的PHP語(yǔ)句操作MySQL數(shù)據(jù)庫(kù)會(huì)造成亂碼,即使是設(shè)置過(guò)了表字符集也是如此。我讀了一下新的MySQL在線手冊(cè)中第十章‘Character Set Support’后終于找到了解決方法并測(cè)試通過(guò)。MySQL 4.1的字符集支持(Character Set Support)有兩個(gè)方面:字符集(Character set)和排序方式(Collation)。對(duì)于字符集的支持細(xì)化到四個(gè)層次: 服務(wù)器(server),數(shù)據(jù)庫(kù)(database),數(shù)據(jù)表(table)和連接(connection)。當(dāng)我們按照原來(lái)的方式通過(guò)PHP存取MySQL數(shù)據(jù)庫(kù)時(shí),就算設(shè)置了表的默認(rèn)字符集為utf8并且通過(guò)UTF-8編碼發(fā)送查詢,你會(huì)發(fā)現(xiàn)存入數(shù)據(jù)庫(kù)的仍然是亂碼。問(wèn)題就出在這個(gè)connection連接層上。解決方法是在發(fā)送查詢前執(zhí)行一下下面這句:
    SET NAMES ‘utf8′;”
        但是我依舊不知道,如何,在何處讓W(xué)ordPress運(yùn)行這個(gè)SQL語(yǔ)句。后來(lái)在阿修的部落格上查到辦法:
      “為著解決這個(gè)問(wèn)題必須去修改wp-includes/wp-db.php內(nèi)的資料連線設(shè)定。詳細(xì)的修改方式是這樣的:
    $this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword);
    //加上下面這行
    $this->query(”SET NAMES ‘utf8′”);”
    這樣子終于能正常顯示中文的WordPress了。雖然后來(lái)還是沒(méi)用,但是覺(jué)得這個(gè)經(jīng)驗(yàn)會(huì)對(duì)別人有用。記得有人用email和我討論過(guò)這樣子的中文顯示問(wèn)題,但是我那時(shí)哪里知道問(wèn)題出在MySQL 4.1x上。
    還有,4.1x的數(shù)據(jù)庫(kù)不向下兼容,所以升級(jí)的時(shí)候要三思啊。
    posted @ 2006-01-01 08:02 kelven 閱讀(469) | 評(píng)論 (0)編輯 收藏
    (此為個(gè)人學(xué)習(xí)心得,以后會(huì)逐漸完善)

    (本例使用的數(shù)據(jù)庫(kù)是:MySql)

    1.當(dāng)你用流讀取文件或者從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)時(shí),取得的字符串的編碼要與頁(yè)面的一致,否則會(huì)亂碼

    例如:

    public class FileOperation {

        
    //path為文件的全路徑
        public static String readFile(String path){
            String templateContent
    ="";
            
    try{
                BufferedReader br
    =new BufferedReader(new FileReader(path));
                String temp
    =null;
                
    while((temp=br.readLine())!=null){
                    templateContent
    =templateContent+temp+"\n";
                }

                br.close();
            }

            
    catch(Exception e){
                System.out.println(
    "讀取文件出錯(cuò)");
                e.printStackTrace();
            }

            
            
    return templateContent;
        }

    }


    (假設(shè)頁(yè)面的編碼為UTF-8)

    調(diào)用以上函數(shù)只需要傳遞一個(gè)完整的文件路徑就可以以字符串的形式讀取文件.

    ......

    String str
    =FileOperation.readFile("d:\11.txt");

    ......

    request.setAttribute("str",str);

    ......

    則頁(yè)面用requset.getAttribute("str")取得的中文字符將會(huì)是亂碼.

    解決方案:

    將上段取中文字符串的代碼改成:



    String str
    =new String(FileOperation.readFile("d:\11.txt").getBytes("UTF-8"));



    request.setAttribute(
    "str",str);




    posted @ 2005-12-28 16:16 kelven 閱讀(546) | 評(píng)論 (0)編輯 收藏
    Resin的確是比較狠的應(yīng)用服務(wù)器,運(yùn)行速度快,配置又簡(jiǎn)單!這里介紹一下Resin2.1.12的數(shù)據(jù)庫(kù)連接池配置方法。

    在%ResinHome%/conf/resin.conf中找到
    <!--
    - Sample database pool configuration
    - The JDBC name is java:comp/env/jdbc/test
    -->
    在其下加入相應(yīng)的信息可以連接到不同的數(shù)據(jù)庫(kù)。

    Mysql:
    <resource-ref>
    <res-ref-name>jdbc/blog</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <init-param driver-name="com.caucho.jdbc.mysql.Driver"/>
    <init-param url="jdbc:mysql_caucho://localhost:3306/blog"/>
    <init-param user="root"/>
    <init-param password="****"/>
    <init-param max-connections="20"/>
    <init-param max-idle-time="30"/>
    </resource-ref>

    將相應(yīng)的驅(qū)動(dòng)放到%Resin/lib/%下。

    MS-Sql:
    <resource-ref>
    <res-ref-name>jdbc/blog</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <init-param driver-name="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
    <init-param url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=blog"/>
    <init-param user="sa"/>
    <init-param password="****"/>
    <init-param max-connections="20"/>
    <init-param max-idle-time="30"/>
    </resource-ref>
    首先要下載安裝sqlserver-jdbc-驅(qū)動(dòng),然后將其lib下的三個(gè)jar文件放到%Resin/lib/%下。
    posted @ 2005-12-16 12:58 kelven 閱讀(604) | 評(píng)論 (0)編輯 收藏

    Servlet的演變:在常規(guī)的 JSP,Servlet,JavaBean三層結(jié)構(gòu)中,JSP實(shí)現(xiàn)View的功能,Servlet實(shí)現(xiàn)Controller的功能,JavaBean實(shí)現(xiàn)Model的實(shí)現(xiàn)。

    在Struts中,將常規(guī)情況下的Servlet拆分與ActionServlet、FormBean、ActionBean三個(gè)部分。ActionServlet配合Struts-config.xml,專職完成頁(yè)面導(dǎo)航,而不再負(fù)責(zé)具體的數(shù)據(jù)獲取與相應(yīng)邏輯,這兩部分功能由FormBean和ActionBean來(lái)完成。

    Struts的核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,Struts-config.xml集中了所有頁(yè)面的導(dǎo)航定義。對(duì)于大型的WEB項(xiàng)目,通過(guò)此配置文件即可迅速把握其脈絡(luò),這不管是對(duì)于前期的開(kāi)發(fā),還是后期的維護(hù)或升級(jí)都是大有裨益的。掌握Struts-config.xml是掌握Struts的關(guān)鍵所在。

    <struts-config>

       <data-sources />

       <form-beans >
          <form-bean name="systemForm" type="com.gdglc.survey.form.SystemForm" />
          <form-bean name="FindMemberForm" type="org.apache.struts.validator.DynaValidatorForm">
             <form-property name="findName" type="java.lang.String"/>
          </form-bean>
       </form-beans>

       <global-exceptions />

       <global-forwards>
          <forward name="showMsg" path="/msg.jsp" />
       </global-forwards>

       <action-mappings>

          <action 
             path="/list" 
             type="com.gdglc.survey.action.ListAction">
             <forward name="list" path="/list.jsp"/>
          </action>

          <action
             attribute="systemForm"
             input="/admin/System_Base_List.jsp"
             name="systemForm"
             path="/systemBaseModify"
             type="com.gdglc.survey.action.SystemAction"
             scope="request"
             validate="false">
          </action>

       </action-mappings>

       <message-resources parameter="com.gdglc.application" />
      
       <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
          <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
       </plug-in>

    </struts-config>

    每一個(gè)FormBean 都必須繼承ActionForm類,F(xiàn)ormBean是對(duì)頁(yè)面請(qǐng)求的封裝。即把HTTP request 封裝在一個(gè)對(duì)象中,需要說(shuō)明的一點(diǎn)就是多個(gè)HTTP request可以共用一個(gè)FormBean,便于維護(hù)和重用。


    public final class RegUserForm extends ActionForm{

       private String logname;
       private String password;
       private String email;

       public RegUserForm(){
          logname = null;
          password = null;
          email = null;
       }

       ......

       public void reset(ActionMapping mapping, HttpServletRequest request)
       {
          logname = null;
          password = null;
          email = null;
       }

       public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) 
       {
          ActionErrors errors=new ActionErrors();
          if(this.password==null)
             errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("password is null!!"));
          ......
          return errors;
        }
    }

    FormBean的產(chǎn)生是為了提供數(shù)據(jù)給ActionBean,在ActionBean中可以取得FormBean中封裝的數(shù)據(jù),經(jīng)相應(yīng)的邏輯處理后,調(diào)用業(yè)務(wù)方法完成相應(yīng)業(yè)務(wù)要求。

    public final class RegUserAction extends Action
    {
       public ActionForward execute(ActionMapping mapping,
                                                      ActionForm form, 
                                                      HttpServletRequest request,
                                                      HttpServletResponse response)

       {
          ......
          if(true)
             return mapping.findForwad("list");
          else {
             ActionErrors errors=new ActionErrors();
             errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("...."));
             this.saveErrors(request,errors);
             return new ActionForward(mapping.getInput());
          }
       }
    }

    Struts優(yōu)缺點(diǎn)
    優(yōu)點(diǎn):


    Struts跟Tomcat、Turbine等諸多Apache項(xiàng)目一樣,是開(kāi)源軟件,這是它的一大優(yōu)點(diǎn)。使開(kāi)發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。

    除此之外,Struts的優(yōu)點(diǎn)主要集中體現(xiàn)在兩個(gè)方面:Taglib和頁(yè)面導(dǎo)航。Taglib是Struts的標(biāo)記庫(kù),靈活動(dòng)用,能大大提高開(kāi)發(fā)效率。另外,就目前國(guó)內(nèi)的JSP開(kāi)發(fā)者而言,除了使用JSP自帶的常用標(biāo)記外,很少開(kāi)發(fā)自己的標(biāo)記,或許Struts是一個(gè)很好的起點(diǎn)。

    關(guān)于頁(yè)面導(dǎo)航,我認(rèn)為那將是今后的一個(gè)發(fā)展方向,事實(shí)上,這樣做,使系統(tǒng)的脈絡(luò)更加清晰。通過(guò)一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,這對(duì)于后期的維護(hù)有著莫大的好處。尤其是當(dāng)另一批開(kāi)發(fā)者接手這個(gè)項(xiàng)目時(shí),這種優(yōu)勢(shì)體現(xiàn)得更加明顯。

    缺點(diǎn):

    Taglib是Struts的一大優(yōu)勢(shì),但對(duì)于初學(xué)者而言,卻需要一個(gè)持續(xù)學(xué)習(xí)的過(guò)程,甚至還會(huì)打亂你網(wǎng)頁(yè)編寫(xiě)的習(xí)慣,但是,當(dāng)你習(xí)慣了它時(shí),你會(huì)覺(jué)得它真的很棒。

    Struts將MVC的Controller一分為三,在獲得結(jié)構(gòu)更加清晰的同時(shí),也增加了系統(tǒng)的復(fù)雜度。

    Struts從產(chǎn)生到現(xiàn)在還不到半年,但已逐步越來(lái)越多運(yùn)用于商業(yè)軟件。雖然它現(xiàn)在還有不少缺點(diǎn),但它是一種非常優(yōu)秀的J2EE MVC實(shí)現(xiàn)方式,如果你的系統(tǒng)準(zhǔn)備采用J2EE MVC架構(gòu),那么,不妨考慮一下Struts。

    Struts實(shí)施經(jīng)驗(yàn):

    1)、基于Struts架構(gòu)的項(xiàng)目開(kāi)發(fā),首先需要有一個(gè)很好的整體規(guī)劃,整個(gè)系統(tǒng)中包括哪幾個(gè)模塊,每個(gè)模塊各需要多少FormBean和ActionBean等,而且最好有專人負(fù)責(zé)Struts-config.xml的管理。開(kāi)發(fā)基于Struts的項(xiàng)目的難點(diǎn)在于配置管理,尤其是對(duì)Struts-config.xml的管理。

    2)、如果你的項(xiàng)目非常緊,并且項(xiàng)目組中又沒(méi)有富有經(jīng)驗(yàn)的Struts開(kāi)發(fā)人員,建議不要冒然采用Struts。Struts的掌握需要一個(gè)過(guò)程,對(duì)于一個(gè)熟練的JSP程序員,自學(xué)大概需要半個(gè)月左右的時(shí)間。如果結(jié)合titls,則需要更長(zhǎng)的時(shí)間。

    3)、如果你在網(wǎng)頁(yè)中大量運(yùn)用taglib,那么你的美工將做出部分犧牲。當(dāng)你結(jié)合Tiles,功能增強(qiáng)的同時(shí),這種犧牲尤為明顯。當(dāng)然,你對(duì)功能和美觀的取舍由你自己決定。

    4)、Taglib是一個(gè)好東西,但靈活運(yùn)用它卻需要一個(gè)過(guò)程,如果你不想在Taglib上花太多的時(shí)間,那么只需理解與FORM有關(guān)的幾個(gè)標(biāo)記,其它的標(biāo)記就放著吧,以后再看,先去研究ActionServlet和Struts-config.xml,你會(huì)覺(jué)得很有成就感。

    5)、Struts是否只適合于大型項(xiàng)目呢?No!Struts適合于各種大小的項(xiàng)目,當(dāng)然,對(duì)于大型項(xiàng)目,它所體現(xiàn)出來(lái)的優(yōu)勢(shì)更加明顯。

    http://www.chinaitlab.com/www/news/article_show.asp?id=33092
    posted @ 2005-12-15 13:33 kelven 閱讀(847) | 評(píng)論 (0)編輯 收藏
    Resin使用簡(jiǎn)介

    使用Resin開(kāi)發(fā)Java Web項(xiàng)目時(shí),需要建立自己的WebApp。這里不介紹Resin Cmp/Ejb的開(kāi)發(fā)和使用,只介紹用Resin開(kāi)發(fā)普通的jsp\java servlet項(xiàng)目。在這里還要談到resin.conf的配置。Resin中的應(yīng)用可以有2種方式發(fā)布:一是在Resin的目錄下發(fā)布;二是打包成War發(fā)布。

    1、在Resin的目錄下發(fā)布

    在resin.conf中查找<web-app>標(biāo)簽,該標(biāo)簽表示一個(gè)web應(yīng)用。

    標(biāo)簽中,id屬性表示該應(yīng)用的Web路徑。如<web-app id=’/test’>,表示該應(yīng)用在Web上訪問(wèn)的時(shí)候應(yīng)該用http://hostname/test/來(lái)訪問(wèn)。app-dir屬性表示該應(yīng)用的實(shí)際路徑。如<app-dir>d:\resin\doc\test</app-dir>表示該應(yīng)用在d:\resin\doc\test目錄下面。默認(rèn)值為根下面的和id同名的目錄。Resin可以配置3種error-page:404錯(cuò)誤也就是文件找不到錯(cuò)誤頁(yè);Exception違例頁(yè);不能連接java引擎頁(yè)。他們分別可以這樣子設(shè)置。

    404文件找不到頁(yè)

    <web-app id='/app1'>

    <error-page error-code='404' location='/file_not_found.jsp'/>

    </web-app>

    Exception 違例頁(yè)

    <web-app id='/foo'>

    <error-page exception-type='java.lang.NullPointerException'

    location='/nullpointer.jsp'/>

    </web-app>

    不能連接到srun Servlet引擎錯(cuò)誤頁(yè)

    該頁(yè)設(shè)置和應(yīng)用無(wú)關(guān),屬于服務(wù)器的設(shè)置。

    <http-server>

    <error-page exception-type='connection'

    location='/missing_file.html'/>

    </http-server>

    classpath的設(shè)置

    參見(jiàn)下面的語(yǔ)句:

    <classpath id='WEB-INF/classes' source='WEB-INF/src' compile='true'/>

    id參數(shù)的值表示classpath中編譯后的classpath的存放路徑;source參數(shù)的值表示classpath中java源代碼的存放路徑;compile中的值可能是true或者false,表示是否由Resin的srun自動(dòng)編譯java源代碼。Classpath的設(shè)置一般和javaBean或者Servlet的使用有關(guān)。id的值表示javaBean的編譯好的包存放的根,source的值表示javaBean的java源代碼存放的根。Servlet相同。

    Servlet的設(shè)置

    參見(jiàn)下面的語(yǔ)句:

    <servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/>

    <servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/>

    <servlet-mapping url-pattern='/servlet/*' servlet-name='invoker'/>

    一般就是指定那些需要通過(guò)srun的解析。比如在這里,把*.jsp改成*.jss,其他不變,那么只要在訪問(wèn)時(shí)遇到*.jss的文件就和原來(lái)遇到*.jsp一樣處理。通過(guò)這個(gè)可以指定解析的引擎,如以下的配置:

    <servlet-mapping url-pattern='*.xtp' servlet-name='com.caucho.jsp.XtpServlet'/>

    在Servlet中,也可以指定servlet。如

    <servlet servlet-name='hello' servlet-class='test.HelloWorld'/>

    <servlet-mapping url-pattern='/hello.html' servlet-name='hello'/>

    在servlet-mapping中有個(gè)重要的參數(shù)case-sensitive 如果在windows上,最好配置成false,忽略大小寫(xiě),從而和windows的約定一致。

    Session的配置

    參見(jiàn)如下的配置語(yǔ)句:

    <session-config>

    <session-max>4096</session-max>

    <session-timeout>30</session-timeout>

    <enable-cookies>true</enable-cookies>

    <enable-url-rewriting>true</enable-url-rewriting>

    <file-store>WEB-INF/sessions</file-store>

    </session-config>

    session-max :最大 session數(shù)量

    session-timeout :session過(guò)期時(shí)間,以分鐘為單位。

    是否允許cookie :指session是否采用cookies。如果采用cookies,瀏覽器必須支持session才能使用,發(fā)布時(shí)建議改成false。enable-url-rewriting和enable-cookies一般配合使用。如果enable-cookies是false,enable-url-rewriting應(yīng)該設(shè)成true比較合適。

    file-store :該配置指示服務(wù)器是否把session作為文件存放在服務(wù)器上。如果把該項(xiàng)注釋掉,則在你的web-app目錄下的WEB-Inf/sessions目錄不保存序列化后的session對(duì)象。Session還有jdbc-store配置,對(duì)應(yīng)著把session通過(guò)jdbc永久保存在數(shù)據(jù)庫(kù)中。其實(shí)也就是會(huì)話變量的序列化后的保存和重新載入的物理實(shí)現(xiàn)。在這里session還支持了多服務(wù)器的設(shè)置問(wèn)題,

    通過(guò)tcp-store參數(shù)設(shè)置。由于涉及到負(fù)載平衡的問(wèn)題,在這里不詳細(xì)敘述,只簡(jiǎn)單寫(xiě)一個(gè)例子:

    <http-server>

    <http id='a' port='80'/>

    <srun id='a' host='host-a' port='6802'/>

    <http id='b' port='80'/>

    <srun id='b' host='host-b' port='6802'/>

    <host id=''>

    <web-app id=''>

    <session-config>

    <tcp-store/>

    <always-load-session/>

    </session-config>

    </web-app>

    </host>

    </http-server>

    這個(gè)例子表示session是按照tcp ring的方式傳遞。

    temp-dir 的設(shè)置

    temp-dir指的是應(yīng)用的臨時(shí)目錄。也就是在javax.servlet.context.tempdir中用到的目錄。模認(rèn)是應(yīng)用目錄下的WEB-INF\tmp目錄。

    以上的設(shè)置都可以在<web-app>標(biāo)簽對(duì)中設(shè)置,控制某個(gè)web應(yīng)用的設(shè)置。

    2、打包成War發(fā)布

    以下是介紹對(duì)如何在resin下使用已經(jīng)打包成War的java Web應(yīng)用進(jìn)行發(fā)布。

    其實(shí)這個(gè)是最簡(jiǎn)單也是最清晰的良好方法。在j2ee中,所有的項(xiàng)目都打包成ear發(fā)布。其中,Web應(yīng)用打包成war,ejb應(yīng)用打包成jar。在resin中,這些都可以直接部署。這里我只對(duì)打包成war的Web應(yīng)用的部署做介紹。

    在resin.conf中,查找這個(gè):<war-dir id='webapps'/>。他表示war文件應(yīng)該被拷貝的路徑。這里指的是相對(duì)于resin的安裝路徑,如以上的設(shè)置表示d:\resin\webapps。只要重新啟動(dòng)Resin就可以了。Resin會(huì)把該war自動(dòng)解包到webapps目錄下。你可以在command控制臺(tái)或者stdout.log中看到類似于

    [2002-04-27 09:56:21.680] initializing application http://haitaiserver:8080/rwtest 的語(yǔ)句。這個(gè)表示該Web應(yīng)用是自動(dòng)安裝的。只要這個(gè)應(yīng)用是符合j2ee標(biāo)準(zhǔn)的Web應(yīng)用,應(yīng)該不會(huì)有問(wèn)題。通過(guò)如上顯示的路徑就可以訪問(wèn)到這個(gè)應(yīng)用。如果你到d:\resin\webapps\rwtest中瀏覽,你會(huì)看到Resin已經(jīng)為你生成了rwtest目錄,下面是META-INF和WEB-INF還有你自己的JSP\servlet 文件和目錄。是完全符合j2ee的結(jié)構(gòu)的。你可以在rwtest目錄下建立新的jsp\servlet,一樣可以被編譯和解析并運(yùn)行的。在實(shí)際操作中,可以使用Jbuilder 或者 WebSphere等Ide工具進(jìn)行集成調(diào)試和打包,非常的方便。

    使用Resin進(jìn)行java Web項(xiàng)目的開(kāi)發(fā)和調(diào)試

    這里篇幅有限,不可能講太多,我只對(duì)實(shí)際中最有用的部分做介紹。

    Resin中如果定義了錯(cuò)誤頁(yè),則出錯(cuò)后最常見(jiàn)的一大串Exception不會(huì)被看到,直接跳轉(zhuǎn)到錯(cuò)誤頁(yè)。所以建議開(kāi)發(fā)中先不設(shè)置錯(cuò)誤頁(yè)。jsp錯(cuò)誤中最常見(jiàn)的就是Nullpoint Exception,其次是名稱的拼寫(xiě)錯(cuò)誤。錯(cuò)誤也可以在Resin安裝目錄下的log目錄下的stderr.log中找到。通過(guò)對(duì)該log文件的分析可以看到很多有用的錯(cuò)誤信息。

    在調(diào)試jsp的時(shí)候,如果定義了compile為true,jsp先被翻譯成Servlet的java文件,再被編譯成class文件。可以在你自己的work目錄中找到該文件。java的名稱在Resin中是這樣子定義的:原先的jsp文件名前加下劃線,再加上_jsp這個(gè)字樣。所以在java 應(yīng)用中的命名不要以_jsp結(jié)尾,也不要出現(xiàn)中文名稱等字符;其實(shí)名稱以_jsp為開(kāi)頭也是不合法的。

    關(guān)于java對(duì)多國(guó)語(yǔ)言的支持問(wèn)題,在Resin中得到了很好的解決。以jsp為例,參考Resin自動(dòng)生成的java Servlet文件。只要在任何的jsp文件的最開(kāi)始處增加:

    <%@page contentType="text/html;charset=gb2312" %>

    中文問(wèn)題就解決了。察看生成的Servlet源文件片斷:

    response.setContentType("text/html;charset=gb2312");

    request.setCharacterEncoding("GB2312");

    以上為設(shè)置字符集

    private static byte []_jsp_string26;

    private static byte []_jsp_string27;

    _jsp_string26 = "\r\n</table>\r\n<table class=\"type\">\r\n<tr>\r\n <td>".getBytes("GB2312");

    _jsp_string27 = "\r\n</td><td>\r\n</tr>\r\n<!--\r\n<tr>\r\n<td>\r\".getBytes("GB2312");

    以上是對(duì)頁(yè)面的顯示的編碼。其中,getBytes(“gb2312”)是靜態(tài)編碼,這是Resin為了解決某些環(huán)境下還是不能正常顯示而設(shè)置的。在Resin的配置文件(/conf/resin.conf)中,可以通過(guò)設(shè)置<jsp precompile='true' static-encoding='false' recompile-on-error='true'/>中的static-encoding屬性為true或者false,來(lái)控制是否靜態(tài)編碼。其實(shí)在Resin容器的內(nèi)部,所有的字符都是按照iso-8859-1來(lái)處理的。iso-8859-1是一個(gè)大字符集,雖然中文的gb2312和8859在字的定義上有不同,但是編碼是包容了gb2312的。按照解決多國(guó)語(yǔ)言的方法,在純英文平臺(tái)上用iso-8859-1處理內(nèi)部編碼,而把字符的顯示推向客戶端的機(jī)器。所以這樣只要編碼是正確的,

    在頁(yè)面上顯示中文就不存在問(wèn)題。Tomcat3.2不方便的地方是Tomcat對(duì)數(shù)據(jù)庫(kù)的操作中文支持不好,需要手動(dòng)在java Bean或者Servlet中硬編碼。通過(guò)測(cè)試,在Resin中完全沒(méi)有這個(gè)問(wèn)題。Tomcat4.0解決了這個(gè)問(wèn)題。不過(guò)個(gè)人習(xí)慣來(lái)講還是覺(jué)得resin在配置方面方便一些。

    在Resin中可以自動(dòng)解決引入的jar。這個(gè)在使用特殊的類或者第三方提供的開(kāi)發(fā)包非常有用。方法非常簡(jiǎn)單:只要把該jar或者是zip拷貝到Resin安裝目錄下的lib目錄下面,重新啟動(dòng)Resin,就可以了。如db2用到的db2java.zip文件,只要輕松拷貝到d:\resin\lib中就可以了。

    Resin提供了對(duì)Jbuilder的集成調(diào)試。可以到:

    http://www.caucho.com/projects/jbuilder/resin-jbuilder.jar免費(fèi)下載到resin的jbuilder的ide擴(kuò)展包。然后,把該包該名成:resin-jbuilder.jar,拷貝到j(luò)builder6\lib\ext目錄下。然后,把Resin2.1解包安裝在jbuilder6\resin-2.1目錄下,就可以了。打開(kāi)任何的War項(xiàng)目,在project上點(diǎn)右鍵,選擇properties,選擇Servers標(biāo)簽。在原來(lái)的選擇框上,就可以看到多了一項(xiàng)Resin2.1。這樣子就可以象原來(lái)用tomcat一樣調(diào)試jsp\servlet了,而且比Tomcat更方便。見(jiàn)圖2:

    圖2

    調(diào)試方法和用Tomcat調(diào)試一樣。

    其他問(wèn)題

    使用Resin可以和apache結(jié)合使用。也就是利用apache做http服務(wù)器,而Resin做srun服務(wù)器。可以參考resin\conf\samples目錄下的apache.conf。主要就是把 app-dir 設(shè)成 /usr/local/apache/htdocs(也就是apache的root)。同時(shí)在apache 中的http.conf也做了相應(yīng)的設(shè)置。Resin還提供了對(duì)該過(guò)程的自動(dòng)安裝程式,運(yùn)行resin\bin\setup,你可以在彈處的對(duì)話框中選擇apache,這樣子就可以了。只要你曾經(jīng)安裝過(guò)apache,resin可以自己找到httpd.conf文件所在的路徑。

    使用命令行方式啟動(dòng)Resin,如果改動(dòng)了Resin.conf,Resin會(huì)自己重新啟動(dòng)適應(yīng)新的配置。這個(gè)很適合初期安裝時(shí)使用。

    Resin對(duì)數(shù)據(jù)庫(kù)緩沖池的支持很好。在這里,它提供了DBPool對(duì)緩沖池做了封裝。實(shí)際使用時(shí),只要在resin.conf這樣配置:

    <dbpool.sql>

    <id>ORCL</id>

    <driver>oracle.jdbc.driver.OracleDriver</driver>

    <url>jdbc:oracle:thin:@localhost:1521:SMTH</url>

    <!-- <url>jdbc:oracle:oci8:@SMTH</url> -->

    <user>scott</user>

    <password>tiger</password>

    <max-connections>5</max-connections>

    </dbpool.sql>

    然后,在你的jsp或者servlet中就可以這樣子使用了:

    先導(dǎo)入 com.caucho.sql.*包,然后如下直接得到連接:

    Connection conn = DBPool.getPool("ORCL").getConnection();

    個(gè)人建議不要如上使用連接池,還是按照ejb的方法用從Context中直接找到的DataSource對(duì)象中得到連接通用性比較好。代碼也很簡(jiǎn)單:

    Context ctx = new InitialContext();

    DataSource ds = (DataSource)ctx.lookup(“jdbc/EmployeeDB”);

    Connection conn = ds.getConnection();

    在Resin中如下配置jdbc就可以了:

    <resource-ref>

    <res-ref-name> jdbc/EmployeeDB</res-ref-name>

    <res-type>javax.sql.DataSource</res-type>

    <init-param driver-name="com.caucho.jdbc.mysql.Driver"/>

    <init-param url="jdbc:mysql_caucho://localhost:3306/test"/>

    <init-param user="name"/>

    <init-param password="password"/>

    <init-param max-connections="20"/>

    <init-param max-idle-time="30"/>

    </resource-ref>

    用Resin Web Server開(kāi)發(fā)還是比較愉快的。只是沒(méi)有像Weblogic 或者WebSphere那樣子提供現(xiàn)成的管理控制臺(tái)而已。但是從穩(wěn)定性和方便性來(lái)講,Resin個(gè)人認(rèn)為比Tomcat要好很多。況且Resin還有提供了resin-cmp 和 resin-ejb,功能更強(qiáng)大。

    posted @ 2005-12-15 13:22 kelven 閱讀(2096) | 評(píng)論 (0)編輯 收藏

    目錄

    正則表達(dá)式介紹
    匹配模式

    字符子集
    行結(jié)束符
    分組和引用
    Unicode支持


    正則表達(dá)式語(yǔ)法參考
    1. 字符
    2. 邏輯操作符
    3. 向后引用
    4. 邊界元字符
    5. 重復(fù)指示符
    6. 字符子集
    7. 預(yù)定義子集(元字符)
    8. 擴(kuò)展子集(元字符)
    9. 擴(kuò)展中文子集(元字符)
    10. POSIX字符子集(只適用于ASCII)
    11. Unicode塊和分類

    替換表達(dá)式
    替換表達(dá)式
    1. 特殊字符
    2. 自定義替換表

    匹配模式

    匹配模式指得是正則表達(dá)式引擎將以何種模式匹配字符串。
    模式名稱
    啟用,禁用
    缺省啟用
    說(shuō)明
    UNIX_LINES
    (?d)啟用,(?-d)禁用

    啟用Unix行模式。
    在此模式下,只有 '\n'被認(rèn)為是行結(jié)束符。它會(huì)影響., ^, 和 $ 的行為。

    CASE_INSENSITIVE
    (?i)啟用,(?-i)禁用

    啟用忽略大小寫(xiě)模式。
    缺省時(shí),忽略大小寫(xiě)模式只會(huì)影響 ASCII字符的匹配。 而Unicode范圍的忽略大小寫(xiě)匹配需要通過(guò) UNICODE_CASE 標(biāo)志與本標(biāo)志聯(lián)合使用。
    啟用此模式會(huì)影響匹配性能。

    COMMENTS
    (?x)啟用,(?-x)禁用

    允許空格和注釋出現(xiàn)在正則表達(dá)式中。
    在此模式下,空格被忽略,以#開(kāi)始的單行注釋被忽略。
    MULTILINE
    (?m)啟用,(?-m)禁用

    啟用多行模式。
    In multiline mode the expressions ^ and $ 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.

    DOTALL
    (?s)啟用,(?-s)禁用

    讓.可以匹配行結(jié)束符。
    在此模式下,元字符.可以匹配行結(jié)束符。缺省不允許如此匹配。


    UNICODE_CASE
    (?u)啟用,(?-u)禁用

    Enables Unicode-aware case folding.
    When this flag is specified then case-insensitive matching, when enabled by the CASE_INSENSITIVE 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. 啟用此模式會(huì)影響性能。

    CANON_EQ
    (?c)啟用,(?-c)禁用

    Enables canonical equivalence.
    When this flag is specified then two characters will be considered to match if, and only if, their full canonical decompositions match. The expression "a\u030A", for example, will match the string "?" when this flag is specified. By default, matching does not take canonical equivalence into account.
    啟用此模式會(huì)影響性能。



    字符子集

    字符子集可以含有別的字符子集,并且可以通過(guò)聯(lián)合操作符(缺省)和交集操作符(&&)實(shí)現(xiàn)組合。聯(lián)合操作符表示某個(gè)子集匹配它的子子集所匹配的任意字符。交集操作符表明某個(gè)字符子集只匹配它的子子集都匹配的字符。
    字符子集所能夠有的操作符的優(yōu)先級(jí)如下,從高到低:
    1. 轉(zhuǎn)義符\x
    2. 成組符 [...]
    3. 區(qū)間符 a-z
    4. 聯(lián)合符 [a-e][i-u]
    5. 交集符 [a-z&&[aeiou]]
    注意:在字符子集[]內(nèi)部的語(yǔ)法根本不同于正則表達(dá)式其它部分中的語(yǔ)法。例如,在字符子集內(nèi)部,正則表達(dá)式 . 失去了它原有的含義,而是成了一個(gè)匹配.的元字符。

    行結(jié)束符

    行結(jié)束符是一個(gè)或兩個(gè)字符序列,用以表明輸入字符序列中一行的結(jié)束。下面的字符被認(rèn)為是行結(jié)束符:
    • 一個(gè)換行符('\n')。
    • 一個(gè)回車符加上一個(gè)換行符("\r\n")。
    • 一個(gè)單獨(dú)的回車符('\r')。
    • 代表下一行的字符('\u0085')。
    • 行分隔符('\u2028'),Unicode中被定義。
    • 一個(gè)分段符('\u2029),Unicode中被定義。
    如果 UNIX_LINES 模式被啟用,則只有換行符被認(rèn)為是行結(jié)束符。
    如果 MULTILINE 模式被啟用,。

    分組和引用

    字符分組以它們的左括號(hào)的出現(xiàn)順序來(lái)排序。例如在表達(dá)式((A)(B(C))),有四個(gè)分組:
    1. ((A)(B(C)))
    2. (A)
    3. (B(C))
    4. (C)
    第0組永遠(yuǎn)表示表達(dá)式本身。
    分組采用這樣的命名方式,是因?yàn)椋谝淮纹ヅ溥^(guò)程中,正則表達(dá)式會(huì)被匹配多次。以前的匹配子序列有可能在將來(lái)被使用;或者在匹配結(jié)束時(shí),程序有可能需要重新獲得所有匹配的子字符序列。
    對(duì)于正則表達(dá)式中的某個(gè)分組而言,永遠(yuǎn)只保留最后匹配的字符序列。如果對(duì)某個(gè)分組匹配嘗試失敗,則會(huì)保留上次匹配成功的字符序列。例如,對(duì)于正則表達(dá)式(a(b)?)+而言,字符序列"aba",將會(huì)讓分組2匹配的字符序列為"b"。
    以(?開(kāi)始的分組,將不會(huì)計(jì)入分組數(shù)目,也不會(huì)被后續(xù)匹配所引用。

    Unicode支持

    本正則表達(dá)式匹配引擎的實(shí)現(xiàn)遵循了《Unicode技術(shù)報(bào)告:Unicode正則表達(dá)式指南》,實(shí)現(xiàn)了該指南的第二層所需的功能,但是在細(xì)微處有一些簡(jiǎn)單語(yǔ)法修改。
    Unicode塊(Block)和分類(Category)通過(guò)\p和\P通配苻表示。\p{prop}匹配含有prop的輸入序列,而\P{prop}匹配不含有prop的輸入序列。Unicode塊通過(guò)前綴In表示,如\p{InMongolian}。Unicode分類通過(guò)可選的前綴Is表示,因此\p{L}和\p{IsL}都代表Unicode分類 letters。Unicode塊和分類都可以在正則表達(dá)式子集外部和內(nèi)部使用。
    目前支持的Unicode塊和分類是《Unicode標(biāo)準(zhǔn),第三版》中所指定的塊和分類。 Unicode塊名稱在《Unicode 字符數(shù)據(jù)庫(kù)》的第14章被定義,文件名稱叫

    與Perl 5正則表達(dá)式語(yǔ)法對(duì)比

    [TBD]


    正則表達(dá)式參考



    字符

    正則表達(dá)式字符串
    匹配的字符串
    X
    字符X,包括 CJK ExtB 區(qū)漢字
    \\
    反斜杠\
    \0n 八進(jìn)制0n代表的字符(0<=n<=7)
    \0nn
    八進(jìn)制0nn代表的字符(0<=n<=7)
    \0mnn
    八進(jìn)制0mnn代表的字符(0<=m<=3,0<=n<=7)
    \xhh
    十六進(jìn)制 0xhh所代表的字符
    \uhhhh
    十六進(jìn)制 0xhhhh所代表的字符。注意,目前尚不支持CJK ExtB區(qū)漢字。
    \t
    制表符('\u0009')
    \n
    換行('\u000A')
    \r
    回車('\u000D')
    \a
    響鈴符('\u0007')
    \e
    取消符Escape('\001B')
    \cx
    x所代表的控制字符

    邏輯操作符

    正則表達(dá)式字符串
    匹配的字符串
    XY
    X后面跟隨Y
    X|Y
    X或者Y
    (X)
    X作為分組表達(dá)式

    向后引用

    正則表達(dá)式字符串
    匹配的字符串
    \n
    n個(gè)匹配的分組

    邊界元字符

    邊界字符
    匹配的字符串
    ^
    行首
    $
    行末
    \b 字符邊界
    \B
    非字符邊界
    \A
    輸入流的開(kāi)始
    \G
    上次匹配的結(jié)束處
    \Z
    輸入流的結(jié)束,或者是最后一個(gè)行結(jié)束符,參見(jiàn)行結(jié)束符
    \z
    輸入流的結(jié)束

    重復(fù)指示符

    正則表達(dá)式字符串
    匹配的字符串
    X?
    X重復(fù)一次,或者不重復(fù)
    X*
    X重復(fù)0次或多次
    X+
    X重復(fù)1次或多次
    X{n}
    X重復(fù)n次,不多也不少。
    X{n,}
    X至少重復(fù)n次
    X{n,m}
    X至少重復(fù)n次,至多重復(fù)m次。
    注:X{n,m}、?、*、+方式可以聯(lián)合使用。

    字符子集

    正則表達(dá)式字符串子集
    匹配的字符串
    組合方式
    [abc]
    字符a,b或c,包括 CJK ExtB 區(qū)漢字
    簡(jiǎn)單子集
    [^abc]
    任意非a,b或c的字符。
    排除
    [a-zA-Z] 從a到z,或者A到Z,包含a,z,A,Z。
    區(qū)間
    [a-d[m-p]]
    從a到d,或者m到p,等于[a-dm-p]。
    聯(lián)合
    [a-z&&[def]]
    d,e或者f。
    交集
    [a-z&&[^bc]]
    從a到z,除了b和c,等于[ad-z]
    扣除
    [a-z&&[^m-p]]
    從a到z,并且不包括從m到p,等于[a-lq-z]
    扣除

    預(yù)定義子集(元字符)

    邊界字符
    匹配的字符串
    .
    任意字符,可能匹配行結(jié)束符。
    \d
    數(shù)字[0-9]
    \D 非數(shù)字[^0-9]
    \s
    空白符[ \t\n\x0B\f\r]
    \S
    非空白符[^\s]
    \w
    單詞符,包含有字母和數(shù)字[a-zA-Z_0-9]
    \W
    非單詞符,不包含有字母和數(shù)字。

    擴(kuò)展子集(元字符)

    正則表達(dá)式字符串
    匹配的字符串




    擴(kuò)展中文子集(元字符)

    名稱
    塊名稱(\p{InXXX})
    簡(jiǎn)化通配符
    標(biāo)準(zhǔn)Unicode塊,或者漢字列表
    任意雙字節(jié)字符(漢字或全角符號(hào))
    \p{InQuqnJiao}
    \E
    任意由GBK表示的漢字,不包括GB18030擴(kuò)展部分,
    以及CJK ExtB區(qū)的漢字。
    任意單字節(jié)字符
    \p{InFQuanJiao}
    \~E
    任意單字節(jié)字符。
    任意全角ASCII字符
    \p{InQJAscii}
    \H
    標(biāo)準(zhǔn)HalfwidthandFullwidthForms塊
    任意收錄在BIG5碼集中的雙字節(jié)字符
    \p{InBig5}
    \I
    Big5可編碼雙字節(jié)字符
    匹配未收錄在BIG5碼集中的雙字節(jié)字符 \p{InFBig5}
    \~I
    非Big5可編碼雙字節(jié)字符
    匹配任意漢字(不包括符號(hào))
    \p{InHanziOrCJKExtB}
    \X
    任意漢字,包括GB18030擴(kuò)展部分。
    匹配任意漢字(不包括符號(hào))
    \p{InHanzi}
    \M
    任意漢字,不包括GB18030擴(kuò)展部分。
    匹配非漢字的雙字節(jié)字符
    \p{InFHanzi}
    \~M
    任意非漢字的雙字節(jié)字符,
    包括GB18030擴(kuò)展部分。
    地支字符
    \p{InDiZhi}
    \U
    子丑寅卯辰巳午未申酉戌亥
    匹配收錄在GB碼集中的雙字節(jié)字符
    \p{InGB}
    \g
    收錄在GB碼集中的雙字節(jié)字符,
    不包括GB18030擴(kuò)展部分。
    匹配非收錄在GB碼集中的雙字節(jié)字符
    \p{InFGB}
    \~g
    未收錄在GB碼集中的雙字節(jié)字符,
    不包括GB18030擴(kuò)展部分。
    匹配收錄在GBK碼集中的雙字節(jié)字符
    \p{InGBK}
    \h
    收錄在GBK碼集中的雙字節(jié)字符,
    不包括GB18030擴(kuò)展部分。
    匹配非收錄在GBK碼集中的雙字節(jié)字符
    \p{InFGBK}
    \~h
    未收錄在GBK碼集中的雙字節(jié)字符,
    不包括GB18030擴(kuò)展部分。
    大寫(xiě)希臘字母
    \p{InDaXila}
    \K
    ΑΒΓΔΕΖΗΘΙΚΛΜΝ
    ΞΟΠΡΣΤΥΦΧΨΩ
    日文片假名
    \p{InPianJia}
    \j
    標(biāo)準(zhǔn)Katakana塊
    日文平假名
    \p{InPingJia}
    \J
    標(biāo)準(zhǔn)Hiragana塊
    小寫(xiě)希臘字母
    \p{InXiaoXila}
    \k
    αβγδεζηθικλμν
    ξοπρστυφχψω
    數(shù)學(xué)符號(hào)
    \p{InMathe}
    \m
    ±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙
    ∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴
    中文數(shù)字
    \p{InCnDigit}
    \i
    〇一二三四五六七八九十百千萬(wàn)億兆吉京
    大寫(xiě)中文數(shù)字
    \p{InDaCnDigit}
    \N
    零壹貳叁肆伍陸柒捌玖拾佰仟萬(wàn)億兆吉京
    全角標(biāo)點(diǎn)符號(hào)
    \p{InQJBiaoDian}
    \o
    、。·ˉˇ¨〃々—~‖…‘’“”〔〕
    〈〉《》「」『』〖〗【】!"'(),
    -.:;<=>?[]{|}`﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚
    ﹛﹜﹝﹞︵︶︹︺︿﹀︽︾﹁﹂﹃﹄
    ︻︼︷︸︱︳︴
    小寫(xiě)俄文字母
    \p{InXiaoEWen}
    \l
    абвгдеёжзийклмн
    опрстуфхцчшщъыьэюя
    大寫(xiě)俄文字母
    \p{InDaEWen}
    \R
    АБВГДЕЁЖЗИЙКЛМНО
    ПРСТУФХЦЧШЩЪЫЬЭЮЯ
    中文序號(hào)
    \p{InCnSN}
    \q
    ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ
    ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ
    再加上Unicode標(biāo)準(zhǔn)EnclosedAlphanumerics塊
    天干字符
    \p{InTianGan}
    \T
    甲乙丙丁戊己庚辛壬癸
    豎排標(biāo)點(diǎn)符號(hào)
    \p{InSPBiaoDian}
    \V
    ︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴
    拼音字符
    \p{InPinyin}
    \y
    āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňɡ
    GBK -> 0xA8A1- 0xA8C0
    只是Unicode標(biāo)準(zhǔn)LatinExtended-A塊的一部分。
    注音字符
    \p{InZhuyin}
    \Y
    標(biāo)準(zhǔn)Bopomofo塊
    制表字符
    \p{InZhiBiao}
    \C
    標(biāo)準(zhǔn)BoxDrawing塊。
    經(jīng)檢查發(fā)現(xiàn) textpro 的算法含有部分非標(biāo)
    準(zhǔn)Unicode制表符:“∟∣≒≦≧⊿═”。

    POSIX字符子集(只適用于ASCII)

    正則表達(dá)式字符串
    匹配的字符串
    \p{Lower}
    小寫(xiě)字母[a-z]
    \p{Upper}
    大寫(xiě)字母[A-Z]
    \p{ASCII}
    所有的ASCII字符[\x00-\x7F]
    \p{Alpha}
    大小寫(xiě)字母[\p{Lower}\p{Upper}]
    \p{Digit}
    數(shù)字[0-9]
    \p{Alnum}
    字母數(shù)字符,包含大小寫(xiě)字母和數(shù)字[\p{Alpha}\p{Digit}]
    \p{Punct}
    標(biāo)點(diǎn)符號(hào),!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~之一。
    \p{Graph}
    可顯示字符[\p{Alnum}\p{Punct}]
    \p{Print}
    可打印字符[\p{Graph}]
    \p{Blank}
    空格或者制表符[ \t]
    \p{Cntrl}
    控制字符[\x00-\x1F\x7F
    \p{XDigit}
    十六進(jìn)制數(shù)字[0-9a-fA-F]
    \p{Space}
    空白符[ \t\n\x0B\f\r]

    Unicode塊和分類


    中文名稱(摘自Word XP)
    代碼區(qū)域
    BasicLatin
    基本拉丁語(yǔ)
    \u0000-\u007F
    Latin-1Supplement
    拉丁語(yǔ)-1
    \u0080-\u00FF
    LatinExtended-A
    拉丁語(yǔ)擴(kuò)充-A
    \u0100-\u017F
    LatinExtended-Bound
    拉丁語(yǔ)擴(kuò)充-B
    \u0180-\u024F
    IPAExtensions
    國(guó)際音標(biāo)擴(kuò)充
    \u0250-\u02AF
    SpacingModifierLetters
    進(jìn)格的修飾字符
    \u02B0-\u02FF
    CombiningDiacriticalMarks
    組合用發(fā)音符
    \u0300-\u036F
    Greek
    基本希臘語(yǔ)
    \u0370-\u03FF
    Cyrillic
    西里爾語(yǔ)
    \u0400-\u04FF
    Armenian

    \u0530-\u058F
    Hebrew

    \u0590-\u05FF
    Arabic

    \u0600-\u06FF
    Syriac

    \u0700-\u074F
    Thaana

    \u0780-\u07BF
    Devanagari

    \u0900-\u097F
    Bengali

    \u0980-\u09FF
    Gurmukhi

    \u0A00-\u0A7F
    Gujarati

    \u0A80-\u0AFF
    Oriya

    \u0B00-\u0B7F
    Tamil

    \u0B80-\u0BFF
    Telugu

    \u0C00-\u0C7F
    Kannada

    \u0C80-\u0CFF
    Malayalam

    \u0D00-\u0D7F
    Sinhala

    \u0D800-\uDFF
    Thai

    \u0E00-\u0E7F
    Lao

    \u0E80-\u0EFF
    Tibetan
    藏語(yǔ)
    \u0F00-\u0FFF
    Myanmar

    \u1000-\u109F
    Georgian

    \u10A0-\u10FF
    HangulJamo

    \u1100-\u11FF
    Ethiopic

    \u1200-\u137F
    Cherokee

    \u13A0-\u13FF
    UnifiedCanadianAboriginalSyllabics

    \u1400-\u167F
    Ogham

    \u1680-\u169F
    Runic

    \u16A0-\u16FF
    Khmer

    \u1780-\u17FF
    Mongolian
    蒙古語(yǔ)
    \u1800-\u18AF
    LatinExtendedAdditional

    \u1E00-\u1EFF
    GreekExtended

    \u1F00-\u1FFF
    GeneralPunctuation
    廣義標(biāo)點(diǎn)
    \u2000-\u206F
    SuperscriptsandSubscripts

    \u2070-\u209F
    CurrencySymbols
    貨幣符號(hào)
    \u20A0-\u20CF
    CombiningMarksforSymbols

    \u20D0-\u20FF
    LetterlikeSymbols
    類似字母的符號(hào)
    \u2100-\u214F
    NumberForms
    數(shù)字形式
    \u2150-\u218F
    Arrows
    箭頭
    \u2190-\u21FF
    MathematicalOperators
    數(shù)學(xué)運(yùn)算符
    \u2200-\u22FF
    MiscellaneousTechnical
    零雜技術(shù)用符號(hào)
    \u2300-\u23FF
    ControlPictures

    \u2400-\u243F
    OpticalCharacterRecognition

    \u2440-\u245F
    EnclosedAlphanumerics
    帶括號(hào)的字母數(shù)字
    \u2460-\u24FF
    BoxDrawing
    制表符
    \u2500-\u257F
    BlockElements
    方塊圖形
    \u2580-\u259F
    GeometricShapes
    幾何圖形
    \u25A0-\u25FF
    MiscellaneousSymbols
    零雜丁貝符(示意符等)
    \u2600-\u26FF
    Dingbats

    \u2700-\u27BF
    BraillePatterns

    \u2800-\u28FF
    CJKRadicalsSupplement

    \u2E80-\u2EFF
    KangxiRadicals

    \u2F00-\u2FDF
    IdeographicDescriptionCharacters

    \u2FF0-\u2FFF
    CJKSymbolsandPunctuation
    CJK符號(hào)和標(biāo)點(diǎn)
    \u3000-\u303F
    Hiragana
    平假名
    \u3040-\u309F
    Katakana
    片假名
    \u30A0-\u30FF
    Bopomofo
    注音
    \u3100-\u312F
    HangulCompatibilityJamo

    \u3130-\u318F
    Kanbun

    \u3190-\u319F
    BopomofoExtended
    擴(kuò)展注音
    \u31A0-\u31BF
    EnclosedCJKLettersandMonths
    帶括號(hào)的CJK字母及月份
    \u3200-\u32FF
    CJKCompatibility
    CJK兼容字符
    \u3300-\u33FF
    CJKUnifiedIdeographsExtensionA
    CJK統(tǒng)一漢字?jǐn)U展-A
    \u3400-\u4dBF
    CJKUnifiedIdeographs
    CJK統(tǒng)一漢字
    \u4E00-\u9fAF
    YiSyllables

    \uA000-\uA48F
    YiRadicals

    \uA490-\uA4CF
    HangulSyllables

    \uAC00-\uD7A3
    HighSurrogates

    \uD800-\uDB7F
    HighPrivateUseSurrogates

    \uDB80-\uDBFF
    LowSurrogates

    \uDC00-\uDFFF
    PrivateUse
    專用區(qū)
    \uE000-\uF8FF
    CJKCompatibilityIdeographs
    CJK兼容漢字
    \uF900-\uFAFF
    AlphabeticPresentationForms

    \uFB00-\uFB4F
    ArabicPresentationForms-A

    \uFB50-\uFDFF
    CombiningHalfMarks

    \uFE20-\uFE2F
    CJKCompatibilityForms
    CJK兼容形式
    \uFE30-\uFE4F
    SmallFormVariants
    小寫(xiě)變體
    \uFE50-\uFE6F
    ArabicPresentationForms-Bound

    \uFE70-\ufeFF
    Specials

    \uFFF0-\uFFFF
    HalfwidthandFullwidthForms
    半形及全形字符
    \uFF00-\uFFEF


    分類
    全稱
    說(shuō)明
    Cn

    UNASSIGNED
    Lu

    UPPERCASE_LETTER
    Ll

    LOWERCASE_LETTER
    Lt

    TITLECASE_LETTER
    Lm

    MODIFIER_LETTER
    Lo

    OTHER_LETTER
    Mn

    NON_SPACING_MARK
    Me

    ENCLOSING_MARK
    Mc

    COMBINING_SPACING_MARK
    Nd

    DECIMAL_DIGIT_NUMBER
    Nl

    LETTER_NUMBER
    No

    OTHER_NUMBER
    Zs

    SPACE_SEPARATOR
    Zl

    LINE_SEPARATOR
    Zp

    PARAGRAPH_SEPARATOR
    Cc

    CNTRL
    Cf

    FORMAT
    Co

    PRIVATE_USE
    Cs

    SURROGATE
    Pd

    DASH_PUNCTUATION
    Ps

    START_PUNCTUATION
    Pe

    END_PUNCTUATION
    Pc

    CONNECTOR_PUNCTUATION
    Po

    OTHER_PUNCTUATION
    Sm

    MATH_SYMBOL
    Sc

    CURRENCY_SYMBOL
    Sk

    MODIFIER_SYMBOL
    So

    OTHER_SYMBOL
    L

    LETTER
    M

    MARK
    N

    NUMBER
    Z

    SEPARATOR
    C

    CONTROL
    P

    PUNCTUATION
    S

    SYMBOL
    LD

    LETTER_OR_DIGIT
    L1

    Latin-1
    all

    ALL
    ASCII

    ASCII
    Alnum

    字母數(shù)字(0-9,a-z,A-Z)
    Alpha

    字母(a-z,A-Z)
    Blank

    空格和制表符(' '|\t)
    Cntrl

    控制字符,不可打印
    Digit

    數(shù)字(0-9)
    Graph

    可打印且可視字母(例如空格' '是可打印的但不是可視字母,而 `a' 兩者都是。)
    Lower

    小寫(xiě)字母
    Print

    可打印字母(非控制字符)
    Punct

    標(biāo)符號(hào)(字母、數(shù)字、控制、空白符以外的字母),如:!@#$%}{<>,./?[]等等。
    Space

    空白符(' ',\t,0x09,0x0A,0x0B,0x0C,0x0D,0x20)
    Upper

    大寫(xiě)字母
    XDigit

    十六進(jìn)制數(shù)字(0-9,a-f, A-F)





    替換表達(dá)式

    特殊字符
    特殊字符介紹
    描述
    \n
    換行
    \b
    向前刪除一個(gè)字符。當(dāng)這個(gè)字符位于替換串之首時(shí),將刪除匹配串之前的一個(gè)字符。若匹配串位于行首,將使匹配串所在行與前一行相合并。
    \d
    向后刪除一個(gè)字符。當(dāng)這個(gè)字符位于替換串之末時(shí),將刪除匹配串之后的一個(gè)字符。若匹配串位于行末,將使匹配串所在行與下一行相合并。
    \e
    插入一個(gè)ESC字符
    \t
    插入一個(gè)TAB字符
    \n
    n代表查找正則表達(dá)式中的子表達(dá)式(組)。\1代表第一個(gè)子表達(dá)式,\2代表第二個(gè)子表達(dá)式,依次類推。\0代表整個(gè)匹配到的字符串。
    \v
    大寫(xiě)下一個(gè)字母
    \U
    全部大寫(xiě)以后的字母,直到碰到其它指示符為止。
    \l
    小寫(xiě)下一個(gè)字母
    \L
    全部小寫(xiě)以后的字母,直到碰到其它指示符為止。
    \E
    取消所有的字母大小寫(xiě)指示符。


    自定義替換表

    在查找/替換中使用自定義替換表
    有的時(shí)候,上述簡(jiǎn)單的自定義替換功能是不夠的。例如,用戶可能希望只把出現(xiàn)在括號(hào)內(nèi)的源串替換為目標(biāo)串。這種文本處理可以通過(guò)在查找/替換中使用自定義替換表來(lái)解決。

    在查找/替換功能中使用自定義替換表的替換函數(shù)是\Tn,其中n是0-9的數(shù)字, 注意n為0表示第10張?zhí)鎿Q表。如果略去n,其效果相當(dāng)于\T1,即使用第一張?zhí)鎿Q表。例如要把所有放在方括號(hào)中的漢字替換為拼音,可以查找“\[(\E)\]”,替換為“\T{\1}”。即把第一個(gè)子表達(dá)式的匹配內(nèi)容按自定義替換表轉(zhuǎn)換。注意,如果\T函數(shù)的參數(shù)不在替換表的源串中,\T函數(shù)的結(jié)果與源串相同,即不做任何變換。

    有些情況下,用戶可能希望只使用替換表的一部分內(nèi)容。還是以拼音為例,前面給出的替換表中包含了拼音的音調(diào),如果在替換時(shí)不希望加上這些音調(diào)數(shù)字,可以使用“過(guò)濾”功能。所謂過(guò)濾,其實(shí)是用一個(gè)正則表達(dá)式去分析替換表的目標(biāo)串,并把其中的某個(gè)子表達(dá)式取出來(lái)。

    使用“過(guò)濾”時(shí),在“設(shè)置自定義替換表”對(duì)話框中,點(diǎn)“過(guò)濾”按鈕,在彈出的對(duì)話框中填入一個(gè)正則表達(dá)式。再以拼音為例,表達(dá)式可以寫(xiě)為“(\p{Alpha}+)(\d)”,其中第一對(duì)括號(hào)中的是不含音調(diào)的拼音,第二對(duì)括號(hào)是音調(diào)。在調(diào)用\T函數(shù)時(shí),JTextPro會(huì)在目標(biāo)串中查找這個(gè)正則表達(dá)式。但是如何把其中的子表達(dá)式取出來(lái)呢?\T函數(shù)還有一個(gè)可選的下標(biāo),取第n個(gè)子表達(dá)式的值就寫(xiě)作\T{...}[n]。所以,把放在方括號(hào)中的漢字替換為不帶調(diào)的拼音,可以查找“\[(\E)\]”,替換為“\T{\1}[1]”

    posted @ 2005-12-12 13:38 kelven 閱讀(992) | 評(píng)論 (0)編輯 收藏
    我收集的Eclipse插件

    Poperties Editor
     
    http://propedit.sourceforge.jp/eclipse/updates/

    eclipseME
     
    http://eclipseme.org/updates/

    Eclipse加速插件KeepResident
    http://suif.stanford.edu/pub/keepresident/

     
    MyEclipse  J2EE開(kāi)發(fā)插件,支持SERVLET/JSP/EJB/數(shù)據(jù)庫(kù)操縱等
    www.myeclipseide.com
     
    Properties Editor  編輯java的屬性文件,并可以自動(dòng)存盤(pán)為Unicode格式
    http://propedit.sourceforge.jp/index_en.html
    http://propedit.sourceforge.jp/eclipse/updates/
     
    Colorer Take  為上百種類型的文件按語(yǔ)法著色
    http://colorer.sourceforge.net/
     
    XMLBuddy 編輯xml文件
    www.xmlbuddy.com
     
    Code Folding  加入多種代碼折疊功能(比eclipse自帶的更多)
    http://www.coffee-bytes.com/servlet/PlatformSupport
     
    Easy Explorer  從eclipse中訪問(wèn)選定文件、目錄所在的文件夾
    http://easystruts.sourceforge.net/
     
    Fat Jar 打包插件,可以方便的完成各種打包任務(wù),可以包含外部的包等
    http://fjep.sourceforge.net/
     
    RegEx Test 測(cè)試正則表達(dá)式
    http://brosinski.com/stephan/archives/000028.php
     
    JasperAssistant 報(bào)表插件(強(qiáng),要錢的)
    http://www.jasperassistant.com/
     
    Jigloo GUI Builder JAVA的GUI編輯插件
    http://cloudgarden.com/jigloo/
     
    Profiler 性能跟蹤、測(cè)量工具,能跟蹤、測(cè)量BS程序
    http://sourceforge.net/projects/eclipsecolorer/
     
    AdvanQas 提供對(duì)if/else等條件語(yǔ)句的提示和快捷幫助(自動(dòng)更改結(jié)構(gòu)等)
    http://eclipsecolorer.sourceforge.net/advanqas/index.html
     
    Log4E     Log4j插件,提供各種和Log4j相關(guān)的任務(wù),如為方法、類添加一個(gè)logger等
    http://log4e.jayefem.de/index.php/Main_Page
     
    VSSPlugin VSS插件
    http://sourceforge.net/projects/vssplugin
     
    Implementors   提供跳轉(zhuǎn)到一個(gè)方法的實(shí)現(xiàn)類,而不是接中的功能(實(shí)用!)
    http://eclipse-tools.sourceforge.net/implementors/
     
    Call Hierarchy 顯示一個(gè)方法的調(diào)用層次(被哪些方法調(diào),調(diào)了哪些方法)
    http://eclipse-tools.sourceforge.net/call-hierarchy/index.html
     
    EclipseTidy 檢查和格式化HTML/XML文件
    http://eclipsetidy.sourceforge.net/
     
    Checkclipse 檢查代碼的風(fēng)格、寫(xiě)法是否符合規(guī)范
    http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm
     
    Hibernate Synchronizer Hibernate插件,自動(dòng)映射等
    http://www.binamics.com/hibernatesync/
     
    spring updatesite 插件
    http://springide.org/updatesite/

    VeloEclipse  Velocity插件
    http://propsorter.sourceforge.net/
     
    EditorList   方便的列出所有打開(kāi)的Editor
    http://editorlist.sourceforge.net/
     
    MemoryManager 內(nèi)存占用率的監(jiān)視
    http://cloudgarden.com/memorymanager/

    Eclipse的游戲插件
    http://eclipse-games.sourceforge.net/

    JBoss-IDE
    http://jboss.sourceforge.net/jbosside/updates/

    自動(dòng)反編譯class,安裝后要設(shè)定class文件缺省關(guān)聯(lián)到j(luò)ode
    http://www.technoetic.com/eclipse/update


    jigloo swing/sw設(shè)計(jì)工具,里面自帶的form/anchor布局很好用!
    http://cloudgarden.soft-gems.net/update-site/

    jinto的資源文件編輯工具,同時(shí)編輯多種語(yǔ)言,而且自動(dòng)轉(zhuǎn)換成iso8859-1編碼。很好用!
    http://www.guh-software.de/eclipse/

    posted @ 2005-12-12 13:30 kelven 閱讀(724) | 評(píng)論 (1)編輯 收藏
    主站蜘蛛池模板: 伊人久久五月丁香综合中文亚洲 | 四虎国产精品免费视| 亚洲福利一区二区精品秒拍| 亚洲免费观看视频| 亚洲熟伦熟女新五十路熟妇| 爱情岛论坛亚洲品质自拍视频网站| 毛片高清视频在线看免费观看| 亚洲免费在线视频播放| 丁香花免费高清视频完整版| 亚洲一卡2卡3卡4卡乱码 在线| 成年人网站在线免费观看| 亚洲欧洲无码一区二区三区| 免费v片在线观看| 国产97视频人人做人人爱免费| 夜夜春亚洲嫩草影院| 亚洲av最新在线网址| 人人玩人人添人人澡免费| 久久久久久a亚洲欧洲AV| 久久精品国产亚洲av品善| 国产乱子伦精品免费无码专区| 精品国产亚洲第一区二区三区| 亚洲人成网站18禁止一区| 中文字幕av无码不卡免费| 久久久久亚洲AV无码麻豆| 99在线精品视频观看免费| 亚洲国产精华液2020| ZZIJZZIJ亚洲日本少妇JIZJIZ| 日本亚洲欧洲免费天堂午夜看片女人员| 亚洲成在人天堂一区二区| 歪歪漫画在线观看官网免费阅读| 亚洲va中文字幕| 亚洲精品无码专区在线在线播放| 999任你躁在线精品免费不卡| 久久精品国产亚洲av麻豆图片| 免费萌白酱国产一区二区| 中文字幕久精品免费视频| 亚洲入口无毒网址你懂的| 亚洲精品老司机在线观看| **aaaaa毛片免费| 美女视频黄.免费网址| 久久精品国产精品亚洲色婷婷 |