日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Request和Response-学习笔记01【Request_原理和继承体系、Request_获取请求数据】

發布時間:2024/9/30 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Request和Response-学习笔记01【Request_原理和继承体系、Request_获取请求数据】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • Java后端 學習路線 筆記匯總表【黑馬程序員】
  • Request和Response-學習筆記01【Request_原理和繼承體系、Request_獲取請求數據】【day01】
  • Request和Response-學習筆記02【請求轉發和request共享數據、Request_獲取ServletContext、request登錄案例】[day01]
  • Request和Response-學習筆記03【HTTP響應協議、response之重定向、response之相對路徑和絕對路徑】【day02】
  • Request和Response-學習筆記04【response之輸出數據、response之驗證碼】【day02】
  • Request和Response-學習筆記05【ServletContext對象、文件下載】【day02】
  • 目錄

    01 Request_原理和繼承體系

    Request_原理

    Request_繼承體系

    02 Request_獲取請求數據

    Request_獲取請求行數據_方法介紹

    Request_獲取請求行數據_代碼演示

    Request_獲取請求頭數據

    獲取所有請求頭名稱

    演示獲取請求頭數據:user-agent

    演示獲取請求頭數據、防盜鏈

    Request_獲取請求體數據

    Request_獲取請求參數通用方式

    Request_獲取請求參數通用方式

    1、String getParameter(String name):根據參數名稱獲取參數值

    2、String[] getParameterValues(String name):根據參數名稱獲取參數值的數組

    3、Enumeration getParameterNames():獲取所有請求的參數名稱

    4、Map getParameterMap():獲取所有參數的map集合,string[]>

    代碼——獲取請求參數通用方式

    Request_獲取請求參數中文亂碼問題

    get方法(tomcat 8 已經將get方式亂碼問題解決)

    post方式(設置request的編碼)


    01 Request_原理和繼承體系

    Request_原理

    1. request對象和response對象的原理
    ?? ?1. request和response對象是由服務器創建的。我們來使用它們。
    ?? ?2. request對象是來獲取請求消息,response對象是來設置響應消息。

    request&response對象原理

    Request_繼承體系

    1. request對象和response對象的原理
    ?? ?1. request和response對象是由服務器創建的。我們來使用它們。
    ?? ?2. request對象是來獲取請求消息,response對象是來設置響應消息。

    2. request對象繼承體系結構:?? ?
    ?? ?ServletRequest? ? ? ? ?--?? ?接口
    ?? ??? ?|?? ?繼承
    ?? ?HttpServletRequest??-- 接口
    ?? ??? ?|?? ?實現
    ?? ?org.apache.catalina.connector.RequestFacade 類(tomcat)

    3. request:獲取請求消息

    02 Request_獲取請求數據

    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
    ?? ??? ??? ??? ?6. 獲取協議及版本:HTTP/1.1
    ?? ??? ??? ??? ??? ?* String getProtocol()

    ?? ??? ??? ??? ?7. 獲取客戶機的IP地址:
    ?? ??? ??? ??? ??? ?* String getRemoteAddr()
    ?? ??? ?2. 獲取請求頭數據
    ?? ??? ?3. 獲取請求體數據

    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. 獲取請求頭數據? ? ? ? ? ??
    ?? ??? ?3. 獲取請求體數據

    ??

    ??

    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;/*** 演示Request對象獲取請求行數據*/ @WebServlet("/requestDemo1") public class RequestDemo1 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {/*1. 獲取請求方式 :GET* String getMethod()2. (*)獲取虛擬目錄:/day14* String getContextPath()3. 獲取Servlet路徑: /requestDemo1* String getServletPath()4. 獲取get方式請求參數:name=zhangsan* String getQueryString()5. (*)獲取請求URI:/day14/demo1* String getRequestURI(): /day14/requestDemo1* StringBuffer getRequestURL() :http://localhost/day14/requestDemo16. 獲取協議及版本:HTTP/1.1* String getProtocol()7. 獲取客戶機的IP地址:* String getRemoteAddr()*///1. 獲取請求方式 :GETString method = request.getMethod();System.out.println(method);//2.(*)獲取虛擬目錄:/day14String contextPath = request.getContextPath();System.out.println(contextPath);//3. 獲取Servlet路徑: /demo1String servletPath = request.getServletPath();System.out.println(servletPath);//4. 獲取get方式請求參數:name=zhangsanString queryString = request.getQueryString();System.out.println(queryString);//5.(*)獲取請求URI:/day14/demo1String requestURI = request.getRequestURI();StringBuffer requestURL = request.getRequestURL();System.out.println(requestURI);System.out.println(requestURL);//6. 獲取協議及版本:HTTP/1.1String protocol = request.getProtocol();System.out.println(protocol);//7. 獲取客戶機的IP地址:String remoteAddr = request.getRemoteAddr();System.out.println(remoteAddr);} }

    Request_獲取請求頭數據

    1. request對象和response對象的原理
    ?? ?1. request和response對象是由服務器創建的。我們來使用它們。
    ?? ?2. request對象是來獲取請求消息,response對象是來設置響應消息。

    2. request對象繼承體系結構:
    ?? ?ServletRequest?? ??? ?--?? ?接口
    ?? ??? ?|?? ?繼承
    ?? ?HttpServletRequest?? ?-- 接口
    ?? ??? ?|?? ?實現
    ?? ?org.apache.catalina.connector.RequestFacade 類(tomcat)

    3. request功能:
    ?? ?1. 獲取請求消息數據
    ?? ??? ?1. 獲取請求行數據? ? ? ? ? ? ? ??
    ?? ??? ?2. 獲取請求頭數據
    ?? ??? ??? ?* 方法:
    ?? ??? ??? ??? ?* (*)String getHeader(String name):通過請求頭的名稱獲取請求頭的值
    ?? ??? ??? ??? ?* Enumeration<String> getHeaderNames():獲取所有的請求頭名稱

    ?? ??? ?3. 獲取請求體數據

    獲取所有請求頭名稱

    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("/requestDemo2") public class RequestDemo2 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//演示獲取請求頭數據//1.獲取所有請求頭名稱Enumeration<String> headerNames = request.getHeaderNames();//2.遍歷while (headerNames.hasMoreElements()) {String name = headerNames.nextElement();//根據名稱獲取請求頭的值String value = request.getHeader(name);System.out.println(name + "---" + value);}} }

    演示獲取請求頭數據:user-agent

    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-agent 告訴服務器客戶端的版本是什么—>判斷瀏覽器版本String agent = request.getHeader("user-agent"); // 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("/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("想看電影嗎?來優酷吧...");}}} }

    Request_獲取請求體數據

    1. request對象和response對象的原理
    ?? ?1. request和response對象是由服務器創建的。我們來使用它們。
    ?? ?2. request對象是來獲取請求消息,response對象是來設置響應消息。

    2. request對象繼承體系結構:
    ?? ?ServletRequest?? ??? ?--?? ?接口
    ?? ??? ?|?? ?繼承
    ?? ?HttpServletRequest?? ?-- 接口
    ?? ??? ?|?? ?實現
    ?? ?org.apache.catalina.connector.RequestFacade 類(tomcat)

    3. request功能:
    ?? ?1. 獲取請求消息數據
    ?? ??? ?1. 獲取請求行數據
    ?? ??? ?2. 獲取請求頭數據
    ?? ??? ?3. 獲取請求體數據:
    ?? ??? ??? ?* 請求體:只有POST請求方式,才有請求體,在請求體中封裝了POST請求的請求參數
    ?? ??? ??? ?* 步驟:
    ?? ??? ??? ??? ?1. 獲取流對象
    ?? ??? ??? ??? ??? ?* ?BufferedReader getReader():獲取字符輸入流,只能操作字符數據
    ?? ??? ??? ??? ??? ?* ?ServletInputStream getInputStream():獲取字節輸入流,可以操作所有類型數據
    ?? ??? ??? ??? ??? ??? ?* 在文件上傳知識點后講解

    ?? ??? ??? ??? ?2. 再從流對象中拿數據

    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 {} }

    Request_獲取請求參數通用方式

    1. request對象和response對象的原理

    2. request對象繼承體系結構

    3. request功能:
    ?? ?1. 獲取請求消息數據? ? ? ? ? ? ? ??
    ?? ?2. 其他功能:
    ?? ??? ?1. 獲取請求參數通用方式:不論get還是post請求方式都可以使用下列方法來獲取請求參數。
    ?? ??? ??? ?1. String getParameter(String name):根據參數名稱獲取參數值 username=zs&password=123
    ?? ??? ??? ?2. String[] getParameterValues(String name):根據參數名稱獲取參數值的數組 hobby=xx&hobby=game
    ?? ??? ??? ?3. Enumeration<String> getParameterNames():獲取所有請求的參數名稱
    ?? ??? ??? ?4. Map<String,String[]> getParameterMap():獲取所有參數的map集合
    ?? ??? ?2. 請求轉發
    ?? ??? ?3. 共享數據
    ?? ??? ?4. 獲取ServletContext

    Request_獲取請求參數通用方式

    獲取請求參數通用方式:不論get還是post請求方式都可以使用下列方法來獲取請求參數。

  • String getParameter(String name):根據參數名稱獲取參數值 username=zs&password=123
  • String[] getParameterValues(String name):根據參數名稱獲取參數值的數組 hobby=xx&hobby=game
  • Enumeration<String> getParameterNames():獲取所有請求的參數名稱
  • Map<String,String[]> getParameterMap():獲取所有參數的map集合
  • 1、String getParameter(String name):根據參數名稱獲取參數值

    2、String[] getParameterValues(String name):根據參數名稱獲取參數值的數組

    3、Enumeration<String> getParameterNames():獲取所有請求的參數名稱

    4、Map<String,String[]> getParameterMap():獲取所有參數的map集合

    代碼——獲取請求參數通用方式

    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; import java.util.Enumeration; import java.util.Map; import java.util.Set;@WebServlet("/requestDemo6") public class RequestDemo6 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//post 獲取請求參數//根據參數名稱獲取參數值/* String username = request.getParameter("username");System.out.println("post");System.out.println(username);*///根據參數名稱獲取參數值的數組String[] hobbies = request.getParameterValues("hobby");/*for (String hobby : hobbies) {System.out.println(hobby);}*///獲取所有請求的參數名稱/*Enumeration<String> parameterNames = request.getParameterNames();while(parameterNames.hasMoreElements()){String name = parameterNames.nextElement();System.out.println(name);String value = request.getParameter(name);System.out.println(value);System.out.println("----------------");}*/// 獲取所有參數的map集合Map<String, String[]> parameterMap = request.getParameterMap();//遍歷Set<String> keyset = parameterMap.keySet();for (String name : keyset) {//獲取鍵 獲取值String[] values = parameterMap.get(name);System.out.println(name);for (String value : values) {System.out.println(value);}System.out.println("-----------------");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//get 獲取請求參數/* //根據參數名稱獲取參數值String username = request.getParameter("username");System.out.println("get");System.out.println(username);*/this.doPost(request, response);} }

    Request_獲取請求參數中文亂碼問題

    中文亂碼問題:
    ? ? * get方式:tomcat 8 已經將get方式亂碼問題解決了。
    ? ? * post方式:會亂碼
    ? ? ? ? * 解決:在獲取參數前,設置request的編碼 request.setCharacterEncoding("utf-8") ;

    get方法(tomcat 8 已經將get方式亂碼問題解決)

    post方式(設置request的編碼)

    總結

    以上是生活随笔為你收集整理的Request和Response-学习笔记01【Request_原理和继承体系、Request_获取请求数据】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。