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.mzph.cn/news/41646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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…

【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; 参…

微信小程序 蓝牙设备连接,控制开关灯

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;出队…

图数据库_Neo4j和SpringBoot整合使用_创建节点_删除节点_创建关系_使用CQL操作图谱---Neo4j图数据库工作笔记0009

首先需要引入依赖 springboot提供了一个spring data neo4j来操作 neo4j 可以看到它的架构 这个是下载下来的jar包来看看 有很多cypher对吧 可以看到就是通过封装的驱动来操作graph database 然后开始弄一下 首先添加依赖

【实用黑科技】如何 把b站的缓存视频弄到本地——数据恢复软件WinHex 和 音视频转码程序FFmpeg

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;效率…

Baumer工业相机堡盟工业相机如何通过BGAPISDK设置相机的固定帧率(C#)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的固定帧率&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的固定帧率功能的技术背景CameraExplorer如何查看相机固定帧率功能在BGAPI SDK里通过函数设置相机固定帧率 Baumer工业相机通过BGAPI SDK设置相机固定帧…

蓝牙资讯|中国智能家居前景广阔,蓝牙Mesh照明持续火爆

据俄罗斯卫星通讯社报道&#xff0c;中国已成为全球最大的智能家居消费国&#xff0c;占全球50%—60%的市场份额。未来&#xff0c;随着人工智能技术的发展以及智能家居生态的不断进步&#xff0c;智能家居在中国的渗透率将加速提升。德国斯塔蒂斯塔调查公司数据显示&#xff0…

win10系统docker创建ubuntu容器解决开发环境问题

一、win10系统使用docker的原因 最近啊&#xff0c;在学习人工智能-深度学习&#xff0c;用的win10系统进行开发&#xff0c;老是出现一些莫名其妙的问题&#xff0c;无法解决&#xff0c;每天都在为环境问题搞得伤透了脑筋。 说到底还是要使用Linux系统进行开发比较合适。 …

【MT32F006】MT32F006之HT1628驱动LED

本文最后修改时间&#xff1a;2023年03月30日 一、本节简介 本文介绍如何使用MT32F006连接HT1628芯片驱动LED。 二、实验平台 库版本&#xff1a;V1.0.0 编译软件&#xff1a;MDK5.37 硬件平台&#xff1a;MT32F006开发板&#xff08;主芯片MT32F006&#xff09; 仿真器&a…

LeetCode算法心得——限制条件下元素之间的最小绝对差(TreeSet)

大家好&#xff0c;我是晴天学长&#xff0c;今天用到了Java一个非常实用的类TreeSet&#xff0c;能解决一些看起来棘手的问题。 1 &#xff09;限制条件下元素之间的最小绝对差 2) .算法思路 初始化变量&#xff1a;n为列表nums的大小。 min为整型最大值&#xff0c;用于记录…