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

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

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

    andy_taoke
    大家一起來學JAVA
    posts - 9,comments - 3,trackbacks - 0
    中間件定義:
    中間件是一種獨立的系統軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源。中間件位于客戶機/ 服務器的操作系統之上,管理計算資源和網絡通訊。
    中間件特點:
    滿足大量應用的需要 ;
    運行于多種硬件和OS平臺 ;
    支持分布式計算,提供跨網絡、硬件和OS平臺的透明性的應用或服務的交互功能 ;
    支持標準的協議 ;
    支持標準的接口。
    中間件分類:
    分為數據訪問中間件、遠程過程調用中間件、消息中間件、交易中間件、對象中間件等。
    posted @ 2006-03-23 23:23 Fusion KISS 閱讀(371) | 評論 (0)編輯 收藏
    上次看到處理HEAD請求,下面是關于Web應用程序的配置問題。

    Web應用程序是Servlet、JSP、HTML文檔、圖片、模版以及其他可在支持Servlet的Web服務器上部署的所有Web資源的一個集合。
    (這句話好長,總之就是你能在網上看到的東西,或者一些產生動態Web頁的程序)。

    我們安裝了Tomcat就會知道,在webapps文件夾下面有很多的子文件夾,一個文件夾對應一個應用程序。他們是一堆的JSP程序以及配置文件。另外我們可以給他打包,成為一個存檔文件,擴展名為:war。

    WEB-INF目錄
    每個Web Apps,都有一個這樣的目錄,有一個web.xml文件。

    現在對xml作一點學習:
    XML是eXtensible Markup Language
    他與HTML類似,都是用標簽標記它的內容,并用尖括號來結束;
    XML和HTML的服務目標是不同的:XML文檔中的標簽沒有定義文字的顯示格式,而是解釋了文本的意思。它是一個可擴展的標記語言,他可以定制一些新的標簽來寫你自己需要的文檔。

    有幾個要注意的地方:
    1、XML區分大小寫(大小寫敏感)
    2、又開始的標簽必須有結束(標簽必須是一對)要么就這么寫:<servlet/>,用來代替一對的符號
    3、嵌套的元素不可以重疊!例如這樣寫就是非法的<outside><inside></outside></inside>
    4、所有數值必須加上單引號或者雙引號

    配置描述符:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app>
        <servlet>
            <servlet-name>
                hi
            </servlet-name>
            <servlet-class>
                HelloWorld
            </servlet-class>
        </servlet>   
    </web-app>

    web-app標簽表示這些是用來配置一個web應用程序的,servletname是一個你所寫的servlet的名字,class是他的類名,可以寫成所屬包名+類名的形式,有些IDE可以自動的生成。

    servlet映射
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app>
        <servlet>
            <servlet-name>
                hi
            </servlet-name>
            <servlet-class>
                HelloWorld
            </servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>
                hi
            </servlet-name>
            <url-pattern>
                /hello.html
            </url-patter>       
        </servlet-mapping>
    </web-app>
    servlet-mapping表示他來標示servlet的映射信息,映射過后我們就可以用自己定義的地址來訪問他;
    其中有兩個子標簽,一個是name,另一個是url-pattern。第一個不用說就是servlet里面定義的那個name;
    url-pattern指的是上面那個servlet-name所指定的servlet可以在瀏覽器中用什么樣的url訪問。

    設置有幾種:
    明確映射,就是一個地址,跟普通的相對路徑沒有什么區別。
    路徑前綴映射,/lite/*這樣子的url-pattern
    就是以/開頭,/*結尾,處理所有擁有該前綴的請求。這種映射機制,允許一個servlet來控制一個虛擬目錄層次的sevlet請求。
    擴展名映像:
    *.jsp
    可以表示這個servlet用來處理所有的JSP請求。
    默認映射,/
    如果沒有與之相匹配的servlet可以處理該請求,則將這個請求扔給這個servlet,等同于/*,要慎用!
    posted @ 2005-12-30 13:33 Fusion KISS 閱讀(590) | 評論 (1)編輯 收藏
    今天動手實踐了一下寫Servlet的代碼,感覺不錯.現在寫些東西給大家分享一下:

    我們是用Servlet的API處理HTTP請求的,現在我給大家看一段代碼,它的作用就是在瀏覽器里面打出一行字,經典的不能再經典(你想說老土我也不反對)就是,Hello,World
    package Chap2;

    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class HelloWorld extends HttpServlet
    {
        // eclipse非要讓我加這句話,要么會有一個警告,我看對運行沒有什么影響我就加了,不知道哪位高人知道怎么用這個東西
        private static final long serialVersionUID = 1L;

        // 這個方法可以處理GET的請求
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {

            // 設置一個Content-Type首部
            response.setContentType("text/html");
           
            // 這個東西就像你拿到了向客戶端瀏覽器寫字的一支筆
            PrintWriter out = response.getWriter();       
            // 現在可以往客戶端的瀏覽器寫HTML代碼了,想怎么寫就怎么寫,呵呵
            out.println( "<HTML>" );
            out.println( "<HEAD><TITLE>Hello World</TITLE></HEAD>" );
            out.println( "<BODY>" );
            out.println( "<BIG>Hello World</BIG>" );
            out.println( "</BODY></HTML>" );
        }
    }

    把這個東西發布到你的服務器下面,你就可以看到一行字:Hello,World.
    至于怎么配置服務器,近期我會給大家一份資料,里面詳細描述了配置JDK+Tomcat+Eclipse+MyEclipse的方法,這些軟件都可以到我的網站上去下載,鏈接在我的簽名里面!

    下面我們來點動態的東西,做完了以后,學過JSP的人們會發現,這個...不就是JSP么?
    對!JSP就是拿這個東西實現的,就如同Windows API和MFC的關系;相信如果你是個肯鉆研的主,早就不愿意學MFC那個把你規定的死死的東西了吧.
    第二個例子:
    package Chap2;

    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class Exp2 extends HttpServlet
    {
        private static final long serialVersionUID = 1L;

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

            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
           
            String name = request.getParameter( "name" );
            out.println( "<HTML>" );
            out.println( "<HEAD>" );
            out.println( "<TITLE>Hello " + name + ".</TITLE>" );
            out.println( "</HEAD>" );
            out.println( "<BODY>" );
            out.println( "Hello, " + name + "." );
            out.println( "</BODY>" );
            out.println( "</HTML>" );
        }
       
        public String getServletInfo()
        {
            return "A servlet that knows the name of the person to whom it's saying hello";
        }
    }
    這個Servlet可以接受一個name的參數,當然你可以新建一個頁面來讓用戶來提交這個參數.
    我給大家一個
    <HTML>
        <HEAD>
            <TITLE>Introductions</TITLE>
        </HEAD>
       
        <BODY>
            Exp2
            <FORM METHOD=GET ACTION="servlet/Exp2"> If you don't mind me asking, what is your name?
                <INPUT TYPE=TEXT NAME="name"></P>
                <INPUT TYPE=SUBMIT>
            </FORM>
        </BODY>
    </HTML>
    純粹的HTML代碼,簡單的不能再簡單,根據你服務器配置的不同和Servlet存放的地方的不同,你要看你的FORM標簽上面那個ACTION屬性該怎么填!

    Exp2那個Servlet就是接受了一個name的變量,然后叫一下你的名字,問候你下你呵呵.

    但是有時候用戶會發出一個HEAD請求(客戶端只想看到響應的首部時發出的請求),這個東西可能會讓你很煩,你心里會說這些人就會給我搗亂,發什么HEAD請求啊!確實這個東西看上去微不足道,也沒有doHead()的方法可以使用.任何有子類HttpServlet和實現了doGet方法的servlet都支持HEAD請求.

    現在我們看一下處理HEAD請求的工作過程:
    HttpServlet的service()方法確定HEAD請求并把它特殊對待。它構建一個修改過的HttpServletResponse對象,并把它和原來的請求一起發給doGet方法(你知道了,我們要在doGet那個東西里面做文章!)。很高興地告訴你,如果是一個HEAD請求,系統可以為我們自動屏蔽后面的輸出,但是如果讓我們來做一個判斷,你可以提高你的程序性能,也能加深我們對這個Servlet的了解。

    我們要在Exp2的doGet()方法中加一句話:
    if( request.getMethod().equals( "HEAD" ) ) return;
    通過request這個對象我們可以看到客戶端的請求類型,如果這個字符串時HEAD,哈哈,干掉他!

    但是,即使我們只是處理一個HEAD請求,我們也要設置Content-Type首部。
    posted @ 2005-12-30 13:32 Fusion KISS 閱讀(418) | 評論 (0)編輯 收藏
    HTTP servlet基礎
    內容:編寫和運行一個簡單的HTTP servlet
    包括如何在一個標準的Web應用程序上預見性servlet及其基于XML的配置描述

    HTTP基礎
    重點:GET POST方法

    HTTP是一個簡單的、無狀態的協議。

    在訪問一個Web服務的時候(方法就是填入一個URL加以訪問),瀏覽器會發出一個請求,類似于ftp里面的各種命令,這種請求要指定一個HTTP請求的名稱、URL、HTTP協議的版本;
    例子:GET /intro.html HTTP/1.0
    這個命令使用了GET方法向一個名為intro.html的文檔提出請求,用的是1.0版本的HTTP協議。

    之后,瀏覽器發送一個選擇性的首部信息告知服務器關于請求的附加信息,注意,這些信息不直接和你所要請求的那個URL有關,而是可以對服務器的響應有一點幫助。
    例子:
    User-Agent: Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)
    Accept: image/gif, image/jpeg, text/*, */*
    User-Agent說明了客戶端軟件的信息
    Accept說明了客戶端愿意接受的media(MIME)類型的數據;

    發送了附加信息,客戶端發送一個空行給服務器,表示已經完成。

    下面該服務器響應了,響應的第一行是用來指服務器所用的HTTP/1.0 200 OK
    200-是正常的提示
    還有一個我們比較常見的狀態碼:
    404-找不到

    發送了狀態條后,服務器發送響應首部,用來告訴客戶端,服務器使用的軟件和響應內容類型的信息。

    GET和POST
    前面提到過,發送請求的時候有一個叫做HTTP請求的東西(也叫做方法),最最常用的就是GET和POST了.
    看名字就知道:
    GET:取得信息的方法;說白了就是讀取
    POST:用來發送信息;就像在版上灌水一個道理

    GET方法(用來讀數據,地球人都知道了現在),請求中可以加入一些自身信息來更好地描述需求.比如在URL中顯式地發送一個信息給一個頁面;

    POST方法,如果要上傳一個東西,你可能要傳輸一個上M的文件,所以它用不同的技術來向服務器發送信息.一個POST請求把它的不限長度的數據作為HTTP請求體的一步分.通常通過Socket發送出去.傳送對用戶是不可見的(想象一下,如果你的信用卡號傳給銀行的時候對用戶可見,你的錢恐怕早就沒有了.呵呵
    posted @ 2005-12-30 13:26 Fusion KISS 閱讀(380) | 評論 (0)編輯 收藏
    與Java一樣,servlet主要設計思想是可移植性。Servlet可用于所有支持Java的平臺,以及所有主流服務器。
    包含在java.servlet包里面;
    想要用servlet弄出一點不同尋常的東西,我們除了servlet代碼以外,最重要的是一個servlet runner(servlet容器)。
    Tomcat是一個經過Sun認可的按照servlet標準參考實現的一個比較優秀的servlet容器。
    現在版本已經出到了5.5.12

    servlet是java技術的副產品,所以也具有java的優點(當然,JSP也繼承了這些優點)
    一提到Java,大家都知道它的可移植性造就了它今天的普及和發達程度。當然,servlet的優點還有很多:可移植性、功能強大(說的跟廢話似的)、高效、耐久、安全、簡潔、集成化、可擴展性、靈活性…………
    posted @ 2005-12-28 12:41 Fusion KISS 閱讀(472) | 評論 (0)編輯 收藏
    主站蜘蛛池模板: 国产亚洲精品激情都市| 在线观看免费亚洲| 婷婷亚洲综合五月天小说| 一级毛片免费播放男男| 免费a级毛片永久免费| 色天使亚洲综合一区二区| 免费爱爱的视频太爽了| 亚洲色偷偷综合亚洲AV伊人蜜桃| 成年午夜视频免费观看视频| 亚洲精品无播放器在线播放| 成在人线AV无码免费| 粉色视频成年免费人15次| 亚洲婷婷国产精品电影人久久| 一级做性色a爰片久久毛片免费| 亚洲日韩在线观看免费视频| a级毛片毛片免费观看永久| 久久精品国产96精品亚洲| 69视频免费观看l| 国产成人亚洲综合一区| 国产高清免费在线| 国产黄色免费观看| 亚洲欧洲综合在线| 国产又粗又猛又爽又黄的免费视频 | 国产精品无码一区二区三区免费 | 偷自拍亚洲视频在线观看99| 亚洲国产综合精品一区在线播放| 久久WWW免费人成—看片| 亚洲AV日韩AV高潮无码专区| 青青久在线视频免费观看| 免费夜色污私人影院网站电影| 国产亚洲av片在线观看16女人| 久久精品国产免费观看| 色天使亚洲综合一区二区| 亚洲av永久无码精品漫画| 成年女人免费v片| 十八禁视频在线观看免费无码无遮挡骂过 | 成人网站免费观看| 9久久免费国产精品特黄| 亚洲av日韩av无码av| 亚洲午夜国产精品无码| 男人的好免费观看在线视频|