3六、Request

請求和響應過程:一、tomcat服務器會根據請求url中的資源路徑,建立對應的Servlet實現類對象程序員

                        二、tomcat服務器會自動建立request和response對象,request對象中封裝請求消息數據數組

                        三、tomcat將request和response兩個對象傳遞給service方法,而且調用service方法瀏覽器

                        四、程序員能夠勇敢request對象獲取請求消息數據,經過response對象設置響應消息數據tomcat

                        五、服務器在給瀏覽器做出響應以前,會從response對象中拿程序員設置的響應消息數據服務器

 

Request對象的繼承體系結構:jsp

ServletRequest->HttpServletRequest->RequestFacade編碼

 

request的功能url

一、獲取請求消息spa

        獲取請求行數據對象

                例如:GET /Web_servlet/demo?name = user HTTP/1.1

                方法:一、String getMethod()獲取請求方式,GET

                         二、String getContextPath() 獲取虛擬目錄,/Web_ servlet

                         三、String getServeltPath()獲取servlet路徑,/demo

                         四、String getQueryString()獲取get請求參數,name=user

                         五、String getRequestURI()獲取請求URI,/Web_servlet/demo

                         六、String getRequesrURL()獲取請求URL,http://localhost/Web_servlet/demo

                         七、String getProtocol()獲取協議及版本,HTTP/1.1

                         八、String getRemoteAddr()獲取客戶端IP地址

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    /*request.getRequestDispatcher("/hello.jsp").forward(request,response);*/

    String method = request.getMethod();
    System.out.println(method);

    String contextPath = request.getContextPath();
    System.out.println(contextPath);

    String servletPath = request.getServletPath();
    System.out.println(servletPath);

    String queryString = request.getQueryString();
    System.out.println(queryString);

    String requestURI = request.getRequestURI();
    System.out.println(requestURI);

    StringBuffer requestURL = request.getRequestURL();
    System.out.println(requestURL);

    String protocol = request.getProtocol();
    System.out.println(protocol);

    String remoteAddr = request.getRemoteAddr();
    System.out.println(remoteAddr);


}

        獲取請求頭數據

                  方法:一、String getHeader(String name):經過請求頭的名稱獲取請求頭的值

                           二、Enumeration<String> getHeaderNames():獲取全部的請求頭名稱                

        獲取請求體數據

                    經過POST請求方式,纔有請求體,在請求體中封裝了POST請求的請求參數

                    步驟:一、獲取流對象

                                        BufferedReader getReader():獲取字符輸入流,只能操做字符數據

                                        ServletInputStream getInputStream():獲取字節輸入流,能夠操做全部類型的數據

                             二、再從流對象中拿數據                

二、其餘功能

            獲取請求參數通用方法:一、String getParameter(String name)根據參數名稱獲取參數值

                                             二、String[] getParameterValues(String name):根據參數名稱獲取參數值的數組

                                             三、Enumeration<String[]> getParameterNames():獲取全部請求的參數名稱

                                             四、Map<String ,String[] >getParameterMap():獲取全部參數的map集合

                      注意:中文亂碼問題:POST方式發送中文請求會產生亂碼,解決方法:設置流的編碼,request.setCharacterEncoding("UTF-8");

            請求轉發:一種在服務器內部的資源跳轉方式

                       步驟:一、經過request對象獲取請求轉發器對象:requsetDispatcher getRequsetDispatcher(String path)

                                二、使用RequsetDispatcher對象來進行轉發:forward(ServletRequset requset,ServletResponse response)

                        特色:一、瀏覽器地址欄路徑不發送變化

                                 二、只能轉發到當前服務器內部資源中

                                 三、轉發是一次請求

            共享數據:

                        域對象:一個有做用範圍的對象,能夠在範圍內共享數據

                        request:表明一次請求的範圍,通常用於請求轉發的多個資源中共享數據

                        方法:一、setAttribute(String name ,Object obj):存儲數據

                                 二、getAttribute(String name):經過鍵獲取值

                                 三、removeAttribute(String name):經過鍵移除數據

            獲取servletContext:

                        方法:getServletContext();

相關文章
相關標籤/搜索