- Java后端 學習路線 筆記匯總表【黑馬程式員】
- Request和Response-學習筆記01【Request_原理和繼承體系、Request_獲取請求資料】
- Request和Response-學習筆記02【】
目錄
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/requestDemo1
6. 獲取協議及版本:HTTP/1.1
* String getProtocol()
7. 獲取客戶機的IP地址:
* String getRemoteAddr()
*/
//1. 獲取請求方式 :GET
String method = request.getMethod();
System.out.println(method);
//2.(*)獲取虛擬目錄:/day14
String contextPath = request.getContextPath();
System.out.println(contextPath);
//3. 獲取Servlet路徑: /demo1
String servletPath = request.getServletPath();
System.out.println(servletPath);
//4. 獲取get方式請求引數:name=zhangsan
String queryString = request.getQueryString();
System.out.println(queryString);
//5.(*)獲取請求URI:/day14/demo1
String requestURI = request.getRequestURI();
StringBuffer requestURL = request.getRequestURL();
System.out.println(requestURI);
System.out.println(requestURL);
//6. 獲取協議及版本:HTTP/1.1
String 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 {
//演示獲取請求頭資料:referer
String 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的編碼)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259187.html
標籤:其他
下一篇:全角字符和半角字符的區別

































