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

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

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

    2013年10月15日

         摘要: PL/SQL Developer version 9.0.6.1665 無限用戶注冊碼激活碼 1 Product Code: 46jw8l8ymfmp2twwbuur8j9gv978m2q2du 2 serial Number:307254 3 password:xs374ca 4 License Numbe...  閱讀全文

    posted @ 2013-10-15 09:02 志成中國 閱讀(4031) | 評論 (1)編輯 收藏


    2013年1月5日

         摘要:  認識ExtJSextjs是使用javascript、css和html等技術實現的主要用于創建用戶界面,且與后臺技術無關的前端ajax框架。extjs來源于yui,開發理念來源于傳統的桌面軟件開發。1.下載extjs,解壓,得到目錄結構o builds:是extjs壓縮后的代碼,體積更小,加載更快o docs :extjs的文檔o examples...  閱讀全文

    posted @ 2013-01-05 17:04 志成中國 閱讀(1193) | 評論 (2)編輯 收藏


    2012年11月9日

         摘要: 不同概率的抽獎今天為大家寫個小程序。工作中有遇到一些抽獎的活動,但是你懂得,抽獎物品的概率肯定不是一樣,你會發現好的東西很難抽到,經常抽到一些垃圾的東西,嘿嘿,這就是本文要說的,我們要控制抽獎物品的概率。還有順便說一句,網上這種小程序幾乎沒有,很多都是等概率的抽獎balabala…需求很簡單,為了更加形象,這里我們列一個表格來顯示我們抽獎的物品和對應的概率(沒有邊框,大家湊合著看看吧,...  閱讀全文

    posted @ 2012-11-09 16:03 志成中國 閱讀(483) | 評論 (2)編輯 收藏

    Java中static、this、super、final用法

    親:本文具體講解了Java中static的用法,具體內容有static的靜態方法、靜態變量、靜態類。(⊙o⊙),你們覺得如何?
    一、static
    請先看下面這段程序:
    public class Hello{
    public static void main(String[] args){ //(1)
    System.out.println("Hello,world!"); //(2)
    }
    }
     
    看過這段程序,對于大多數學過Java 的從來說,都不陌生。即使沒有學過Java,而學過其它的高級語言,例如C,那你也應該能看懂這段代碼的意思。它只是簡單的輸出“Hello,world”,一點別的用處都沒有,然而,它卻展示了static關鍵字的主要用法。
    在1處,我們定義了一個靜態的方法名為main,這就意味著告訴Java編譯器,我這個方法不需要創建一個此類的對象即可使用。你還得你是怎么運行這個程序嗎?一般,我們都是在命令行下,打入如下的命令(加下劃線為手動輸入):
     
    javac Hello.java
    java Hello
    Hello,world!
     
    這就是你運行的過程,第一行用來編譯Hello.java這個文件,執行完后,如果你查看當前,會發現多了一個Hello.class文件,那就是第一行產生的Java二進制字節碼。第二行就是執行一個Java程序的最普遍做法。執行結果如你所料。在2中,你可能會想,為什么要這樣才能輸出。好,我們來分解一下這條語句。(如果沒有安裝Java文檔,請到Sun的官方網站瀏覽J2SE API)首先,System是位于java.lang包中的一個核心類,如果你查看它的定義,你會發現有這樣一行:public static final PrintStream out;接著在進一步,點擊PrintStream這個超鏈接,在METHOD頁面,你會看到大量定義的方法,查找println,會有這樣一行:
     
    public void println(String x)
     
    好了,現在你應該明白為什么我們要那樣調用了,out是System的一個靜態變量,所以可以直接使用,而out所屬的類有一個println方法。
    靜態方法
    通常,在一個類中定義一個方法為static,那就是說,無需本類的對象即可調用此方法。如下所示:
    class Simple{
    static void go(){
    System.out.println("Go...");
    }
    }
    public class Cal{
    public static void main(String[] args){
    Simple.go();
    }
    }
     
    調用一個靜態方法就是“類名.方法名”,靜態方法的使用很簡單如上所示。一般來說,靜態方法常常為應用程序中的其它類提供一些實用工具所用,在Java的類庫中大量的靜態方法正是出于此目的而定義的。
    靜態變量
    靜態變量與靜態方法類似。所有此類實例共享此靜態變量,也就是說在類裝載時,只分配一塊存儲空間,所有此類的對象都可以操控此塊存儲空間,當然對于final則另當別論了。看下面這段代碼:
     
    class Value{
    static int c=0;
    static void inc(){
    c++;
    }
    }
    class Count{
    public static void prt(String s){
    System.out.println(s);
    }
    public static void main(String[] args){
    Value v1,v2;
    v1=new Value();
    v2=new Value();
    prt("v1.c="+v1.c+" v2.c="+v2.c);
    v1.inc();
    prt("v1.c="+v1.c+" v2.c="+v2.c);
    }
    }
     
    結果如下:
     
    v1.c=0 v2.c=0
    v1.c=1 v2.c=1
     
    由此可以證明它們共享一塊存儲區。static變量有點類似于C中的全局變量的概念。值得探討的是靜態變量的初始化問題。我們修改上面的程序:
     
    class Value{
    static int c=0;
    Value(){
    c=15;
    }
    Value(int i){
    c=i;
    }
    static void inc(){
    c++;
    }
    }
    class Count{
    public static void prt(String s){
    System.out.println(s);
    }
    Value v=new Value(10);
    static Value v1,v2;
    static{
    prt("v1.c="+v1.c+" v2.c="+v2.c);
    v1=new Value(27);
    prt("v1.c="+v1.c+" v2.c="+v2.c);
    v2=new Value(15);
    prt("v1.c="+v1.c+" v2.c="+v2.c);
    }
    public static void main(String[] args){
    Count ct=new Count();
    prt("ct.c="+ct.v.c);
    prt("v1.c="+v1.c+" v2.c="+v2.c);
    v1.inc();
    prt("v1.c="+v1.c+" v2.c="+v2.c);
    prt("ct.c="+ct.v.c);
    }
    }
     
    運行結果如下:
    v1.c=0 v2.c=0
    v1.c=27 v2.c=27
    v1.c=15 v2.c=15
    ct.c=10
    v1.c=10 v2.c=10
    v1.c=11 v2.c=11
    ct.c=11
     
    這個程序展示了靜態初始化的各種特性。如果你初次接觸Java,結果可能令你吃驚。可能會對static后加大括號感到困惑。首先要告訴你的是,static定義的變量會優先于任何其它非static變量,不論其出現的順序如何。正如在程序中所表現的,雖然v出現在v1和v2的前面,但是結果卻是v1和v2的初始化在v的前面。在static{后面跟著一段代碼,這是用來進行顯式的靜態變量初始化,這段代碼只會初始化一次,且在類被第一次裝載時。如果你能讀懂并理解這段代碼,會幫助你對static關鍵字的認識。在涉及到繼承的時候,會先初始化父類的static變量,然后是子類的,依次類推。非靜態變量不是本文的主題,在此不做詳細討論,請參考Think in Java中的講解。
    靜態類
    通常一個普通類不允許聲明為靜態的,只有一個內部類才可以。這時這個聲明為靜態的內部類可以直接作為一個普通類來使用,而不需實例一個外部類。如下代碼所示:
     
    public class StaticCls{
    public static void main(String[] args){
    OuterCls.InnerCls oi=new OuterCls.InnerCls();
    }
    }
    class OuterCls{
    public static class InnerCls{
    InnerCls(){
    System.out.println("InnerCls");
    }
    }
    }
     
    輸出結果會如你所料。

    posted @ 2012-11-09 16:01 志成中國 閱讀(207) | 評論 (0)編輯 收藏

    java try catch 誰先執行問題,你能說明白嗎
    問題1 
     try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執行,什么時候被執行,在return前還是后? 
    也許你的答案是在return之前,但往更細地說,我的答案是在return中間執行,請看下面程序代碼的運行結果: 
    public  class Test {
    public static void main(String[] args) {
    System.out.println(new Test().test());;
    }
    static int test()
    {
    int x = 1;
    try
    {
    return x;
    }
    finally
    {
    ++x;
    }
    }
    }
    ---------執行結果是什么  為什么 ---------
    問題2
    下面的程序代碼輸出的結果是多少?
    public class  smallT
    {
    public static void  main(String args[])
    {
    smallT t  = new  smallT();
    int  b  =  t.get();
    System.out.println(b);
    }
    public int  get()
    {
    try
    {
    return 1 ;
    }
    finally
    {
    return 2 ;
    }
    }
    }
           2012-6-19 16:23 滿意回答 輸出是1和2,
    20705080 回答的很好了,只有幾點補充下,首先代碼例子用的是基本數據類型,他們進行傳值就是傳值,其次finally的用途是用來回收系統資源的,沒有catch也是正常的使用(不catch,把異常throw回調用方法),再有finally和return是有關系的,而且經常有人提,就是finally的代碼在return前運行,這就是我為什么先說你的例子是基本數據類型的原因,因為return x(1);被放入stack中,stack是后進先出的,等待finally運行完再運行,但他已經被賦值了就是1,如果你把代碼改成這樣試試看
    public Something getSome(){
             Something s = new Something("Dog");
             try{
                  return s;
            }finally{
                 s.name ="cat";
             }}
    加個類
    class Something{
            public String name ;
            something(String name){
                   this.name = name;}
    }
    因為相對于基本數據類型,引用傳值傳的值是個地址,return s(地址);放入stack中,又被取出時地址不變但地址那邊的數據已經是cat了贊同0| 評論 
    第1個
    有finally的話
    try 里的return    是先保存x的結果   等待finally走完   雖然x變2了  但是return的值還是1  
    因為到return的時候已經把x的值取出來  等待finally走完  不管x怎么變  之前的1是不會變的
    第2個
    return     等待finally走完   但是finally里return了   所以返回的是2
        贊同0| 評論                2012-6-19 14:54 暢捷通丶稀飯 | 五級 
    第一個是1,因為 x=1 try里面返回的是1 后面又執行了finally 后。X 是2 但是沒有返回。所以 還是1
    第二個是2,因為finally最后執行,返回的是2. 贊同0| 評論                2012-6-19 14:56 java2000_net | 
    finally中的語句是一定要執行的,這點是肯定的。finally中的語句執行在try之后。通常try是要和catch(不捕獲異常try就沒意義了)。一般的用法是:
    try{
    1想要執行的代碼
    }catch(Exception e){
     2異常處理
    }finally{
    3最終執行的代碼
    }
    1中代碼沒錯執行的順序就是1->3
    1中代碼有錯執行的順序是2->3
    finally中的代碼和return是沒關系的,你可以把return寫在任何地方。它只和try、catch有關。假如你把問題一種finally的代碼寫成:
    finally{
    return ++x;
    }那么結果就是2了。
    finally一定會執行,且在try或catch之后執行。
    不知道這么說能明白嗎~~~
    不明白可以問,我再回答~~~ 贊同0| 評論                2012-6-19 15:22 黑夜也明亮 | 四級 
    問題1:答案 1。因為return的值在執行finally之前已經確定下來了。所以即使在finally里怎么該值它始終是1,除非在finally里在return ++x重新修改返回的值。return x它不會直接返回值回去而是等程序執行完finaly后才返回。
    你因該有聽過有finaly的程序一定會執行finaly代碼吧。
    問題2:答案 2。根據一的結論二也是成立的。 贊同0| 評論                2012-6-19 16:41 iedgtg | 五級 
    第一個問題:輸出的是1,因為finally總是在try-catch執行之后執行,而且,一定是在return之前執行。第一個問題里應該是在return x;之前執行,但是,此時return的值已經固定了,就是說finally再執行也改變不了return的值,當然x的值成了2,但是return的值已經固定為1了。
    第二個問題:輸出的是2,因為finally一定是在return之前執行,本來程序return的值是1,即將要return了,但是有finally,所以finally先執行,所以return的值是2。
    但是第二種情況不建議使用,就是說finally里不建議用return,因為這樣finally就沒有正常的執行完畢,這是不推薦的。 贊同0| 評論         

    posted @ 2012-11-09 16:00 志成中國 閱讀(197) | 評論 (0)編輯 收藏

    GET與Post提交問題: ---------------------------------------------- 運行login.jsp點登陸時調用兩次toLoginAction /WEB-INF/jsp/main/main.jsp /WEB-INF/jsp/user/login_form.jsp 所以取得結果在toLoginAction的execute里運行兩次 String pass = iuserDao.findPassWordByEmail(email); System.out.println(email); System.out.println(pass); 也輸出兩次:條件不同,輸出內容不同 當login_form.jsp里的表單 使用post方式提交時,控制臺輸出如下: root@root.com root null null 當login_form.jsp里的表單 使用get方式提交時,控制臺輸出如下: root@root.com root root@root.com root 解決方案一:加struts的token攔截器,只讓表單提交一次。 解決方案二:轉一個action,就是把他自動提交的那個請求通過action的轉發取消掉。 問題: 為什么get和post的默認請求后取到的值會不同? 為什么在window的電腦里沒有問題? ---------------------------------------------- 在window下,正常輸出如下: root@root.com root ---------------------------------------------- 緩存問題(服務器緩存或者瀏覽器緩存或者瀏覽器bug),導致提交兩次,與操作系統、程序、js提交是沒關系! get:通過URL路傳參,當頁面再次提交,還會把URL中的值傳遞給action,所有屬性再次被填充就不出現null值 post:URL路徑沒有信息,當再次提交,就出現屬性就出現null值 你在學生機器上,把在tomcat中work目錄刪除、在把\webapps 中項目刪除,把web容器緩存清空下! 或者把學生機器重新啟動下,把服務器緩存徹底清除下! ---------------------------------------------- ---------------------------------------------- 圖片:struts-user.xml配置如下: ---------------------------------------------- ToLoginAction類如下 : ---------------------------------------------- 進入主頁面的URL如: ---------------------------------------------- 登陸的URL如: ---------------------------------------------- 登陸界面: ---------------------------------------------- windwo系統下提交輸出如圖: ---------------------------------------------- Linux系統下,采用get提交時 ---------------------------------------------- Linux系統下,采用post提交時 ---------------------------------------------- 最后在學生電腦上又試了幾次,get方式提交正常和window系統下一樣了,post方式 提交還是沒改變,不知道為什么。 ---------------------------------------------- 郵件內容如下: 發件人:賈東坡 發送時間: 2012-11-08 09:37 收件人:zhaozq 主題: dang_get_post 趙老師: 您好。學生的程序有點問題,想聽一下您的理解。問題描述如下: 進入當當網的main頁面,點登陸輸入用戶名,密碼后,點登陸會請求ToLoginAction, 進入main頁面。在ToLoginAction里打印了email和pass,登陸之后輸出結果在linux 系統下與window下不同。window系統下正常輸出,而在linux系統下有輸出兩次,并且 login_form.jsp時表單提交方法為get時,兩次都能正常輸出;當提交方式為post里,第 二次為null。例如: 在window系統下: 我們在輸入框,輸入用戶名:root@qq.com 密碼root,會輸出如下: root@qq.com root 在linux系統下 當login_form.jsp的表單提交為get時,輸出root@qq.comroot時, 輸出如下: root@qq.com root root@qq.com root 當login_form.jsp的表單提交為post時,輸入root@qq.comroot時, 輸出如下: root@qq.com root null null 原因分析:首先想的是submit按鈕在使用js時,有自動提交功能,可是也沒使用js啊, 還有在linux系統有自己的form機制。還有一個是程序有問題。 解決方案:我給這個action加了個token表單攔截器就可以。說明是表單提交兩次。 問題是:1.為什么表單會提交兩次,而在window下只提交一個。 2.為什么在linux下用get和post提交方式第二次取到的值會不一樣。 3. form提交時在linux系統下與window有什么不一樣。 附件內是程序源碼,謝謝您的寶貴時間。 祝: 身體健康,工作順利! 賈東坡北方區 北方基地項目部 項目經理 E-mail: jiadp@tarena.com.cn Address: 北京市昌平區北七家鎮宏富創業園科技園綜合樓3層 Mobile: 18301442726 Fax: 86-10-82823773 Website: www.tarena.com.cn ---------------------------------------------- 發件人:zhaozq 發送時間: 2012-11-08 11:21 收件人:jiadp 主題: 回復: dang_get_post 賈老師: 您好! 你們班的學生機器是不是采用的是云服務器? zhaozq ---------------------------------------------- 趙老師: 您好。我們班的機器都是普通主機,linux系統的,不是用核的,也不是云服務器。 謝謝您的寶貴時間。 ---------------------------------------------- 賈老師: 您好! 緩存問題(服務器緩存或者瀏覽器緩存或者瀏覽器bug),導致提交兩次,與操作系統、程序、js提交是沒關系! get:通過URL路傳參,當頁面再次提交,還會把URL中的值傳遞給action,所有屬性再次被填充就不出現null值 post:URL路徑沒有信息,當再次提交,就出現屬性就出現null值 你在學生機器上,把在tomcat中work目錄刪除、在把\webapps 中項目刪除,把web容器緩存清空下! 或者把學生機器重新啟動下,把服務器緩存徹底清除下! zhaozq ---------------------------------------------- 趙老師: 您好。您的分析很有道理,可是我用另外幾臺電腦,試了也不行,所以不該是緩存問題。 瀏覽器bug,這個還沒測試,因為所有學生的電腦都是同樣的系統,同樣的瀏覽器,都是這個 情況。要是緩存問題,怎么可能用token攔截了,攔截下的是緩存的,還是我自己提交的,以及 在哪地方緩存。還有個問題就是,在web學習的時候也有表單提交,為什么就沒有這種情況,是 不是和struts有關。 謝謝,您的寶貴時間。 ---------------------------------------------- 趙老師回復: 您好。您的分析很有道理,可是我用另外幾臺電腦,試了也不行,所以不該是緩存問題。 瀏覽器bug,這個還沒測試,因為所有學生的電腦都是同樣的系統,同樣的瀏覽器,都是這個 情況。要是緩存問題,怎么可能用token攔截了,攔截下的是緩存的,還是我自己提交的,以及 token不是攔截了,而是令牌值相同不在提交,不是在window 系統提交沒問題嗎?那就與程序無關了,那就是系統 緩存或者瀏覽器緩存中,正常當瀏覽器關閉,緩存中數據就清除,但是如果機房比較熱、服務器處于長期運營等情況都會導致緩存信息無法清空,而影響程序執行 在哪地方緩存。還有個問題就是,在web學習的時候也有表單提交,為什么就沒有這種情況,是 緩存 不是和struts有關。 和struts沒有關系,而是與計算機硬件設備有關,這個影響具體什么時候會造成,這個都不能預計,這種情況一般比較少見。 祝: 身體健康,工作順利! ---------------------------------------------- 趙老師: 您好。謝謝您的詳細解答,真是受益匪淺,這個問題可以劃上句話了。同學們都很喜歡聽 您講課,風趣幽默、也易于接受,期待您更多的講解。 謝謝,您的精神講解。您辛苦了。 祝: 身體健康,工作順利! ---------------------------------------------- ---------------------------------------------- Debug linux系統下截圖如下: ---------------------------------------------- get方式時:正常情況下:輸出和win一樣了。 root@root.com root ---------------------------------------------- post方式時:輸出如下: root@root.com root null null -------------------------------------------------------------------------------------------

    posted @ 2012-11-09 15:49 志成中國 閱讀(1203) | 評論 (0)編輯 收藏


    2012年10月20日

     大多數程序員都知道Servlet的生命周期,簡單的概括這就分為四步:servlet類加載--->實例化--->服務--->銷 毀。對這個過程只是膚淺了解下,對于servlet何時被銷毀,還是不太情楚。下面我們描述一下Tomcat與Servlet是如何工作的,首先看下面的 時序圖.

    1、Web Client 向Servlet容器(Tomcat)發出Http請求

    2、Servlet容器接收Web Client的請求

    3、Servlet容器創建一個HttpRequest對象,將Web Client請求的信息封裝到這個對象中

    4、Servlet容器創建一個HttpResponse對象

    5、Servlet容器調用HttpServlet對象的service方法,把HttpRequest對象與HttpResponse對象作為參數

         傳給 HttpServlet對象

    6、HttpServlet調用HttpRequest對象的有關方法,獲取Http請求信息

    7、HttpServlet調用HttpResponse對象的有關方法,生成響應數據

    8、Servlet容器把HttpServlet的響應結果傳給Web Client

     

    對于Servlet容器(Tomcat)與HttpServlet是怎樣進行交互的呢,看下類圖

    Servlet的框架是由兩個Java包組成的:javax.servlet與javax.servlet.http。在javax.servlet包中 定義了所有的Servlet類都必須實現或者擴展的通用接口和類。在javax.servlet.http包中定義了采用Http協議通信的 HttpServlet類。Servlet的框架的核心是javax.servlet.Servlet接口,所有的Servlet都必須實現這個接口。

    在Servlet接口中定義了5個方法,

    其中3個方法代表了Servlet的生命周期:

    1、init方法:負責初始化Servlet對象。

    2、service方法:負責響應客戶的請求。

    3、destroy方法:當Servlet對象退出生命周期時,負責釋放占用的資源。

     

    一、創建Servlet對象的時機

    1、Servlet容器啟動時:讀取web.xml配置文件中的信息,構造指定的Servlet對象,創建ServletConfig對象,同時將ServletConfig對象作為參數來調用Servlet對象的init方法。

    2、在Servlet容器啟動后:客戶首次向Servlet發出請求,Servlet容器會判斷內存中是否存在指定的Servlet對象,如果沒有則創建 它,然后根據客戶的請求創建HttpRequest、       HttpResponse對象,從而調用Servlet

         對象的service方法。

    3、Servlet的類文件被更新后,重新創建Servlet

          Servlet容器在啟動時自動創建Servlet,這是由在web.xml文件中為Servlet設置的<load-on-startup>屬性決定

          的。從中我們也能看到同一個類型的Servlet對象在Servlet容器中以單例的形式存在。

    二、銷毀Servlet對象的時機

    1、Servlet容器停止或者重新啟動:Servlet容器調用Servlet對象的destroy方法來釋放資源。以上所講的就是Servlet對象的生命周期。那么Servlet容器如何知道創建哪一個Servlet對象?

    Servlet對象如何配置?實際上這些信息是通過讀取web.xml配置文件來實現的。

    我們來看一下web.xml文件中的Servlet對象的配置節信息

    -------------------------------------------

    <servlet>

        <servlet-name>action<servlet-name>

        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

        <init-param>

            <param-name>config</param-name>

            <param-value>/WEB-INF/struts-config.xml</param-value>

        </init-param>

        <init-param>

            <param-name>detail</param-name>

            <param-value>2</param-value>

        </init-param>

        <init-param>

            <param-name>debug</param-name>

            <param-value>2</param-value>

        </init-param>

        <load-on-startup>2</load-on-startup>

    </servlet>

    <servlet-mapping>

        <servlet-name>action</servlet-name>

        <url-pattern>*.do</url-pattern>

    </servlet-mapping>

    --------------------------------------------

    下面對上面的配置節信息進行解析

    servlet-name:Servlet對象的名稱

    servlet-class:創建Servlet對象所要調用的類

    param-name:參數名稱

    param-value:參數值

    load-on-startup:Servlet容器啟動時加載Servlet對象的順序

    servlet-mapping/servlet-name:要與servlet中的servlet-name配置節內容對應

    url-pattern:客戶訪問的Servlet的相對URL路徑

     

           當Servlet容器啟動的時候讀取<servlet>配置節信息,根據<servlet-class>配置節信息創建 Servlet對象,同時根據<init-param>配置節信息創建HttpServletConfig對象,然后執行Servlet對象 的init方法,并且根據<load-on-startup>配置節信息來決定創建Servlet對象的順序,如果此配置節信息為負數或者沒 有配置,那么在Servlet容器啟動時,將不加載此Servlet對象。當客戶訪問Servlet容器時,Servlet容器根據客戶訪問的URL地 址,通過<servlet-mapping>配置節中的<url-pattern>配置節信息找到指定的Servlet對象,并 調用此Servlet對象的service方法。

     

    為了驗證下,我新建了一個web app工程,新建一個Servlet,如下:

    Java代碼  收藏代碼
    1. package com.tdt.servlet;  
    2.   
    3. import java.io.IOException;  
    4. import java.io.PrintWriter;  
    5. import javax.servlet.ServletException;  
    6. import javax.servlet.http.HttpServlet;  
    7. import javax.servlet.http.HttpServletRequest;  
    8. import javax.servlet.http.HttpServletResponse;  
    9.   
    10. public class TestServlet extends HttpServlet {  
    11.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
    12.             throws ServletException, IOException {  
    13.         this.doPost(request, response);  
    14.     }  
    15.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
    16.             throws ServletException, IOException {  
    17.   
    18.         response.setContentType("text/html");  
    19.         PrintWriter out = response.getWriter();  
    20.         out.println("Hello,this is a test");  
    21.       
    22.         out.flush();  
    23.         out.close();  
    24.     }  
    25.   
    26.     public void destroy() {  
    27.         System.err.println(getServletName()+"生命周期結束");;  
    28.     }  
    29.       
    30.     public void init() throws ServletException {  
    31.         System.out.println(getServletName()+"執行初始化");  
    32.     }  
    33. }  

     當servlet被銷毀時會在控制臺上打印提示語句,不過我發現在tomcat中,只要不停止web容器,servlet是不會被銷毀的。有沒有什么方 法,當service方法執行完畢就銷毀這個servlet呢,我問了下老師,他說寫一個監聽器,不過我不知道怎么去實現它,如果有朋友知道實現的過程, 還請賜教。

    posted @ 2012-10-20 13:01 志成中國 閱讀(256) | 評論 (0)編輯 收藏

         摘要: Oracle學習共享、基礎加強學習  閱讀全文

    posted @ 2012-10-20 12:57 志成中國 閱讀(62) | 評論 (0)編輯 收藏


    僅列出標題  

    posts - 9, comments - 5, trackbacks - 0, articles - 0

    Copyright © 志成中國

    主站蜘蛛池模板: 久青草国产免费观看| 黄页网址在线免费观看| 一级毛片免费视频| 日韩va亚洲va欧洲va国产| 免费一区二区三区在线视频| 国产高清视频在线免费观看| 亚洲精品国产高清在线观看| 四虎www成人影院免费观看| 亚洲精品无码专区在线播放| 精品国产免费观看| 一级毛片a免费播放王色电影| 亚洲精品无码专区久久同性男| 国产免费久久精品99久久| 亚洲精品无码专区久久久| 免费看搞黄视频网站| 亚洲精品午夜久久久伊人| 国产啪精品视频网免费| 亚洲av乱码一区二区三区按摩| 在线观着免费观看国产黄| 尤物视频在线免费观看| 久久亚洲国产精品| 免费影院未满十八勿进网站| 亚洲精品宾馆在线精品酒店| 国产精品无码一区二区三区免费| 一区二区三区免费视频网站 | 成人人观看的免费毛片| 亚洲成在人线aⅴ免费毛片| 亚洲?V无码乱码国产精品| 两性色午夜免费视频| 亚洲av成人综合网| 亚洲欧洲精品一区二区三区| 无码人妻一区二区三区免费手机| 亚洲AV无码国产精品永久一区| 久久影院亚洲一区| 久草视频在线免费| 四虎精品成人免费视频| 91亚洲国产成人久久精品网站| 好爽又高潮了毛片免费下载| a色毛片免费视频| 亚洲欧美日韩一区二区三区在线| 久久影视综合亚洲|