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…

ES6中Proxy和Proxy实例

1.Proxy Proxy 这个词的原意是代理&#xff0c;用在这里表示由它来“代理”某些操作&#xff0c;可以译为“代理器” 使用方法 let p new Proxy(target, handler);其中&#xff0c;target 为被代理对象。handler 是一个对象&#xff0c;其声明了代理 target 的一些操作。p 是…

基于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 主要…

你知道Vue 3.0中Treeshaking特性吗?

介绍 Vue 3.0引入了Tree-shaking特性&#xff0c;旨在优化构建过程并减小最终生成的代码大小。Tree-shaking是一种在构建时移除未使用代码的技术&#xff0c;通过分析模块的依赖关系&#xff0c;将没有被引用的部分从最终的打包文件中排除掉。这可以大大减少应用的体积&#x…

【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主成长情况用户能够快速找到运营能…

无限访问 GPT-4,OpenAI 强势推出 ChatGPT 企业版!

继 ChatGPT 收费大降价、推出 App 版等系列动作之后&#xff0c;OpenAI 于今日宣布正式发布面向企业的 AI 助手——ChatGPT Enterprise 版。 与 To C 端的 ChatGPT 版本有所不同的是&#xff0c;该版本可以以更快速度无限制地访问 GPT-4&#xff0c;还可以用来处理更长输入的上…

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…

stable diffusion实践操作-LyCORIS

系列文章目录 stable diffusion实践操作 文章目录 系列文章目录前言一、LyCORIS是什么&#xff1f;二、使用步骤1.下载2.安装3 使用 二、整理模型1.LoHa-v1.0-pynoise 总结 前言 LyCORIS&#xff0c;可以理解为lora的加强版本。 LyCORIS - Lora beYond Conventional methods,…

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…

数学建模--非整数规划问题蒙特卡洛方法的Python求解

目录 1.算法流程简介 2.算法核心代码 1.算法流程简介 #非线性整数规划 #我们一般采用蒙特卡洛算法来进行估算求解 #在实验次数足够多的情况下我们认为此解是非线性整数规划的最优解 """ #Qustion1:求解: max zx1^2x2^23x^24x4^22x5^2-8x1-2x2-3x3-x4-2x5s.t…

使用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;从机在接收到主机的请求后…

渗透测试漏洞原理之---【任意文件读取漏洞】

文章目录 1、概述1.1、漏洞成因1.2、漏洞危害1.3、漏洞分类1.4、任意文件读取1.4.1、文件读取函数1.4.2、任意文件读取 1.5、任意文件下载1.5.1、一般情况1.5.2、PHP实现1.5.3、任意文件下载 2、任意文件读取攻防2.1、路径过滤2.1.1、过滤../ 2.2、简单绕过2.2.1、双写绕过2.2.…

音视频 ffmpeg命令直播拉流推流

直播拉流 ffplay rtmp://server/live/streamName ffmpeg -i rtmp://server/live/streamName -c copy dump.flv对于不是rtmp的协议 -c copy要谨慎使用 直播推流 ffmpeg -re -i out.mp4 -c copy flvrtmp://server/live/streamName参数&#xff1a;-re,表示按时间戳读取文件 参…

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;没有运用…

Protocol Buffers教程

Protocol Buffers教程 Protocol Buffers简介下载安装Protocol Buffers编译器编写第一个protobuf文件&#xff0c;并编译成go文件Protocol Buffers定义消息类型Protocol Buffers基本数据类型Protocol Buffers枚举类型Protobuf生成的go源码分析Protobuf序列化和反序列化protobuf…