SpringMVC之综合示例讲解(用示例来带你学习SpringMVC)

目录

前言

一、SpringMVC之常用注解

1. 注解说明

2. 扩展延伸

3. 注解的作用展示

导入slf4j的相关依赖及配置项目

 pom.xml文件

二、参数传递

1. 基础类型+String类型

测试代码

测试结果

页面

控制台

2. 复杂类型

测试代码

测试结果

页面

控制台

​编辑

3. @RequestParam

测试代码

测试结果

结果一:

结果二:

结果三:

4. @PathVariable

测试代码

测试结果

页面

 控制台输出

 5.@RequestBody

导入@RequestBody依赖

测试代码

 第三方软件测试操作

控制台输出结果

 6. @RequestHeader

测试代码

第三方测试操作

 控制台输出结果

 三、方法返回值

案例一:void

借助工具类

测试类代码

测试结果(页面显示结果)

案例二:String

案例三:String+model

jsp文件代码

 测试代码

运行测试结果

 案例四:ModelAndView

测试代码

jsp文件

测试结果

 四、页面跳转

测试代码

场景一:(转发到后台的某一个方法(当前类))

测试结果

场景二:(转发到后台的某一个方法(其他类))

测试结果

场景三:(重定向到后台的某一个方法(当前类))

测试结果

场景四:(重定向到后台的某一个方法(其他类))

测试结果

结论


前言

在上一期的博客中我们初步的了解学习SpringMVC框架的一些基础知识,也领略到了一些SpringMVC框架在开发中对我们的帮助与好处,今天这期博客各位老铁跟着我继续来学习SpringMVC的相关知识吧。

一、SpringMVC之常用注解

1. 注解说明

  1. @Controller:用于标识一个类是SpringMVC的控制器,它接收用户请求并返回相应的视图或数据

  2. @RequestMapping:用于映射请求的URL路径到控制器的处理方法。可以在类级别和方法级别使用,用于处理各种HTTP请求(GET、POST、PUT等)

  3. @RequestParam:用于将请求参数绑定到处理方法的参数上。可以指定参数的名称、是否必须以及默认值。

  4. @PathVariable:用于将URL中的占位符参数绑定到处理方法的参数上。通常用于RESTful风格的URL。

  5. @ResponseBody:用于将方法的返回值直接作为HTTP响应的内容返回给客户端。适用于返回JSON、XML等非HTML格式的数据

  6. @ModelAttribute:用于将请求参数绑定到一个对象上,并将该对象添加到模型中,可以在视图中获取。

  7. @RequestHeader:注解可以获取指定的请求头信息。

  8. @CookieValue:主要是将请求的Cookie数据,映射到功能处理方法的参数上。

2. 扩展延伸

springMVC注解
注解说明
@GetMapping处理get方式请求的映射
@PostMapping 处理post方式请求的映射
@PutMapping: 处理put方式请求的映射
@DeleteMapping 处理delete方式请求的映射
@RequestMapping(method=RequestMethod.GET)它会将get映射到特定的方法上

3. 注解的作用展示

springMVC注解的作用领域
领域作用说明
请求映射指定URL路径与处理方法的映射关系,将请求分发到对应的方法进行处理。(如@RequestMapping、@GetMapping、@PostMapping等)
参数绑定将请求中的参数绑定到方法的参数上,方便获取和处理请求参数。(如@RequestParam、@PathVariable、@RequestBody等)
响应处理将方法的返回值转换为HTTP响应体,并返回给客户端。可以方便地返回JSON、XML等格式的数据。(如@ResponseBody、@RestController等)
表单处理将方法的返回值转换为HTTP响应体,并返回给客户端。可以方便地返回JSON、XML等格式的数据。(如@ResponseBody、@RestController等)
异常处理处理应用程序中出现的异常情况,并返回适当的错误信息或页面。(如@ExceptionHandler、@ControllerAdvice等)
会话管理在会话中存储和获取数据,实现会话管理的功能。(如@SessionAttribute、@SessionAttributes等)
配置管理配置和管理SpringMVC框架中的各种组件和配置项。(如@Configuration、@Bean、@ComponentScan等)

导入slf4j的相关依赖及配置项目

首先将pom.xml文件中原有的log4j的插件依赖替换为Slf4j的插件依赖,以及原有的log4j的核心包全替换为Slf4j的核心包。

 pom.xml文件

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.yx</groupId><artifactId>yx_ssm</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>yx_ssm Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.plugin.version>3.7.0</maven.compiler.plugin.version><!--添加jar包依赖--><!--1.spring 5.0.2.RELEASE相关--><spring.version>5.0.2.RELEASE</spring.version><!--2.mybatis相关--><mybatis.version>3.4.5</mybatis.version><!--mysql--><mysql.version>5.1.44</mysql.version><!--pagehelper分页jar依赖--><pagehelper.version>5.1.2</pagehelper.version><!--mybatis与spring集成jar依赖--><mybatis.spring.version>1.3.1</mybatis.spring.version><!--3.dbcp2连接池相关 druid--><commons.dbcp2.version>2.1.1</commons.dbcp2.version><commons.pool2.version>2.4.3</commons.pool2.version><!--4.log日志相关--><!--  替换为slf4j日志相关 --><log4j2.version>2.9.1</log4j2.version><log4j2.disruptor.version>3.2.0</log4j2.disruptor.version><slf4j.version>1.7.13</slf4j.version><!--5.其他--><junit.version>4.12</junit.version><servlet.version>4.0.0</servlet.version><lombok.version>1.18.2</lombok.version><!-- jstl+standard --><jstl.version>1.2</jstl.version><standard.version>1.1.2</standard.version><!-- spring --><spring.version>5.0.2.RELEASE</spring.version></properties><dependencies><!--1.spring相关--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!--2.mybatis相关--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!--pagehelper分页插件jar包依赖--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>${pagehelper.version}</version></dependency><!--mybatis与spring集成jar包依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>${mybatis.spring.version}</version></dependency><!--3.dbcp2连接池相关--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-dbcp2</artifactId><version>${commons.dbcp2.version}</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>${commons.pool2.version}</version></dependency><!--4.log日志相关依赖--><!--核心log4j2jar包--><!--替换为 slf4j包   --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>${slf4j.version}</version><scope>runtime</scope></dependency><!--核心log4j2jar包--><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>${log4j2.version}</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>${log4j2.version}</version></dependency><!--用于与slf4j保持桥接--><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>${log4j2.version}</version></dependency><!--web工程需要包含log4j-web,非web工程不需要--><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-web</artifactId><version>${log4j2.version}</version><scope>runtime</scope></dependency><!--需要使用log4j2的AsyncLogger需要包含disruptor--><dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId><version>${log4j2.disruptor.version}</version></dependency><!--5.其他--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${servlet.version}</version><scope>provided</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><scope>provided</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>compile</scope></dependency><!-- spring mvc相关依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>${jstl.version}</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>${standard.version}</version></dependency></dependencies><build><finalName>yx_ssm</finalName><resources><!--解决mybatis-generator-maven-plugin运行时没有将XxxMapper.xml文件放入target文件夹的问题--><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><!--解决mybatis-generator-maven-plugin运行时没有将jdbc.properites文件放入target文件夹的问题--><resource><directory>src/main/resources</directory><includes><include>jdbc.properties</include><include>*.xml</include></includes></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven.compiler.plugin.version}</version><configuration><source>${maven.compiler.source}</source><target>${maven.compiler.target}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.2</version><dependencies><!--使用Mybatis-generator插件不能使用太高版本的mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency></dependencies><configuration><overwrite>true</overwrite></configuration></plugin><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.2.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin></plugins></build>
</project>

 

 

二、参数传递

配置运行项目

1. 基础类型+String类型

测试代码

package com.yx.web;import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** @author 君易--鑨* @site www.yangxin.com* @company 木易* @create  2023-09-05 15:22* 用于实现参数传递的控制器类*/
@Slf4j
@Controller
@RequestMapping("/yx")
public class ParamController {@RequestMapping("/test01")//标记方法public String test01a(String bname,Integer bid){//参数log.info("简单类型参数:bname:{},bid:{}",bname,bid);return "index";//返回的页面}}

测试结果

页面

控制台

2. 复杂类型

测试代码

package com.yx.web;import com.yx.model.Book;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;/*** @author 君易--鑨* @site www.yangxin.com* @company 木易* @create  2023-09-05 15:22* 用于实现参数传递的控制器类*/
@Slf4j
@Controller
@RequestMapping("/yx")
public class ParamController {@RequestMapping("/test02")//标记方法public String test02(Book book, HttpServletRequest request){//参数//        复杂传参输出方式01log.info("复杂类型参数:bname:{},bid:{},price{}",request.getParameter("bname"),request.getParameter("bid"),request.getParameter("price"));
//        复杂传参输出方式02log.info("复杂类型参数:book:{}",book.toString());return "index";//返回的页面}
}

测试结果

页面

控制台

3. @RequestParam

测试代码

package com.yx.web;import com.yx.model.Book;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;import javax.servlet.http.HttpServletRequest;/*** @author 君易--鑨* @site www.yangxin.com* @company 木易* @create  2023-09-05 15:22* 用于实现参数传递的控制器类*/
@Slf4j
@Controller
@RequestMapping("/yx")
public class ParamController {@RequestMapping("/test03")//标记方法public String test03(@RequestParam String bname,@RequestParam(required = false) Integer bid){//参数log.info("@requestParam传参:bname:{},bid:{}",bname,bid);return "index";//返回的页面}
}

测试结果

结果一:

页面

控制台输出

结果二:

页面

控制台

结果三:

页面

控制台输出

不会输出任何结果。

注:@RequestParam的required属性

 该参数是否为必传项。默认是true,表示请求中一定要传入对应的参数,否则会报404错误,如果设置为false时,当请求中没有此参数,将会默认为null,而对于基本数据类型的变量,则必须有值,这时会抛出空指针异常。如果允许空值,则接口中变量需要使用包装类来声明。

4. @PathVariable

测试代码

package com.yx.web;import com.yx.model.Book;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;import javax.servlet.http.HttpServletRequest;/*** @author 君易--鑨* @site www.yangxin.com* @company 木易* @create  2023-09-05 15:22* 用于实现参数传递的控制器类*/
@Slf4j
@Controller
@RequestMapping("/yx")
public class ParamController {@RequestMapping("/test04/{bid}")//标记方法public String test04(@PathVariable("bid") Integer bid){//参数log.info("@PathVariable传参:bid:{}",bid);return "index";//返回的页面}}

测试结果

页面

 控制台输出

 5.@RequestBody

导入@RequestBody依赖

 <jackson.version>2.9.3</jackson.version>
//======以上代码添加到pom.xml文件中的 <properties>标签中=======================
//======以下代码添加到pom.xml文件中的 <dependencies>标签中====================
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>${jackson.version}</version></dependency>

测试代码

请使用postman或者apipost/eolink等工具发送请求数据。因为浏览器无法携带集合参数,所以借助第三方软件进行测试。

 

package com.yx.web;import com.yx.model.Book;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;import javax.servlet.http.HttpServletRequest;
import java.util.Map;/*** @author 君易--鑨* @site www.yangxin.com* @company 木易* @create  2023-09-05 15:22* 用于实现参数传递的控制器类*/
@Slf4j
@Controller
@RequestMapping("/yx")
public class ParamController {@RequestMapping("/test05")//标记方法public String test05(@RequestBody Map map){//参数log.info("@RequestBody传参:map:{}",map);return "index";//返回的页面}
}

 第三方软件测试操作

控制台输出结果

 6. @RequestHeader

测试代码

package com.yx.web;import com.yx.model.Book;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;import java.util.Map;/*** @author 君易--鑨* @site www.yangxin.com* @company 木易* @create  2023-09-05 15:22* 用于实现参数传递的控制器类*/
@Slf4j
@Controller
@RequestMapping("/yx")
public class ParamController {@RequestMapping("/test06")//标记方法public String test06(@RequestHeader("jwt") String jwt){//参数log.info("@RequestHeader传参:jwt:{}",jwt);return "index";//返回的页面}}

第三方测试操作

 控制台输出结果

 三、方法返回值

创建一个ReturnController类模拟测试案例

案例一:void

借助工具类

package com.yx.untils;import com.fasterxml.jackson.databind.ObjectMapper;import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;public class ResponseUtil {public static void write(HttpServletResponse response,Object o)throws Exception{response.setContentType("text/html;charset=utf-8");PrintWriter out=response.getWriter();out.println(o.toString());out.flush();out.close();}public static void writeJson(HttpServletResponse response,Object o)throws Exception{ObjectMapper om = new ObjectMapper();
//		om.writeValueAsString(o)代表了json串write(response, om.writeValueAsString(o));}
}

测试类代码

package com.yx.web;import com.yx.untils.ResponseUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;/*** @author 君易--鑨* @site www.yangxin.com* @company 木易* @create  2023-09-06 18:45* 测试类*/
@Controller
@RequestMapping("/rs")
public class ReturnController {@RequestMapping("/hello1")public void hello1(HttpServletResponse response){Map<String,Object> map=new HashMap<>();map.put("code",200);map.put("msg","成功添加...");try {ResponseUtil.writeJson(response,map);} catch (Exception e) {e.printStackTrace();}}}

测试结果(页面显示结果)

案例二:String

该返回值类型在前面的参数传递中已经体现了。

案例三:String+model

jsp文件代码

<%--Created by IntelliJ IDEA.User: 86158Date: 2023/9/5Time: 15:49To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h1>Hello 君易--鑨</h1>
名称:${name}
地址:${address}
</body>
</html>

 测试代码

package com.yx.web;import com.yx.untils.ResponseUtil;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;/*** @author 君易--鑨* @site www.yangxin.com* @company 木易* @create  2023-09-06 18:45* 测试类*/
@Controller
@RequestMapping("/rs")
public class ReturnController {@RequestMapping("/hello2")public String hello2(Model model,HttpServletRequest request){model.addAttribute("name","君易--鑨");request.setAttribute("address","长沙");return "index";}}

运行测试结果

 案例四:ModelAndView

测试代码

package com.yx.web;import com.yx.untils.ResponseUtil;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;/*** @author 君易--鑨* @site www.yangxin.com* @company 木易* @create  2023-09-06 18:45* 测试类*/
@Controller
@RequestMapping("/rs")
public class ReturnController {@RequestMapping("/hello3")public ModelAndView hello3(){ModelAndView mv=new ModelAndView();mv.addObject("sign","真厉害");mv.setViewName("index");return mv;}
}

jsp文件

<%--Created by IntelliJ IDEA.User: 86158Date: 2023/9/5Time: 15:49To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h1>Hello 君易--鑨</h1>
名称:${name}
地址:${address}
评价:${sign}
</body>
</html>

测试结果

 四、页面跳转

测试代码

package com.yx.web;import com.yx.untils.ResponseUtil;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;/*** @author 君易--鑨* @site www.yangxin.com* @company 木易* @create  2023-09-06 18:45* 测试类*/
@Controller
@RequestMapping("/rs")
public class ReturnController {//    场景一@RequestMapping("/hello4")public String hello4(){System.out.println("hello4...");return "forward:hello2";}//    场景二:@RequestMapping("/hello5")public String hello5(){System.out.println("hello5...");return "forward:/yx/test05";}
//    场景三:@RequestMapping("/hello6")public String hello6(){System.out.println("hello6...");return "redirect:hello2";}//    场景四:@RequestMapping("/hello7")public String hello7(){System.out.println("hello7...");return "redirect:/yx/test05";}}

场景一:(转发到后台的某一个方法(当前类))

测试结果

场景二:(转发到后台的某一个方法(其他类))

测试结果

​​​​​​​

场景三:(重定向到后台的某一个方法(当前类))

测试结果

场景四:(重定向到后台的某一个方法(其他类))

测试结果

 

结论

  • 返回值中有forward、redirect,那么会绕过试图解析器。
  • 重定向会改变请求路径,转发不会。​​​​​​​

 这期分享到此结束,感谢各位老铁的大力支持

​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/69807.shtml

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

相关文章

Linux创建新文件的几种方式

第一种是 vi 文件名&#xff0c;然后进入vi编辑&#xff0c;完了之后保存退出&#xff1b;然后ls看一下&#xff0c;文件有了&#xff1b; 在终端输入 cat > 文件名&#xff0c;这没用过&#xff1b;输入以后回车&#xff0c;不会退出命令&#xff1b;输入一行文字&#xff…

基于jeecg-boot的flowable流程自定义业务退回撤回或驳回到发起人后的再次流程提交

更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/nbcio-boot 前端代码&#xff1a;https://gitee.com/nbacheng/nbcio-vue.git 在线演示&#xff08;包括H5&#xff09; &#xff1a; http://122.227.135.243:9888 主要…

【VL tracking】Towards Unified Token Learning for Vision-Language Tracking

不知道什么原因学校认证账号进不去&#xff0c;下载不了最新的PDF 广西师范大学 | 国科大 | 厦大 代码开源 zhihu指路&#x1f449;【VL tracking】MMTrack阅读 问题 一方面&#xff0c;传统的VL tracking方法需要昂贵的先验知识。例如&#xff0c;一些tracker是专门用于bou…

9月第1周榜单丨哔哩哔哩飞瓜数据B站UP主排行榜发布!

飞瓜轻数发布2023年8月28日-9月3日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数、带货数据等维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能…

vue3 + elementplus Cannot read properties of null (reading ‘isCE‘)

使用命令行直接下载的element-plus&#xff0c;使用时会报错。 卸载掉&#xff0c;然后在项目根目录下&#xff0c;使用vue ui安装依赖&#xff0c; 即可使用

搭建PyTorch神经网络进行气温预测

import numpy as np import pandas as pd import matplotlib.pyplot as plt import torch import torch.optim as optim import warnings warnings.filterwarnings("ignore") %matplotlib inline features pd.read_csv(temps.csv)#看看数据长什么样子 features.he…

leetcode:1941. 检查是否所有字符出现次数相同(python3解法)

难度&#xff1a;简单 给你一个字符串 s &#xff0c;如果 s 是一个 好 字符串&#xff0c;请你返回 true &#xff0c;否则请返回 false 。 如果 s 中出现过的 所有 字符的出现次数 相同 &#xff0c;那么我们称字符串 s 是 好 字符串。 示例 1&#xff1a; 输入&#xff1a;s…

vue中实现签名画板

特意封装成了一个组件&#xff0c;签名之后会生成一张图片 signBoard.vue <template><el-drawer title"签名" :visible.sync"isShowBoard" append-to-body :show-close"false" :before-close"closeBoard" size"50%&quo…

使用redis实现队列功能

使用redis实现队列功能 操作方法描述LPUSHLong lPush(String key, String… values)将一个或多个值 value 插入到列表 key 的表头&#xff0c;返回插入后列表中value的数量&#xff0c;若key不存在&#xff0c;会创建一个新的列表并执行 LPUSH 操作RPOPLPUSHString rPopLPush(S…

Modbus协议详解2:通信方式、地址规则、主从机通信状态

首先我们要清楚&#xff1a;Modbus是一种串行链路上的主从协议&#xff0c;在通信线路上只能有一个主机存在&#xff0c;不会有多主机存在的情况。虽然主机只有一个&#xff0c;但是从机是可以有多个的。 Modbus的通信过程都是由主机发起的&#xff0c;从机在接收到主机的请求后…

docker笔记8:Docker网络

1.是什么 1.1 docker不启动&#xff0c;默认网络情况 ens33 lo virbr0 在CentOS7的安装过程中如果有选择相关虚拟化的的服务安装系统后&#xff0c;启动网卡时会发现有一个以网桥连接的私网地址的virbr0网卡(virbr0网卡&#xff1a;它还有一个固定的默认IP地址192.168.122…

vr智慧党建主题展厅赋予企业数字化内涵

现如今&#xff0c;VR全景技术的发展让我们动动手指就能在线上参观博物馆、纪念馆&#xff0c;不仅不用受时间和空间的限制&#xff0c;还能拥有身临其境般的体验&#xff0c;使得我们足不出户就能随时随地学习、传承红色文化。 很多党建展厅都是比较传统的&#xff0c;没有运用…

C++(QT)画图行车

通过鼠标在窗口上点击形成多个点的连线&#xff0c;绘制一辆汽车沿着绘制的连线轨迹前进。要求连线点数大于20.可以通过清除按钮清除已经绘制的连线&#xff0c;并可以重新绘制一条轨迹连线。当车辆行驶到轨迹终点时&#xff0c;自动停止。&#xff08;汽车实在可用方块代替&am…

go锁--读写锁

每个锁分为读锁和写锁&#xff0c;写锁互斥 没有加写锁时&#xff0c;多个协程都可以加读锁 加了写锁时&#xff0c;无法加读锁&#xff0c;读协程排队等待 加了读锁&#xff0c;写锁排队等待 Mutex用来写协程之间互斥等待 读协程使用readerSem等待写锁的释放 写协程使用writer…

文末送书!谈谈原型模式在JAVA实战开发中的应用(附源码+面试题)

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;3年JAVA全栈开发经验&#xff0c;专注JAVA技术、系统定制、远程指导&#xff0c;致力于企业数字化转型&#xff0c;CSDN博客专家&#xff0c;蓝桥云课认证讲师。 本文讲解了 Java 设计模式中的原型模式&#xff0c;并给…

Vue + Element UI 前端篇(六):更换皮肤主题

自定义主题 命令行主题工具 1.安装主题工具 首先安装「主题生成工具」&#xff0c;可以全局安装或者安装在当前项目下&#xff0c;推荐安装在项目里&#xff0c;方便别人 clone 项目时能直接安装依赖并启动。 yarn add element-theme --dev 2.安装chalk主题 安装白垩主题…

用对工具,你的全渠道电子商务业务就成功了一半

希望将全渠道电子商务纳入您的业务战略&#xff0c;但不确定从哪里开始&#xff1f;我们为您提供保障。这篇文章将指导您了解全渠道商务的基础知识&#xff0c;以及它与多渠道方法的区别&#xff0c;还将探讨利用全渠道方法的众多好处&#xff0c;并讨论企业如何通过全渠道客户…

C#,《小白学程序》第十三课:阶乘(Factorial)的计算方法与代码

1 文本格式 /// <summary> /// 阶乘的非递归算法 /// </summary> /// <param name"a"></param> /// <returns></returns> private int Factorial_Original(int a) { int r 1; for (int i a; i > 1; i--) { …

Anaconda虚拟环境下导入opencv

文章目录 解决方法测试 解决方法 1、根据自己虚拟环境对于的python版本与电脑对应的位长选择具体的版本&#xff0c;例如python3.9选择cp39&#xff0c;64位电脑选择64 下载地址&#xff1a;资源地址 若是不确定自己虚拟环境对应的python版本&#xff0c;可以输入下列命令&…

【100天精通Python】Day56:Python 数据分析_Pandas数据清洗和处理

目录 数据清洗和处理 1.处理缺失值 1.1 删除缺失值&#xff1a; 1.2 填充缺失值&#xff1a; 1.3 插值&#xff1a; 2 数据类型转换 2.1 数据类型转换 2.2 日期和时间的转换&#xff1a; 2.3 分类数据的转换&#xff1a; 2.4 自定义数据类型的转换&#xff1a; 3 数…