servlet復(fù)習(xí)

復(fù)習(xí)1:

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

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

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

    三。get與post的區(qū)別:
        GET請求的特點:

    從使用經(jīng)驗上有如下總結(jié):

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

復(fù)習(xí)2:

    一.servlet生命周期
        ①實例化 <load - on - startup>x</load - on - startup>,x>=0 init方法會啟動服務(wù)器的時候執(zhí)行,x<0訪問的時候init()才會執(zhí)行
        ②初始化 init():只會執(zhí)行一次
        ③就緒service():訪問的時候執(zhí)行
        ④銷毀destory():關(guān)閉服務(wù)器的時候執(zhí)行
    二.servlet四大域
        ①application:整合web
        ②session :瀏覽器打開到瀏覽器關(guān)閉
        ③request :一次請求一次響應(yīng),與轉(zhuǎn)發(fā)結(jié)合使用
        ④pageContext:整個jsp頁面
    三.Jsp
        1.表達(dá)式
            ①<%= ... %>(方便輸出)
            ②<% ... %>(完成較長的邏輯運算)
            ③<%! ... %>(添加屬性或者方法)
        2.三大指令
            ①page : 導(dǎo)包
            ②include : 引入頁面
            ③taglib :引入第三方j(luò)ar
    四。重定向與轉(zhuǎn)發(fā)
        重定向:瀏覽器的兩次請求,url會發(fā)生變化
        轉(zhuǎn)  發(fā): url不發(fā)生變化,是服務(wù)器的兩次請求
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容