一、項目示範
- 将spring的中的jdbc包放在WEB-INT目錄下: 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學習第二天 逆水行舟之servlet學習第二天
二、Request
擷取請求消息資料
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. 再從流對象中拿資料
- 其他功能:
- 擷取請求參數通用方式:不論get還是post請求方式都可以使用下列方法來擷取請求參數
- String getParameter(String name):根據參數名稱擷取參數值 username=zs&password=123
- String[] getParameterValues(String name):根據參數名稱擷取參數值的數組 hobby=xx&hobby=game
- Enumeration getParameterNames():擷取所有請求的參數名稱
- Map<String,String[]> getParameterMap():擷取所有參數的map集合
- 中文亂碼問題:
- get方式:tomcat 8 已經将get方式亂碼問題解決了
- post方式:會亂碼
- 解決:在擷取參數前,設定request的編碼request.setCharacterEncoding(“utf-8”);
- 請求轉發:一種在伺服器内部的資源跳轉方式
- 步驟:
- 通過request對象擷取請求轉發器對象:RequestDispatcher getRequestDispatcher(String path)
- 使用RequestDispatcher對象來進行轉發:forward(ServletRequest request, ServletResponse response)
- 特點:
- 浏覽器位址欄路徑不發生變化
- 隻能轉發到目前伺服器内部資源中。
- 轉發是一次請求
- 共享資料:
- 域對象:一個有作用範圍的對象,可以在範圍内共享資料
- request域:代表一次請求的範圍,一般用于請求轉發的多個資源中共享資料
- 方法:
- void setAttribute(String name,Object obj):存儲資料
- Object getAttitude(String name):通過鍵擷取值
- void removeAttribute(String name):通過鍵移除鍵值對
- 擷取ServletContext:
- ServletContext getServletContext()
補充:
request對象和response對象的原理:
1. request和response對象是由伺服器建立的。我們來使用它們
2. request對象是來擷取請求消息,response對象是來設定響應消息
Learn to live:
當你去釣魚的時候,應該想的是魚吃蟲子,而不是想的你喜歡吃魚或者漢堡包 (卡耐基《人性的弱點》)