天天看點

逆水行舟之servlet學習第二天

一、項目示範

  1. 将spring的中的jdbc包放在WEB-INT目錄下:
    逆水行舟之servlet學習第二天
    2. 建立資料庫(資料庫名:template,表名user_info)
    逆水行舟之servlet學習第二天
    3. 編寫User JavaBean(屬性名與表中字段名一樣)
    逆水行舟之servlet學習第二天
    4. 編寫mysql配置檔案druid.properties(資料庫名template)
    逆水行舟之servlet學習第二天
    5. 編寫連接配接池
    逆水行舟之servlet學習第二天
    6. 編寫UserDao接口有一個login(登入)抽象方法
    逆水行舟之servlet學習第二天
    7. 編寫UserDao實作類UserDaoImpl,重寫login方法
    逆水行舟之servlet學習第二天
    8. 編寫測試類(測試資料庫的連接配接和通路對象是否有錯誤)
    逆水行舟之servlet學習第二天
    9. 在index.jsp書寫一個form表單(action要與servlet注解名一樣,name必寫)
    逆水行舟之servlet學習第二天
    10. 編寫servletLogin(用過表單name擷取資料,輸送到資料庫進行驗證)
    逆水行舟之servlet學習第二天
    續:
    逆水行舟之servlet學習第二天
    11. 編寫登入失敗ServletAA
    逆水行舟之servlet學習第二天
    12. 編寫驗證成功ServletBB
    逆水行舟之servlet學習第二天

二、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

    * StringBuffer getRequestURL() :http://localhost/web_day03

    * URL:統一資源定位符 : http://localhost/day14/demo1	中華人民共和國
     			* URI:統一資源辨別符 : /day14/demo1					共和國
     		
     		6. 擷取協定及版本:HTTP/1.1
     			* String getProtocol()
    
     		7. 擷取客戶機的IP位址:
     			* String getRemoteAddr()
     		
     2. 擷取請求頭資料
     	* 方法:
     		* (*)String getHeader(String name):通過請求頭的名稱擷取請求頭的值
     		* Enumeration<String> getHeaderNames():擷取所有的請求頭名稱
     	
     3. 擷取請求體資料:
     	* 請求體:隻有POST請求方式,才有請求體,在請求體中封裝了POST請求的請求參數
     	* 步驟:
     		1. 擷取流對象
     			*  BufferedReader getReader():擷取字元輸入流,隻能操作字元資料
     			*  ServletInputStream getInputStream():擷取位元組輸入流,可以操作所有類型資料
     				* 在檔案上傳知識點後講解
    
     		2. 再從流對象中拿資料
               
    1. 其他功能:
      1. 擷取請求參數通用方式:不論get還是post請求方式都可以使用下列方法來擷取請求參數
        1. String getParameter(String name):根據參數名稱擷取參數值 username=zs&password=123
        2. String[] getParameterValues(String name):根據參數名稱擷取參數值的數組 hobby=xx&hobby=game
        3. Enumeration getParameterNames():擷取所有請求的參數名稱
        4. Map<String,String[]> getParameterMap():擷取所有參數的map集合
        • 中文亂碼問題:
          • get方式:tomcat 8 已經将get方式亂碼問題解決了
          • post方式:會亂碼
            • 解決:在擷取參數前,設定request的編碼request.setCharacterEncoding(“utf-8”);
      2. 請求轉發:一種在伺服器内部的資源跳轉方式
        1. 步驟:
          1. 通過request對象擷取請求轉發器對象:RequestDispatcher getRequestDispatcher(String path)
          2. 使用RequestDispatcher對象來進行轉發:forward(ServletRequest request, ServletResponse response)
        2. 特點:
          1. 浏覽器位址欄路徑不發生變化
          2. 隻能轉發到目前伺服器内部資源中。
          3. 轉發是一次請求
      3. 共享資料:
        • 域對象:一個有作用範圍的對象,可以在範圍内共享資料
        • request域:代表一次請求的範圍,一般用于請求轉發的多個資源中共享資料
        • 方法:
          1. void setAttribute(String name,Object obj):存儲資料
          2. Object getAttitude(String name):通過鍵擷取值
          3. void removeAttribute(String name):通過鍵移除鍵值對
      4. 擷取ServletContext:
        • ServletContext getServletContext()

補充:

request對象和response對象的原理:

1. request和response對象是由伺服器建立的。我們來使用它們

2. request對象是來擷取請求消息,response對象是來設定響應消息

Learn to live:

當你去釣魚的時候,應該想的是魚吃蟲子,而不是想的你喜歡吃魚或者漢堡包 (卡耐基《人性的弱點》)

繼續閱讀