亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 將 microsoft 的 internet information server 用作 java servlet 引擎 二 (給學(xué)過asp的朋友).txt

?? Java技術(shù)收集很多各種技術(shù)總結(jié)
?? TXT
字號(hào):
作者:sonymusic
email: sonymusic@china.com
日期:2000-12-6 23:51:09

 

現(xiàn)在這個(gè)工具極大地簡化了您的工作。而 getParameterNames 方法就具有了類似下面的形式:

public Enumeration getParameterNames()
{
    return(
        new EnumerationComposite(
            new RequestDictionary[] {
                request.getQueryString(),
                request.getForm() } ) );
}
 

響應(yīng)對象的下一個(gè)最常用的方法是 getSession。會(huì)話對象是另一個(gè)核心對象,它在 ASP 和 servlet 之間互為映像。因此,您提供的會(huì)話就必須擁有自己的適配器,稍后我會(huì)對此加以說明。但在我說明之前,請先看這個(gè)請求方法:

public HttpSession getSession( boolean flag )
{
    return( new SessionAdapter() );
}
 

在本文中,需要改寫的請求對象的最后一個(gè)方法是 getCookies。顧名思義,它返回客戶機(jī)所提供的 cookie 的集合。ASP 版本的 cookie 對象使我感到為難,它似乎用作自身的一個(gè)集合,但又引出了許多具有莫明其妙的功能的方法。但是我能夠?qū)δ_本進(jìn)行充分的剖析來改寫 servlet。由于 ASP 版本中返回 Enumeration,而 servlet 版本中則返回一個(gè)數(shù)組,這樣就可以使用 Vector 類中一個(gè)不常用的方法 copyInto,來實(shí)現(xiàn)這種轉(zhuǎn)換,這是唯一的小竅門。另外請注意,由于在 com.ms.iis.asp 包和 javax.servlet.http 包中,類名是完全相同的,因此我們不得不明確指明每個(gè) Cookie 對象的包名。代碼如下:

public javax.servlet.http.Cookie[] getCookies()
{
    Vector tmpList = new Vector();

    CookieDictionary aspCookies = this.request.getCookies();

    IEnumerator e = aspCookies.keys();

    while( e.hasMoreItems() )
    {
        String key = (String) e.nextItem();
        String val = aspCookies.getCookie( key ).getValue();
        tmpList.addElement( new javax.servlet.http.Cookie( key, val ) );
    }

    javax.servlet.http.Cookie[] cookies = new javax.servlet.http.Cookie
         [ tmpList.size() ];
    tmpList.copyInto( cookies );

    return( cookies );
}

 

會(huì)話適配器 
現(xiàn)在,既然完成了請求適配器,就需要退回去討論會(huì)話適配器。無論在 ASP 中還是在 servlet 中,會(huì)話實(shí)際上是一個(gè)散列表,您只是將對象置入會(huì)話或者從會(huì)話獲取對象。這些值的用法幾乎就等同于相應(yīng)的響應(yīng)參數(shù)規(guī)則,這些規(guī)則上面已有討論。會(huì)話適配器的實(shí)現(xiàn)很復(fù)雜,這里就不介紹了。完整的源代碼可從參考資料中獲得。 

響應(yīng)適配器 
下一個(gè)主要的難題是響應(yīng)適配器。正像請求適配器一樣,響應(yīng)適配器也需要幾個(gè)巧妙的辦法。但是在討論較難的內(nèi)容之前,我先偏離正題討論一點(diǎn)較容易的內(nèi)容。下面是兩個(gè)較流行的響應(yīng)方法的極簡單的代碼: 

public void sendRedirect( String str )
{
    this.response.redirect( str );
}

public void setContentType( String str )
{
    // ASP 自動(dòng)設(shè)置內(nèi)容的類型!
}
 

setContentType 用來干什么?它什么事情也沒做!沒錯(cuò),IIS 畢竟沒有創(chuàng)建出完美的 servlet 引擎。到執(zhí)行 servlet 時(shí),ASP 引擎已定義了內(nèi)容類型以及其它標(biāo)準(zhǔn)的 HTTP 標(biāo)頭。但是按經(jīng)驗(yàn)來講,多數(shù) servlet 不需要將內(nèi)容類型設(shè)置為純文本或 HTML 以外的任何其它類型。

正如前面提到的那樣,您并不需要一個(gè)適配器來處理 cookie。響應(yīng)對象的 addCookie 方法只須根據(jù)所提供的 Sun 的 cookie 的內(nèi)容,來創(chuàng)建 Microsoft 的 cookie 的實(shí)例。Microsoft 和 Sun 都同意,cookie 只不過是將數(shù)據(jù)的名稱和值配成對而已。但是,雙方對于 API 中應(yīng)如何表示 cookie 有效期的方式,則意見不同。

Sun 版本中表示 cookie 有效期的方法是使用一個(gè)整型值,它指定 cookie 的最長壽命(以秒為單位)。此值被傳遞給 Cookie 對象的 setMaxAge 方法。零值表示立即到期,而負(fù)值(一種特殊情況)表示 cookie 應(yīng)在用戶瀏覽器退出時(shí)廢棄。

Microsoft 版本表示 cookie 有效期的方式有所不同。缺省情況下,Microsoft 的 cookie 設(shè)置為在用戶瀏覽器退出時(shí)到期。因此,如果 Sun 版本中 cookie 具有負(fù)的有效期,轉(zhuǎn)為 Microsoft 版本時(shí)不做修改;如果 Sun 版本中 cookie 的最長有效期大于或等于零,須將此有效期轉(zhuǎn)換為 Microsoft 的 Time 對象,并將其傳遞給 Microsoft 版本的 cookie 對象,作為有效期。請注意,月份值在 Java 的 Calendar 類中是從零開始的,而在 Microsoft 的 Time 類中是從 1 開始的,所以在轉(zhuǎn)換時(shí)必須將此值加 1。

public void addCookie( javax.servlet.http.Cookie cookie )
{
    com.ms.iis.asp.Cookie aspCookie = this.response.getCookies().getCookie
        ( cookie.getName() );
    aspCookie.setValue( cookie.getValue() );

    int age = cookie.getMaxAge();

    if( age < 0 ) 
    {
        // expire on browser exit
    }
    else
    {
        GregorianCalendar date = new GregorianCalendar();
        Date time = new Date( System.currentTimeMillis() + ( 1000 * age ) );
        date.setTime( time );

        Time aspTime = new Time( 
            date.get( Calendar.YEAR ),
            1 + date.get( Calendar.MONTH ),
            date.get( Calendar.DAY_OF_MONTH ),
            date.get( Calendar.HOUR ),
            date.get( Calendar.MINUTE ),
            date.get( Calendar.SECOND )
        );

        aspCookie.setExpires( aspTime );
    }
}
 

最流行的響應(yīng)方法碰巧也是最難以實(shí)現(xiàn)的,這正是我將它留到最后的原因。我所指的方法就是 getWriter。此方法返回 PrintWriter 對象,它讓 servlet 將信息寫到客戶機(jī)的顯示屏上。在大多數(shù)情況下,servlet 只是編制 HTML,HTML 在全部被發(fā)送到客戶機(jī)之前將被存入緩沖區(qū)中。為什么要存入緩沖區(qū)呢?因?yàn)?servlet 在將大量信息轉(zhuǎn)儲(chǔ)到 PrintWriter 以后,servlet 可能通過調(diào)用 sendRedirect 方法判斷出有某種出錯(cuò)和異常終止的情況。重定向代碼一定是瀏覽器接收的第一條信息;顯然,一旦發(fā)出了重定向,就再不需要將任何緩沖的信息發(fā)送給客戶機(jī)了。

考慮到以上情況,您就必須再創(chuàng)建一個(gè)適配器類。這個(gè)新的適配器將封裝 PrintWriter 對象。它將把它的所有內(nèi)容都存入緩沖區(qū)中,直到調(diào)用了 close 方法為止。下面是相應(yīng)的響應(yīng)方法: 


public PrintWriter getWriter()
{
    return( new PrintWriterAdapter() );
}
 

而下面是 PrintWriter 適配器的完整代碼:

public class PrintWriterAdapter extends PrintWriter
{
    private static final String CR = "\n";

    private StringBuffer sb = new StringBuffer();

    public PrintWriterAdapter()
    {
        super( System.err );
    }

    public void print ( String str ){ sb.append( str ); }//response.write
        ( str ); }
    public void println( String str ){ print ( str + CR ); }

    public void print ( Object obj ){ print ( obj.toString() ); }
    public void println( Object obj ){ println( obj.toString() ); }

    public void print ( char[] chr ){ print ( new String( chr ) ); }
    public void println( char[] chr ){ println( new String( chr ) ); }

    public void close()
    {
        AspContext.getResponse().write( sb.toString() );
    }
}

 

結(jié)論 
Microsoft 的 Internet Information Server 沒有創(chuàng)造出完美的 servlet 引擎,但它已經(jīng)相當(dāng)接近完美了。根據(jù)我有關(guān) servlet 的全部經(jīng)驗(yàn),IIS 和這些適配器類的組合已表明足以滿足開發(fā)和部署商業(yè)性應(yīng)用程序的需要。如果您碰巧被鎖進(jìn)只能選 Microsoft 產(chǎn)品的商店,這些工具能幫您另辟蹊徑,領(lǐng)略 Java servlet 的奇妙之處。同時(shí),我將一如既往地樂意傾聽您的評論、批評以及改進(jìn)這些代碼的comments。 

我在本文中引入的所有類的源代碼,包括一些我沒有談及的功能,都可以在參考資料中找到。請注意,許多方法(尤其是那些我還不需要的方法)仍未實(shí)現(xiàn)。如果您敢于完成這一工作,請給我發(fā)一份副本(眨眼)。 

對 Microsoft 或有幫助的讀者的一項(xiàng)正式請求 
我已將本文中說明的技術(shù)成功地部署到我實(shí)驗(yàn)室的大多數(shù)系統(tǒng)上。但它在幾臺(tái)機(jī)器上卻就是不能工作。ASP 頁對于對適配器對象的任何引用都報(bào)告這一條錯(cuò)誤: "No object for moniker"。這無疑是由 Microsoft 的 Java SDK 4.0、 Microsoft 的 Internet Information Server (Windows NT Option Pack 4)、Visual J++ 和某個(gè) Service Pack 的莫明其妙的組合引起的。我搜索了 Microsoft Developer's Network (MSDN),但徒勞無益,我已無計(jì)可施了。如果您知道問題所在并有解決辦法,請拿出來與我分享。謝謝。

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品欧美成人高清一区二区| 国产99一区视频免费| 欧美一级午夜免费电影| 国模套图日韩精品一区二区| 国产精品污污网站在线观看| 欧美色精品在线视频| 91亚洲男人天堂| 欧美一级片在线看| 在线观看国产精品网站| 综合久久久久久| 337p日本欧洲亚洲大胆色噜噜| 欧美剧情片在线观看| 久久综合色之久久综合| 国产视频视频一区| 午夜av一区二区三区| 中文字幕欧美日韩一区| 欧美性高清videossexo| 亚洲色图另类专区| 日本精品免费观看高清观看| 国产精品原创巨作av| 美女一区二区久久| 久久不见久久见免费视频7| 一区二区三区在线视频观看58 | 国产亚洲一区二区三区在线观看| 亚洲婷婷国产精品电影人久久| 国产一区二区三区免费在线观看| 青青草成人在线观看| 日韩精品三区四区| 亚洲综合在线电影| 日韩中文字幕一区二区三区| 日本不卡的三区四区五区| 蜜桃视频在线一区| 伊人开心综合网| 国产精品大尺度| 亚洲成a天堂v人片| 青青草伊人久久| www.色精品| 3d动漫精品啪啪| 亚洲欧洲精品天堂一级| 在线视频一区二区三区| 色综合久久天天| 老司机免费视频一区二区三区| 亚洲成精国产精品女| 蜜桃精品视频在线观看| 99精品视频免费在线观看| 色视频一区二区| 久久久青草青青国产亚洲免观| 亚洲欧美日韩中文字幕一区二区三区 | 4438x成人网最大色成网站| 欧美精品一区二区三区高清aⅴ | 欧美一级二级三级乱码| 日韩网站在线看片你懂的| 九九在线精品视频| 不卡电影一区二区三区| 欧美色网一区二区| 欧美精品一区男女天堂| 午夜天堂影视香蕉久久| 99久久精品国产导航| 精品电影一区二区三区| 亚洲福利视频一区二区| 欧美午夜电影一区| 欧美激情在线看| 国产精品高潮呻吟| 国产精品一线二线三线| 91在线云播放| 国产精品免费看片| 国产久卡久卡久卡久卡视频精品| 色综合久久88色综合天天免费| 亚洲狠狠丁香婷婷综合久久久| 日韩精品一二三区| 亚洲综合色区另类av| 国产一区二区精品在线观看| 久久中文字幕电影| 国产一区二区三区在线观看免费| 91福利区一区二区三区| 中文字幕成人网| 精品视频999| 久久99久久久久| 亚洲欧美乱综合| 日韩欧美自拍偷拍| www.亚洲精品| 久久精品国产精品亚洲红杏| 国产欧美综合在线| 欧美一区二区福利视频| 不卡av在线免费观看| 日本午夜一区二区| 亚洲美女在线国产| 国产欧美一区二区精品婷婷| 欧美性生活大片视频| 国产成人精品亚洲午夜麻豆| 日韩不卡手机在线v区| 国产jizzjizz一区二区| 国产精品免费av| wwww国产精品欧美| 69久久夜色精品国产69蝌蚪网| 国产宾馆实践打屁股91| 国内精品免费**视频| 日韩精品一二三区| 亚洲电影视频在线| 一区二区三区四区在线播放| 国产精品丝袜久久久久久app| 日韩精品中文字幕在线不卡尤物| 精品视频在线看| 久久综合久久综合亚洲| 欧美视频中文一区二区三区在线观看 | 亚洲国产人成综合网站| 1区2区3区欧美| 亚洲精品精品亚洲| 国产精品福利一区二区| 中文字幕不卡三区| 亚洲国产精品99久久久久久久久| 日韩一区二区三区在线观看| 久久99精品网久久| 成人高清在线视频| 激情综合色综合久久| 亚洲国产日韩一级| 中文字幕一区日韩精品欧美| 日韩欧美第一区| 欧美日韩色综合| 91在线免费视频观看| 国产又粗又猛又爽又黄91精品| 亚洲美女免费视频| 国产精品三级久久久久三级| 亚洲一二三四区不卡| 久久精品国产色蜜蜜麻豆| 成人精品鲁一区一区二区| 亚洲欧美一区二区三区孕妇| 亚洲成人av中文| 一区二区三区中文字幕精品精品| 久久色在线观看| 国产精品久久久一区麻豆最新章节| 欧美丝袜自拍制服另类| 中文字幕成人在线观看| 中文字幕亚洲一区二区va在线| 欧美三级日韩三级| 欧美色图激情小说| 国产精品超碰97尤物18| 美女mm1313爽爽久久久蜜臀| 在线看日本不卡| 亚洲欧美日韩久久精品| 久久成人久久爱| 91精品国产乱码久久蜜臀| 久久久www免费人成精品| 久久婷婷国产综合精品青草| 国产精品麻豆网站| 午夜精品爽啪视频| 狠狠色丁香久久婷婷综合丁香| 老司机精品视频导航| av中文字幕亚洲| 欧美一级在线免费| 亚洲自拍与偷拍| 国产成人亚洲综合色影视| 91玉足脚交白嫩脚丫在线播放| 91精品国产色综合久久不卡电影| 亚洲精品一区二区三区四区高清| 综合色天天鬼久久鬼色| 丝袜诱惑亚洲看片| 99re8在线精品视频免费播放| 欧美视频在线观看一区二区| 久久综合九色综合欧美亚洲| 婷婷夜色潮精品综合在线| 波多野结衣中文字幕一区二区三区 | 色噜噜狠狠一区二区三区果冻| 精品乱码亚洲一区二区不卡| 一区二区国产视频| 色婷婷av一区二区三区之一色屋| 欧美xxxxxxxx| 久草热8精品视频在线观看| 欧美日韩成人综合天天影院| 亚洲欧美在线高清| 91视频国产资源| 亚洲视频一二区| 91一区二区在线| 一区二区三区免费观看| 色综合一区二区| 一区二区激情视频| 91精品国产综合久久久久久| 日本在线观看不卡视频| 26uuu亚洲综合色欧美| 成人av在线影院| 亚洲在线成人精品| 777xxx欧美| av中文字幕不卡| 亚洲成a天堂v人片| 久久久久久久久蜜桃| 91视视频在线观看入口直接观看www| 亚洲综合区在线| 欧美大肚乱孕交hd孕妇| 成人一区二区三区视频| 亚洲成人动漫一区| 国产精品嫩草久久久久| 在线电影国产精品| 国产**成人网毛片九色 | 午夜精品福利一区二区蜜股av | 亚洲欧美日韩国产成人精品影院| 色综合久久中文综合久久97| 卡一卡二国产精品| 天天影视网天天综合色在线播放| 国产精品免费aⅴ片在线观看| 日韩视频在线你懂得|