SpringMVC系列六: 视图和视图解析器

视图和视图解析器

  • 💞基本介绍
  • 💞 自定义视图
    • 为什么需要自定义视图
    • 自定义试图实例-代码实现
    • 自定义视图工作流程小结
    • Debug源码
    • 默认视图解析器执行流程
    • 多个视图解析器执行流程
  • 💞目标方法直接指定转发或重定向
    • 使用实例
    • 指定请求转发流程-Debug源码
    • 指定重定向流程-Debug源码
    • 课后作业

在这里插入图片描述

💞基本介绍

1.在SpirngMVC中的目标方法最终返回都是一个视图(有各种视图)
2.返回的视图都会由一个视图解析器来处理(视图解析器有很多种)

💞 自定义视图

为什么需要自定义视图

1.在默认情况下, 我们都是返回默认的视图, 然后返回的视图交由SpringMVCInternalResourceViewResolver视图解析器来处理的.

<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--配置属性prefix 和 suffix--><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/>
</bean>

2.在实际开发中, 我们有时需要自定义视图, 这样可以满足更多更复杂的需求.

自定义试图实例-代码实现

1.创建web路径/view.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>自定义视图测试</title>
</head>
<body>
<h2>自定义视图测试</h2>
<a href="?">点击到自定义视图</a>br/><br/>
</body>
</html>

2.创建com.zzw.web.viewresolver.GoodsHandler.java

@RequestMapping("/goods")
@Controller
public class GoodsHandler {@RequestMapping("/buy")public String buy() {System.out.println("buy() 被调用...");return "?";//待会再填写自定义视图名称}
}

3.创建comzzw.web.viewresolver.MyView.java自定义视图类

/*** 解读* 1.MyView 继承了AbstractView, 就可以作为一个视图使用* 2.@Component(value="myView"), 该视图会注入到容器中, 名字/id 是 zzwView*/
@Component(value = "zzwView")
public class MyView extends AbstractView {@Overrideprotected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {//完成视图渲染//并且可以确定我们要跳转的页面System.out.println("进入到自己的视图");}
}

4.创建web路径/WEB-INF/pages/my_view.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>my_view页面</title>
</head>
<body>
<h2>进入到my_view页面</h2>
<p>是从自定义视图来的</p>
</body>
</html>

5.补充MyView的代码

/*** 解读* 1.MyView 继承了AbstractView, 就可以作为一个视图使用* 2.@Component(value="myView"), 该视图会注入到容器中, 名字/id 是 zzwView*/
@Component(value = "zzwView")
public class MyView extends AbstractView {@Overrideprotected void renderMergedOutputModel(Map<String, Object> model,HttpServletRequest request,HttpServletResponse response) throws Exception {//完成视图渲染//并且可以确定我们要跳转的页面[请求转发] /WEB-INF/pages/my_view.jspSystem.out.println("进入到自己的视图");//解读//1.下面就是进行请求转发到 /WEB-INF/pages/my_view.jsp//2./WEB-INF/pages/my_view.jsp 会被springmvc解析//  /springmvc/WEB-INF/pages/my_view.jsprequest.getRequestDispatcher("/WEB-INF/pages/my_view.jsp").forward(request, response);}
}

6.配置springDispatcherServlet-servlet.xml, 增加自定义视图解析器

<!--配置视图解析器[默认视图解析器]-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--配置属性prefix 和 suffix--><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/>
</bean><!--
解读
1.配置自定义视图解析器BeanNameViewResolver
2.BeanNameViewResolver可以去解析我们自定义的视图
3.配置 属性 order, 表示视图解析器执行的顺序, 值越小, 优先级越高
4.属性 order 的默认值是最低优先级, 值为 Integer.MAX_VALUEint LOWEST_PRECEDENCE = 2,147,483,647;
-->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"><property name="order" value="99"/>
</bean>

7.view.jsp修改请求路径

<h2>自定义视图测试</h2>
<a href="goods/buy">点击到自定义视图</a>br/><br/>

8.GoodsHandler.java完善代码

@RequestMapping("/goods")
@Controller
public class GoodsHandler {@RequestMapping("/buy")public String buy() {System.out.println("buy() 被调用...");return "zzwView";//待会再填写自定义视图名称}
}

9.Postman测试
在这里插入图片描述

自定义视图工作流程小结

●自定义视图-小结

1.创建一个Viewbean, 该bean需要继承自AbstractView, 并实现renderMergedOutputModel方法
2.并把自定义View加入到IOC容器中
3.自定义视图的视图处理器, 使用BeanNameViewResolver, 这个视图处理器也需要配置到ioc容器
4.BeanNameViewResolver的调用优先级需要设置一下, 设置orderInteger.MAX_VALUE小的值, 以确保其在InternalResourceViewResolver之前被调用

●自定义视图-工作流程

1.SpringMVC调用目标方法, 返回自定义ViewIOC容器中的id
2.SpringMVC调用BeanNameViewResolver解析视图: 从IOC容器中获取 返回id值对应的bean, 即自定义View的对象
3,SpringMVC调用自定义视图的renderMergedOutputModel方法渲染视图
4.说明:如果在SpringMVC调用目标方法, 返回自定义View容器中的id, 不存在, 则仍然按照默认的视图处理器机制处理.

Debug源码

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
判断是否实现了View接口, 如果实现了, 返回View对象
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在MyView视图打个断点

在这里插入图片描述
进入到my_view.jsp
在这里插入图片描述

默认视图解析器执行流程

1.配置默认视图解析器的优先级

<!--配置视图解析器[默认视图解析器]-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--配置属性prefix 和 suffix--><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/><!--调整优先级--><property name="order" value="10"/>
</bean>

2.debug源码

在这里插入图片描述

在这里插入图片描述
进入到默认视图解析器
在这里插入图片描述
在这里插入图片描述
由于没有zzwView.jsp页面, 页面会报错
在这里插入图片描述

多个视图解析器执行流程

案例1: 假设自定义视图解析器的优先级大于默认视图解析器

1.将默认视图解析器的优先级大小设置为默认

<!--配置视图解析器[默认视图解析器]-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--配置属性prefix 和 suffix--><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/><!--调整优先级--><!--<property name="order" value="10"/>-->
</bean>

2.将自定义视图MyView.javabeanName改为zzwViewx

/*** 解读* 1.MyView 继承了AbstractView, 就可以作为一个视图使用* 2.@Component(value="myView"), 该视图会注入到容器中, 名字/id 是 zzwView*/
@Component(value = "zzwViewx")
public class MyView extends AbstractView {@Overrideprotected void renderMergedOutputModel(Map<String, Object> model,HttpServletRequest request,HttpServletResponse response) throws Exception {//完成视图渲染//并且可以确定我们要跳转的页面[请求转发] /WEB-INF/pages/my_view.jspSystem.out.println("进入到自己的视图");//解读//1.下面就是进行请求转发到 /WEB-INF/pages/my_view.jsp//2./WEB-INF/pages/my_view.jsp 会被springmvc解析//  /springmvc/WEB-INF/pages/my_view.jsprequest.getRequestDispatcher("/WEB-INF/pages/my_view.jsp").forward(request, response);}
}

3.debug源码

在这里插入图片描述
在这里插入图片描述
在容器中找不到id为zzwView的bean对象. 参数viewNamezzwView,
在这里插入图片描述BeanName视图解析器返回了空, 开始循环第二个默认视图解析器
在这里插入图片描述在这里插入图片描述对返回的view对象进行估算. 没有 /WEB-INF/pages/zzwView.jsp 这个文件, 会报404错误.
在这里插入图片描述在这里插入图片描述

案例2: 假设默认视图解析器的优先级大于自定义视图解析器

1.将默认视图解析器的优先级大小设置为10, 此时自定义视图解析器的优先级是99.

<!--配置视图解析器[默认视图解析器]-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--配置属性prefix 和 suffix--><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/><!--调整优先级--><property name="order" value="10"/>
</bean>

2.将自定义视图MyView.java的beanName改为zzwView

/*** 解读* 1.MyView 继承了AbstractView, 就可以作为一个视图使用* 2.@Component(value="myView"), 该视图会注入到容器中, 名字/id 是 zzwView*/
@Component(value = "zzwView")
public class MyView extends AbstractView {@Overrideprotected void renderMergedOutputModel(Map<String, Object> model,HttpServletRequest request,HttpServletResponse response) throws Exception {//完成视图渲染//并且可以确定我们要跳转的页面[请求转发] /WEB-INF/pages/my_view.jspSystem.out.println("进入到自己的视图");//解读//1.下面就是进行请求转发到 /WEB-INF/pages/my_view.jsp//2./WEB-INF/pages/my_view.jsp 会被springmvc解析//  /springmvc/WEB-INF/pages/my_view.jsprequest.getRequestDispatcher("/WEB-INF/pages/my_view.jsp").forward(request, response);}
}

3.debug源码
在这里插入图片描述
在这里插入图片描述在这里插入图片描述只要执行了默认视图解析器, 找不到页面, 会报404, 不会再执行下一个视图解析器.
在这里插入图片描述

💞目标方法直接指定转发或重定向

使用实例

● 目标方法中指定转发或者重定向

1.默认返回的方法是请求转发, 然后用视图处理器进行处理, 比如在目标方法中这样写:
在这里插入图片描述

2.也可以在目标方法中直接指定重定向或请求转发的url地址

3.如果指定重定向, 可以定向到web路径下的资源在这里插入图片描述

但是有个例外: 不能重定向到/WEB-INF目录.
原因: WEB-INF下的资源是服务器内部访问的, 浏览器不能访问
在这里插入图片描述

案例
1.修改com.zzw.web.viewresolver.GoodsHandler.java, 增加方法order

@RequestMapping("/goods")
@Controller
public class GoodsHandler {@RequestMapping("/order")public String order() {System.out.println("===========order()===========");//1.请求转发到 /WEB-INF/pages/my_view.jsp//2.下面的这个路径 /WEB-INF/pages/my_view.jsp//  会被解析成 /springmvc/WEB-INF/pages/my_view.jsp//return "forward:/WEB-INF/pages/my_view.jsp";//1.请求转发到 /aa/bb/ok.jsp//2.下面的这个路径 /aa/bb/ok.jsp//  会被解析成 /springmvc/aa/bb/ok.jsp//return "forward:/aa/bb/ok.jsp";/*** 直接指定要重定向的页面* 1. 对于重定向来说, 不能重定向到 /WEB-INF/ 目录下* 2. redirect 关键字, 表示进行重定向* 3. /login.jsp 会在服务器解析成 /springmvc/login.jsp*///return "redirect:/login.jsp";//重定向到 /WEB-INF/pages/my_view.jsp//下面的这个路径 /WEB-INF/pages/my_view.js 会在服务器解析成// /springmvc/WEB-INF/pages/my_view.jspreturn "redirect:/WEB-INF/pages/my_view.jsp";}
}

2.view.jsp增加代码

<body>
<h2>自定义视图测试</h2>
<a href="goods/buy">点击到自定义视图</a><br/><br/>
<a href="goods/order">测试在目标方法中指定请求转发或者重定向到页面</a>
</body>

测试1

//1.请求转发到 /WEB-INF/pages/my_view.jsp
//2.下面的这个路径 /WEB-INF/pages/my_view.jsp 会被解析成 /springmvc/WEB-INF/pages/my_view.jsp
return "forward:/WEB-INF/pages/my_view.jsp";

测试2

//1.请求转发到 /aa/bb/ok.jsp
//2.下面的这个路径 /aa/bb/ok.jsp 会被解析成 /springmvc/aa/bb/ok.jsp
return "forward:/aa/bb/ok.jsp";

测试3

/*** 直接指定要重定向的页面* 1. 对于重定向来说, 不能重定向到 /WEB-INF/ 目录下* 2. redirect 关键字, 表示进行重定向* 3. /login.jsp 会在服务器解析成 /springmvc/login.jsp*/
return "redirect:/login.jsp";

在这里插入图片描述
在这里插入图片描述

测试4

//1.重定向到 /WEB-INF/pages/my_view.jsp
//2.下面的这个路径 /WEB-INF/pages/my_view.js 会在服务器解析成 /springmvc/WEB-INF/pages/my_view.jspreturn "redirect:/WEB-INF/pages/my_view.jsp";

在这里插入图片描述WEB-INF下的资源是服务器内部访问的, 浏览器不能访问
在这里插入图片描述

指定请求转发流程-Debug源码

在这里插入图片描述

debug源码

在这里插入图片描述
在这里插入图片描述

调用默认的视图解析器
在这里插入图片描述在这里插入图片描述

已经作为一个bean对象存储在容器中
在这里插入图片描述

下一步, 开始渲染

在这里插入图片描述

下一步

在这里插入图片描述

进入

在这里插入图片描述

进入, renderMergedOutputModel()MyView.java中的相仿

在这里插入图片描述

下一步, 找到rd = request.getRequestDispatcher(dispatcherPath);

在这里插入图片描述

下一步

在这里插入图片描述

指定重定向流程-Debug源码

在这里插入图片描述


debug源码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SpringMVC有很多视图种类

在这里插入图片描述

下一步

在这里插入图片描述在这里插入图片描述

进入

在这里插入图片描述

进入, 调用RedirectView的视图渲染方法

在这里插入图片描述

课后作业

1.熟悉前面的SpringMVC映射数据请求, 模型数据, 视图和视图解析的案例
2.清晰Debug源码的流程
3.完成一个简单的用户登录案例
1)编写登陆页面web路径/homework/login.jsp
2)com.zzw.web.homework.LoginHandler [doLogin方法], 如果用户输入用户名是zzw, 密码123, 就可以登陆成功; 否则登陆失败
3)创建JavaBeancom.zzw.web.homework.entity.User.java
4)表单提交数据到doLogin方法, 以User对象形式接收
5)登陆成功到, 页面 web路径/WEB-INF/pages/homework/login_ok.jsp, 并显示登陆欢迎信息 [显示用户名, 模型数据会自动填充到request域中]
6)登陆失败到, 页面 web路径/WEB-INF/pages/homework/login_err.jsp, 并给出重新登录的超链接 [考察web工程路径应用问题]


代码实现

1.在web路径/homework下 新建login.jsp

<head><title>登陆页面</title>
</head>
<body>
<form action="<%=request.getContextPath()%>/doLogin">用户名: <input type="text" name="username"/><br/><br/>密 码: <input type="text" name="pwd"/><br/><br/><input type="submit" value="登录"/>
</form>
</body>

2.在com.zzw.web.homework下新建LoginHandler

@Controller
public class LoginHandler {@RequestMapping("/doLogin")public String doLogin(User user) {System.out.println("===========doLogin()===========");if ("zzw".equals(user.getUsername()) && "123".equals(user.getPwd())) {//使用的是默认视图解析器return "forward:/WEB-INF/pages/homework/login_ok.jsp";} else {return "forward:/WEB-INF/pages/homework/login_err.jsp";}}
}

3.填充login.jsp的请求路径 涉及-web工程路径问题

<%--<%=request.getContextPath()%>/doLogin => /springmvc/doLogin/springmvc/doLogin 被浏览器解析成 http://localhost:8080/springmvc/doLogin
--%>
<form action="<%=request.getContextPath()%>/doLogin">

4.在com.zzw.web.homework.entity下新建User.java

public class User {private String username;private String pwd;//setter, getter方法
}

5.在web路径/WEB-INF/pages/homework下 新建login_ok.jsp
登录成功到login_ok.jsp, 并显示登陆欢迎信息 模型数据默认放入request域.

<head><title>登陆成功</title>
</head>
<body>
登陆成功, 欢迎 ${requestScope.user.username}
</body>

6.在web路径/WEB-INF/pages/homework下 新建login_err.jsp
登陆失败到login_err.jsp, 并给出重新登陆的超链接. 相对路径的知识点

<head><title>登陆失败</title>
</head>
<body>
<a href="homework/login.jsp">重新登陆</a>
</body>

使用自定义视图解析器再次完成

代码实现

1.springDispatcherServlet-servlet.xml中注释掉默认视图解析器的优先级, 使用自定义视图

<!--<property name="order" value="10"/>-->

2.修改LoginHandler

@Controller
public class LoginHandler {@RequestMapping("/doLogin")public String doLogin(User user) {System.out.println("===========doLogin()===========");return "homeworkView";}
}

3.新建com.zzw.web.homework.viewresolver.MyView

/*** 解读* 1.MyView 继承了AbstractView, 就可以作为一个试图使用* 2.@Component("homeworkView") 表示该视图会注入到容器中, 名字/id 是 homeworkView*/
@Component("homeworkView")
public class MyView extends AbstractView {@Overrideprotected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {//完成视图渲染//并且可以确定我们要跳转的页面System.out.println("进入到了自己的视图");request.setCharacterEncoding("utf-8");String username = request.getParameter("username");String pwd = request.getParameter("pwd");if ("zzw".equals(username) && "123".equals(pwd)) {request.setAttribute("username", username);request.getRequestDispatcher("/WEB-INF/pages/homework/login_ok.jsp").forward(request, response);} else {request.getRequestDispatcher("/WEB-INF/pages/homework/login_err.jsp").forward(request, response);}}
}

4.修改login_ok.jsp

登陆成功, 欢迎 ${requestScope.username}

在这里插入图片描述
下一篇: 手动实现SpringMVC底层机制

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

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

相关文章

MATLAB神经网络---lstmLayer(LSTM 长短期记忆神经网络)

前言 描述LSTM就要先描述一下循环神经网络 循环神经网络 循环神经网络通过使用带自反馈的神经元&#xff0c;使得网络的输出不仅和当前的输入有关&#xff0c;还和上一时刻的输出相关&#xff0c;于是在处理任意长度的时序数据时&#xff0c;就具有短期记忆能力。 如下是一个…

vue项目build 打包之后如何本地访问

vue项目build 打包之后如何本地访问 注意&#xff1a;vue项目build打包后 如果想实现本地访问 不能直接打开访问dist文件中的HTML文件&#xff08;因为页面带会报错打不开。&#xff09;&#xff0c;需要启一个服务&#xff0c;通过服务来访问&#xff1a; 具体操作过程如下&am…

Java虚拟机 - JVM(类加载器、类加载的过程、双亲委派模型、GC垃圾回收)

一、JVM中数据内存区域划分 本地方法栈&#xff1a;里面保存的是native 关键字的方法&#xff0c;不是用Java写的&#xff0c;而是jvm内部用c实现的。 **程序计数器 和 虚拟机栈 每个线程都存在一份。 如果一个 JVM 进程 中有 10个 线程&#xff0c;那么就会存在 10份 程序计数…

高精度除法

高精度除法 思路题目 高进度数字指的是 数字的大小非常非常大&#xff0c;大到所有整型数据类型都存不下&#xff0c;本篇讨论的为一个高精度数除以一个较小的数。 思路 高精度除法的计算方式和我们人类平时计算除法的过程是一样的&#xff0c;我们来模拟一下。 首先 2 除 3…

pikachu中pkxss数据库怎么创建

在用小皮时候&#xff0c;只是知道个pikachu这个数据库&#xff0c;跟着视频看人家用pkxss数据库&#xff0c;自己也想用&#xff0c;查看了很多资料&#xff0c;又蒙又查&#xff0c;终于明白怎么弄&#xff0c;特此传授经验 图像中画横线的就是平常怎么创建数据库的&#xff…

Qt creator day2练习

使用手动连接&#xff0c;将登录框中的取消按钮使用第二种方式&#xff0c;右击转到槽&#xff0c;在该函数中&#xff0c;调用关闭函数&#xff0c;将登录按钮使用Qt4版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为“admin”&#xff0c;密…

vue3-openlayers 使用tianditu,wmts和xyz等source加载天地图切片服务

本篇介绍一下使用vue3-openlayers加载天地图切片&#xff0c;三种方法&#xff1a; 使用tianditu&#xff08;ol-source-tianditu内部实现其实用的wmts&#xff09;使用wmts&#xff08;ol-source-wmts&#xff09;使用xyz&#xff08;ol-source-xyz&#xff09; 1 需求 vue…

Kotlin 实战小记:No-Arg 引用解决 No constructor found的问题

一、问题 新的项目试用一下kotlin, 调用数据库查询数据的时候报了这个问题&#xff1a;org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: No constructor found in com.neusoft.collect.entity.cm.CmRoom matc…

Linux搭建我的世界乌托邦探险之旅3.2整合包服务端,Minecraft开服教程

Linux服务器使用MCSM10 搭建 我的世界 乌托邦探险之旅3.2 整合包 服务端 的教程&#xff0c;Minecraft整合包开服教程。 大型养老探险整合包&#xff1a;乌托邦探险之旅3.2&#xff0c;探索上千种结构&#xff0c;造访丰富的自然群系&#xff0c;欣赏生动的生物动画&#xff0…

【小白学Python】爬取数据(三)

【小白学Python】自定义图片的生成&#xff08;一&#xff09; 【小白学Python】自定义图片的生成&#xff08;二&#xff09; 本文继前两篇文章之后&#xff0c;将前两篇生成图片的文字自动化爬取生成&#xff0c; 爬取zhihu的部分问答数据&#xff0c;仅作本人的学习使用。…

29. 透镜阵列

导论&#xff1a; 物理传播光学&#xff08;POP&#xff09;不仅可以用于简单系统&#xff0c;也可以设计优化复杂的光学系统&#xff0c;比如透镜阵列。 设计流程&#xff1a; 透镜阵列建模 在孔径类型中选择“入瞳直径”&#xff0c;并输入2 在视场设定中。设置一个视场&…

STM32高级控制定时器(STM32F103):PWM输出模式

目录 概述 1 PWM模式介绍 2 PWM类型 2.1 PWM边缘对齐模式 2.2 PWM中心对齐模式 3 使用STM32Cube配置PWM 3.1 STM32Cube配置参数 3.2 生成Project 4 设置PWM占空比 4.1 函数介绍 4.3 函数源码 5 测试代码 5.1 编写测试代码 5.2 函数源码 6 运行代码 概述 本文主…

一平台一张图,撑起危化生产“安全伞”

安全生产是永恒的主题&#xff0c;是一切工作的基础。 风险辨识不到位、特种作业不合规、隐患治理不彻底、应急能力不匹配……如何从消除事故隐患、从根本上解决问题&#xff1f;随着新一代信息技术和安全生产的深度融合&#xff0c;安全生产的管理方式也在发生深刻变化。 提前…

基于STM32的智能水产养殖系统(三)

智能水产养殖系统设计 背景 智能水产养殖系统的设计背景主要源于对传统养殖方式的现代化需求和技术进步的推动。以下是该背景的详细阐述&#xff1a; 现代化养殖需求增加&#xff1a; 随着人口增长和食品需求的提升&#xff0c;传统的水产养殖方式面临诸多挑战&#xff0c;如资…

4、matlab双目相机标定实验

1、双目相机标定原理及流程 双目相机标定是将双目相机系统的内外参数计算出来&#xff0c;从而实现双目视觉中的立体测量和深度感知。标定的目的是确定各个摄像头的内部参数&#xff08;如焦距、主点、畸变等&#xff09;和外部参数&#xff08;如相机位置、朝向等&#xff09…

海南云亿商务咨询有限公司抖店开店怎么样?

在数字化浪潮席卷全球的今天&#xff0c;电商行业日新月异&#xff0c;其中抖音电商以其独特的短视频直播模式&#xff0c;迅速崛起成为电商领域的新贵。海南云亿商务咨询有限公司&#xff0c;作为抖音电商服务的佼佼者&#xff0c;凭借专业的团队和丰富的经验&#xff0c;致力…

代理配置SQUID

目录 SQUID代理服务器配置 监听浏览器访问记录 拒绝访问配置 SQUID代理服务器配置 实验系统 windows 10 xxxxx Roucky_linux9.4 192.168.226.22 监听浏览器访问记录 1. 安装squid yum install squid -y 2. 编辑squid配置文件 vim /etc/squid…

一个很好用的地图工具的使用:思极地图,以及vue+思极地图的使用

前言&#xff1a; 随着现在国网等一部分公司的需求&#xff0c;在线地图-思极地图 出现在我们眼前&#xff0c;给我们带来了很多便利&#xff0c;这里分享下他的信息与使用。 实现效果&#xff1a; 相关资料&#xff1a; 1、官网地址 2、在线地址 3、官方api地址 实现步骤-js…

从Instance classifier重新思考多实例学习

弱监督的WSI分类通常被形式化为多实例学习&#xff08;MIL&#xff09;问题&#xff0c;其中每张slide都被视为一个bag&#xff0c;从中切出的patch被视为实例。现有的方法要么通过伪标记训练实例分类器&#xff0c;要么通过注意力机制将实例特征聚合为bag特征&#xff0c;然后…

新能源汽车的能源动脉:中国星坤汽车电缆在新能源汽车电气化中的应用!

随着新能源汽车行业的蓬勃发展&#xff0c;汽车电缆组件作为汽车电气系统的核心组成部分&#xff0c;其重要性日益凸显。中国星坤汽车电缆组件以其卓越的性能和创新技术&#xff0c;为汽车的电能传输、信号传递和控制提供了坚实的保障。本文将深入解析星坤汽车电缆组件的特性、…