servlet復習

復習1:

一.get
    1.如何編寫一個servlet?
    ①創建一個類去繼承HttpServlet,重寫doGet|doPost方法。
    ②配置訪問路徑(路徑是唯一的)
      1)注解
      2)xml配置
    2.響應數據:HttpServletResponse
    ①首先設置編碼: HttpServletResponse.setContentType("text/html;charset=utf-8");| 
  HttpServletResponse.setCharacterEncoding("utf-8")
        ②HttpServletResponse去獲取輸出流:PrintWriter pw =  HttpServletResponse.getWriter(); pw.print("xxx");

    3.接受請求參數HttpServletRequest
        ①HttpServletRequest去調用getParameter("表單的name屬性值或者url在后面追加的值")
        ②解決中文亂碼 String value = new String(值.getBytes("ISO-8859-1"),"UTF-8");

    4.超鏈接是get請求
    二.post(如果直接在url輸入訪問路徑,默認是get請求,如果沒有get方法報錯)
    1.post解決中文亂碼請求參數的中文亂碼
        HttpServletResponse.setCharacterEncoding("utf-8");

    三。get與post的區別:
        GET請求的特點:

    從使用經驗上有如下總結:

            1.GET是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在URL中可以看到。 
            2.GET傳送的數據量較小,不能大于2KB。 
                3.GET安全性非常低 (路由器會記錄請求地址)
            如下情況中瀏覽器會發送GET類型的請求:
                1.在地址欄輸入一個地址 
                2.點擊頁面中的鏈接    
                3.表單的默認提交方式 
        POST請求的特點:
            從使用經驗上有如下總結:
                1.POST是將表單內各個字段與其內容放置在實體內容中內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。 
                2.POST傳送的數據量較大,一般被默認為不受限制 
                3.POST安全性較高,將表單的Method屬性設置為POST時,瀏覽器會發送POST請求
        GET和POST還有一個重大區別,
            簡單的說:
                GET產生一個TCP數據包;POST產生兩個TCP數據包。
            長的說:
                對于GET方式的請求,瀏覽器會把http header和data一并發送出去,服務器響應200(返回數據);
                而對于POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。
                也就是說,GET只需要汽車跑一趟就把貨送到了,而POST得跑兩趟,第一趟,
先去和服務器打個招呼“嗨,我等下要送一批貨來,你們打開門迎接我”,然后再回頭把貨送過去。
                因為POST需要兩步,時間上消耗的要多一點,看起來GET比POST更有效。因此Yahoo團隊有推薦用GET替換.
                POST來優化網站性能。但這是一個坑!跳入需謹慎。為什么?
            1. GET與POST都有自己的語義,不能隨便混用。
            2. 據研究,在網絡環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。
而在網絡環境差的情況下,兩次包的TCP在驗證數據包完整性上,有非常大的優點。
                3. 并不是所有瀏覽器都會在POST中發送兩次包,Firefox就只發送一次。

復習2:

    一.servlet生命周期
        ①實例化 <load - on - startup>x</load - on - startup>,x>=0 init方法會啟動服務器的時候執行,x<0訪問的時候init()才會執行
        ②初始化 init():只會執行一次
        ③就緒service():訪問的時候執行
        ④銷毀destory():關閉服務器的時候執行
    二.servlet四大域
        ①application:整合web
        ②session :瀏覽器打開到瀏覽器關閉
        ③request :一次請求一次響應,與轉發結合使用
        ④pageContext:整個jsp頁面
    三.Jsp
        1.表達式
            ①<%= ... %>(方便輸出)
            ②<% ... %>(完成較長的邏輯運算)
            ③<%! ... %>(添加屬性或者方法)
        2.三大指令
            ①page : 導包
            ②include : 引入頁面
            ③taglib :引入第三方jar
    四。重定向與轉發
        重定向:瀏覽器的兩次請求,url會發生變化
        轉  發: url不發生變化,是服務器的兩次請求
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 寫后記:2017/11/22最近因為吉趣項目需要做校園網的課表、成績查詢功能,不得不使用模擬請求,去請求uims教...
    大海畫家閱讀 1,259評論 0 2
  • JS跨域 同源策略 瀏覽器出于安全方面的考慮,只允許本域下的接口交互;不同源的客戶端腳本不允許相互訪問注意: 是瀏...
    放風箏的小小馬閱讀 131評論 0 0
  • 我一直在默默地尋找一個人,可是,我卻不清楚自己究竟想要什么,一路走一路停,兜兜轉轉,然而卻回不去,誰也過不來。...
    蘇綰兒閱讀 253評論 0 2
  • 一個朋友講述了自己最近的苦惱。 她說自己去年剛進的新公司,初來乍到沒什么熟人,同事里有一位熱心的姐姐對自己工作提供...
    偶買噶的的閱讀 275評論 0 0