糊言亂語

          志未半斤, 才無八兩. 有苦有樂, 糊涂過活。
          posts - 25, comments - 7, trackbacks - 0, articles - 42
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          EJBCA是一個全功能的CA系統軟件,它基于J2EE技術,并提供了一個強大的、高性能并基于組件的CA。EJBCA兼具靈活性和平臺獨立性,能夠獨立使用,也能和任何J2EE應用程序集成。 

          所需軟件:

          1.jdk 1.5 下載地址:http://java.sun.com/

          2.jboss-4.2.0.GA 下載地址:http://www.jboss.com/

          3.jce_policy-1_5_0:下載地址:http://java.sun.com/

          4.apache-ant-1.7.0:http://ant.apache.org/

          5.oracle 10G:

          6.ojdbc14.jar:

          7.ejbca 3.4.5: 下載地址:http://ejbca.sourceforge.net

          安裝步驟:

          1.安裝jdk,jboss,ant,oracle,并把jce,jdbc解壓分別解壓到%JAVA_HOME%\jre\lib\security\與%JBOSS_HOME%\server\default\lib\。

          2.設置環境變量,我的配置為:

          ANT_HOME=C:\tool\ejbca\apache-ant-1.7.0-bin\apache-ant-1.7.0
          EJBCA_HOME=C:\tool\ejbca\ejbca_3_5_2\ejbca_3_5_2
          JBOSS_HOME=C:\tool\ejbca\jboss-4.2.0.GA\jboss-4.2.0.GA
          JAVA_HOME=C:\Program Files\Java\jdk1.6.0_03
          path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\tool\ejbca\apache-ant-1.7.0-bin\apache-ant-1.7.0\bin;C:\tool\ejbca\jboss-
          4.2.0.GA\jboss-4.2.0.GA\bin;C:\Program Files\Java\jdk1.6.0_03\bin
          classpath=C:\Program Files\Java\jdk1.6.0_03\lib\tools.jar

          3.在數據庫中創建表空間并添加用戶EJBCA,在ORACLE中的代碼為:

            創建表空間:

            CREATE TABLESPACE EJBCA DATAFILE 'EJBCA.dbf' SIZE 100m ;

            創建用戶:

          CREATE user EJBCA   identified by "EJBCA"   default tablespace USERS   temporary tablespace TEMP   profile DEFAULT;
          -- Grant/Revoke role privileges
          grant aq_administrator_role to EJBCA with admin option;
          grant dba to EJBCA with admin option;
          -- Grant/Revoke system privileges
          grant unlimited tablespace to EJBCA with admin option;

          4.刪除所有的ejbca\adminweb中的jsp(%EJBCA_HOME%\src\adminweb*.jsp)中的

          <%@ page pageEncoding="ISO-8859-1"%>

            以解決中文亂碼問題,下一步也是解決此類問題。 

          5.把%EJBCA_HOME%\conf\ejbca.properties.sample改名為ejbca.properties,并在ejbca.properties添加如下一行:

          web.contentencoding=GBK

          6.把%EJBCA_HOME%\conf\database.properties.sample改名為database.properties,并更改相應的數據庫配置。如下是我的配置:

          datasource.jndi-name=EjbcaDS
          datasource.jndi-name-prefix=java:/
          database.name=oracle
          datasource.mapping=Oracle9i
          database.url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
          database.driver=oracle.jdbc.driver.OracleDriver
          database.username=ejbca
          database.password=ejbca

            注:datasource.mapping需要選擇與oracle實際版本最接近的版本。 

          7.在%EJBCA_HOME%\bin中,通過cmd運行ant bootstrap。

          8.啟動jboss,在%JBOSS_HOME%\bin,通過cmd運行run。

          9.在%EJBCA_HOME%\bin中,通過cmd運行ant install。

          10.關閉jboss,并在在%EJBCA_HOME%\bin中,通過cmd運行ant deploy。

          11.再次啟動jboss,在%JBOSS_HOME%\bin,通過cmd運行run。

          13.導入在%EJBCA_HOME%\p12目錄中superadmin.p12,默認密碼為ejbca。

          注:在第7步時,如出現ANT失敗,可能是由于ejbca的版本問題,推薦使用ejbca3.4.5。

          訪問地址:http://localhost:8080/ejbca/

          posted @ 2007-12-03 16:33 Stanley Sun 閱讀(1610) | 評論 (0)編輯 收藏

          一般在有著1年半以上的程序員基本上都是知道這個厲害的東西的,它對字符串處理的能力可以說是生猛無比。雖然大家都在使用(有時候在開發的Code中,有時候是在我們自己心愛的Editor里),但是我相信大部分人對這里禽獸的了解程度只是停留在會用的層次上。下面我對它進行一下詳細的說明。

          正則表達式的“祖先”可以一直上溯至對人類神經系統如何工作的早期研究。Warren McCulloch 和 Walter Pitts 這兩位神經生理學家研究出一種數學方式來描述這些神經網絡。

          1956 年, 一位叫 Stephen Kleene 的美國數學家在 McCulloch 和 Pitts 早期工作的基礎上,發表了一篇標題為“神經網事件的表示法”的論文,引入了正則表達式的概念。正則表達式就是用來描述他稱為“正則集的代數”的表達式,因此采用“正則表達式”這個術語。

          隨后,發現可以將這一工作應用于使用Ken Thompson 的計算搜索算法的一些早期研究,Ken Thompson是Unix 的主要發明人。正則表達式的第一個實用應用程序就是 Unix 中的qed 編輯器。

          如他們所說,剩下的就是眾所周知的歷史了。從那時起直至現在正則表達式都是基于文本的編輯器和搜索工具中的一個重要部分。

          使用正則表達式
          在典型的搜索和替換操作中,必須提供要查找的確切文字。這種技術對于靜態文本中的簡單搜索和替換任務可能足夠了,但是由于它缺乏靈活性,因此在搜索動態文本時就有困難了,甚至是不可能的。

          使用正則表達式,就可以:

          測試字符串的某個模式。例如,可以對一個輸入字符串進行測試,看在該字符串是否存在一個電話號碼模式或一個信用卡號碼模式。這稱為數據有效性驗證。
          替換文本。可以在文檔中使用一個正則表達式來標識特定文字,然后可以全部將其刪除,或者替換為別的文字。
          根據模式匹配從字符串中提取一個子字符串。可以用來在文本或輸入字段中查找特定文字。
          例如,如果需要搜索整個 web 站點來刪除某些過時的材料并替換某些HTML 格式化標記,則可以使用正則表達式對每個文件進行測試,看在該文件中是否存在所要查找的材料或 HTML 格式化標記。用這個方法,就可以將受影響的文件范圍縮小到包含要刪除或更改的材料的那些文件。然后可以使用正則表達式來刪除過時的材料,最后,可以再次使用正則表達式來查找并替換那些需要替換的標記。

          許多種工具都支持正則表達式(文本編輯器、文字處理軟件、系統工具、數據庫引擎,等等),不過,要想充分挖掘正則表達式的能力,還是應當將它作為編程語言的一部分。例如Java、JScript、Visual Basic、VBScript、JavaScript、ECMAScript、C、C++、C#、elisp、Perl、Python、Tcl、Ruby、PHP、sed和awk。事實上,在一些用上述語言編寫的程序中,正則表達式扮演了極其重要的角色。
          正則表達式能夠得到眾多語言和工具的支持是有原因的:它們極其有用。從較低的層面上來說,正則表達式描述的是一串文本(a chunk of text)的特征。大家可以用它來驗證用戶輸入的數據,或者也可以用它來檢索大量的文本。從較高的層面上來說,正則表達式容許用戶掌控他們自己的數據——控制這些數據,讓它們為自己服務。掌握正則表達式,就是掌握自己的數據。

          可見它的重要性,難怪每款編輯器和編程語言不同程度的實現了它,使得普通用戶和開發人員受益不淺。

          posted @ 2007-11-07 23:02 Stanley Sun 閱讀(429) | 評論 (1)編輯 收藏

           

          treeview 

          在開發B/S程序時,我們經常會使用到一些頁面級的效果控件。比如:樹形目錄,ComboBox和一些其他的控件,由于這些控件的存在使得我們的程序異常的奪目。但是在開發這些控件的時候或多或少的都會比較麻煩。而大部分的程序員是使用發布的一些開源的JS控件來減輕工作量而且也使得自己的程序健壯。下面我介紹一個在開源社區中赫赫有名的樹形控件:TreeView。

          首先介紹一下TreeView,TreeView原名是FolderTree,是一款比較早就出世的樹形JS控件,當時是由個人開發的,之后由公司購買了。但是現在還可以免費使用。

          TreeView 有兩個JS文件和一些資源文件組成。兩個JS文件分別是:主要實現功能的ftiens4.js和實現多瀏覽器支持的ua.js文件。只有我們在開發的頁面中加入如上兩個文件的話就可以開發如上圖所顯示的樹形目錄了。代碼如下:

          <html>

          <head>

          <script type="text/javascript" src="../treeview/ftiens4.js" ></script>

          <script type="text/javascript" src="../treeview/ua.js" ></script>

          <script type="text/javascript">

          //TreeView 環境變量

          BUILDALL = 0 //創建所有的節點對象 0:延時創建 1:立即創建
          GLOBALTARGET = 'R' //節點觸發時的目標 'B':打開新窗口 'R':右邊的Frame 'S':當前Frame 'T':當前瀏覽器窗口
          HIGHLIGHT = 0 //高亮顯示當前選中的節點 0:不高亮顯示 1:高亮顯示
          HIGHLIGHT_BG = 'blue' //高亮顯示的背景顏色
          HIGHLIGHT_COLOR = 'white' //高亮顯示的顏色
          ICONPATH = '' //指定節點的顯示圖標,使用URL方式,而且必須用"/"結尾 如:http://www.x.com/y/
          PRESERVESTATE = 0 //保存TreeView的狀態到Cookie中,當再次顯示的時候會自動的回置狀態 0:不保存 1:保存
          STARTALLOPEN = 0 //默認打開所有節點 0:只打開根節點 1:打開所以節點
          USEFRAMES = 1 //頁面是否使用了Frame,注意:如果未使用Frame一定要設置此參數 0:未使用 1:使用了
          USEICONS = 1 //是否使用圖標 0:不顯示圖標 1:顯示圖標
          USETEXTLINKS = 0 //節點文字是否為鏈接 0:否 1:是
          WRAPTEXT = 0 //節點顯示超出一行時是否折行 0:不折行 1:折行

          foldersTree = gFld("test", "") //創建一個名為"test"的根節點
          foldersTree.treeID = "t1" //設置test節點的唯一編號為"t1"


          aux1 = insFld(foldersTree, gFld("Day of the week", "b.html")) //在根節點中加入一個名為"Day of the week"的子節點,當點擊的時候打開b.html
          aux1.addChildren([["1","1.html"],["2","2.html"],["3","3.html"],["4","4.html"],["5","5.html"]])  //在aux1節點中連續加入1,2,3,4,5節點,并相應的打開1.html,2.html,3.html,4.html,5.html.

          aux2 = insFld(foldersTree, gLnk("R","Day of the week2", "b.html")) //在根節點中加入名為"Day of the week2"的節點,當點擊的時候在右側的frame中打開b.html
          aux3 = insDoc(foldersTree, gLnk("R","<input type=\"checkbox\">Day of the week3", "c.html")) //在根節點中加入名為"Day of the week3"并帶有復選框的節點,當點擊的時候在右側的frame中打開c.html

          </script>

          </head>

          <body>

          <A style="font-size:7pt;text-decoration:none;color:silver" href=" target=_blank>Javascript Tree Menu</A>

          <script type="text/javascript">

                 initializeDocument();//構造TreeView

          </script>

          </body>

          </html>

          TreeView中主要的方法:

          gFld(Title, Link);//創建節點 例:gFld("Test A", "javascript:parent.op()")

          Argument

          Title
          Specifies the text that appears in the folder name. This text can include simple HTML tags, such as enclosing formatting tags (i, b, div, and so on). It can even include an img tag if you want to place a small icon in the node name, such as a "new!" icon for example.

          Link
          Specifies an optional URL. The URL can be a simple file name like demoFramesetRightFrame.html or a string with protocol, domain, path, and file name like
          http://www.treeview.net/treemenu/demopics/beenthere_europe.gif.

           

          gLnk(Target, Title, Link);//創建一個帶有鏈接的節點 例:gLnk("B", "My File", http://www.mysite.com/MyFile.doc)

          Argument

          Target
          Configures the target location for the link. Specify one of the following values:
          "R": Open the document in the right frame (a frame named basefrm)
          "B": Open the document in a new window
          "T": Open the document in the current browser window, replacing the frameset if one exists
          "S": Open the document in the current frame, replacing the tree
          Note: This argument is case sensitive; make sure to use uppercase letters.

          Title
          Specifies the text that appears in the link. This text can include simple HTML tags, such as enclosing formatting tags (i, b, div, and so on). It can even include an img tag if you want to place a small icon in the node name, such as a "new!" icon for example.

          Link
          Specifies the URL of the document. This can be an absolute URL or a relative URL. Do not enter any other information in this string; adding a target parameter or an event handler will not work.

           

          insFld(Parent Folder, Child Folder); //在父節點中插入一個子節點 例:aux1 = insFld(foldersTree, gFld("Europe", "http..."))

          Argument

          Parent Folder
          Specifies the parent folder. That is, this argument specifies the folder node in which you want to place the other folder node.

          Child Folder
          Specifies the child folder. That is, this argument specifies the folder node that you want to place under the parent folder node.

           

          insDoc(Parent Folder, Document Node); //在節點中加入一個Dom對象 例:insDoc(aux2, gLnk("S", "Boston", "..."))

          Argument

          Parent Folder
          Specifies the parent folder. That is, this argument specifies the folder node in which you want to place the document node.

          Document Node
          Specifies the document node. That is, this argument specifies the document node that you want to place in the parent folder node

           

          更多的參考信息到 http://www.treeview.net/tv/instructions.asp

          posted @ 2007-11-07 17:59 Stanley Sun 閱讀(7508) | 評論 (2)編輯 收藏

              在一年以前一個客戶給我推薦一款文件管理軟件,名叫Total Commander,以下簡稱totalcmd,據說在歐美國家相當的流行。當時給這個客戶開發程序是需要打開很多個資源管理器,在這么多的管理器中相互的拷貝文件真是一件非常頭疼的事情。借助totalcmd可以非常好的完成文件的管理,拷貝、刪除,新建,乃至服務的管理等等。值得一提的就是totalcmd可以通過注入插件實現totalcmd本身不可以完成的功能,這也是它很大的一個亮點。

          在使用的一年多的totalcmd后,也有了一些自己的使用習慣和獨愛的插件,我將羅列如下:
          使用習慣:
          1.把F2快捷鍵指定到cm_RenameOnly命令上。
          2.把Ctrl+G快捷鍵指定到cm_FocusCmdLine命令上。
          3.在開始菜單下建立一個功能,實現cm_SwitchHidSys功能,可以顯示隱藏/系統文件。
          4.指定totalcmd只能運行一個實例。
          5.最小化到系統托盤里。
          6.編輯時默認打開的編輯器為ChoiceEditor。這個插件很難找。
          7.把快速查找定義為Letters with search dialog
          8.當改變驅動盤符的時候直接定位的驅動的根目錄下

          獨愛插件:
          1.Choice Editor:默認編輯選擇器。
          2.File Redirector:臨時目錄,這個插件非常有用,強烈推薦。不過安裝的時候需要下載一個msvcr70.dll的文件放到你的c:\windows\system32目錄下。文件的下載地址:http://www.dll-files.com/dllindex/dll-files.shtml?msvcr70
          3.UnInstTC:集成在totalcmd中添加/刪除程序,支持搜索。
          4.Office:可以通過Ctrl+Q快速查看Office系列軟件格式。

          注:本人只是一個totalcmd的愛好者,而不是在此為他去大廣告。

          posted @ 2007-10-31 11:07 Stanley Sun 閱讀(670) | 評論 (0)編輯 收藏

           



                  AutoSuggest是通過AJAX技術實現的一種類似于ComboBox之類的輸入框,當輸入一些提示字符后,AS會自動的把輸入框中的Value通過AJAX發送到Server中,Server自定義的解析發送的數據,然后把返回數據通過XMLJSON方式返回到AS中。AS再根據Server返回的標準格式的數據構建出提示候選框,當用鼠標或鍵盤選中候選項后填充到輸入框中。在寫這篇手冊的時候,AutoSuggest的最新版本是autosuggest_v2.1.3。基本的運行原理如上。

          AutoSuggest的主要的物理文件有:bsn.AutoSuggest_2.1.3.jsautosuggest_inquisitor.css。其他的還有一些圖片資源文件,一個測試html與一個test.php的服務器段頁面。結構如下:
              

          │ .DS_Store

          │ ._.DS_Store

          │ ._bsn.AutoSuggest_2.
          1.3.html

          │ ._test.php

          │ bsn.AutoSuggest_2.
          1.3.html

          │ test.php



          ├─css

          │ │ .DS_Store

          │ │ ._.DS_Store

          │ │ autosuggest_inquisitor.css

          │ │

          │ └─img_inquisitor

          │      │ .DS_Store

          │      │ ._.DS_Store

          │      │ ._as_pointer.gif

          │      │ ._hl_corner_bl.gif

          │      │ ._hl_corner_br.gif

          │      │ ._hl_corner_tl.gif

          │      │ ._hl_corner_tr.gif

          │      │ ._ul_corner_bl.gif

          │      │ ._ul_corner_br.gif

          │      │ ._ul_corner_tl.gif

          │      │ ._ul_corner_tr.gif

          │      │ as_pointer.gif

          │      │ hl_corner_bl.gif

          │      │ hl_corner_br.gif

          │      │ hl_corner_tl.gif

          │      │ hl_corner_tr.gif

          │      │ ul_corner_bl.gif

          │      │ ul_corner_br.gif

          │      │ ul_corner_tl.gif

          │      │ ul_corner_tr.gif

          │      │

          │      └─_source

          │              .DS_Store

          │              ._.DS_Store

          │              ._as_pointer.png

          │              ._li_corner.png

          │              ._ul_corner.png

          │              as_pointer.png

          │              li_corner.png

          │              ul_corner.png



          └─js

                 .DS_Store

                 ._.DS_Store

                 ._bsn.AutoSuggest_2.
          1.3.js

                 bsn.AutoSuggest_2.
          1.3.js

                 bsn.AutoSuggest_2.
          1.3_comp.js


          AutoSuggest是一組JavaScript類庫,其中主要的對象就是bsn.AutoSggest對象,基本的功能都是在這個對象中完成的。首先我們構建一個簡單的示例:
              

          var options_xml = {

                                          script:
          function(input){return"suggestAction!userName.action?signer="+input; }//(1).帶有傳送數據的請求路徑,其中input是輸入框的value。

                                          varname:
          "input"//(2).儲存輸入框value的變量名

                                          delay:
          800//(3).發送請求的延時時間

                                          cache:
          false//(4).是否緩存

                                          noresults:
          "無符合的記錄!",//(5).當沒有符合的查詢結果時的提示信息

                                          timeout:
          10000,//(6).候選框停留時間

                                          callback: 
          function(record){ document.getElementById("temp").value = record.value; } //(7).選擇候選項后的回調函數

          }
          ;

          var as_xml = new bsn.AutoSuggest('signer', options_xml); //(8).創建autosuggest對象,并綁定一個輸入框




          通過這樣簡單的方式我們就可以完成在頁面中的autosuggest編碼了。其中的參數表可以看下表:

          Property

          Type

          Default

          Description

          script

          String / Function

          -

          REQUIRED!
          Either: A string containing the path to the script that returns the results in XML format. (eg, "myscript.php?")
          Or: A function that accepts on attribute, the autosuggest field input as a string, and returns the path to the result script.

          varname

          String

          "input"

          Name of variable passed to script holding current input.

          minchars

          Integer

          1

          Length of input required before AutoSuggest is triggered.

          className

          String

          "autosuggest"

          Value of the class name attribute added to the generated ul.

          delay

          Integer

          500

          Number of milliseconds before an AutoSuggest AJAX request is fired.

          timeout

          Integer

          2500

          Number of milliseconds before an AutoSuggest list closes itself.

          cache

          Boolean

          true

          Whether or not a results list should be cached during typing.

          offsety

          Integer

          -5

          Vertical pixel offset from the text field.

          shownoresults

          Boolean

          true

          Whether to display a message when no results are returned.

          noresults

          String

          No results!

          No results message.

          callback

          Function

          A function taking one argument: an object

          {id:"1", value:"Foobar", info:"Cheshire"}

          json

          Boolean

          false

          Whether or not a results are returned in JSON format. If not, script assumes results are in XML.

          maxentries

          Integer

          25

          The maximum number of entries being returned by the script. (Should correspond to the LIMIT clause in the SQL query.)

          之后我們只要在我的服務器中解析傳入的signer參數返回,如下格式的xml就可以了。當然也可以用JSON方式,不過我在這里就不在演示了。
              

          <results>

                                          
          <rs id="1" info="">Foobar</rs>

                                          
          <rs id="2" info="">Foobarfly</rs>

                                          
          <rs id="3" info="">Foobarnacle</rs>

          </results>


          AutoSuggest是比較方便的一種實現類Google Suggest的解決方式,提供的js文件也是比較精巧的,并提供的一個壓縮后的js腳本文件只有8.33 KB大小。如果要查看其代碼可以找到一個沒有壓縮的原始版本的源代碼,其中的代碼也是比較容易閱讀,更改起來也是比較簡單的。我會在以后寫一篇《AutoSuggest代碼解析》。

          更多信息可查閱 http://www.brandspankingnew.net/archive/2007/02/ajax_auto_suggest_v2.html

          posted @ 2007-10-19 18:17 Stanley Sun 閱讀(2535) | 評論 (2)編輯 收藏

          僅列出標題
          共5頁: 上一頁 1 2 3 4 5 下一頁 
          主站蜘蛛池模板: 塔河县| 吉首市| 威信县| 托克逊县| 易门县| 泽州县| 五台县| 洪洞县| 广灵县| 张家港市| 汉中市| 清涧县| 马关县| 潼南县| 台北市| 元谋县| 沙洋县| 临漳县| 天峻县| 滨海县| 抚松县| 博罗县| 垦利县| 台中县| 永新县| 平果县| 安徽省| 合山市| 宁城县| 溧水县| 永平县| 桃园县| 景谷| 和政县| 绥德县| 玉林市| 建水县| 理塘县| 天门市| 武汉市| 葫芦岛市|