Request+Response

文章目錄

    • 1. 介紹
    • 2. Request對象
      • 2.1 Request繼承體系
      • 2.2 Request獲取請求數據
        • 1.獲取請求行
        • 2.獲取請求頭
        • 3.獲取請求體
        • 4. 請求參數的通用方式
        • 5. 解決中文亂碼問題
      • 2.3 Request請求轉發
          • 請求轉發資源間共享數據:
    • 3. Response對象
      • 3.0 Response 繼承體系
      • 3.1 Response設置響應數據的功能介紹
        • 1.設置響應行
        • 2.設置響應頭
        • 3.設置響應體
      • 3.2 Response完成重定向
      • 3.3 設置響應數據
        • 1. Response響應字符數據
        • 2. Response響應字節數據
    • 4.案例:用戶登錄/用戶注冊

1. 介紹

Request+Response

Request是請求對象,Response是響應對象

  • request: 獲取請求數據
    • 瀏覽器會發送HTTP請求到后臺服務器[Tomcat]
    • HTTP的請求中會包含很多請求數據[請求行+請求頭+請求體]
    • 后臺服務器[Tomcat]會對HTTP請求中的數據進行解析并把解析結果存入到一個對象中
    • 所存入的對象即為request對象,所以我們可以從request對象中獲取請求的相關參數
    • 獲取到數據后就可以繼續后續的業務,比如獲取用戶名和密碼就可以實現登錄操作的相關業務
  • response:設置響應數據
    • 業務處理完后,后臺就需要給前端返回業務處理的結果即響應數據
    • 把響應數據封裝到response對象中
    • 后臺服務器[Tomcat]會解析response對象,按照[響應行+響應頭+響應體]格式拼接結果
    • 瀏覽器最終解析結果,把內容展示在瀏覽器給用戶瀏覽

在這里插入圖片描述

@WebServlet("/demo3")
public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//使用request對象 獲取請求數據String name = request.getParameter("name");//url?name=zhangsan//使用response對象 設置響應數據response.setHeader("content-type","text/html;charset=utf-8");response.getWriter().write("<h1>"+name+",歡迎您!</h1>");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("Post...");}
}

2. Request對象

2.1 Request繼承體系

在這里插入圖片描述

  • Tomcat需要解析請求數據,封裝為request對象并且創建request對象傳遞到service方法中;

Q1: ServletRequest和HttpServletRequest的關系?

  • ServletRequest是Java Servlet規范中定義的一個接口,它是所有Servlet請求對象的頂級接口
  • HttpServletRequest是ServletRequest的子接口,它擴展了ServletRequest接口,提供了更多與HTTP協議相關的方法和功能。
  • 當Servlet類實現的是Servlet接口的時候,service方法中的參數是ServletRequest和ServletResponse
  • 當Servlet類繼承的是HttpServlet類的時候,doGet和doPost方法中的參數就變成HttpServletRequest和HttpServletReponse

2.2 Request獲取請求數據

HTTP請求數據總共分為三部分內容,分別是 請求行、請求頭、請求體

1.獲取請求行

請求行包含三塊內容,分別是請求方式請求資源路徑HTTP協議及版本

請求行 方法說明
String getMethod()獲取請求方式: GET
String getContextPath()獲取虛擬目錄(項目訪問路徑): /request-demo
StringBuffer getRequestURL()獲取URL(統一資源定位符): http://localhost:8080/request-demo/req1
String getRequestURI()獲取URI(統一資源標識符): /request-demo/req1
String getQueryString()獲取請求參數(GET方式): username=zhangsan&password=123
//獲取請求行
@WebServlet("/demo3")
public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// String getMethod():獲取請求方式: GETString method = req.getMethod();System.out.println(method);//GET// String getContextPath():獲取虛擬目錄(項目訪問路徑):/request-demoString contextPath = req.getContextPath();System.out.println(contextPath);// StringBuffer getRequestURL(): 獲取URL(統一資源定位符):http://localhost:8080/request-demo/req1StringBuffer url = req.getRequestURL();System.out.println(url.toString());// String getRequestURI():獲取URI(統一資源標識符): /request-demo/req1String uri = req.getRequestURI();System.out.println(uri);// String getQueryString():獲取請求參數(GET方式): username=zhangsanString queryString = req.getQueryString();System.out.println(queryString);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}}

在這里插入圖片描述

2.獲取請求頭

請求頭 方法說明
String getHeader(String name)獲取指定名稱的請求頭

在這里插入圖片描述

```java
/*** request 獲取請求數據*/
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//獲取請求頭: user-agent: 瀏覽器的版本信息String agent = req.getHeader("user-agent");System.out.println(agent);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}
}

在這里插入圖片描述

3.獲取請求體

請求體: 注意get請求沒有請求體,post有

請求體 方法說明
ServletInputStream getInputStream()獲取字節輸入流,如果前端發送的是字節數據,比如傳遞的是文件數據,則使用該方法
BufferedReader getReader()獲取字符輸入流,如果前端發送的是純文本數據,則使用該方法

具體實現的步驟如下:

1.準備一個頁面,在頁面中添加form表單,用來發送post請求

2.在Servlet的doPost方法中獲取請求體數據

3.在doPost方法中使用request的getReader()或者getInputStream()來獲取

4.訪問測試

package com.itheima.web;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("/demo4")
public class ServletDemo4 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//獲取post 請求體:請求參數//1. 獲取字符輸入流BufferedReader br = req.getReader();//2. 讀取數據String line = br.readLine();System.out.println(line);}
}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>測試獲取請求體信息</title>
</head>
<body>
<h5>hello</h5>
<form action="/demo4" method="post"><input type="text" name="username"><input type="password" name="password"><input type="submit"></form></body>
</html>

在這里插入圖片描述

4. 請求參數的通用方式

請求參數的獲取方式:

  • GET方式:

String getQueryString()

  • POST方式:

BufferedReader getReader();

案例:
(1)發送一個GET請求并攜帶用戶名,后臺接收后打印到控制臺
(2)發送一個POST請求并攜帶用戶名,后臺接收后打印到控制臺

//實現
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String result = req.getQueryString();System.out.println(result);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {BufferedReader br = req.getReader();String result = br.readLine();System.out.println(result);}
}

Q:既然實現的功能一樣,是否可以統一doGet和doPost方法內的代碼?

解決方案一:

@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//獲取請求方式String method = req.getMethod();//獲取請求參數String params = "";if("GET".equals(method)){params = req.getQueryString();}else if("POST".equals(method)){BufferedReader reader = req.getReader();params = reader.readLine();}//將請求參數進行打印控制臺System.out.println(params);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);}
}

解決方案二:

request對象已經將上述獲取請求參數的方法進行了封裝,并且request提供的方法實現的功能更強大
步驟:
(1)根據不同的請求方式獲取請求參數
(2)把獲取到的內容進行分割
(3)把分割后端數據,存入到一個Map集合中

方法說明
Map<String,String[]> getParameterMap()獲取所有參數Map集合
String[] getParameterValues(String name)根據名稱獲取參數值(數組)
String getParameter(String name)根據名稱獲取參數值(單個值)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="/req" method="get"><input type="text" name="username"><br><input type="password" name="password"><br><input type="checkbox" name="hobby" value="1"> 游泳<input type="checkbox" name="hobby" value="2"> 爬山 <br><input type="submit"></form>
</body>
</html>

在這里插入圖片描述


//使用get獲取請求信息
@WebServlet("/req")
public class ServletDemo5 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//GET請求邏輯System.out.println("get....");//1. 獲取所有參數的Map集合Map<String, String[]> map = req.getParameterMap();for (String key : map.keySet()) {// username:zhangsan lisiSystem.out.print(key+":");//獲取值String[] values = map.get(key);for (String value : values) {System.out.print(value + " ");}System.out.println();//2.根據key獲取值System.out.println("------------");String[] hobbies = req.getParameterValues("hobby");for (String hobby : hobbies) {System.out.println(hobby);}//3.根據key獲取單個參數值String username = req.getParameter("username");String password = req.getParameter("password");System.out.println(username);System.out.println(password);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

在這里插入圖片描述
在這里插入圖片描述
IDEA模板創建Servlet:102
https://www.bilibili.com/video/BV1Qf4y1T7Hx
在這里插入圖片描述

5. 解決中文亂碼問題

在這里插入圖片描述

  • GET請求獲取請求參數的方式是request.getQueryString()
  • POST請求獲取請求參數的方式是request.getReader()

post:

req.setCharacterEncoding("UTF-8");

解決:https://blog.csdn.net/yiqieanhaowzq/article/details/126279078

在這里插入圖片描述

username  = new String(username.getBytes(StandardCharsets.ISO_8859_1),StandardCharsets.UTF_8);

2.3 Request請求轉發

請求轉發是指將當前請求轉發給另一個Servlet或JSP頁面進行處理,轉發后的Servlet或JSP頁面會繼續處理請求并生成響應。

方法說明
request.getRequestDispatcher(“/destination”);獲取RequestDispatcher對象
dispatcher.forward(request, response);請求轉發
package com.itheima.web;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("/demo6")
public class ServletDemo6 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("demo6...get");//請求轉發req.getRequestDispatcher("/demo7").forward(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}
package com.itheima.web;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("/demo7")
public class ServletDemo7 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("demo7...get");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

在這里插入圖片描述

請求轉發資源間共享數據:

請求轉發資源間共享數據是指在Java
Servlet中,通過請求轉發,將請求從一個Servlet或JSP頁面轉發到另一個Servlet或JSP頁面時,可以在它們之間共享數據。

  • 當一個請求被轉發到另一個資源(Servlet或JSP頁面)時,原始請求的數據,例如請求參數、屬性等,可以通過設置和獲取request對象的屬性來在轉發的資源之間傳遞和共享。這種方式允許在不暴露數據給客戶端的情況下,在服務器端的多個組件之間傳遞信息。

請求轉發特點:

  • 瀏覽器地址欄路徑不發生變化
  • 只轉發當前服務器內部資源
  • 一次請求,可以在轉發的資源間使用request共享數據

需要使用request對象提供的三個方法:

方法說明
void setAttribute(String name,Object o)存儲數據到request域中
Object getAttribute(String name);根據key,獲取值
void removeAttribute(String name);根據key,刪除該鍵值對
@WebServlet("/demo6")
public class ServletDemo6 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("demo6...get");//存儲數據req.setAttribute("msg","hello");//請求轉發req.getRequestDispatcher("/demo7").forward(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

@WebServlet("/demo7")
public class ServletDemo7 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("demo7...get");//獲取數據Object msg = req.getAttribute("msg");System.out.println(msg);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

在這里插入圖片描述

3. Response對象

  • Request:使用request對象來獲取請求數據
  • Response:使用response對象來設置響應數據

3.0 Response 繼承體系

在這里插入圖片描述

3.1 Response設置響應數據的功能介紹

HTTP響應數據總共分為三部分內容,分別是響應行、響應頭、響應體,對于這三部分內容的數據

1.設置響應行

響應行:

  • 狀態行包含了HTTP協議版本號、狀態碼和相應的狀態信息。
  • 它的格式為:HTTP版本號 狀態碼 狀態信息。
  • 例如:HTTP/1.1 200 OK。
方法說明
void setStatus(int sc);設置響應狀態碼

2.設置響應頭

響應頭部
響應頭部包含了關于響應的附加信息,如服務器類型、日期、內容類型等。 它由多個鍵值對組成,每個鍵值對占據一行。常見的響應頭部字段包括:

  • Content-Type:指定響應體的媒體類型。
  • Content-Length:指定響應體的長度。
  • Date:指定響應的日期和時間。
  • Server:指定響應的服務器軟件類型。
方法說明
void setHeader(String name,String value)設置響應頭鍵值對

3.設置響應體

響應體:
響應體包含了具體的響應內容。它可以是HTML、JSON、圖片等數據。響應體的格式和內容根據具體的請求和服務器的處理結果而定。

方法說明
PrintWriter getWriter();獲取字符輸出流
ServletOutputStream getOutputStream();獲取字節輸出流

3.2 Response完成重定向

在HTTP協議中,重定向(Redirect)是一種服務器響應的行為,它告訴客戶端要求的資源已經被移動到另一個位置,并提供了新的資源位置(URL)供客戶端重新請求。
重定向狀態碼:

  • 301:資源已永久移動到新的URL,客戶端應更新其鏈接。
  • 302 :資源臨時移動到新的URL,客戶端應使用新的URL重新發起請求。
  • 307 :資源臨時移動到新的URL,客戶端應保持請求方法不變重新發起請求。
  • 308 :資源已永久移動到新的URL,客戶端應保持請求方法不變重新發起請求

重定向特點:

  • 瀏覽器地址欄發生變化
  • 可以重定向到任意位置的資源(服務器內部外部均可)
  • 兩次請求,不能在多個資源使用request共享資源
resp.setStatus(302);
resp.setHeader("location","資源B的訪問路徑");
Q:Response重定向和Request請求轉發有什么區別?
- 重定向是一種服務器響應行為,要求客戶端重新發起請求。客戶端會接收到新的URL信息,并據此發起新的請求。
- 請求轉發是一種服務器內部行為,將客戶端的請求轉發給其他資源或處理程序來處理。客戶端對此轉發過程是不可見的。
- 重定向會向客戶端發送額外的響應,通常包含重定向的狀態碼和新的URL信息。請求轉發不需要額外的響應,客戶端不知道請求被轉發了。
- 重定向可以用于資源移動、負載均衡和認證授權等場景。請求轉發通常用于服務器內部組織和處理請求的需要。
- 重定向瀏覽器地址欄會發生變化,請求轉發地址欄不會發生變化

//重定向
@WebServlet("/resp1")
public class ResponseDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("resp1......");//重定向//1.設置響應狀態碼302resp.setStatus(302);//2. 設置響應頭resp.setHeader("Location","/resp2");//簡化方式重定向resp.sendRedirect("/resp2");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

@WebServlet("/resp2")
public class ResponseDemo2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("resp2......");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

在這里插入圖片描述

3.3 設置響應數據

方法說明
PrintWriter getWriter();獲取字符輸出流
ServletOutputStream getOutputStream();獲取字節輸出流

1. Response響應字符數據

設置響應的內容類型為text/html//resp.setHeader("content-type","text/html");
resp.setContentType("text/html");
resp.setContentType("text/html";charset=utf-8);設置響應的狀態碼
resp.setStatus(HttpServletResponse.SC_OK);設置響應的字符編碼:
resp.setCharacterEncoding("UTF-8");設置響應的頭部信息:
resp.setHeader("Cache-Control", "no-cache");
resp.setHeader("Expires", "0");設置響應的重定向:
resp.sendRedirect("https://www.example.com");設置響應的Cookie:
Cookie cookie = new Cookie("name", "value");
cookie.setMaxAge(3600); // 設置Cookie的有效期
cookie.setPath("/"); // 設置Cookie的作用路徑
resp.addCookie(cookie); // 將Cookie添加到響應中設置響應的內容長度:
resp.setContentLength(content.length());設置響應的響應類型:
resp.setContentType("application/json");
@WebServlet("/resp3")
public class ResponseDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("resp3......");//1.獲取字符輸出流PrintWriter writer = resp.getWriter();//2.設置響應的內容類型為text/html//resp.setHeader("content-type","text/html");resp.setContentType("text/html");//3.向客戶端輸出文本內容writer.write("aaa");//4.向客戶端輸出HTML標簽writer.write("<h1>aaa</h1>");//5.刷新緩沖區,確保所有內容都被寫入響應writer.flush();//6.關閉輸出流writer.close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

在這里插入圖片描述

2. Response響應字節數據

//響應字節數據:設置字節數據響應體
@WebServlet("/resp4")
public class ResponseDemo4 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("resp4......");//0.讀取文件FileInputStream fileInputStream = new FileInputStream("C:\\Users\\11445\\Pictures\\Saved Pictures\\頭像.jpg");//1.獲取字節輸出留,用于向客戶端發送響應的字節數據。ServletOutputStream outputStream = resp.getOutputStream();//2.完成流的copybyte[] bytes = new byte[1024];  //創建一個字節數組,用于存儲文件內容。int len = 0;  //定義一個變量 len,用于記錄每次讀取的字節長度。//循環讀取文件內容,每次最多讀取 1024 個字節,直到文件末尾while ((len = fileInputStream.read(bytes) )!= -1){outputStream.write(bytes,0,len);  //將讀取到的字節數據寫入到輸出流中,發送給客戶端。}fileInputStream.close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

在這里插入圖片描述

簡化流的copy

Apache Commons IO 是一個開源的 Java 庫,提供了許多實用的 IO
操作工具類,用于簡化文件和流的操作。它包含了各種用于文件操作、流操作、拷貝、比較、過濾、監聽等功能的工具類。

    <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>
//2.完成流的copyIOUtils.copy(fileInputStream,outputStream);

4.案例:用戶登錄/用戶注冊

登錄注冊案例:https://blog.csdn.net/meini32/article/details/132305323

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41646.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41646.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41646.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用GEWE框架進行個人微信收藏夾及標簽管理(收藏夾篇)適用于微信群管、社群管理

友情鏈接&#xff1a;geweapi.com 點擊即可訪問&#xff01; 如果個人有多個微信&#xff0c;進行收藏夾管理是非常麻煩的事情&#xff0c;這時候可以用得到GEWE框架的管理模塊&#xff01;下面來看一下使用方法吧~ 獲取收藏信息 小提示&#xff1a; 獲取收藏相關信息注意&am…

iOS手機無法安裝Charles 的ssl證書

問題描述 iOS客戶端安裝證書時一直卡在下載這一步&#xff0c;無法抓包 1、打開Charles&#xff0c;選擇help→SSL Proxying→Install Charles Root Certificate on a Mobile Device or Remote Browser 2、按照步驟1中的提示進行操作&#xff0c;手機連接電腦代理&#xff0c;…

Spring系列七:聲明式事務

&#x1f418;聲明式事務 和AOP有密切的聯系, 是AOP的一個實際的應用. &#x1f432;事務分類簡述 ●分類 1.編程式事務: 示意代碼, 傳統方式 Connection connection JdbcUtils.getConnection(); try { //1.先設置事務不要自動提交 connection.setAutoCommit(false…

ZooKeeper的應用場景(分布式鎖、分布式隊列)

7 分布式鎖 分布式鎖是控制分布式系統之間同步訪問共享資源的一種方式。如果不同的系統或是同一個系統的不同主機之間共享了一個或一組資源&#xff0c;那么訪問這些資源的時候&#xff0c;往往需要通過一些互斥手段來防止彼此之間的干擾&#xff0c;以保證一致性&#xff0c;…

島嶼的最大面積(力扣)遞歸 JAVA

給你一個大小為 m x n 的二進制矩陣 grid 。 島嶼 是由一些相鄰的 1 (代表土地) 構成的組合&#xff0c;這里的「相鄰」要求兩個 1 必須在 水平或者豎直的四個方向上 相鄰。你可以假設 grid 的四個邊緣都被 0&#xff08;代表水&#xff09;包圍著。 島嶼的面積是島上值為 1 的…

error_Network Error

此頁面為訂單列表&#xff0c;是混合開發(頁面嵌入在客戶端中) 此頁面為訂單列表&#xff0c;此需求在開發時后端先將代碼發布在測試環境&#xff0c;我在本地調試時調用的后端接口進行聯調沒有任何問題。 此后我將代碼發布在測試環境&#xff0c;在app中打開頁面&#xff0c…

vue echarts中按鈕點擊后修改值 watch數據變化后刷新圖表

1 點擊按鈕 {feature: {myBtn1: {show: true,title: 反轉Y軸,showTitle: true,icon: path://M512 0A512 512 0 1 0 512 1024A512 512 0 0 0 512 0M320 320V192h384v128zM128 416V288h256v128zM320 704V576h384v128zM128 800V672h256v128z,onclick: () > {dataSetting.rever…

nginx服務器報錯502 Bad Gateway的原因以及解決辦法

服務器報錯nginx 502 Bad Gateway的原因以及解決辦法_502 bad gateway nginx_主題模板站的博客-CSDN博客

C++學習筆記總結練習:effective 學習日志

準則 1.少使用define define所定義的常量會在預處理的時候被替代&#xff0c;出錯編譯器不容易找到錯誤。而且還沒有作用范圍限制&#xff0c;推薦使用constdefine宏定義的函數&#xff0c;容易出錯&#xff0c;而且參數需要加上小括號&#xff0c;推薦使用inline有的類中例如…

已經開源的中文大模型對比,支持更新

大模型下載&#xff1a;互鏈高科 ClueAI/PromptCLUE-base-v1-5 at main (huggingface.co) 支持多任務生成&#xff0c;支持中文&#xff0c;不支持多輪對話&#xff0c;體驗&#xff1a;ClueAI (cluebenchmarks.com) 基于promptclue-base進一步訓練的模型&#xff1a;ClueAI/Ch…

【C與C++的相互調用方法】

C與C的相互調用方法 C與C為什么相互調用的方式不同C中調用CC中調用C致謝 C與C為什么相互調用的方式不同 C 和 C 之間的相互調用方式存在區別&#xff0c;主要是由于 C 和 C 語言本身的設計和特性不同。 函數調用和參數傳遞方式不同&#xff1a;C 和 C 在函數調用和參數傳遞方面…

docker oracle linux命令執行sql

docker 安裝參照 https://blog.csdn.net/arcsin_/article/details/123707618 docker container ls -a命令查看容器名 打開容器 docker exec -it orcl19c_03 /bin/bashsys 用戶登錄容器 sqlplus / as sysdbashow pdbs;什么是pdb數據庫&#xff1f;什么是CDB&#xff1f; 參…

游戲如何防御DDOS流量攻擊呢,用游戲盾真的有用么?

針對在線游戲行業來說&#xff0c;DDoS&#xff08;分布式拒絕服務&#xff09;攻擊是一種極具破壞性的威脅。DDoS攻擊可能導致游戲服務器不可用&#xff0c;嚴重影響游戲體驗和運營。為了解決這一問題&#xff0c;游戲盾作為一種專門為游戲行業設計的安全解決方案&#xff0c;…

微信小程序 藍牙設備連接,控制開關燈

1.前言 微信小程序中連接藍牙設備&#xff0c;信息寫入流程 1、檢測當前使用設備&#xff08;如自己的手機&#xff09;是否支持藍牙/藍牙開啟狀態 wx:openBluetoothAdapter({}) 2、如藍牙已開啟狀態&#xff0c;檢查藍牙適配器的狀態 wx.getBluetoothAdapterState({}) 3、添加…

第十三章 SpringBoot項目(總)

1.創建SpringBoot項目 1.1.設置編碼 1.4.導入已有的spring boot項目 2.快速搭建Restfull風格的項目 2.1.返回字符串 RestController public class IndexController {RequestMapping("/demo1")public Object demo1() {System.out.println("demo1 ran...."…

kafka的位移

文章目錄 概要消費位移__consumer_offsets主題位移提交 概要 本文主要總結kafka的位移是如何管理的&#xff0c;在broker端如何通過命令行查看到位移信息&#xff0c;并從代碼層面總結了位移的提交方式。 消費位移 對于 Kafka 中的分區而言&#xff0c;它的每條消息都有唯一…

0基礎學習VR全景平臺篇 第86篇:智慧眼-為什么要設置分組選擇?

一、功能說明 分組選擇&#xff0c;也就是給全景的每個分組去設置其所屬的行政區劃&#xff0c;設置后只有屬于同行政區劃的成員才可進入其場景進行相關操作&#xff0c;更便于實現城市的精細化管理。 二、后臺編輯界面 分組名稱&#xff1a;場景的分組名稱。 對應分類&…

網絡安全--linux下Nginx安裝以及docker驗證標簽漏洞

目錄 一、Nginx安裝 二、docker驗證標簽漏洞 一、Nginx安裝 1.首先創建Nginx的目錄并進入&#xff1a; mkdir /soft && mkdir /soft/nginx/cd /soft/nginx/ 2.下載Nginx的安裝包&#xff0c;可以通過FTP工具上傳離線環境包&#xff0c;也可通過wget命令在線獲取安裝包…

【數據結構與算法】隊列

文章目錄 一&#xff1a;隊列1.1 隊列的概念1.2 隊列的介紹1.3 隊列示意圖 二&#xff1a;數組模擬隊列2.1 介紹2.2 思路2.3 代碼實現2.3.1 定義隊列基本信息2.3.2 初始化隊列2.3.3 判斷隊列是否滿&#xff0c;是否為空2.3.4 添加數據到隊列2.3.5 獲取隊列數據&#xff0c;出隊…

垃圾回收機制

什么是內存泄漏&#xff1f; 內存泄漏是指程序中已經不再使用的內存卻沒有被正確釋放或回收的情況。在編程中&#xff0c;當對象或數據不再被程序使用&#xff0c;但其所占用的內存空間沒有被垃圾回收機制回收&#xff0c;就會導致內存泄漏。 內存泄漏可能會導致程序的內存消…