Http && Request

Http
    概念:Hyper Test Transfer Protocol 超文本傳輸協議
        * 傳輸協議:定義了,客戶端和服務器端通訊時,發送數據的格式
        * 特色:
            1. 基於TCP/IP的高級協議
            2. 默認端口號:80
            3. 基於請求響應/模型的  一次請求對應一次響應
            4. 無狀態的:每次請求之間相互獨立,不能去交互數據
        * 歷史版本:區別:1.1比1.0節省資源,複用鏈接,而1.0每一次請求創建新的鏈接
* 請求消息數據格式:
            1.請求行:
                請求方式 請求url 請求協議/版本
                GET/login.html HTTP/1.1
                
                * 情求方式:
                    * HTTP協議有7種請求方式,常見兩種
                        * GET:
                            1. 請求參數在請求行中,在url後
                            2. 請求的url長度是有限制的
                            3. 不太安全
                        * POST:
                            1. 請求參數在請求體中
                            2. 請求的url長度是沒有限制的
                            3. 相對安全
            2.請求頭:客戶端瀏覽器告訴服務器一些信息。頭是固定的,值不同
                請求頭名稱:請求頭值
                * 常見的請求頭
                    1. User-Agent:瀏覽器告訴服務器,我訪問你使用的瀏覽器版本信息
                        * 能夠在服務器端獲取該頭的信息,解決瀏覽器的兼容性問題
                        * 文件下載
                        
                    2. Referer
                        * 告訴服務器,我(當前請求)從哪裏來
                            * 做用:
                                1. 防盜鏈
                                2. 統計工做
            3.請求空行
                空行,就是用於分割POST請求的請求頭,請求體的
            4.請求體(正文):
                * 封裝POST請求消息的請求參數的
原理
訪問頁面 產生 請求/相應
一旦訪問路徑 ---> 建立servlet對象
建立requset、response對象,傳給servlet對象
servlet對象的service方法接受request、response對象
    request裏面封裝的是請求路徑攜帶的數據(請求行 請求頭 請求體)
    reponse 相應對象--->相應數據由程序員提供

Request:
    1. request對象和response對象原理
        * request對象和response對象是由服務器建立的。咱們來使用它們
        * request對象是來獲取請求消息,response對象是來設置響應消息
    2. Request功能:
        1. 獲取請求消息數據
            1. 獲取請求行數據
                * GET /day14/demo1?name=zhangsan HTTP/1.1
                * 方法:
                    1. 獲取請求方式:GET
                        * String getMethod()
                    (掌握)2. 獲取虛擬目錄:/day14
                        * String getContextPath()
                    3. 獲取servlet路徑:/demo1
                        * String getServletPath()
                    4. 獲取get方式請求參數:name=zhangsan
                        * String getQueryString()
                    (掌握)5. 獲取請求URI:/day14/demo1
                        * String getRequestURI():/day14/demo1
                        * StirngBuffer getRequestURL():http"//localhost/day14/demo1
                    6. 獲取協議及版本:HTTP/1.1
                        * String get Protocol()
                    7. 獲取客戶機的IP地址:
                        * String getRemoteAddr()

            2. 獲取請求頭數據
                * 方法:
                    (掌握)* String getHeader(String name):經過請求頭的名稱獲取請求頭的值
                    * Enumeration<String> getHeaderNames():獲取全部的請求頭名稱
            3. 獲取請求體數據
        2. 其餘功能:
            一、獲取請求參數通用方式
                * String getParameter(String name):根據參數名稱獲取參數值(Iput或者超連接傳來的值)
                * String getParameterValues(String name):根據參數名稱獲取參數值的數組(僅在複選框使用)
                * Enumeration<String> getParameterNames();獲取全部請求的參數名稱
                * Map<String,String[]> getParameterMap():獲取全部參數的Map集合-->配合beanUtils的jar包
                
                * 中文亂碼問題:
                    * GET方式:tomcat8已經將get方式亂碼問題解決了
                    * POST方式:會亂碼
                        * 解決:在獲取參數前,設置request的編碼:request.setCharacterEncoding("編碼")
                    
            二、請求轉發:一種在服務器內部進行資源跳轉的方式
                1. 步驟:
                    1. 經過request對象獲取請求轉發器對象 getRequestDispatcher("資源路徑")
                    2. 使用這個對象進行轉發:forward(request,response)
                2. 特色:
                    1. 瀏覽器地址欄路徑不發生變化
                    2. 只能轉發到當前服務器內部資源中
                    3. 轉發是一次請求
            三、共享數據:
                * 域對象:一個有做用範圍的對象,能夠在範圍內共享數據。
                * request域:表明一次請求的範圍,通常用於請求轉發的多個資源中共享數據
                * 方法:
                    1. setAttribute(String name,Object obj):存儲數據
                    2. Object getAttribute(String name):經過鍵獲取值
                    3. void removeAttribute(String name):經過鍵移除鍵值對
            四、 獲取ServletContext域對象:
                * ServletContext getServletContext()
            

    4個功能:
    api(2個)
    
二、四大域對象
    HttpServletRequest
    HttpSession
    ServletContext
    
    PageContext(jsp)html

相關文章
相關標籤/搜索