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

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

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

    如何處理HTTP POST/GET請求

    Posted on 2009-08-29 11:56 林光炎 閱讀(662) 評論(0)  編輯  收藏 所屬分類: JAVA
    期:2005-11-14 11:44:00     [Host01.Com]   訪問:     [全屏查看全文]
    Servlet通過下面的方法來提供服務(wù):
    • 實現(xiàn)service方法。
    • 實現(xiàn)HttpServlet的doMethod方法(doGet、doDelete、doOptions、 doPost、doPut、doTrace)。
        通常,service方法用來從客戶請求(request)中提取信息,訪問擴(kuò)展資源,并基于上面的信息提供響應(yīng)(response)。

        對于HTTP Servlets,正確提供響應(yīng)的過程是首先填寫響應(yīng)(response)的頭信息,然后從響應(yīng)(response)中得到輸出流,最后向輸出流中寫入內(nèi)容信息。響應(yīng)(response)頭信息必須最先設(shè)置。下面將描述如何從請求(request)中獲得信息和產(chǎn)生HTTP響應(yīng)(response)。

        
  • 取得客戶端請求
        一個HttpServletRequest對象提供到達(dá)HTTP 頭部數(shù)據(jù),也允許你獲取客戶端的數(shù)據(jù)。怎樣獲取這些數(shù)據(jù)取決于HTTP端請求方法。不管用任何HTTP方式,你都可以用 getParameterValues方法返回特定名稱的參數(shù)值。對于用 HTTP GET 請求的方式,這個getQueryString方法將會返回一個可以用來分析的值。

        客戶端請求(request)包含了從客戶端傳遞到Servlet的數(shù)據(jù)。所有的請求(request)都實現(xiàn)了ServletRequest接口。這個接口定義了一些方法訪問下面的信息,如表14-1所示。

    表14-1  ServletRequest接口方法
                類 型 描 述	                         對 應(yīng) 方 法
                參數(shù),用來在客戶端和Servlet之間傳送信息 getAttribute(String name)
                getAttributeNames()
                getInputStream()
                getParameter(String name)
                getParameterMap()
                getParameterNames()
                getParameterValues(String name)
                對象值屬性,用來在Servlet容器和Servlet
                之間,或者協(xié)作的Servlet之間傳遞信息	    removeAttribute(String name)
                setAttribute(String name, Object o)
                有關(guān)請求使用的協(xié)議信息,
                客戶端和服務(wù)器在請求中的調(diào)用	   getContentLength()
                getContentType()
                getProtocol()
                getReader()
                getRealPath(String path)
                getRemoteAddr()
                getRemoteHost()
                getRequestDispatcher(String path)
                有關(guān)請求使用的協(xié)議信息,
                客戶端和服務(wù)器在請求中的調(diào)用       getScheme()
                getServerName()
                getServerPort()
                isSecure()
                有關(guān)localization的信息	       getCharacterEncoding()
                getLocale()
                getLocales()
                setCharacterEncoding(String env)


        下面的代碼段示范了如何使用request中的方法獲得客戶端信息。

    Enumeration params = request.getParameterNames();
                String paramName = null;
                String[] paramValues = null;
                while (params.hasMoreElements()) {
                paramName = (String) params.nextElement();
                paramValues = request.getParameterValues(paramName);
                System.out.println("\nParameter name is " + paramName);
                for (int i = 0; i < paramValues.length; i++) {
                System.out.println(", value " + i + " is " + paramValues[i].toString());
                }
                }


        HTTP Servlets使用HTTP request對象(HttpServletRequest),它包含了request URL、HTTP頭信息、查詢字符串,等等。HTTP request URL 包括幾個部分:
        http://: ?

        一般情況下:

    requestURI = contextPath + servletPath + pathInfo
                Context path:通過getContextPath方法獲得。
                Servlet Path:通過getServletPath方法獲得。
                PathInfo:通過getPathInfo方法獲得。


        如表14-2所示。

    表14-2  路徑的對應(yīng)
                Request Path	            Path Elements
                /catalog/help/feedback.jsp	ContextPath: /catalog ServletPath:
                /help/feedback.jsp PathInfo: null


        
  • 提供HTTP響應(yīng)
        響應(yīng)(response)包含了在服務(wù)器和客戶端之間傳遞的數(shù)據(jù)。所有的響應(yīng)(response)都實現(xiàn)了ServletResponse接口。這個接口定義了一些方法提供給開發(fā)人員使用,如表14-3所示。

    表14-3  ServletResponse接口方法
                類 型 描 述	                          對 應(yīng) 方 法
                獲得向客戶端發(fā)送數(shù)據(jù)的輸出流	 發(fā)送字符流:getWriter()
                發(fā)送字節(jié)流:getOutputStream()
                指示響應(yīng)返回的內(nèi)容類型(例如:text/html)
                已經(jīng)注冊的內(nèi)容類型名稱保存在IANA
                (Internet Assigned Numbers Authority) setContentType(java.lang.String type)
                指出是否是緩沖輸出。默認(rèn)情況下寫入輸出的
                內(nèi)容被立即發(fā)送到客戶端。使用緩沖后寫入輸出的內(nèi)容先
                不發(fā)送到客戶端,這樣Servlet有更多的時間設(shè)置相應(yīng)的
                狀態(tài)碼和頭信息,或者轉(zhuǎn)移到其他的Web資源	 flushBuffer()
                getBufferSize()
                isCommitted()
                reset()
                resetBuffer()
                setBufferSize(int size)
                setContentLength(int len)
                設(shè)置localization信息	            getCharacterEncoding()
                getLocale()
                setLocale(java.util.Locale loc)


        HTTP response類(HttpServletResponse)有一些代表HTTP頭信息的域:
        
  • 狀態(tài)碼用來指出響應(yīng)(response)失敗的原因。


        
  • Cookies在客戶端存儲應(yīng)用相關(guān)的信息,有時cookies用來維護(hù)和標(biāo)識用戶的session。

        Servlet首先設(shè)置響應(yīng)(response)頭信息,包括響應(yīng)(response)的內(nèi)容類別和緩沖區(qū)大小,然后在doGet方法中從響應(yīng)(response)獲得PrintWriter ,最后向輸出中寫入HTML代碼,調(diào)用close()方法提交這次對客戶端的響應(yīng)(response)。示范代碼如下:

    public void doGet (HttpServletRequest request,
                HttpServletResponse response)
                throws ServletException, IOException
                {
                // 設(shè)置頭信息
                response.setContentType("text/html");
                response.setBufferSize(8192);
                PrintWriter out = response.getWriter();
                // 向response中輸出
                out.println("<html>" +
                "<head><title>+
                messages.getString("TitleBookDescription")
                +</title></head>");
                ...
                out.println("</body></html>");
                // 關(guān)閉輸出流
                out.close();
                }
  • posts - 104, comments - 33, trackbacks - 0, articles - 0

    Copyright © 林光炎

    主站蜘蛛池模板: 亚洲Aⅴ在线无码播放毛片一线天 亚洲avav天堂av在线网毛片 | 亚洲国产成人久久一区二区三区| 日美韩电影免费看| XXX2高清在线观看免费视频| 亚洲人成毛片线播放| 四虎永久免费网站免费观看| 久久久久久久岛国免费播放| 亚洲精品国产摄像头| 国产亚洲无线码一区二区| 天天摸夜夜摸成人免费视频| 国产真人无码作爱免费视频| 亚洲最大av资源站无码av网址| 久久久青草青青国产亚洲免观| 黄页免费的网站勿入免费直接进入| 一区二区三区免费视频网站| 亚洲a级在线观看| 人人狠狠综合久久亚洲婷婷| 国产小视频在线免费| 最近免费中文字幕大全免费| 全黄A免费一级毛片| 国产亚洲玖玖玖在线观看| 亚洲va在线va天堂va四虎| 亚洲人成国产精品无码| 扒开双腿猛进入爽爽免费视频| 日韩电影免费在线观看| www永久免费视频| 亚洲av日韩av永久无码电影| 亚洲电影在线播放| 亚洲AV无码乱码在线观看富二代| 国产乱子伦精品免费女| 性做久久久久久久免费看| 久9这里精品免费视频| 男女拍拍拍免费视频网站| 国产亚洲精品国产福利在线观看| 亚洲精品在线免费观看| 亚洲精品乱码久久久久久自慰| 亚洲AV中文无码乱人伦在线视色| 永久免费毛片在线播放| 亚欧人成精品免费观看| 99久久免费观看| 亚欧日韩毛片在线看免费网站|