当前位置: 首页 > news >正文

【SpringMVC】工作流程及入门案例

目录

    前言                                                                                            

    回顾MVC三层架构                                                                               

    1. SpringMVC简介                                                                        

    1.1 SpringMVC的特点                                                                              

    1.2 SpringMVC核心组件                                                                           

    1.3 SpringMVC工作流程                                                                           

    2. SpringMVC入门案例                                                                 

    2.1 添加pom.xml依赖 

    2.2 创建spring-mvc.xml 

    2.3 配置web.xml 

    2.4 编写处理器类 

    2.5 编写hello.jsp 

    2.6 运行测试 

    2.7 静态资源处理 


    前言                                                                                            

        Spring MVC(Model-View-Controller)是一个基于Java的Web应用程序框架,它是Spring框架的一部分。主要是用来进行Web开发,是对Servlet进行了封装,也可以理解为是Servlet的加强版。

    回顾MVC三层架构                                                                               

学习SpringMVC之前我们先来回顾下自定义MVC框架思想:

一个自定义MVC框架的基本工作流程如下:

  1. 用户通过视图与应用程序交互,视图将用户的请求传递给控制器。
  2. 控制器接收用户请求,根据请求的类型和内容决定调用哪个模型处理请求,并根据处理结果决定需要更新哪个视图。
  3. 模型处理请求的过程中可能需要与数据库或其他数据源进行交互,获取所需数据并进行相应的处理。处理完成后,将结果返回给控制器。
  4. 控制器根据模型的处理结果,决定更新哪个视图以展示结果给用户。
  5. 视图接收到控制器的指令后,根据要展示的内容进行相应的处理和渲染,最终将结果呈现给用户。

 

        在自定义MVC中每个请求都需要写一个Servlet,显然是不方便了。SpringMVC的工作流程与此差不多,controller可以处理多个请求,并对请求进行分发,执行不同的业务操作,对它进行了加强让开发更加便捷。

    SpringMVC简介                                                                        

        Spring MVC(Model-View-Controller)是一个基于Java的Web应用程序框架,它是Spring框架的一部分。Spring MVC提供了一个简单、灵活且强大的模型,用于构建Web应用程序,它遵循MVC设计模式。这个模式有助于将应用程序的表示层、业务逻辑层和数据访问层分离,使得开发更加模块化和易于维护。

    SpringMVC的特点                                                                              

        Spring MVC的核心原则是分离关注点,将应用程序的不同方面分离开来,以便更好地管理和维护代码。它通过将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个部分来实现这一目标。

  1. 模型(Model):模型代表应用程序的数据和业务逻辑。它可以是一个POJO(Plain Old Java Object)或一个持久化实体类。模型负责处理数据的读取、存储和验证,并提供数据给视图进行展示。

  2. 视图(View):视图负责展示模型中的数据给用户。它可以是一个JSP(JavaServer Pages)、HTML页面或其他模板引擎生成的页面。视图通常是根据模型的数据来动态生成的,以便将数据呈现给用户。

  3. 控制器(Controller):控制器负责处理用户请求并协调模型和视图之间的交互。它接收用户的请求,调用适当的模型处理数据,并选择合适的视图来展示结果。控制器还可以处理表单验证、异常处理和其他与请求相关的逻辑。

    SpringMVC核心组件                                                                           

Spring MVC框架提供了一组核心组件来实现这种模型-视图-控制器的架构。其中包括:

  1. DispatcherServlet:它是Spring MVC的前端控制器,负责接收所有的HTTP请求并将其分发给适当的处理程序。

  2. HandlerMapping:它负责将请求映射到适当的处理程序(控制器)。

  3. Controller:它是处理程序的接口,负责处理用户请求并返回适当的模型和视图。

  4. ViewResolver:它负责将逻辑视图名称解析为实际的视图对象。

  5. View:它负责将模型数据渲染为最终的响应结果,可以是JSP、HTML页面或其他类型的视图。

        除了这些核心组件,Spring MVC还提供了许多其他功能,如数据绑定、表单处理、文件上传、拦截器、国际化支持等,以帮助开发人员更轻松地构建Web应用程序。

 

    SpringMVC工作流程                                                                           

  1. 用户发来一个请求,首先进入的是前端控制器DispatcherServlet
  2. 前端控制器(DispacherServlet)将用户发来的请求发送给处理器映射器(HandlerMapping)
  3. 处理器映射器根据前端控制器发来的用户的请求找到对应符合的控制器(Handler),并且将其封装成处理器执行链,返回给前端控制器。
  4. 处理器适配器接收到来自前端控制器的执行链后,找到对应执行此执行链的处理器适配器(HandlerAdapter)来调用的具体的控制器(就是说其对应的方法或者逻辑)
  5. 处理器适配器 (HandlerAdaptoer) 会调用对应的具体的 Controller(处理业务逻辑)
  6. 控制器执行完成后,会返回一个ModelAndView对象给处理器适配器
  7. 处理器适配器将返回来的ModelAndView对象返回给前端控制器(到这里所有的业务处理过程就要完了,接下就是将结果以页面的的形式响应给用户)
  8. 前端控制器将返回回来的ModelAndView对象交给视图解析器(ViewResolver),视图解析器根据传过来的View对象解析成对应的页面对象
  9. ViewResolver 将封装好的将页面对象和Model对象返回给 DIspatcherServlet
  10. 前端控制器再将返回回来的对象交给视图(View)
  11. 视图根据传过来的Model对象再一次的对页面进行渲染(将模型数据填充至视图中),然后在返回给前端控制器。
  12. 前端控制器将完成的结果响应给浏览器,然后浏览器在展现给用户。

 

    SpringMVC入门案例                                                                 

    添加pom.xml依赖 

<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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>mybatis_spring</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version><name>mybatis_spring Maven Webapp</name><url>http://maven.apache.org</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><!-- 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><!-- 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>mybatis_spring</finalName></build>
</project>

缺少jstl+standard的这两个jar包会报java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config,那是因为org.springframework.web.servlet.view.JstlView在视图解析时需要这二个jar包。

    创建spring-mvc.xml 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--1) 扫描com.zking.zf及子子孙孙包下的控制器(扫描范围过大,耗时)--><context:component-scan base-package="com.ycxw"/><!--2) 此标签默认注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter --><mvc:annotation-driven/><!--3) 创建ViewResolver视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- viewClass需要在pom中引入两个包:standard.jar and jstl.jar --><property name="viewClass"value="org.springframework.web.servlet.view.JstlView"></property><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean><!--4) 单独处理图片、样式、js等资源 --><!-- <mvc:resources location="/css/" mapping="/css/**"/><mvc:resources location="/js/" mapping="/js/**"/><mvc:resources location="WEB-INF/images/" mapping="/images/**"/>-->
</beans>

解释:

这段代码是一个Spring MVC应用程序的XML配置文件。它用于配置Spring MVC的一些基本设置,包括组件扫描、注解驱动、视图解析器和静态资源处理。下面是对这段代码的逐行解释:

  1. <context:component-scan base-package="com.ycxw"/>:启用组件扫描,让Spring自动扫描指定包(在这里是com.ycxw)及其子包中的所有类,识别并注册带有特定注解(如@Controller@Service等)的类为Spring容器中的bean。

  2. <mvc:annotation-driven/>:启用Spring MVC的注解驱动功能,让Spring MVC自动注册默认的处理器映射(DefaultAnnotationHandlerMapping)和处理器适配器(AnnotationMethodHandlerAdapter),以支持基于注解的控制器方法。

  3. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">:定义一个视图解析器(InternalResourceViewResolver)的bean,用于将控制器返回的逻辑视图名解析为实际的视图资源(如JSP文件)。

  4. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView">:设置视图解析器的viewClass属性,指定使用JstlView类来处理JSTL标签。

  5. <property name="prefix" value="/WEB-INF/jsp/"/>:设置视图解析器的prefix属性,指定视图资源(如JSP文件)的前缀路径。

  6. <property name="suffix" value=".jsp"/>:设置视图解析器的suffix属性,指定视图资源(如JSP文件)的后缀。

  7. <!--4) 单独处理图片、样式、js等资源 -->:这是一个注释,说明接下来的配置是用于处理静态资源。

  8. <!-- <mvc:resources location="/css/" mapping="/css/**"/>:这是一个注释掉的配置,如果启用,它会将请求路径以/css/开头的请求映射到/css/目录下的静态资源(如CSS文件)。

  9. <!-- <mvc:resources location="/js/" mapping="/js/**"/>:这是一个注释掉的配置,如果启用,它会将请求路径以/js/开头的请求映射到/js/目录下的静态资源(如JavaScript文件)。

  10. <!-- <mvc:resources location="WEB-INF/images/" mapping="/images/**"/>:这是一个注释掉的配置,如果启用,它会将请求路径以/images/开头的请求映射到WEB-INF/images/目录下的静态资源(如图片文件)。

        总之,这段代码配置了一个基本的Spring MVC应用程序,包括组件扫描、注解驱动、视图解析器和静态资源处理。

    配置web.xml 

配置步骤:

  1. 配置Spring与Web项目集成
  2. 配置中文乱码过滤器
  3. 配置SpringMVC核心控制器DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><display-name>Archetype Created Web Application</display-name><!-- Spring和web项目集成start --><!-- spring上下文配置文件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-context.xml</param-value></context-param><!-- 读取Spring上下文的监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- Spring和web项目集成end --><!-- 中文乱码处理 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- Spring MVC servlet --><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--此参数可以不配置,默认值为:/WEB-INF/springmvc-servlet.xml--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup><!--web.xml 3.0的新特性,是否支持异步--><async-supported>true</async-supported></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

    编写处理器类 

package com.ycxw.web;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** @author 云村小威* @site blog.csdn.net/Justw320* @create 2023-09-04 20:11*/
@Controller
public class HelloController {@RequestMapping(value="/hello")public String hello(){System.out.println("调用了hello方法...");return null;}
}
  1. @Controller使用@Controller注解标记这个类是一个Spring MVC控制器。这个注解告诉Spring框架,这个类将处理HTTP请求。

  2. @RequestMapping(value="/hello")使用@RequestMapping注解映射一个HTTP请求路径(在这里是/hello)到控制器的一个方法(在这里是hello()方法)。当用户访问/hello路径时,hello()方法将被调用。

    编写hello.jsp 

在spring-mvc.xml文件已配置ViewResolver视图解析器

    运行测试 

 

    静态资源处理 

所有文件都会被spring-mvc.xml配置文件进行拦截,所以要添加配置,让处理器扫描扫该资源

<mvc:resources location="/static/" mapping="/static/**"/>

 如路径:

运行测试: 

相关文章:

【SpringMVC】工作流程及入门案例

目录 前言 回顾MVC三层架构 1. SpringMVC简介 …...

【JVM】垃圾收集算法

文章目录 分代收集理论标记-清除算法标记-复制算法标记-整理算法 分代收集理论 当前商业虚拟机的垃圾收集器&#xff0c;大多数都遵循了“分代收集”&#xff08;Generational Collection&#xff09;[1]的理论进 行设计&#xff0c;分代收集名为理论&#xff0c;实质是一套符…...

K8s的Pod出现Init:ImagePullBackOff问题的解决(以calico为例)

对于这类问题的解决思路应该都差不多&#xff0c;本文以calico插件安装为例&#xff0c;发现有个Pod的镜像没有pull成功 第一步&#xff1a;查看这个pod的描述信息 kubectl describe pod calico-node-wmhrw -n kube-system 从上图发现是docker拉取"calico/cni:v3.15.1&q…...

数据结构 -作用及基本概念

为什么要使用数据结构 学习数据结构是计算机科学和软件工程领域中非常重要的一门课程。以下是学习数据结构的几个重要原因&#xff1a; 组织和管理数据&#xff1a;数据结构提供了一种组织和管理数据的方式。通过学习不同的数据结构&#xff0c;你可以了解如何有效地存储和操作…...

数学建模--时间序列预测模型的七种经典算法的Python实现

目录 1.开篇版权提示 2.时间序列介绍 3.项目数据处理 4.项目数据划分可视化 5.时间预测序列经典算法1&#xff1a;朴素法 6.时间预测序列经典算法2&#xff1a; 简单平均法 7.时间预测序列经典算法3&#xff1a;移动平均法 8.时间预测序列经典算法4&#xff1a;简单指…...

nginx-反向代理缓存

反向代理缓存相当于自动化动静分离。 将上游服务器的资源缓存到nginx本地&#xff0c;当下次再有相同的资源请求时&#xff0c;直接讲nginx缓存的资源返回给客户端。 本地缓存资源有一个过期时间&#xff0c;当超过过期时间&#xff0c;则重新向上游服务器重新请求获取资源。…...

大模型重塑区域人才培养,飞桨(重庆)人工智能教育创新中心正式启动

2023年8月22日&#xff0c;重庆市高校人工智能产教融合院长研讨会暨飞桨&#xff08;重庆&#xff09;人工智能教育创新中心启动仪式在重庆大学成功召开。会上&#xff0c;由百度飞桨、重庆大学组织重庆市二十一所高校共建的飞桨&#xff08;重庆&#xff09;人工智能教育创新中…...

PAT 1164 Good in C 测试点3,4

个人学习记录&#xff0c;代码难免不尽人意。 When your interviewer asks you to write “Hello World” using C, can you do as the following figure shows? Input Specification: Each input file contains one test case. For each case, the first part gives the 26 …...

LabVIEW对EAST长脉冲等离子体运行的陀螺稳态运行控制

LabVIEW对EAST长脉冲等离子体运行的陀螺稳态运行控制 托卡马克是实现磁约束核聚变最有希望的解决方案之一。电子回旋共振加热&#xff08;ECRH是一种对托卡马克有吸引力的等离子体加热方法&#xff0c;具有耦合效率高&#xff0c;功率沉积定位好等优点。陀螺加速器是ECRH系统中…...

Fragment

Fragment是Android开发中的一个重要组件&#xff0c;用于构建灵活且可重用的用户界面模块。它可以作为Activity的一部分来展示用户界面&#xff0c;并且可以嵌套在其他Fragment中&#xff0c;从而形成复杂的界面层级。 以下是一个简单的示例&#xff0c;展示了如何在Android中…...

哈希表-救赎金

Leetcode&#xff1a; https://leetcode.cn/problems/ransom-note/?envTypestudy-plan-v2&envIdtop-interview-150 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true …...

vue3+vite+ts项目适配各种分辨率解决方案

现在的电脑屏幕和尺寸越来越多样化&#xff0c;对于前端开发来说&#xff0c;适配各种屏幕成了大难题&#xff0c;开发中一个实际例子&#xff1a;开发一个导航栏&#xff0c;ui给的是1920*60的尺寸&#xff0c;前端开发的时候&#xff0c;在自己电脑缩放比例中开发的&#xff…...

Python Opencv实践 - 矩形轮廓绘制(直边矩形,最小外接矩形)

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/stars.png") plt.imshow(img[:,:,::-1])img_gray cv.cvtColor(img, cv.COLOR_BGR2GRAY) #通过cv.threshold转换为二值图 ret,thresh cv.threshold(img_gray,…...

大数据HBASE的详细使用

摘要&#xff1a;本文将深入探讨大数据HBASE的使用步骤&#xff0c;帮助读者了解和掌握这一强大的分布式数据库系统的基本概念和操作技巧。通过本文的阅读&#xff0c;读者将能够熟悉HBASE的基本设置&#xff0c;了解其核心概念&#xff0c;掌握基本的查询和管理操作&#xff0…...

Sentinel 流量控制框架

1. Sentinel 是什么&#xff1f; Sentinel是由阿里中间件团队开源的&#xff0c;面向分布式服务架构的轻量级高可用流量控制组件。 2. 主要优势和特性 轻量级&#xff0c;核心库无多余依赖&#xff0c;性能损耗小。 方便接入&#xff0c;开源生态广泛。 丰富的流量控制场景。 …...

leetcode原题: 跳水板

题目&#xff1a; 你正在使用一堆木板建造跳水板。有两种类型的木板&#xff0c;其中长度较短的木板长度为shorter&#xff0c;长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法&#xff0c;生成跳水板所有可能的长度。 返回的长度需要从小到大排列。 示例&…...

深度学习入门(Python)学习笔记1

第1章 Python入门 1.1python是什么 Python是一个简单、易读、易记的编程语言&#xff0c;而且是开源的&#xff0c;可以免费地自由使用。 使用Python不仅可以写出可读性高的代码&#xff0c;还可以写出性能高&#xff08;处理速度快&#xff09;的代码。 再者&#xff0c;在…...

苏州想要获得融资融券低利率账户的方法?怎么开融资融券账户?

想要获得融资融券低利率账户&#xff0c;可以通过以下几种方式&#xff1a; 选择低费率的券商&#xff1a;不同券商的费率不同&#xff0c;一些券商会提供低利率的融资融券账户&#xff0c;可以通过咨询券商或者比较不同券商的费率来找到最佳账户。 提升自身信用&#xff1a;获…...

【LeetCode周赛】LeetCode第359场周赛

LeetCode第359场周赛 判别首字母缩略词k-avoiding 数组的最小总和销售利润最大化找出最长等值子数组 判别首字母缩略词 给你一个字符串数组 words 和一个字符串 s &#xff0c;请你判断 s 是不是 words 的 首字母缩略词 。 如果可以按顺序串联 words 中每个字符串的第一个字符…...

vue3+ts+tinynce在富文本编辑器菜单栏实现下拉框选择

实现效果 代码&#xff1a; <script lang"ts" setup> import Editor from tinymce/tinymce-vue import tinymce from tinymce; import { getIndicator } from /api/data-assets/data-dictoryimport {computed, ref} from "vue"; const props defin…...

前端UI组件库深度解析:构建现代化的用户体验

引言 在当今的前端开发中&#xff0c;UI组件库已经成为了我们工具箱中不可或缺的一部分。这些库可以极大地提高我们的工作效率&#xff0c;同时也使我们能够专注于实现真正的业务逻辑&#xff0c;而不是重复地编写UI代码。本篇博客将详细地探讨UI组件库的核心概念&#xff0c;…...

leetcode 1326. Minimum Number of Taps to Open to Water a Garden

x轴上的花园范围为[0,n], 0~n这个n1个离散点上有水龙头&#xff0c;第 i 个水龙头能浇水的范围为[i-ranges[i], iranges[i]]. 求能浇整个花园的最小水龙头个数。 思路&#xff1a; 方法一&#xff1a; greedy 先把每个水龙头能浇的区间准备好&#xff0c; 用一个数组保存所有…...

C++日期类的基本实现

前言 对于许多出初学C的同学来说首先接触的第一个完整的类便是日期类&#xff0c;这个类能有效的帮助我们理解C中有关类的初始化以及重载的相关知识&#xff0c;帮助我们轻松上手体验C的魅力。 文章目录 前言一、日期类整体初概二、构造2.1 判断日期是否合法2.2 构造函数 三、…...

第六章:数据结构与算法-part3:数据结构算法提升

文章目录 一、排序算法1.1 插入排序1、直接插入排序2、折半插入排序3、希尔排序 1.2、交换排序法1、起泡排序2、快速排序 1.3 选择类排序1、简单选择排序 二、业务逻辑算法设计2.1 基本概念和术语2.2 静态查找表2.3、有序表的查找 一、排序算法 排序是数据处理过程中经常使用的…...

keras深度学习框架通过卷积神经网络cnn实现手写数字识别

昨天通过keras构建简单神经网络实现手写数字识别&#xff0c;结果在最后进行我们自己的手写数字识别的时候&#xff0c;准确率堪忧&#xff0c;只有60%。今天通过卷积神经网络来实现手写数字识别。 构建卷积神经网络和简单神经网络思路类似&#xff0c;只不过这里加入了卷积、池…...

Springboot启动异常 Command line is too long

Springboot启动异常 Command line is too long Springboot启动时直接报异常 Command line is too long. Shorten command line for xxxxxApplication or also for Spring Boot default解决方案: 修改 SystemApplication 的 Shorten command line&#xff0c;选择 JAR manife…...

PXE 装机(五十)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、PXE是什么 二、PXE的组件 三、配置vsftpd 四、配置tftp 五、准备pxelinx.0文件、引导文件、内核文件 ​六、配置dhcp 七、创建default文件 八、配置pxe无人值守…...

C++ 虚函数与纯虚函数

目录 1. 虚函数 2. 纯虚函数 C 中的虚函数和纯虚函数都是实现多态的重要机制。多态可以让不同的对象以相同的方式进行操作&#xff0c;从而简化代码的编写和维护。 1. 虚函数 虚函数是一种在基类中声明的函数&#xff0c;可以在派生类中进行重写。在运行时&#xff0c;根据对…...

警告:Provides transitive vulnerable dependency maven:org.yaml:snakeyaml:1.30

1. 警告 SpringBoot 的 validation 依赖包含有易受攻击的依赖 snakeyaml。 警告信息如下&#xff1a; Provides transitive vulnerable dependency maven:org.yaml:snakeyaml:1.30 意思是&#xff1a;提供了可传递的易受攻击依赖 maven:org.yaml:snakeyaml:1.30 2. 警告示例 …...

中文命名实体识别

本文通过people_daily_ner数据集&#xff0c;介绍两段式训练过程&#xff0c;第一阶段是训练下游任务模型&#xff0c;第二阶段是联合训练下游任务模型和预训练模型&#xff0c;来实现中文命名实体识别任务。 一.任务和数据集介绍 1.命名实体识别任务 NER&#xff08;Named En…...