Request —— 获取请求行数据 获取请求头数据 获取请求体数据
1. request對象和response對象的原理
?? ?1. request和response對象是由服務器創建的。我們來使用它們
?? ?2. request對象是來獲取請求消息,response對象是來設置響應消息
2. request對象繼承體系結構:?? ?
?? ?ServletRequest?? ??? ?--?? ?接口
?? ??? ?|?? ?繼承
?? ?HttpServletRequest?? ?-- 接口
?? ??? ?|?? ?實現
?? ?org.apache.catalina.connector.RequestFacade 類(tomcat)
3. 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/day14/demo1
?? ??? ??? ??? ??? ?* 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():獲取所有的請求頭名稱
?? ??? ??? ?
package cn.itcast.web.request;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Enumeration;@WebServlet("/requestDemo3") public class RequestDemo3 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//演示獲取請求頭數據:user-agentString agent = request.getHeader("user-agent");//判斷agent的瀏覽器版本if(agent.contains("Chrome")){//谷歌System.out.println("谷歌來了...");}else if(agent.contains("Firefox")){//火狐System.out.println("火狐來了...");}} }
package cn.itcast.web.request;import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;@WebServlet("/requestDemo4") public class RequestDemo4 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//演示獲取請求頭數據:refererString referer = request.getHeader("referer");System.out.println(referer);//http://localhost/day14/login.html//防盜鏈if(referer != null ){if(referer.contains("dym_day14")){//正常訪問// System.out.println("播放電影....");response.setContentType("text/html;charset=utf-8");response.getWriter().write("播放電影....");}else{//盜鏈//System.out.println("想看電影嗎?來優酷吧...");response.setContentType("text/html;charset=utf-8");response.getWriter().write("想看電影嗎?來優酷吧...");}}} }
?3. 獲取請求體數據:
?? ??? ??? ?* 請求體:只有POST請求方式,才有請求體,在請求體中封裝了POST請求的請求參數
?? ??? ??? ?* 步驟:
?? ??? ??? ??? ?1. 獲取流對象
?? ??? ??? ??? ??? ?* ?BufferedReader getReader():獲取字符輸入流,只能操作字符數據
?? ??? ??? ??? ??? ?* ?ServletInputStream getInputStream():獲取字節輸入流,可以操作所有類型數
?? ??? ??? ??? ?2. 再從流對象中拿數據
regist.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>注冊頁面</title> </head> <body><form action="/dym_day14/requestDemo5" method="post"><input type="text" placeholder="請輸入用戶名" name="username"><br><input type="text" placeholder="請輸入密碼" name="password"><br><input type="submit" value="注冊"></form></body> </html>RequestDemo5.java
package cn.itcast.web.request;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.IOException;@WebServlet("/requestDemo5") public class RequestDemo5 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//獲取請求消息體--請求參數//1.獲取字符流BufferedReader br = request.getReader();//2.讀取數據String line = null;while((line = br.readLine()) != null){System.out.println(line);}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {} } 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Request —— 获取请求行数据 获取请求头数据 获取请求体数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Servlet的体系结构|| Servl
- 下一篇: mybatis执行查询的所有分析和创建代