七、SSM 框架整合

       目前已经学习了 MyBatis 框架,Spring 框架,以及Spring MVC 框架。现阶段学习将这三个框架整合到一起,实现简单的前后端交互的曾删改差功能页面。

       Mybatis 框架主要负责数据库的操作问题,以及数据回显。该框架将 SQL 与 Java 代码拆分开,降低耦合度的同时使代码可视程度更高,方便后期的 SQL 维护。

       Spring 框架主要负责解决在企业级开发时业务逻辑层与其他层之间有大量耦合现象。将 Java 对象的创建和管理交给 Spring IOC 容器处理,减少了很多的对象重复创建,主要理念就是:谁用这个对象就由谁来创建!而不是事前创建完成再去调用!

       Spring MVC 框架负责V-C交互的问题,即V(View:视图)和C(Controller:控制器)之间的交互问题,具体表现在:用户可以通过视图将请求数据提交给服务器端的控制器,而控制器可以接收到相关数据后进行处理,最终,给予客户端某个视图,使得客户端得到响应结果。

注:其实这些框架的出现就是为了实现一件事,代码解耦,优化程序!将原本写在一起的代码查分开来,各司其职,各自优化,使程序的开发过程更加简单,后续优化或者改动更加便捷,程序更加高效。


文章目录

  • 一、环境准备
  • 二、编辑 Dao 层(以及 MyBatis 相关配置)代码
  • 三、编辑 Service 层接口和实现类逻辑代码
  • 四、编辑 Spring 相关配置
    • 4.1 Spring 整合 Mybatis,配置数据源,将数据源以 bean 的形式进行管理
    • 4.2 Spring 整合 service 层
    • 4.3 整合 Spring MVC 层
      • 4.3.1 引入 web 框架支持,配置 web.xml
      • 4.3.1 配置整合 Spring MVC


一、环境准备


  • IDEA、MySql、Tomcat、Maven



  • 数据库准备

    • 创建数据库

      CREATE DATABASE `ssmbuild`;
      
    • 在 ssmbuild 库中创建相关的表并导入数据

      -- 指定ssmbuild 库
      USE `ssmbuild`;DROP TABLE IF EXISTS `books`;CREATE TABLE `books` (
      `bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id',
      `bookName` VARCHAR(100) NOT NULL COMMENT '书名',
      `bookCounts` INT(11) NOT NULL COMMENT '数量',
      `detail` VARCHAR(200) NOT NULL COMMENT '描述',
      KEY `bookID` (`bookID`)
      ) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT  INTO `books`(`bookID`,`bookName`,`bookCounts`,`detail`)VALUES
      (1,'Java',1,'从入门到放弃'),
      (2,'MySQL',10,'从删库到跑路'),
      (3,'Linux',5,'从进门到进牢');
      

  • 项目准备

    • 创建基本的 maven 项目,并在 pom.xml 中导入相关依赖和姿态资源配置

      • 依赖准备

            <dependencies><!--Junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><!--数据库驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!-- 数据库连接池:c3p0 --><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency><!--Servlet - JSP --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--Mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version></dependency><!-- Mybatis整合Spring--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.2</version></dependency><!--Spring--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.9.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.1.9.RELEASE</version></dependency><!-- Lombok工具 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version><scope>provided</scope></dependency></dependencies>
        
      • 静态资源配置

        <!-- 配置静态资源,避免找不到相关的文件 --><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources></build>
        
    • 在 Java 资源目录下创建之后需要的包
      在这里插入图片描述




二、编辑 Dao 层(以及 MyBatis 相关配置)代码


  • 在 pojo 包下创建 Books 表的实体类

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Books {private int bookID;private String bookName;private int bookCounts;private String detail;
    }
    
  • 创建 Mapper 接口,以及与接口对应的 xml

    public interface BooksMapper {// 查询全部书籍信息List<Books> queryBooksAll();// 根据书籍ID查询List<Books> queryBooksId(@Param("bookID") int id);// 新增书籍int saveBooks(Books books);// 修改书籍信息int updateBooks(Books books);// 删除书籍int deleteBooks(Books books);
    }
    
  • 接口对应的 xml-BooksMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.sys.mapper.BooksMapper"><select id="queryBooksAll" resultType="com.sys.pojo.Books">select * from books</select><select id="queryBooksId" resultType="com.sys.pojo.Books">select * from books where 1=1<if test="bookID != null">and bookID = #{bookID}</if></select><insert id="saveBooks" parameterType="com.sys.pojo.Books">insert into books (bookName, bookCounts, detail)values (#{bookName}, #{bookCounts}, #{detail})</insert><update id="updateBooks" parameterType="com.sys.pojo.Books">update books set bookCounts = #{bookCounts} where 1=1<if test="bookID != null">and bookID = #{bookID}</if></update><delete id="deleteBooks" parameterType="com.sys.pojo.Books">delete from books where 1=1<if test="booksID != null">and booksID = #{booksID}</if></delete></mapper>
    
  • 在resources 资源目录下创建资源配置文件

    • 创建 MyBatis 配置文件:MyBatis-Config.xml

      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
      <configuration><!-- 数据源不再由 MyBatis 负责,交给 Spring 来做  --><!-- 配置实体 --><typeAliases><package name="com.sys.pojo"/></typeAliases><!-- 配置mapper接口 --><mappers><mapper class="com.sys.mapper.BooksMapper"/></mappers>
      </configuration>
      
    • 创建数据源配置文件:database.properties

      jdbc.driver=com.mysql.jdbc.Driver
      jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8
      jdbc.username=root
      jdbc.password=root
      




三、编辑 Service 层接口和实现类逻辑代码


  • 在 service 包下创建接口

    public interface BooksService {// 查询全部书籍信息List<Books> queryBooksAll();// 根据ID查询List<Books> queryBooksId();// 新增书籍int saveBooks(Books books);// 修改书籍信息int updateBooks(Books books);// 删除书籍int deleteBooks(Books books);}
    
    • 创建对应的实现类

      @Service
      public class BooksServiceImpl implements BooksService {// 依赖注入,通过该 bean 调用其中的方法@AutowiredBooksMapper bokksMapper;public List<Books> queryBooksAll() {List<Books> list = bokksMapper.queryBooksAll();return list;}public List<Books> queryBooksId() {List<Books> list = bokksMapper.queryBooksId(1);return list;}public int saveBooks(Books books) {Books book = new Books();book.setBookName("Java 八股文,背!");book.setBookCounts(5);book.setDetail("从Java基础到框架的知识点,面试需要背");return bokksMapper.saveBooks(book);}public int updateBooks(Books books) {Books book = new Books();book.setBookID(1);book.setBookCounts(4);return bokksMapper.updateBooks(books);}public int deleteBooks(Books books) {Books book = new Books();book.setBookID(3);return bokksMapper.deleteBooks(books);}
      }
      




四、编辑 Spring 相关配置


  • 创建 Spring 配置文件:applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"></beans>
    

4.1 Spring 整合 Mybatis,配置数据源,将数据源以 bean 的形式进行管理

  • 配置 Spring 整合 dao层,创建 Spring-dao.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"></beans>
    
    • 具体有如下步骤

      • 1、导入数据源文件

        <context:property-placeholder location="classpath:database.properties"/>
        
      • 2、配置数据库连接池

        <!--数据库连接池:
        dbcp 半自动化操作 不能自动连接
        c3p0 自动化操作(自动的加载配置文件 并且设置到对象里面)-->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><!--配置数据库连接池相关属性,通过 EL 表达式获取database.properties中的具体配置--><property name="driverClass" value="${jdbc.driver}"/><property name="jdbcUrl" value="${jdbc.url}"/><property name="user" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><!--配置c3p0连接池私有属性--><property name="maxPoolSize" value="30"/><!--最大连接池大小--><property name="minPoolSize" value="10"/><!--最小连接池大小--><!-- 关闭连接后不自动commit --><property name="autoCommitOnClose" value="false"/><!-- 获取连接超时时间 --><property name="checkoutTimeout" value="10000"/><!-- 当获取连接失败重试次数 --><property name="acquireRetryAttempts" value="2"/>
        </bean>
        
      • 3、配置SqlSessionFactory对象

        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!--将数据连接池注入到 SqlSessionFactory 对象中--><property name="dataSource" ref="dataSource"/><!--配置 Mybatis全局配置文件--><property name="configLocation" value="classpath:mybatis-config.xml"/>
        </bean>	
        
      • 4、配置扫描Dao接口包,动态实现Dao接口注入到spring容器中

        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 将对象sqlSessionFactory注入sqlSessionFactoryBeanName对象中 --><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/><!-- 配置Spring自动扫描,mapper包下的接口会被自动扫描 --><property name="basePackage" value="com.sys.dao"/>
        </bean>
        
    • 文件完整配置

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--配置整合 MyBatis --><!--1.关联数据源配置文件--><context:property-placeholder location="classpath:database.properties"/><!--2.配置数据库连接池--><!--数据库连接池:dbcp 半自动化操作 不能自动连接c3p0 自动化操作(自动的加载配置文件 并且设置到对象里面)--><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><!--配置数据库连接池相关属性,通过 EL 表达式获取database.properties中的具体配置--><property name="driverClass" value="${jdbc.driver}"/><property name="jdbcUrl" value="${jdbc.url}"/><property name="user" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><!--配置c3p0连接池私有属性--><property name="maxPoolSize" value="30"/><!--最大连接池大小--><property name="minPoolSize" value="10"/><!--最小连接池大小--><!-- 关闭连接后不自动commit --><property name="autoCommitOnClose" value="false"/><!-- 获取连接超时时间 --><property name="checkoutTimeout" value="10000"/><!-- 当获取连接失败重试次数 --><property name="acquireRetryAttempts" value="2"/></bean><!--3.配置SqlSessionFactory对象--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!--将数据连接池注入到 SqlSessionFactory 对象中--><property name="dataSource" ref="dataSource"/><!--配置 Mybatis全局配置文件--><property name="configLocation" value="classpath:mybatis-config.xml"/></bean><!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 将对象sqlSessionFactory注入sqlSessionFactoryBeanName对象中 --><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/><!-- 配置Spring自动扫描,mapper包下的接口会被自动扫描 --><property name="basePackage" value="com.sys.dao"/></bean></beans>
      




4.2 Spring 整合 service 层

  • 配置 Spring 整合 service 层,创建 Spring-Service.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"></beans>
    
    • 具体步骤如下:

      • 1、配置 service 包下的自动扫描

            <!--1.扫描service包下的所有类(不包括接口)--><context:component-scan base-package="com.sys.service"/>
        
      • 2、将业务类注入到 Spring 容器中,由容器进行管理

            <!--2.将我们所有的业务类注入到Spring中,可以通过配置或者注解实现--><bean id="BooksServiceImpl" class="com.sys.service.impl.BooksServiceImpl"><property name="booksMapper" ref="booksMapper"/></bean>
        
      • 3、配置事务管理器,管理注入进来的数据库连接池

            <!--3.配置事务管理器--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!--注入数据库连接池--><property name="dataSource" ref="dataSource"/></bean>
        
    • 文件完整配置

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--1.扫描service包下的所有类(不包括接口)--><context:component-scan base-package="com.sys.service"/><!--2.将我们所有的业务类注入到Spring中,可以通过配置或者注解实现--><bean id="BooksServiceImpl" class="com.sys.service.impl.BooksServiceImpl"><property name="booksMapper" ref="booksMapper"/></bean><!--3.配置事务管理器--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!--注入数据库连接池--><property name="dataSource" ref="dataSource"/></bean></beans>
      

Spring 层配置完成:Spring 就是一个大杂烩,一个容器!这些配置都可以整合到 Spring 容器当中。




4.3 整合 Spring MVC 层

配置整合 Spring MVC 层

4.3.1 引入 web 框架支持,配置 web.xml

  • 具体步骤如下:

    • 配置 DispatcherServlet

      <!--DispatcherServlet--><servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><!--一定要注意:我们这里加载的是总的配置文件,之前被这里坑了!-->  <param-value>classpath:applicationContext.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
      
    • 配置乱码过滤

       <!--配置乱码过滤:encodingFilter--><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><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>
      
    • 配置 Session 过期时间

      <!--Session过期时间--><session-config><session-timeout>15</session-timeout></session-config>
      
  • 文件完整配置

    <?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_4_0.xsd"version="4.0"><!--DispatcherServlet--><servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><!--一定要注意:我们这里加载的是总的配置文件,之前被这里坑了!-->  <param-value>classpath:applicationContext.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--encodingFilter--><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><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><!--Session过期时间--><session-config><session-timeout>15</session-timeout></session-config></web-app>
    

4.3.1 配置整合 Spring MVC

  • 创建 Spring-MVC.xml


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

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

相关文章

JDK7多线程并发环境HashMap死循环infinite loop,CPU拉满100%,Java

JDK7多线程并发环境HashMap死循环infinite loop&#xff0c;CPU拉满100%&#xff0c;Java HashMap底层数据实现是数组链表&#xff0c;链表在哈希碰撞后装入新数据&#xff0c;像是一个桶。 HashMap在JDK7的实现中&#xff0c;并发环境存在死循环infinite loop问题。导致的结果…

异常-java

目录 一、异常的概念和体系结构 1.1 异常的概念 1.2 异常的体系结构 1.3 异常的分类 二、异常的处理 2.1 防御式编程 2.2 异常抛出 2.3 异常捕获 2.4 异常处理流程 三、自定义异常类 一、异常的概念和体系结构 1.1 异常的概念 程序员在开发过程中&#xff0c;想要将代码写得…

Centos7 + Apache Ranger 2.4.0 部署

一、Ranger简介 Apache Ranger提供一个集中式安全管理框架, 并解决授权和审计。它可以对Hadoop生态的组件如HDFS、Yarn、Hive、Hbase等进行细粒度的数据访问控制。通过操作Ranger控制台,管理员可以轻松的通过配置策略来控制用户访问权限。 1、组件列表 # Service Name Liste…

Springboot - 13.spring-boot-starter-security集成

&#x1f440;Spring Boot Starter Security 中文文档 Spring Security中文文档 &#x1f440;Spring Boot Starter Security 运行流程 当然可以。首先&#xff0c;我们会将用户存储和认证的流程融入整个Spring Boot Starter Security的使用流程中。以下是当你使用Spring Bo…

Excel VSTO开发4 -其他事件

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 4 其他事件 针对插件的事件主要有Startup、Shutdown这两个事件&#xff0c;在第2节中已经讲解。在开发窗口中&#xff0c;选择对象…

“谁天生是项目经理?四大特质决定你的机会“

大家好&#xff0c;我是老原。 但其实不少刚开始尝试项目管理的人&#xff0c;包括老原自己也曾经遇到过这样的问题&#xff1a; ▪ 自己没权没势&#xff0c;大家凭什么听我的&#xff1f; ▪ 资源受限&#xff0c;如何向老板争取更多资源&#xff1f; ▪ 怎样才能推进多方…

WebAssembly 在云原生中的实践指南

1 WebAssembly 介绍 WebAssembly&#xff08;Wasm&#xff09;是一种通用字节码技术&#xff0c;它可以将其他编程语言&#xff08;如 Go、Rust、C/C 等&#xff09;的程序代码编译为可在浏览器环境直接执行的字节码程序。 WebAssembly 的初衷之一是解决 JavaScript 的性能问…

【月报】Aavegotchi 开发进度更新 - 2023 年 8 月

嗨&#xff0c;Gotchigang&#xff01;2023 年的进程已经过了一半&#xff0c;我们团队一直在努力推动 Aavegotchi 生态系统迈向新的高度&#xff01;在本月的开发更新中&#xff0c;我们将分享在以下方面取得的进展&#xff1a; ● Gotchi 游戏 ● Gotchichain ● Aavegotc…

【iVX】十五分钟制作一款小游戏,iVX真有怎么神?

个人主页&#xff1a;【&#x1f60a;个人主页】 新人博主&#xff0c;喜欢就关注一下呗~ 文章目录 前言iVX介绍初上手布置背景制作可移动物体总结&#xff08;完善步骤&#xff09; 前言 在上篇文章中&#xff0c;我向大家介绍了一种打破常规的编程方式——iVX&#xff0c;可…

Go map转json

在Go中如何返回前端 字段名称/数量都不确定的json数据&#xff1f; 之前用Go写web服务&#xff0c;返回给前端的json格式的接口&#xff0c;有哪些要返回的字段都是明确的。都是预先定义一个结构体&#xff0c;json.Marshal一下即可~ 但当有的场景&#xff0c;要返回哪些字段不…

RabbitMQ:hello结构

1.在Linux环境上面装入rabbitMQ doker-compose.yml version: "3.1" services:rabbitmq:image: daocloud.io/library/rabbitmq:managementrestart: alwayscontainer_name: rabbitmqports:- 6786:5672- 16786:15672volumes:- ./data:/var/lib/rabbitmq doker-compos…

【C++】函数重载 ④ ( 函数指针定义的三种方式 | 直接定义函数指针 | 通过 函数类型 定义 函数指针 | 通过 函数指针类型 定义 函数指针 )

文章目录 一、函数指针定义方法1、直接定义函数指针2、通过 函数类型 定义 函数指针3、通过 函数指针类型 定义 函数指针4、代码示例 - 不同方式定义函数指针 博客总结 : 重载函数 : 使用 相同 的 函数名 , 定义 不同 的 函数参数列表 ;判定标准 : 只有 函数参数 的 个数 / 类…

安全狗亮相厦门市第五届网络安全宣传周开幕式

9月5日&#xff0c;厦门市第五届网络安全宣传周开幕式成功举行。 作为国内云原生安全领导厂商&#xff0c;安全狗也受邀参与此次大会。 据悉&#xff0c;此次主要包含领导致辞、厦门市第五届网络安全宣传周亮点活动介绍、厦门市第二届网络安全攻防演练优秀组织奖颁奖、厦门市…

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

目录 前言 一、SpringMVC之常用注解 1. 注解说明 2. 扩展延伸 3. 注解的作用展示 导入slf4j的相关依赖及配置项目 pom.xml文件 二、参数传递 1. 基础类型String类型 测试代码 测试结果 页面 控制台 2. 复杂类型 测试代码 测试结果 页面 控制台 ​编辑 3. Req…

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…