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

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

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

    konhon

    忘掉過去,展望未來。找回自我,超越自我。
    逃避不一定躲的過, 面對(duì)不一定最難過, 孤單不一定不快樂, 得到不一定能長(zhǎng)久, 失去不一定不再擁有, 可能因?yàn)槟硞€(gè)理由而傷心難過, 但我卻能找個(gè)理由讓自己快樂.

    Google

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks

    #

    連接oracle數(shù)據(jù)庫的各種oracle jdbc驅(qū)動(dòng)程序的細(xì)節(jié)。
    這些細(xì)節(jié)包括:
    1、導(dǎo)入jdbc包
    2、注冊(cè)oracle jdbc驅(qū)動(dòng)程序
    3、打開數(shù)據(jù)庫連接
    4、執(zhí)行sql dml語句在數(shù)據(jù)庫表中獲取、添加、修改和刪除行

    一、jdbc驅(qū)動(dòng)程序
    共有有4種
    1、thin驅(qū)動(dòng)程序
    thin驅(qū)動(dòng)程序是所有驅(qū)動(dòng)程序中資源消耗最小的,而且完全用java編寫的。
    該驅(qū)動(dòng)程序只使用tcp/ip且要求oracle net。被稱為第4類驅(qū)動(dòng)程序。
    它使用ttc協(xié)議與oracle數(shù)據(jù)庫進(jìn)行通信。能夠在applet、application中使用。
    2、oci驅(qū)動(dòng)程序
    oci驅(qū)動(dòng)比thin需要資源要多,但性能通常好一點(diǎn)。oci驅(qū)動(dòng)適合于部署在
    中間層的軟件,如web服務(wù)器。不能在applet中使用oci驅(qū)動(dòng)。是第2類驅(qū)動(dòng)程序。
    不完全用java寫的,還包含了c代碼。該驅(qū)動(dòng)有許多附加的性能增強(qiáng)特性,
    包括高級(jí)的連接緩沖功能。
    注意:oci驅(qū)動(dòng)要求在客戶計(jì)算機(jī)上安裝它。
    3、服務(wù)器內(nèi)部驅(qū)動(dòng)程序
    服務(wù)器內(nèi)部驅(qū)動(dòng)程序提供對(duì)數(shù)據(jù)庫的直接訪問,oracle jvm使用它與數(shù)據(jù)庫進(jìn)行通信。
    oracle jvm是與數(shù)據(jù)庫集成的java virtual machine,可以使用oracle jvm將
    java類裝載進(jìn)數(shù)據(jù)庫,然后公布和運(yùn)行這個(gè)類中包含的方法。
    4、服務(wù)器thin驅(qū)動(dòng)程序
    服務(wù)器端thin驅(qū)動(dòng)程序也是由oracle jvm使用的,它提供對(duì)遠(yuǎn)程數(shù)據(jù)庫的訪問。
    也是完全用java編寫的。


    二、導(dǎo)入jdbc包
    三、注冊(cè)oracle jdbc驅(qū)動(dòng)程序
    必須先向java程序注冊(cè)oracle jdbc驅(qū)動(dòng)程序,然后才能打開數(shù)據(jù)庫連接。
    有兩種注冊(cè)oracle jdbc驅(qū)動(dòng)程序的辦法。
    1、使用java.lang.class的forname()方法
    例子:class.forname(oracle.jdbc.oracledriver);
    2、使用jdbc drivermanager類的registerdriver()方法。
    例子:drivermanager.registerdriver(new oracle.jdbc.oracledriver());
    如果使用oracle8i jdbc驅(qū)動(dòng)程序,那么需要導(dǎo)入oracle.jdbc.driver.oracledriver類,
    然后注冊(cè)這個(gè)類的實(shí)例。
    例子:
    import oracle.jdbc.driver.oracledriver;
    drivermanager.registerdriver(new oracle.jdbc.oracledriver());
    注意:從jdbc2.0開始,只用jdbc驅(qū)動(dòng)程序的更標(biāo)準(zhǔn)辦法是通過數(shù)據(jù)源。
    四、打開數(shù)據(jù)庫連接
    必須先打開數(shù)據(jù)庫連接,然后才能在java程序中執(zhí)行sql語句。打開數(shù)據(jù)庫連接
    的主要辦法。
    1、drivermanager類的getconnection()方法。
    drivermanager.getconnection(url,username,passwrod);
    url:程序要連接的數(shù)據(jù)庫,以及要使用的jdbc驅(qū)動(dòng)程序
    url的結(jié)構(gòu)依賴于jdbc驅(qū)動(dòng)程序的生產(chǎn)商。對(duì)于oracle jdbc驅(qū)動(dòng)程序,數(shù)據(jù)庫url的結(jié)構(gòu):

    driver_name是程序使用的oracle jdbc驅(qū)動(dòng)程序的名稱。如:
    jdbc:oracle:thin oracle jdbc thin驅(qū)動(dòng)程序
    jdbc:oracle:oci oracle jdbc oci驅(qū)動(dòng)程序
    jdbc:oracle:oci8 oracle jdbc oci驅(qū)動(dòng)程序
    driver_information是連接數(shù)據(jù)庫所需的驅(qū)動(dòng)程序特有的信息。這依賴于使用的驅(qū)動(dòng)程序。
    對(duì)于oracle jdbc thin驅(qū)動(dòng)程序,可以用
    host_name:port:database_sid 或者 oracle net關(guān)鍵字-值對(duì)
    (description=(address=(host=host_name)(protocol=tcp)(port=port()
    (connect_data=(sid=database_sid)))
    host_name: 運(yùn)行數(shù)據(jù)庫的機(jī)器的名稱
    port: net數(shù)據(jù)庫監(jiān)聽器等待這個(gè)端口上的請(qǐng)求,默認(rèn)是1521
    database_sid: 要連接的數(shù)據(jù)庫實(shí)例的oracle sid。
    username: 程序連接數(shù)據(jù)庫時(shí)使用的數(shù)據(jù)庫用戶名
    passwrod: 用戶名的口令
    例子:
    connection myconnection=drivermanager.getconnection(
    jdbc:oracle:thin:@localhost:1521:orcl,
    store_user,
    store_password);
    connection myconnection=drivermanager.getconnection(
    jdbc:oracle:oci:@(description=(address=(host=localhost)
    (protocol=tcp)(port=1521))(connect_data=(sid=orcl))),
    store_user,
    store_password);
    2、使用oracle數(shù)據(jù)源對(duì)象,必須先創(chuàng)建這個(gè)對(duì)象,然后連接它。使用這種方法
    采用了一種設(shè)置數(shù)據(jù)庫連接信息的標(biāo)準(zhǔn)化方式,oracle數(shù)據(jù)源對(duì)象可以與
    java naming and directory interface(java名字與目錄接口,jndi)一起使用。

    posted @ 2006-03-21 07:18 konhon 優(yōu)華 閱讀(931) | 評(píng)論 (0)編輯 收藏

    需要在你的web.xml中定義如下:

    ??? <servlet>
    ??????? <servlet-name>jsp</servlet-name>
    ??????? <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    ??????? <init-param>
    ??????????? <param-name>fork</param-name>
    ??????????? <param-value>false</param-value>
    ??????? </init-param>
    ??????? <init-param>
    ??????????? <param-name>xpoweredBy</param-name>
    ??????????? <param-value>false</param-value>
    ??????? </init-param>
    ??????? <load-on-startup>3</load-on-startup>
    ??? </servlet>

    ??? <servlet-mapping>
    ??????? <servlet-name>jsp</servlet-name>
    ??????? <url-pattern>*.jsm</url-pattern>
    ??? </servlet-mapping>

    posted @ 2006-03-21 05:37 konhon 優(yōu)華 閱讀(644) | 評(píng)論 (0)編輯 收藏

    我的主頁在自設(shè)的目錄里如??e:/mysite/??
    我想用tomcat作為服務(wù)器??
    鍵入http://127.0.0.1就顯示我在??e:/mysite/??下的index.jsp文件??
    而不是諸如??http://127.0.0.1/site/??
    請(qǐng)問如何設(shè)置??
    ---------------------------------------------------------------??
    ?
    分2步:??
    ???1??把你的tomcat端口改為80??
    ???2。把你的文件放到webapps目錄下的ROOT目錄下,最好先把原來的文件備份一下,再刪除??
    ?????????或者做個(gè)在tomcat上做虛擬主機(jī),目錄就可以隨便設(shè)??
    ---------------------------------------------------------------??
    ?
    修改??
    tomcat_home/conf/server.xml??
    ?
    將??
    <Connector??className="org.apache.coyote.tomcat4.CoyoteConnector"??port="8080"??minProcessors="5"??maxProcessors="75"??enableLookups="true"??redirectPort="8443"??acceptCount="100"??debug="0"??connectionTimeout="20000"??useURIValidationHack="false"??disableUploadTimeout="true"/>??
    ?
    這裡面的8080改成80??
    ?
    ?
    添加??
    <Context??path=""??docBase="e:/mysite/"??
    ???????????????debug="0"??privileged="true">??
    </Context>到??
    </host>??
    之前。??
    posted @ 2006-03-20 22:42 konhon 優(yōu)華 閱讀(686) | 評(píng)論 (0)編輯 收藏

    /**
     * By metaphy 2005-11-12
     * Version: 0.01
     * 注:題目答案來源于metaphy過去的知識(shí)或網(wǎng)絡(luò),metaphy不能保證其正確或完整性,僅供參考
    **/

    一、基礎(chǔ)問答

      1.下面哪些類可以被繼承?

       java.lang.Thread (T)
       java.lang.Number (T)
       java.lang.Double (F)
       java.lang.Math  (F)
       java.lang.Void  (F)
       java.lang.Class  (F)
       java.lang.ClassLoader (T)

      2.抽象類和接口的區(qū)別

      (1)接口可以被多重implements,抽象類只能被單一extends
      (2)接口只有定義,抽象類可以有定義和實(shí)現(xiàn)
      (3)接口的字段定義默認(rèn)為:public static final, 抽象類字段默認(rèn)是"friendly"(本包可見)

      3.Hashtable的原理,并說出HashMap與Hashtable的區(qū)別

      HashTable的原理:通過節(jié)點(diǎn)的關(guān)鍵碼確定節(jié)點(diǎn)的存儲(chǔ)位置,即給定節(jié)點(diǎn)的關(guān)鍵碼k,通過一定的函數(shù)關(guān)系H(散列函數(shù)),得到函數(shù)值H(k),將此值解釋為該節(jié)點(diǎn)的存儲(chǔ)地址.
    HashMap 與Hashtable很相似,但HashMap 是非同步(unsynchronizded)和可以以null為關(guān)鍵碼的.

      4.forward和redirect的區(qū)別

      forward: an internal transfer in servlet
      redirect: 重定向,有2次request,第2次request將丟失第一次的attributs/parameters等

      5.什么是Web容器?

      實(shí)現(xiàn)J2EE規(guī)范中web協(xié)議的應(yīng)用.該協(xié)議定義了web程序的運(yùn)行時(shí)環(huán)境,包括:并發(fā)性,安全性,生命周期管理等等.

      6.解釋下面關(guān)于J2EE的名詞

      (1)JNDI:Java Naming & Directory Interface,JAVA命名目錄服務(wù).主要提供的功能是:提供一個(gè)目錄系統(tǒng),讓其它各地的應(yīng)用程序在其上面留下自己的索引,從而滿足快速查找和定位分布式應(yīng)用程序的功能.
      (2)JMS:Java Message Service,JAVA消息服務(wù).主要實(shí)現(xiàn)各個(gè)應(yīng)用程序之間的通訊.包括點(diǎn)對(duì)點(diǎn)和廣播.
      (3)JTA:Java Transaction API,JAVA事務(wù)服務(wù).提供各種分布式事務(wù)服務(wù).應(yīng)用程序只需調(diào)用其提供的接口即可.
      (4)JAF: Java Action FrameWork,JAVA安全認(rèn)證框架.提供一些安全控制方面的框架.讓開發(fā)者通過各種部署和自定義實(shí)現(xiàn)自己的個(gè)性安全控制策略.
      (5)RMI:Remote Method Interface,遠(yuǎn)程方法調(diào)用

      7.EJB是基于哪些技術(shù)實(shí)現(xiàn)的?并說 出SessionBean和EntityBean的區(qū)別,StatefulBean和StatelessBean的區(qū)別.

      EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技術(shù)實(shí)現(xiàn).

      SessionBean在J2EE應(yīng)用程序中被用來完成一些服務(wù)器端的業(yè)務(wù)操作,例如訪問數(shù)據(jù)庫、調(diào)用其他EJB組件.EntityBean被用來代表應(yīng)用系統(tǒng)中用到的數(shù)據(jù).對(duì)于客戶機(jī),SessionBean是一種非持久性對(duì)象,它實(shí)現(xiàn)某些在服務(wù)器上運(yùn)行的業(yè)務(wù)邏輯;EntityBean是一種持久性對(duì)象,它代表一個(gè)存儲(chǔ)在持久性存儲(chǔ)器中的實(shí)體的對(duì)象視圖,或是一個(gè)由現(xiàn)有企業(yè)應(yīng)用程序?qū)崿F(xiàn)的實(shí)體.

      Session Bean 還可以再細(xì)分為 Stateful Session Bean 與 Stateless Session Bean .這兩種的 Session Bean都可以將系統(tǒng)邏輯放在 method之中執(zhí)行,不同的是 Stateful Session Bean 可以記錄呼叫者的狀態(tài),因此通常來說,一個(gè)使用者會(huì)有一個(gè)相對(duì)應(yīng)的 Stateful Session Bean 的實(shí)體.Stateless Session Bean 雖然也是邏輯組件,但是他卻不負(fù)責(zé)記錄使用者狀態(tài),也就是說當(dāng)使用者呼叫 Stateless Session Bean 的時(shí)候,EJB Container 并不會(huì)找尋特定的 Stateless Session Bean 的實(shí)體來執(zhí)行這個(gè) method.換言之,很可能數(shù)個(gè)使用者在執(zhí)行某個(gè) Stateless Session Bean 的 methods 時(shí),會(huì)是同一個(gè) Bean 的 Instance 在執(zhí)行.從內(nèi)存方面來看, Stateful Session Bean 與 Stateless Session Bean 比較, Stateful Session Bean 會(huì)消耗 J2EE Server 較多的內(nèi)存,然而 Stateful Session Bean 的優(yōu)勢(shì)卻在于他可以維持使用者的狀態(tài).

      8.XML的解析方法

      Sax,DOM,JDOM

      9.什么是Web Service?

      Web Service就是為了使原來各孤立的站點(diǎn)之間的信息能夠相互通信、共享而提出的一種接口。
    Web Service所使用的是Internet上統(tǒng)一、開放的標(biāo)準(zhǔn),如HTTP、XML、SOAP(簡(jiǎn)單對(duì)象訪問協(xié)議)、WSDL等,所以Web Service可以在任何支持這些標(biāo)準(zhǔn)的環(huán)境(Windows,Linux)中使用。

      注:SOAP協(xié)議(Simple Object Access Protocal,簡(jiǎn)單對(duì)象訪問協(xié)議),它是一個(gè)用于分散和分布式環(huán)境下網(wǎng)絡(luò)信息交換的基于XML的通訊協(xié)議。在此協(xié)議下,軟件組件或應(yīng)用程序能夠通過標(biāo)準(zhǔn)的HTTP協(xié)議進(jìn)行通訊。它的設(shè)計(jì)目標(biāo)就是簡(jiǎn)單性和擴(kuò)展性,這有助于大量異構(gòu)程序和平臺(tái)之間的互操作性,從而使存在的應(yīng)用程序能夠被廣泛的用戶訪問。

      優(yōu)勢(shì):

      (1).跨平臺(tái)。
      (2).SOAP協(xié)議是基于XML和HTTP這些業(yè)界的標(biāo)準(zhǔn)的,得到了所有的重要公司的支持。
      (3).由于使用了SOAP,數(shù)據(jù)是以ASCII文本的方式而非二進(jìn)制傳輸,調(diào)試很方便;并且由于這樣,它的數(shù)據(jù)容易通過防火墻,不需要防火墻為了程序而單獨(dú)開一個(gè)“漏洞”。
      (4).此外,WebService實(shí)現(xiàn)的技術(shù)難度要比CORBA和DCOM小得多。
      (5).要實(shí)現(xiàn)B2B集成,EDI比較完善與比較復(fù)雜;而用WebService則可以低成本的實(shí)現(xiàn),小公司也可以用上。
      (6).在C/S的程序中,WebService可以實(shí)現(xiàn)網(wǎng)頁無整體刷新的與服務(wù)器打交道并取數(shù)。

      缺點(diǎn):

      (1).WebService使用了XML對(duì)數(shù)據(jù)封裝,會(huì)造成大量的數(shù)據(jù)要在網(wǎng)絡(luò)中傳輸。
      (2).WebService規(guī)范沒有規(guī)定任何與實(shí)現(xiàn)相關(guān)的細(xì)節(jié),包括對(duì)象模型、編程語言,這一點(diǎn),它不如CORBA。

      10.多線程有幾種實(shí)現(xiàn)方法,都是什么?同步有幾種實(shí)現(xiàn)方法,都是什么?

      答:多線程有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口
      同步的實(shí)現(xiàn)方面有兩種,分別是synchronized,wait與notify

      11.JSP中動(dòng)態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?

      動(dòng)態(tài)INCLUDE用jsp:include動(dòng)作實(shí)現(xiàn)

    <jsp:include page="included.jsp" flush="true"/>

      它總是會(huì)檢查所含文件中的變化,適合用于包含動(dòng)態(tài)頁面,并且可以帶參數(shù)

      靜態(tài)INCLUDE用include偽碼實(shí)現(xiàn),定不會(huì)檢查所含文件的變化,適用于包含靜態(tài)頁面

      <%@ include file="included.htm" %>

    posted @ 2006-03-13 19:35 konhon 優(yōu)華 閱讀(2207) | 評(píng)論 (0)編輯 收藏

    本文示范了如何用一個(gè)Java Servlet、一個(gè)JSP頁面和一個(gè)靜態(tài)Java類構(gòu)造出一個(gè)SQL網(wǎng)關(guān)應(yīng)用。利用這個(gè)應(yīng)用,你可以直接在瀏覽器內(nèi)執(zhí)行SQL命令,瀏覽器將把SQL命令提交給遠(yuǎn)程服務(wù)器上的數(shù)據(jù)庫系統(tǒng),然后返回結(jié)果。

      如果你正在使用ISP(Internet Service Provider)提供的數(shù)據(jù)庫,可能已經(jīng)熟悉SQL網(wǎng)關(guān)應(yīng)用的概念了。有的ISP會(huì)提供一個(gè)操作數(shù)據(jù)庫的HTML頁面,就象本文提供的網(wǎng)關(guān)應(yīng)用一樣。如果ISP沒有提供這樣的界面,你可以把本文的程序上載到服務(wù)器,以后要訪問ISP服務(wù)器上的數(shù)據(jù)庫就很方便了。

      SQL網(wǎng)關(guān)應(yīng)用不僅可以用于開發(fā)過程,而且還可以直接提供給比較熟悉系統(tǒng)的最終用戶使用。當(dāng)然,允許最終用戶直接在數(shù)據(jù)庫上運(yùn)行SQL命令會(huì)帶來一些安全隱患,應(yīng)當(dāng)慎重考慮。

      本文要求讀者具備一定的Java、Servlet、JSP和數(shù)據(jù)庫的基礎(chǔ)知識(shí),如果要運(yùn)行本文的程序,還要有一個(gè)Servlet/JSP服務(wù)器和數(shù)據(jù)庫服務(wù)器。在下面的說明中,我們要使用的是Tomcat 4.0和MySQL,但它應(yīng)該也能在其他JSP/Servlet容器中運(yùn)行;如果你要改用MySQL之外的其他數(shù)據(jù)庫,只要提供一個(gè)適當(dāng)?shù)尿?qū)動(dòng)程序,然后修改數(shù)據(jù)庫連接字符串就可以了。

      一、用戶界面

      圖1就是本文SQL網(wǎng)關(guān)的用戶界面。在這個(gè)界面中,SQL網(wǎng)關(guān)已經(jīng)執(zhí)行了一條SQL命令并返回了結(jié)果。



    圖1:SQL網(wǎng)關(guān)的用戶界面


      從圖1可以看出,頁面底部的一條信息顯示出最近執(zhí)行的SQL命令影響的行數(shù)。如果SQL命令是一個(gè)SELECT語句,當(dāng)SELECT語句執(zhí)行成功,頁面底部將用HTML表格顯示出查詢結(jié)果,如圖二所示。



    圖2:HTML表格顯示出查詢結(jié)果集


      當(dāng)然,如果SQL命令執(zhí)行失敗,SQL網(wǎng)關(guān)將返回異常信息。

      二、設(shè)計(jì)JSP頁面

      在JSP頁面中,我們首先放入一個(gè)Scriptlet,它的功能是從session對(duì)象提取兩個(gè)屬性:

    <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
    <% 
       String sqlStatement=(String)session.getAttribute("sqlStatement");
       if (sqlStatement == null)    sqlStatement = "";
       String message =  (String) session.getAttribute("message");
       if (message == null)  message = "";
    %>


      第一個(gè)屬性sqlStatement 表示SQL命令字符串,第二個(gè)屬性message 是包含結(jié)果信息的字符串。如果這兩個(gè)屬性的值是null,則表示它們尚未被設(shè)置,我們把sqlStatement和message變量設(shè)置成空字符串。

      JSP頁面還有一個(gè)HTML表單,HTML表單包含一個(gè)文本區(qū)域(TEXTAREA)和一個(gè)“執(zhí)行”按鈕。

    <form action="../servlet/test.SQLGatewayServlet" method="post">
    <b>SQL命令:</b><br>
    <textarea name="sqlStatement" cols=60 rows=8>
    <%=sqlStatement%></textarea><br>
    <br>
    <input type="submit" value="執(zhí)行">
    </form>


      表單中的文本區(qū)域用來輸入SQL命令。我們將sqlStatement變量的值作為文本區(qū)域的默認(rèn)內(nèi)容,文本區(qū)域的大小是寬60字符、高8行。當(dāng)JSP頁面第一次運(yùn)行時(shí),這個(gè)文本區(qū)域的內(nèi)容為空。如果用戶點(diǎn)擊文本區(qū)域下面的“執(zhí)行”按鈕,JSP頁面把表單內(nèi)容提交給SQLGatewayServlet(稍后再詳細(xì)介紹)。

      JSP頁面底部的表格顯示出message字符串的內(nèi)容。如前所述,message的內(nèi)容是運(yùn)行SQL命令的結(jié)果。

    <b>SQL命令執(zhí)行結(jié)果:</b><br>
    <table cellpadding="5" border="1">
    <%=message%>
    </table>


      三、編寫Servlet

      SQLGatewayServlet首先導(dǎo)入java.sql包以便使用JDBC類。另外,它還要聲明一個(gè)Connection對(duì)象,以便Servlet之內(nèi)的所有方法都可以使用數(shù)據(jù)庫連接。

    package test;
    
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.sql.*;
    
    public class SQLGatewayServlet extends HttpServlet{
    
        private Connection connection;


      當(dāng)Servlet引擎開始運(yùn)行這個(gè)Servlet,Servlet的init方法就打開一個(gè)數(shù)據(jù)庫連接:

    public void init() throws ServletException{
        try{
            Class.forName("org.gjt.mm.mysql.Driver");
            String dbURL = "jdbc:mysql://localhost/murach";
            String username = "root";
            String password = "";
            connection = DriverManager.getConnection
    	(dbURL, username, password);
        }
        catch(ClassNotFoundException e){
            System.out.println("找不到數(shù)據(jù)庫驅(qū)動(dòng)程序.");
        }
        catch(SQLException e){
            System.out.println("不能打開數(shù)據(jù)庫連接: "
                               + e.getMessage());
        }
    }


      在這個(gè)例子中,Servlet利用一個(gè)MysQL數(shù)據(jù)庫的驅(qū)動(dòng)程序打開murach數(shù)據(jù)庫的連接,數(shù)據(jù)庫和Servlet運(yùn)行在同一個(gè)服務(wù)器上。此外,Servlet使用MySQL的默認(rèn)用戶名字root,密碼為空。不過,你可以修改這里的代碼,只要有適當(dāng)?shù)尿?qū)動(dòng)程序,就可以讓Servlet連接到任何服務(wù)器上的任何數(shù)據(jù)庫(有關(guān)MySQL數(shù)據(jù)庫的更多信息,請(qǐng)參見www.mysql.com)。

      Servlet引擎關(guān)閉Servlet之前,調(diào)用destroy方法關(guān)閉數(shù)據(jù)庫連接,釋放連接資源:

    public void destroy() {
        try{
            connection.close();
        }
        catch(SQLException e){
            System.out.println("不能關(guān)閉數(shù)據(jù)庫連接: " + e.getMessage());
        }
    }


      前面介紹的JSP頁面要調(diào)用Servlet的doPost方法,doPost方法調(diào)用doGet方法:

    public void doPost(HttpServletRequest request,
                       HttpServletResponse response)
                       throws IOException, ServletException{
         doGet(request, response);
     }


      在doGet方法之中,第一個(gè)語句首先獲取用戶在JSP頁面中輸入的SQL命令,第二個(gè)語句聲明message變量:

    public void doGet(HttpServletRequest request,
                       HttpServletResponse response)
                       throws IOException, ServletException{
    
         String sqlStatement = request.getParameter("sqlStatement");
         String message = "";


      然后,在try塊之內(nèi),第一個(gè)語句利用Connection對(duì)象創(chuàng)建Statement對(duì)象,接下來的兩個(gè)語句利用String對(duì)象的trim方法和substring方法返回用戶輸入的SQL命令的前六個(gè)字符。

    try{
         Statement statement = connection.createStatement();
         sqlStatement = sqlStatement.trim();
         String sqlType = sqlStatement.substring(0, 6);


      如果SQL命令的前六個(gè)字符是“select”,則利用Statement的executeQuery方法執(zhí)行SQL語句,獲得一個(gè)ResultSet對(duì)象,把這個(gè)對(duì)象傳遞給SQLUtil類(稍后詳細(xì)說明)的getHtmlRows方法,getHtmlRows方法將把記錄集中的記錄格式化成HTML表格并返回。

    if  (sqlType.equalsIgnoreCase("select")){
         ResultSet resultSet = statement.executeQuery(sqlStatement);
         // 構(gòu)造一個(gè)String,其中包含HTML表格形式的結(jié)果集數(shù)據(jù)
         message = SQLUtil.getHtmlRows(resultSet);
     }


      如果SQL語句的前六個(gè)字符不是“select”,則我們調(diào)用Statement對(duì)象的executeUpdate方法,executeUpdate方法返回當(dāng)前操作影響的行數(shù)——如果這個(gè)數(shù)字是0,則該SQL命令是一個(gè)DDL命令,例如DROP TABLE或CREATE TABLE等;否則,則表明SQL命令可能是DML命令,如INSERT、UPDATE或DELETE命令。無論是哪一種SQL命令,我們都把message變量設(shè)置成相應(yīng)的消息。

    else
         {
             int i = statement.executeUpdate(sqlStatement);
             if (i == 0) // 這是一個(gè)DDL命令
               message =
                 "<tr><td>" +
                   "命令執(zhí)行成功." +
                 "</td></tr>";
             else // 這是一個(gè)INSERT、UPDATE或DELETE命令
                 message =
                   "<tr><td>" +
                     "SQL命令執(zhí)行成功。<br>" +
                     "已更改" + i + " 行。" +
                    "</td></tr>";
         }
         statement.close();
     }


      如果try塊里面的任何一個(gè)語句拋出一個(gè)SQLException,catch塊就設(shè)置message變量,使其包含有關(guān)該SQLException的信息。例如,如果在表單中輸入的SQL命令語法錯(cuò)誤,下面設(shè)置的message變量值將幫助你排解錯(cuò)誤。

    catch(SQLException e){
        message = "<tr><td>執(zhí)行SQL命令時(shí)遇到錯(cuò)誤:<br>"
                + e.getMessage() + "</tr></td>";
    }


      在catch塊之后,接下來的三個(gè)語句獲得session對(duì)象,把sqlStatement和message變量設(shè)置為session的屬性:

    HttpSession session = request.getSession();
     session.setAttribute("message", message);
     session.setAttribute("sqlStatement", sqlStatement);


      接下來,最后兩個(gè)語句創(chuàng)建一個(gè)RequestDispatcher,并轉(zhuǎn)發(fā)request和response對(duì)象給前文介紹的JSP頁面:

    RequestDispatcher dispatcher =
         getServletContext().getRequestDispatcher(
             "/sql/sql_gateway.jsp");
     dispatcher.forward(request, response);


      四、編寫工具類

      下面來看看工具類SQLUtil的代碼:

    package test;
    import java.sql.*;
    public class SQLUtil{


      SQLUtil類包含一個(gè)getHtmlRows靜態(tài)方法,前面的Servlet正是通過調(diào)用該方法將結(jié)果集格式化成HTML表格。getHtmlRows的輸入?yún)?shù)是一個(gè)ResultSet對(duì)象,其返回值是一個(gè)String對(duì)象,這個(gè)String對(duì)象的內(nèi)容是記錄集的所有列表題和行的HTML代碼。為了構(gòu)造出這樣一個(gè)String對(duì)象,getHtmlRows聲明了一個(gè)名為htmlRows的StringBuffer對(duì)象,然后在方法執(zhí)行過程中向這個(gè)StringBuffer對(duì)象追加數(shù)據(jù)。在getHtmlRows方法的末尾,我們用toString方法將StringBuffer的內(nèi)容轉(zhuǎn)換成String,最后將這個(gè)String返回給Servlet:

    public static synchronized String getHtmlRows(ResultSet results)
    throws SQLException{
        StringBuffer htmlRows = new StringBuffer();
        ResultSetMetaData metaData = results.getMetaData();
        int columnCount = metaData.getColumnCount();
        // 將記錄集中列的名稱作為HTML表格列的標(biāo)題
        htmlRows.append("<tr>");
        for (int i = 1; i <= columnCount; i++)
            htmlRows.append("<td><b>" + metaData.getColumnName(i) + "</td>");
        htmlRows.append("</tr>");
        // 對(duì)于結(jié)果集中的每一行...
        while (results.next()){
            htmlRows.append("<tr>");
            // 將該行中的每一個(gè)列轉(zhuǎn)換成一個(gè)表格單元
            for (int i = 1; i <= columnCount; i++)
                htmlRows.append("<td>" + results.getString(i) + "</td>");
        }
        htmlRows.append("</tr>");
        return htmlRows.toString();
    }


      為了獲得記錄集對(duì)象的列標(biāo)題,getHtmlRows方法利用ResultSet的getMetaData方法來創(chuàng)建一個(gè)ResultSetMetaData對(duì)象,ResultSetMetaData對(duì)象包含了有關(guān)記錄集的描述信息,例如列的數(shù)量、列的名稱可以分別調(diào)用ResultSetMetaData的getColumnCount和getColumnName方法獲得。

      為了提取記錄集的數(shù)據(jù),getHtmlRows方法利用一個(gè)嵌套的循環(huán),即while循環(huán)里面嵌套的for循環(huán),來提取每一個(gè)行里面每一個(gè)列的值。在循環(huán)之內(nèi),我們用記錄集的getString方法來獲取各個(gè)字段的值,不管字段值原來的類型是什么,getString方法都會(huì)將它轉(zhuǎn)換成String。

      請(qǐng)注意這個(gè)方法的聲明中帶有synchronized關(guān)鍵詞,這是為了避免兩個(gè)或兩個(gè)以上的Servlet線程同時(shí)執(zhí)行該方法。
    posted @ 2006-03-13 02:30 konhon 優(yōu)華 閱讀(634) | 評(píng)論 (0)編輯 收藏

    實(shí)現(xiàn)論壇樹型結(jié)構(gòu)的算法很多,我現(xiàn)在的JSP論壇采用的也是當(dāng)中的一種:不用遞歸實(shí)現(xiàn)樹型結(jié)構(gòu)的算法,現(xiàn)在我將論壇樹型結(jié)構(gòu)的具體算法和大家介紹一下,和大家一起交流。

     

    1、演示表的結(jié)構(gòu):

       表名:mybbslist
       字段     數(shù)據(jù)類型  說明
       BBSID    自動(dòng)編號(hào)  
       RootID    Int     根帖ID,本身為根帖則RootID = ID
       FID     Int     父帖ID,上一層帖子的ID,如是根帖則FID = 0
       DEPTH    Int     根帖Level=0,其他依據(jù)回復(fù)的深度遞增
       BBSSubject  Char    主題


    2。創(chuàng)建表:


    create table mybbslist (
     forumID int(20) not null,
     bbsID int auto_increment primary key,
     rootid int(20) not null,
     fid int(20) not null,
     depth int(20) not null,
     userID int(20) not null,
     bbsUser varchar(24) not null,
     bbsSubject varchar(100) not null,
     bbsContent text,
     bbsTime varchar(30),
     bbsRead int(20),
     bbsReply int(20),
    INDEX forumID (forumID)) 

    3、連接MYSQL數(shù)據(jù)庫的BEAN


    package netzero;
    import java.sql.*;
    public class mydb
    {
    String driverName = "org.gjt.mm.mysql.Driver";
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    String connURL= "jdbc:mysql://localhost/mybbs?user=root&password=how&useUnicode=true&characterEncode=8859_1";
    //String connURL= "jdbc:mysql://localhost/netzerobbs?user=root&password=how";
    public mydb()
    {
    try
    {
    Class.forName(driverName);
    }
    catch (java.lang.ClassNotFoundException e)
    {
    System.err.println("netzero(String): " + e.getMessage());
    }
    }


    public ResultSet executeQuery(String sql) throws SQLException
    {
    conn = DriverManager.getConnection(connURL);
    stmt = conn.createStatement();
    rs = stmt.executeQuery(sql);
    return rs;
    }


    public boolean closeConn()
    {
    try
    {
    if (rs!=null) rs.close();
    if (stmt!=null) stmt.close();
    if (conn!=null) conn.close();
    return true;
    }
    catch ( SQLException ex )
    {
    System.err.println("closeConn: " + ex.getMessage());
    return false;
    }
    }


    }
     

    4、顯示論壇的JSP程序


    <jsp:useBean id="mybbs" scope="session" class="netzero.mydb" />
    <%@ page contentType="text/html;charset=gb2312" %>
    <%@ page import="java.io.*" %>
    <%@ page import="java.sql.*" %>
    <%
    int intRowCount;
    out.print("顯示論壇樹形結(jié)構(gòu)");
    out.print("<br><br>");
    try {
    String sql="select * from mybbslist order by rootid desc,depth,fid,bbsid";
    ResultSet rs = mybbs.executeQuery(sql);
    if (rs.next())
    {
    rs.last();
    intRowCount=rs.getRow();
    out.print("論壇樹中有");
    out.print(intRowCount);
    out.print("個(gè)葉子節(jié)點(diǎn)");
    rs.first();
    int j=0;
    int Depth = 0;
    out.print("<ul>");
    while(j<intRowCount)
    {
    int rsDepth=rs.getInt("Depth");
    if (rsDepth<Depth)
    {
    for(int i=1;i<Depth+1;i=i+1)
    {
    out.print("</ul>");
    }
    }
    rsDepth=rs.getInt("Depth");
    if (rsDepth>Depth)
    {
    out.print("<ul>");
    }
    out.print("<li>");


    String bbssubject=rs.getString("bbssubject");
    out.print(bbssubject);
    out.print("</li>");
    Depth = rs.getInt("Depth");
    j=j+1;
    rs.next();
    }
    out.print("</ul>");
    }
    else
    {
    out.print("數(shù)據(jù)庫中無記錄");
    }
    }catch (SQLException E) {
    out.println("SQLException: " + E.getMessage());
    out.println("SQLState: " + E.getSQLState());
    out.println("VendorError: " + E.getErrorCode());
    }
    %>
    <% //關(guān)閉mysql連接
    try {
    if(!mybbs.closeConn());
    } catch (Exception ex) {
    System.err.println("closeConn: " + ex.getMessage());
    }
    %>
     

    posted @ 2006-03-13 02:26 konhon 優(yōu)華 閱讀(377) | 評(píng)論 (0)編輯 收藏

    Imaging_ToWeb.jsp

    <%@ page autoFlush="false"  import="java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.*"%>
    <%
        String ImageStr = request.getParameter("ID_Text");
        if(ImageStr==null || ImageStr.equals(""))
        {
            response.setContentType("text/html; charset=gb2312");
     %>
    <HTML>
     <HEAD>
      <title>Http://www.lionsky.net</title>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
     </HEAD>
     <body>
      <form id="Form1" method="post">
        <input type="text" id="ID_Text" name=ID_Text>
        <input type=submit value="GO">
      </form>
     </body>
    </HTML>

    <%
           }
           else
           {
            out.clear();
            response.setContentType("image/jpeg");
            response.addHeader("pragma","NO-cache");
            response.addHeader("Cache-Control","no-cache");
            response.addDateHeader("Expries",0);
            int width=300, height=100;
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            Graphics g = image.getGraphics();
            //以下填充背景顏色
            g.setColor(Color.lightGray);
            g.fillRect(0, 0, width, height);
            String random="random";
            //以下設(shè)置前景色
            g.setColor(Color.BLACK);
            g.drawString("Http://www.knowsky.com",10,20);
            g.drawString("Author:Lion[lion-a@sohu.com]",10,40);
            g.drawLine(10,50,290,50);
            g.drawString(ImageStr,10,70);
            g.dispose();
            ServletOutputStream outStream = response.getOutputStream();
            JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(outStream);
            encoder.encode(image);
            outStream.close();
        }

    %>

    posted @ 2006-03-13 02:23 konhon 優(yōu)華 閱讀(355) | 評(píng)論 (0)編輯 收藏

    import java.io.File;
    import java.awt.image.BufferedImage;
    import java.awt.Image;
    import java.awt.image.AffineTransformOp;
    import javax.imageio.ImageIO;
    import java.awt.geom.AffineTransform;

    public class UploadImg {
        
        String fromdir;            
    // fromdir 圖片的原始目錄
        String todir;            // todir 處理后的圖片存放目錄
        String imgfile;            // imgfile 原始圖片
        String sysimgfile;        // sysimgfile 處理后的圖片文件名前綴

        UploadImg( String fromdirNow, String todirNow, String imgfileNow, String sysimgfileNow )
    {
            fromdir 
    = fromdirNow;
            todir 
    = todirNow;
            imgfile 
    = imgfileNow;
            sysimgfile 
    = sysimgfileNow;
        }


        
    public boolean CreateThumbnail() throws Exception
            
    {
            
    // fileExtNmae是圖片的格式 gif JPG 或png
            
    // String fileExtNmae="";
            double Ratio = 0.0;
            File F 
    = new File(fromdir,imgfile);
            
    if ( !F.isFile() )
                
    throw new Exception(F+" is not image file error in CreateThumbnail!");
            
            
    //首先判斷上傳的圖片是gif還是JPG ImageIO只能將gif轉(zhuǎn)換為png
            
    // if (isJpg(imgfile)){
            
    //    fileExtNmae="jpg";
            
    //    }
            
    //else{
            
    //    fileExtNmae="png"; 
            
    //    }
            File ThF = new File( todir, sysimgfile + ".jpg" );
            
            BufferedImage Bi 
    = ImageIO.read(F);
            
    //假設(shè)圖片寬 高 最大為120 120
            Image Itemp = Bi.getScaledInstance (120,120,Bi.SCALE_SMOOTH);
            
            
    if ((Bi.getHeight()>120|| (Bi.getWidth()>120)){
                
    if (Bi.getHeight()>Bi.getWidth())
                    Ratio 
    = 120.0/Bi.getHeight();
                
    else
                    Ratio 
    = 120.0/Bi.getWidth();
                }

            
            AffineTransformOp op 
    = new AffineTransformOp(AffineTransform.getScaleInstance(Ratio, Ratio), null);
            Itemp 
    = op.filter(Bi, null);
            
    try {
                ImageIO.write((BufferedImage)Itemp, 
    "jpg", ThF);
                }

            
    catch (Exception ex) {
                
    throw new Exception(" ImageIo.write error in CreatThum.: "+ex.getMessage()); 
                }

            
    return (true);
        }


        
    public static void main(String[] args) 
        
    {
            UploadImg UI;
            
    boolean ss = false;

            
    try{
                UI 
    = new UploadImg( "d:\\javalearn""d:\\javalearn""ps_high.jpg""ps_low" );
                ss 
    = UI.CreateThumbnail();
                
    if ( ss ) {
                    System.out.println( 
    "Success" );
                    }

                
    else{
                    System.out.println( 
    "Error" );
                    }

            }

            
    catch(Exception e){
                System.out.print(e.toString());
            }

        }

    }
     
    posted @ 2006-03-13 01:29 konhon 優(yōu)華 閱讀(381) | 評(píng)論 (0)編輯 收藏

    一個(gè)優(yōu)秀的程序員必須熟悉自己使用的編輯器,以前UNIX程序員十分熟悉VI,后來的Linux促進(jìn)了Emacs的發(fā)展,這兩種編輯器都是不需要鼠標(biāo)的支持,而鼠標(biāo)的出現(xiàn)很大程度上影響了編輯的速度,很多在window下寫程序的程序員更慢了,因?yàn)楦嗟囊蕾囀髽?biāo),來回的切換鼠標(biāo)與鍵盤浪費(fèi)了許多時(shí)間。
    以下是我使用JBuilder的一種模式,希望大家能夠給我提出一些其他更好的模式和方便的快捷鍵。

    首先我選擇在Preferences里設(shè)置KeyMapping為Emacs,因?yàn)镋macs有更多方便的功能。我們一般使用CUA,最常用的就是CTRL+C功能了,但是我們有理由舍棄它。


    首先說編輯Java最常用的快捷鍵,這幾個(gè)在幾種Keymapping下是一樣的。
    Ctrl+h : member-insight,就是我們輸了一半代碼時(shí),敲這個(gè),編輯器生成提示,也可以在“.”號(hào)之后用,然后選擇回車。這時(shí)候如果選擇了Emacs我們就可以用更方便的上下選擇,而不用去找上下鍵。在Emacs里向下是Ctrl+n,向上時(shí)Ctrl+p,n代表Next,P代表Previos。在出現(xiàn)member-insight,這兩個(gè)快捷鍵還好用,大大方便了輸入。
    Ctrl+j :expand-template,我們寫程序經(jīng)常要寫System.out.println("");,在Jbuilder里我們只需要這樣輸入Ctrl+j out,然后回車,還有許多其他的,包括main就寫Ctrl+j main,這兩個(gè)個(gè)快捷鍵在兩種模式下都可用,在選擇的時(shí)候也可以用上面說的快捷鍵上下選擇。在Preferences->template中我們還可以訂制自己的模版,比如寫一段常用版權(quán)聲明,然后賦一個(gè)值.
    Ctrl+Shift+j:enter-sync-edit-mode,選中一段代碼,然后按下這個(gè)鍵,就進(jìn)入了sync-edit-mode,這時(shí)對(duì)這段代碼的一個(gè)變量的更改,所有這段代碼對(duì)應(yīng)的部分都會(huì)改變,很有用,這樣不會(huì)因?yàn)樽龅膩y了,漏了改變某個(gè)變量名.
    Ctrl+Enter:find-definition,Ctrl+Shift+Enter:find-references,對(duì)于第一個(gè),如果光標(biāo)在變量上,這樣按會(huì)跑到變量生命的地方,如果是方法且有源代碼會(huì)跑到方法定義處,若是類且有源代碼則跑到類定義處.第二個(gè)類似,他是找引用的地方。這兩個(gè)的好處很明顯,尤其面對(duì)一個(gè)不熟悉的系統(tǒng)時(shí),只有這樣去查看代碼。
    Ctrl+Shift+space.光標(biāo)移到方法的括號(hào)里,然后輸入,這時(shí)會(huì)顯示參數(shù)的提示。
    有一個(gè)功能通常很有用,就是注釋掉一段代碼,在CUA里才有,是Ctrl+/,由于Emacs里有別的用處,所以默認(rèn)的沒有設(shè)置,所以我通常在設(shè)置里改為Ctrl+Shife+/。


    以上是最常用的了,然后是emacs特有的內(nèi)容。
    移動(dòng)光標(biāo)。上面已經(jīng)提到了幾個(gè),還有以下很有用。
    Ctrl+b 后退光標(biāo)
    Ctrl+f 前進(jìn)光標(biāo)
    Ctrl+v 下一屏
    Alt+v 上一屏
    Ctrl+e 一行的結(jié)尾
    Ctrl+a 一行的開頭
    Alt+m 一行第一個(gè)非空格字符之前。
    Ctrl+x g 移到指定行。
    相信有了這些鍵之后,手就不很需要移到END,HOME和鼠標(biāo)上了。

    還有是拷貝粘貼,畢竟Ctrl+c,Ctrl+v,Ctrl+x用的太多了,不用總是覺得麻煩,所以我定義了這幾個(gè),只是加上了Shift。Emacs本身也有很多類似的功能。
    Ctrl+k:剪切一行,Ctrl+y:粘貼回來,而且如果你用了多次Ctrl+k,點(diǎn)Ctrl+y之后可以再選Alt+y,這樣可以把以前剪切的內(nèi)容粘貼回來。
    結(jié)合這兩種模式的拷貝粘貼,可以實(shí)現(xiàn)更加靈活的編輯。

    再就是查詢,先按Ctrl+s,然后輸入查詢內(nèi)容,你會(huì)發(fā)現(xiàn)這是增量查詢,你可以馬上看到結(jié)果。再按Ctrl+s,可以找下一個(gè),Ctrl+r可以找前一個(gè),如果不輸入內(nèi)容,輸入兩遍Ctrl+s,會(huì)查找上一詞的內(nèi)容.


    其他的還有的比較需要,像Ctrl+z沒有了,要用Ctrl+shift+-。保存要Ctrl+x Ctrl+s,注意,是分別按,按Ctrl+x之后Jbulider左下角會(huì)顯示,然后再按后一個(gè)。Ctrl+x 1,Ctrl+x 2,Ctrl+x 3,看看是干什么的。還有一個(gè)就是Ctrl+x Ctrl+u這樣可以將選中的代碼全部轉(zhuǎn)化為大寫。

    常用就這些了,還有很多記不住了,看JBuilder設(shè)置就知道了。希望大家不要怕麻煩練習(xí)一下,以后就會(huì)發(fā)現(xiàn)提高效率很高,說不定以后用Emacs會(huì)更快上手。
    posted @ 2006-03-09 01:36 konhon 優(yōu)華 閱讀(329) | 評(píng)論 (0)編輯 收藏


      先介紹零三年之前的組織。
      安全焦點(diǎn)
      http://www.xfocus.net/
      1999年8月26日由xundi創(chuàng)立,創(chuàng)始人還有quack和casper。后來stardust,isno,glacier,alert7,benjurry,blackhole,eyas,flashsky,funnywei,refdom,tombkeeper,watercloud,wollf等人也加入了近來。站點(diǎn)主頁風(fēng)格一向是很簡(jiǎn)單。而該組織目前已經(jīng)成為國(guó)內(nèi)最權(quán)威的信息安全站點(diǎn),也是最接近世界的一個(gè)國(guó)內(nèi)組織。
      目前國(guó)內(nèi)一些技術(shù)性比較強(qiáng)的文章都由作者親自提交到該網(wǎng)站,而國(guó)內(nèi)一些知名的技術(shù)屬一屬二的高手都會(huì)去這里的論壇。討論技術(shù)的氛圍還可以。而且一些網(wǎng)絡(luò)安全公司也關(guān)注這里的論壇。現(xiàn)在流行的著名掃描工具x-scan的作者就是該組織的成員。
      從2002年開始,每年都舉辦一次信息安全峰會(huì),吸引了國(guó)內(nèi)外眾多知名網(wǎng)絡(luò)安全專家關(guān)注參加。會(huì)議涉及眾多領(lǐng)域,備受關(guān)注。創(chuàng)造了良好的學(xué)術(shù)交流氛圍。在此祝愿這個(gè)組織越走越好。
      
      中國(guó)紅客聯(lián)盟(以解散)
      http://www.cnhonker.com/
      借這個(gè)機(jī)會(huì)要說明一下,只有這個(gè)紅客聯(lián)盟才配的上是真正的紅客聯(lián)盟,并不是因?yàn)樗暾?qǐng)了什么專利,而是在大家的眼中,只有他才只真正的紅客聯(lián)盟。
      這個(gè)組織是由lion在2000年12月組建的。曾再2001年帶領(lǐng)眾多會(huì)員參與中美黑客大戰(zhàn),而名震“江湖”。不過這個(gè)時(shí)代早已逝去,激情的往事也跟著逝去,留給人們的只有回憶。在2005年的最后一天,lion在主頁上宣布正式解散?;蛟S很多人難以理解吧。不過這也自有人家的道理。現(xiàn)在外面有N個(gè)紅盟,我不屑于去關(guān)注他們。在此祝福lion,bkbll等人。對(duì)sharpwinner我就懶的說什么了。
      
      中國(guó)鷹派
      http://www.chinawill.com/
      與紅客聯(lián)盟一樣,都是2000年末創(chuàng)立,并且在2001年參與了中美黑客大戰(zhàn)。站長(zhǎng)萬濤也是早期的綠色兵團(tuán)成員。并且也參與了在2000年前的幾次網(wǎng)絡(luò)戰(zhàn)爭(zhēng)。至盡這個(gè)組織依然沒有倒下。近幾年中并沒有什么大的事件發(fā)生。所以很多人對(duì)他都已經(jīng)沒有了什么印象。希望他們?cè)阶咴胶谩?BR>  
      邪惡八進(jìn)制
      http://www.eviloctal.com/
      2002年由冰血封情創(chuàng)立,當(dāng)時(shí)是以小組模式運(yùn)營(yíng)的,而發(fā)展到現(xiàn)在已經(jīng)成為一個(gè)30多人的信息安全團(tuán)隊(duì)。主頁做的很簡(jiǎn)單,但論壇內(nèi)容非常豐富,涉及領(lǐng)域眾多,在下經(jīng)常去那里下載學(xué)術(shù)資料,論壇管理的是我所見過的論壇中最好的。而且討論氛圍也很不錯(cuò)。鄙人與那里的幾個(gè)核心成員有所接觸,都是比較熱心的,而且技術(shù)都是比較強(qiáng)的。祝愿這個(gè)組織越辦越好。我對(duì)這個(gè)團(tuán)隊(duì)的發(fā)展充滿期望。
      
      幻影旅團(tuán)
      http://www.ph4nt0m.org/
      2001年創(chuàng)立,發(fā)展到現(xiàn)在組織成員已經(jīng)達(dá)到20人,近期組織推出了WIKI平臺(tái)(http://www.secwiki.com),內(nèi)容涉及無線網(wǎng)絡(luò),病毒與反病毒,以及黑客技術(shù)等眾多領(lǐng)域。所有的朋友都可以到那里去涂鴉。2002年開放了論壇,目前論壇的技術(shù)討論氛圍還是可以的,而且熱心人也是很多的。相信這個(gè)組織也能走下去。
      
      白細(xì)胞(whitecell)
      http://www.whitecell.org/
      2001年創(chuàng)立的一個(gè)純技術(shù)交流站點(diǎn)。當(dāng)時(shí)核心成員有sinister,無花果等人,都是國(guó)內(nèi)著名的高手。在2002年后就關(guān)閉了,而最近它由回來了。主頁與論壇依然都很簡(jiǎn)單。希望這次回歸會(huì)帶給大家新的氣象。
      
      中華安全網(wǎng)
      http://www.safechina.net/
      2001年4月創(chuàng)立,經(jīng)過了幾次改版后,隊(duì)伍也發(fā)展的比較大,我所熟悉的有yellow,Phoenix等人。到現(xiàn)在,這個(gè)網(wǎng)站還在改版中,不過論壇依然開放,在這里還是有討論空間的。組織內(nèi)的人技術(shù)也都是不錯(cuò)的。希望這次改版后會(huì)有大的變化:)。
      
      第八軍團(tuán)
      2000年左右由陳三公子組織成立,后經(jīng)過多次改版。成為了一個(gè)VIP制的站點(diǎn),資源收集量還是不錯(cuò)的。鄙人經(jīng)常去那里找代理服務(wù)器,更新的速度還是可以的。論壇里討論氣氛不是很熱烈。希望今后發(fā)展的會(huì)更好。
      
      
      
      來說說這兩年成立的黑客組織
      BCT
      http://www.cnbct.org/
      2004年底成立的一個(gè)專門挖掘腳本漏洞的組織。已經(jīng)發(fā)展了一年了。在下與H4K_B4N,fpx到是有些接觸。感覺這個(gè)組織是不錯(cuò)的,雖然沒有做什么影響力大的事情,但是這種默默研究技術(shù)的精神還是值得發(fā)揚(yáng)的,與那些招搖的比,要好多了。網(wǎng)站上收集了一些漏洞資料,這點(diǎn)到是做的比較好。希望繼續(xù)努力,發(fā)展的越來越好。
      
      火狐技術(shù)聯(lián)盟
      http://www.wrsky.com/
      2004年建立的一個(gè)組織,致力于破解軟件的組織。對(duì)于他們組織現(xiàn)在很有爭(zhēng)議,也曾經(jīng)一度遭受到猛烈的拒絕服務(wù)攻擊,造成網(wǎng)站癱瘓長(zhǎng)大數(shù)月,到現(xiàn)在是一個(gè)論壇系統(tǒng)。對(duì)于這個(gè)組織,到目前為止還是有爭(zhēng)議。希望能早日平息。
      
      黑客技術(shù)
      http://www.hackart.org/
      2003年成立的組織,之前使用的是喬客的整站程序,后來就關(guān)閉了。也是最近重開的站點(diǎn),使用的是論壇系統(tǒng),在下與那里的版主風(fēng)般的男人和Jambalaya 是好朋友。他們的技術(shù)還是不錯(cuò)的?,F(xiàn)在論壇人氣雖然不怎么高,但顯然是老站重開,知道的人還不多,希望日后可以恢復(fù)元?dú)?,繼續(xù)發(fā)展下去。
      
      
      國(guó)內(nèi)三大商業(yè)黑客站點(diǎn)。
      黑客基地
      http://www.hackbase.com/
      2003年成立。站長(zhǎng)龍哥。
      
      黑鷹基地
      http://www.3800cc.com/
      由米特創(chuàng)立的商業(yè)黑客站點(diǎn)。
      
      華夏黑客同盟
      http://www.77169.com/
      2004年由怪狗創(chuàng)立的站點(diǎn)。
      
      其實(shí)黑客組織多的數(shù)不勝數(shù),我也只是舉幾個(gè)著名的而已。
      下面來說說人物吧,現(xiàn)在的黑客越來越多,我重點(diǎn)介紹那些專著于系統(tǒng)與漏洞的高手,當(dāng)然他們對(duì)入侵也是有所造詣的。注意,這并不是排名,不是第一個(gè)就是最厲害,而最后一個(gè)是這里面技術(shù)最差的,如果這樣想就錯(cuò)了。
      因?yàn)橛袝r(shí)候想著費(fèi)勁所以就進(jìn)入一下牛人的BLOG以及一些論壇去看,這樣就可以容易記起來,知道寫誰。
      先從這里找http://www.0x557.org/~kkqq/ 然后在從安全焦點(diǎn)的文章和論壇里還有綠盟去找。
      
      
      alert7
      QQ:415451
      email:alert7@xfocus.org
      http://blog.xfocus.net/index.php?blogId=12
      安全焦點(diǎn)核心成員,曾經(jīng)在補(bǔ)天的。精通linux操作系統(tǒng),對(duì)于linux下的漏洞很有研究。
      
      baozi(fatb)
      QQ:48448355
      http://blog.xfocus.net/index.php?blogId=3
      對(duì)windows與linux下的入侵很精通。
      
      CoolQ
      QQ:49462335
      http://coolq.blogdriver.com/coolq/index.html
      email:qufuping@ercist.iscas.ac.cn
      我也是在安全焦點(diǎn)05年的峰會(huì)上認(rèn)識(shí)的他,是中科院軟件研究所的學(xué)生,對(duì)于linux非常有研究。在最后一期的Phrack雜志上有他的文章《Hacking Grub for fun and profit》也是在這期雜志中發(fā)表文章的三位中國(guó)人之一。另外著作還有《ways to hide files in ext2/3 filesystem》
      
      bkbll(dumplogin)
      email:bkbll@cnhonker.com
      http://blog.0x557.org/dumplogin/
      原中國(guó)紅客聯(lián)盟核心成員,與lion曾經(jīng)一起參加過中美黑客大戰(zhàn)。對(duì)windows與linux都很有研究。著作有《POSIX子系統(tǒng)權(quán)限提升漏洞的分析》
      
      flashsky
      QQ:16202253
      email:flashsky@xfocus.org
      http://www.qjclub.net/blog/user1/497/index.html
      安全焦點(diǎn)核心成員。精通windows操作系統(tǒng)上的緩沖區(qū)溢出,當(dāng)年就是他一連公布了微軟的N個(gè)漏洞,微軟就此還譴責(zé)過安全焦點(diǎn)。現(xiàn)就職于啟明星辰。
      
      Flier Lu
      email:flier@nsfocus.com
      http://flier_lu.blogcn.com/
      綠盟的高手,精通windows操作系統(tǒng)內(nèi)核,著作有《MS.Net CLR擴(kuò)展PE結(jié)構(gòu)分》《自動(dòng)驗(yàn)證 Windows NT 系統(tǒng)服務(wù)描述表》《CLR 中代碼訪問安全檢測(cè)實(shí)現(xiàn)原理》等等。
      
      funnywei
      QQ:25044885
      email:funnywei@xfocus.org
      http://blog.xfocus.net/index.php?blogId=28
      安全焦點(diǎn)核心成員,熟悉windows操作系統(tǒng)。著作有《WindowsXpSp2溢出保護(hù)》
      
      glacier
      QQ:1937435
      email:glacier@xfocus.org
      http://blog.xfocus.net/index.php?blogId=15
      安全焦點(diǎn)核心成員,精通windows編程,網(wǎng)絡(luò)編程,delphi等等。是冰河木馬以及著名掃描軟件x-scan的作者。
      
      icbm
      email:icbm@0x557.org
      http://blog.0x557.org/icbm/
      精通linux操作系統(tǒng)內(nèi)核以及漏洞。就職于啟明星辰。翻譯過文章《Building ptrace injecting shellcodes》是《淺析Linux內(nèi)核漏洞》的作者。
      
      killer
      QQ:6362602
      email:killer@xfocus.org
      http://blog.xfocus.net/index.php?blogId=2
      安全焦點(diǎn)灌水區(qū)版主。精通逆向工程,程序破解。
      
      pjf
      QQ:85863144
      http://pjf.blogcn.com/
      著名的檢測(cè)工具icesword(冰刃)的作者。很多程序員以及編寫rootkit的高手以繞過它的檢測(cè)工具為目標(biāo)。熟悉windows操作系統(tǒng)內(nèi)核。
      
      refdom
      email:refdom@xfocus.org
      http://blog.xfocus.net/index.php?blogId=11
      安全焦點(diǎn)核心成員,《反垃圾郵件技術(shù)解析》的作者。似乎曾經(jīng)是紅客聯(lián)盟的人。
      
      stardust
      QQ:6269692
      email:stardust@xfocus.org
      http://blog.xfocus.net/index.php?blogId=7
      安全焦點(diǎn)核心成員。熟悉linux,精通IDS。著作有《從漏洞及攻擊分析到NIDS規(guī)則設(shè)計(jì)》《Bro NIDS的規(guī)則》《Snort 2.x數(shù)據(jù)區(qū)搜索規(guī)則選項(xiàng)的改進(jìn)》《Bro NIDS的安裝與配置》
      
      sunwear
      QQ:47347
      email:shellcoder@163.com
      http://blog.csdn.net/sunwear/
      邪惡八進(jìn)制核心成員。精通windows操作系統(tǒng)內(nèi)核。著作有《利用NTLDR進(jìn)入RING0的方法及MGF病毒技術(shù)分析筆記》《淺析本機(jī)API》《智能ABC輸入法溢出分析》
      
      swan
      email:swan@xfocus.org
      http://blog.0x557.org/swan/
      對(duì)緩沖區(qū)溢出漏洞很有研究。最近的ms05051 Microsoft Windows DTC 漏洞的exploit作者就是他。
      
      tombkeeper
      QQ:644909
      http://blog.xfocus.net/index.php?blogId=9
      安全焦點(diǎn)核心成員。精通windows操作系統(tǒng)內(nèi)核。著作有〈用Bochs調(diào)試NTLDR〉〈修改Windows SMB相關(guān)服務(wù)的默認(rèn)端口〉等等。在焦點(diǎn)峰會(huì)上見到過他,很帥。
      
      watercloud
      http://blog.xfocus.net/index.php?blogId=6
      安全焦點(diǎn)核心成員。精通windows,linux操作系統(tǒng)。著作有〈手工打造微型Win32可執(zhí)行文件〉〈溢出利用程序和編程語言大雜燴〉〈RSA算法基礎(chǔ)->實(shí)踐〉
      
      zwell
      email:suei8423@163.com
      http://blog.donews.com/zwell
      NB聯(lián)盟核心成員。精通windows操作系統(tǒng),著作有〈安全穩(wěn)定的實(shí)現(xiàn)進(jìn)線程監(jiān)控〉〈一種新的穿透防火墻的數(shù)據(jù)傳輸技術(shù)〉
      
      zzzevazzz
      QQ:49322630
      http://zzzevazzz.bokee.com/index.html
      幻影旅團(tuán)核心成員。原灰色軌跡的人。精通windows操作系統(tǒng)內(nèi)核。著作有〈Do All in Cmd Shell〉〈無驅(qū)動(dòng)執(zhí)行ring0代碼〉等等。
      
      小榕
      http://www.netxeyes.org
      流光,亂刀,溺雪及命令行SQL注入工具的作者。中國(guó)第二代黑客。
      
      lion
      QQ:21509
      email:lion@cnhonker.com
      http://www.cnhonker.com
      原中國(guó)紅客聯(lián)盟站長(zhǎng),對(duì)緩沖區(qū)溢出很有研究。精通linux.windows.
      
      isno
      QQ:1070681
      email:isno@xfocus.org
      安全焦點(diǎn)核心成員,精通緩沖區(qū)溢出漏洞。webdav溢出程序的作者。寫過IDQ,IDA漏洞溢出的分析等等。
      
      sinister
      QQ:3350124
      email:sinister@whitecell.org
      白細(xì)胞成員。精通windows內(nèi)核,AIX。著作有〈NT 內(nèi)核的進(jìn)程調(diào)度分析筆記〉〈NT 下動(dòng)態(tài)切換進(jìn)程分析筆記〉〈AIX 內(nèi)核的虛擬文件系統(tǒng)框架〉〈AIX 內(nèi)核的文件操作流程〉
      
      袁哥
      email:yuange@nsfocus.com
      現(xiàn)就職于中聯(lián)綠盟公司。精通windows操作系統(tǒng)內(nèi)核以及漏洞利用。
      
      warning3
      email:warning3@nsfocus.com
      msn:warning3@hotmail.com
      精通linux unix內(nèi)核及漏洞?,F(xiàn)就職于中聯(lián)綠盟公司。著作有〈Heap/BSS 溢出機(jī)理分析〉
      
      SoBeIt
      QQ:27324838
      email:kinvis@hotmail.com
      精通windows編程以及系統(tǒng)內(nèi)核還有溢出。著作有《Windows內(nèi)核調(diào)試器原理淺析》,《掛鉤Windows API》等等翻譯過《在NT系列操作系統(tǒng)里讓自己“消失”》
      
      xhacker
      QQ:66680800
      精通滲透入侵以及腳本入侵。著作有〈詳述虛擬網(wǎng)站的權(quán)限突破及防范〉,〈如何利用黑客技術(shù)跟蹤并分析一名目標(biāo)人物〉
      
      eyas
      QQ:320236
      email:eyas@xfocus.org
      安全焦點(diǎn)核心成員,熟悉windows操作系統(tǒng),windows編程。著作有《NT平臺(tái)撥號(hào)連接密碼恢復(fù)原理》,《WS_FTP FTPD STAT命令遠(yuǎn)程溢出分析》
      
      孤獨(dú)劍客
      QQ:5385757
      email:Janker@Hackbase.Com
      Http://Www.Janker.Org
      精通編程。以及入侵技術(shù)。winshell的作者。中國(guó)第二代黑客。
      
      sunx
      QQ:239670
      http://www.sunx.org
      對(duì)溢出有研究,寫過IDA漏洞和printer漏洞的溢出程序。精通匯編。著作很多。
      
      analysist
      QQ:20116789
      精通數(shù)據(jù)庫與腳本入侵。早年對(duì)跨站腳本以及很多腳本漏洞很有研究。著作有《跨站腳本執(zhí)行漏洞詳解》,《BBS2000和BBS3000所存在的安全隱患》
      
      Frankie
      http://cnns.net
      精通windows操作系統(tǒng),與linux。中國(guó)第一代黑客。
      
      rootshell(fzk)
      QQ:1734398
      http://www.ns-one.com
      精通windows操作系統(tǒng),熟悉緩沖區(qū)溢出漏洞。老一代的黑客。著作有〈最近發(fā)現(xiàn)的一個(gè)Distributed File System服務(wù)遠(yuǎn)程溢出問題〉。
      
      PP
      QQ:82928
      精通windows操作系統(tǒng)。名言:如果想飛得高,就該把地平線忘掉。
      
      tianxing
      OICQ:911189
      網(wǎng)站:http://www.tianxing.org/
      精通windows操作系統(tǒng)與漏洞利用。RPC漏洞利用程序以及網(wǎng)絡(luò)刺客,網(wǎng)絡(luò)衛(wèi)兵的作者。
      
      grip2
      QQ:1007270
      精通linux操作系統(tǒng)。著作有〈一個(gè)Linux病毒原型分析〉
      
      san
      QQ:56941
      精通windows操作系統(tǒng)以及l(fā)inux。而且對(duì)windows CE很有研究。phrack最后一期的雜志中,刊登過他的文章。
      
      hume
      QQ:8709369
      精通匯編以及windows操作系統(tǒng)。著作有《SEH in ASM 的研究》
      
      backend
      email:backend@antionline.org
      精通linux操作系統(tǒng)。翻譯過很多文章,是綠盟的高手。不過已經(jīng)幾年沒見在網(wǎng)絡(luò)上游走了。到是現(xiàn)實(shí)中偶爾看到他。
      
      Adam
      QQ:15898
      email:adam@nsfocus.com
      綠盟的高手,windows安全版版主。精通windows操作系統(tǒng)。
      
      ipxodi
      QQ:16175535
      email:ipxodi@nsfocus.com
      很長(zhǎng)時(shí)間沒看見他了。精通windows操作系統(tǒng)以及緩沖區(qū)溢出。著作有〈window系統(tǒng)下的堆棧溢出〉〈Windows 2000緩沖區(qū)溢出入門〉。這些文章都是造福了很多后輩的。
      
      zer9
      QQ:573369
      email:zer9@21cn.com
      也是很長(zhǎng)時(shí)間沒見到了。早期寫過不少文章和工具。也是老一輩的革命家。
      
      whg
      QQ:312016
      email:whg0001@163.com
      http://WWW.CNASM.COM
      不知道算不算白細(xì)胞的成員,呵呵。病毒高手。精通匯編。寫過不少軟件,例如lan下sniff QQ的工具以及sniff工具等等,可以到他的主頁上去看。
      
      lg_wu
      email:lgwu2000@sina.com
      在綠盟論壇和安全焦點(diǎn)都見過,對(duì)linux精通的很。技術(shù)不一般的說。
      
      wowocock
      QQ:37803144
      精通windows操作系統(tǒng)內(nèi)核,匯編。在驅(qū)動(dòng)開發(fā)網(wǎng)以及cvc 輕描淡寫見過,技術(shù)不一般。著作很多,但是見到的很少。不知道為什么這么好的文章沒人轉(zhuǎn)!
      
      baiyuanfan
      QQ:51449276
      這小子在峰會(huì)上給我的印象很深。在技術(shù)上很下工夫。對(duì)windows也算有研究了。著作當(dāng)然是byshell了。
      
      vxk
      QQ:355852911
      匯編技術(shù)很硬,精通windows內(nèi)核。經(jīng)常在cvc論壇看到他。
      
      冰血封情
      QQ:124839278
      邪惡八進(jìn)制的創(chuàng)始人。中國(guó)第四代黑客。感覺這個(gè)人很不錯(cuò)。對(duì)他的組織比較認(rèn)可。技術(shù)上面還可以。
      
      Polymorphours(shadow3)
      QQ:120974745
      白細(xì)胞成員。以前叫shadow3.好象換名字了。熟悉windows操作系統(tǒng),以及緩沖區(qū)溢出。著作有〈MS05-010許可證記錄服務(wù)漏洞允許執(zhí)行代碼的分析〉〈Media Player 8.0 vulnerability〉等等。
      
      e4gle
      QQ:1949479
      白細(xì)胞成員。老一代的黑客。精通linux系統(tǒng)內(nèi)核以及病毒技術(shù),緩沖區(qū)溢出。著作有〈程序攻擊原理〉〈Unix系統(tǒng)病毒概述〉〈高級(jí)緩沖溢出的使用〉
      
      bingle
      QQ:45671342
      很早就認(rèn)識(shí)的一個(gè)兄弟了。著作不少,很多都很實(shí)用。
      
      wollf
      QQ:228095
      glacier的老婆。一定不能讓他知道我是誰,要不我就死定了。她是黑客?。唬∶琅诳?!
      
      goodwell
      中國(guó)早期著名黑客組織-綠色兵團(tuán) 創(chuàng)始人之一。
      
      yellow
      QQ:12398890
      中華安全網(wǎng)核心成員。熟悉緩沖區(qū)溢出與windows編程。
      
      江???BR>  QQ:741534
      曾經(jīng)參加某個(gè)會(huì)議的時(shí)候見過他,聊的還可以,后來在焦點(diǎn)峰會(huì)時(shí)又碰了面。此人是反病毒方面的高手。
      
      icmb
      啟明星辰linux方面的高手。對(duì)于漏洞方面很有研究。不帶眼睛更漂亮……
    posted @ 2005-12-23 03:58 konhon 優(yōu)華 閱讀(4088) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共21頁: First 上一頁 5 6 7 8 9 10 11 12 13 下一頁 Last 
    主站蜘蛛池模板: 免费日本黄色网址| 99久久亚洲综合精品成人网| 国产一区二区三区免费观在线| 亚洲国产精品国自产拍AV| 亚洲人成免费电影| 在线观看国产一区亚洲bd| 国产av无码专区亚洲av桃花庵| 91九色老熟女免费资源站| 含羞草国产亚洲精品岁国产精品| 在线观看国产情趣免费视频| 大妹子影视剧在线观看全集免费| 亚洲伦理中文字幕| 亚洲精品视频免费| 免费A级毛片无码无遮挡内射| 又粗又长又爽又长黄免费视频| 亚洲视频在线观看网站| av无码东京热亚洲男人的天堂| 99热在线精品免费播放6| 国产成人亚洲综合在线| 91精品国产亚洲爽啪在线观看| 亚洲国产精品成人网址天堂| 久久午夜无码免费| 羞羞视频在线免费观看| 亚洲成人黄色在线观看| 亚洲中文字幕无码专区| av免费不卡国产观看| a级毛片100部免费观看| 精品国产日韩亚洲一区91| 亚洲美女视频网站| 亚洲色自偷自拍另类小说| 国产成人精品男人免费| 四虎成年永久免费网站| 最新国产乱人伦偷精品免费网站| 激情五月亚洲色图| 亚洲国产二区三区久久| 国产亚洲欧洲Aⅴ综合一区| 日本不卡高清中文字幕免费| 成年人免费的视频| 99久久人妻精品免费一区| 香蕉免费看一区二区三区| 自拍偷自拍亚洲精品播放|