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

企业级信息系统开发学习笔记1.8 基于Java配置方式使用Spring MVC

文章目录

  • 零、本节学习目标
  • 一、基于Java配置与注解的方式使用Spring MVC
    • 1、创建Maven项目 - SpringMVCDemo2020
    • 2、在pom.xml文件里添加相关依赖
    • 3、创建日志属性文件 - log4j.properties
    • 4、创建首页文件 - index.jsp
    • 5、创建Spring MVC配置类 - SpringMvcConfig
    • 6、创建Web应用初始化配置类 - MyWebInitializer
    • 7、创建问候控制器 - HelloController
    • 8、配置Tomcat服务器
    • 9、启动服务器,查看效果
    • 10、 将Spring MVC配置类与Web应用初始化配置类放到config子包
  • 二、实战练习
    • 任务1、创建登录页面、登录成功与登录失败页面
      • 1、登录页面 - login.jsp
      • 2、登录成功页面 - success.jsp
      • 3、登录失败页面 - failure.jsp
    • 任务2、首页添加登录链接,单击可跳转到登录页面
      • 1、 修改首页,添加超链接
      • 2、修改Spring MVC配置类,定义视图控制器
      • 3、创建登录控制器 - LoginController
      • 4、启动服务器,查看效果
    • 任务3、添加静态资源,让Spring MVC正确处理
      • 1、在images目录里添加一张图片 - bear.jpg
      • 2、修改Spring MVC配置文件,添加静态资源映射
      • 3、修改首页文件,添加图片元素
      • 4、启动服务器,查看效果
      • 5、在js目录里创建脚本 - check.js
      • 6、修改Spring MVC配置文件
      • 7、修改登录页面,导入脚本文件
      • 8、启动服务器,查看效果
      • 9、在css目录里创建样式文件 - login.css
      • 10、修改Spring MVC配置文件
      • 11、修改登录页面,导入样式文件
      • 12、启动服务器,查看效果

零、本节学习目标

  1. 会基于Java配置与注解的方式使用Spring MVC
  2. 使用Spring与Spring MVC框架完成用户登录功能

上一讲,我们学习了如何基于XML配置与注解的方式使用Spring MVC,涉及到三个XML配置文件:Spring配置文件(spring-config.xml)、Spring MVC配置文件(spring-mvc-config.xml)、Web部署描述文件(web.xml),这一讲,我们通过案例学习如何基于Java配置与注解的方式使用Spring MVC,只有Java配置类,没有XML配置文件。

一、基于Java配置与注解的方式使用Spring MVC

1、创建Maven项目 - SpringMVCDemo2020

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

2、在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>net.hw.spring</groupId><artifactId>SpringDemo2020</artifactId><version>1.0-SNAPSHOT</version><properties><!-- spring.version --><spring.version>5.2.9.RELEASE</spring.version></properties><dependencies><!--Spring核心--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><!--Spring Bean--><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><!--Spring容器--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><!--Spring测试--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!--Spring数据库支持--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><!--数据库驱动工具包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version></dependency><!--数据库连接池框架--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.24</version></dependency><!--日志框架--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--Spring AOP--><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><!--AspectJ支持--><dependency><groupId>aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.5.4</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.6</version><scope>runtime</scope></dependency><!--单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!--Spring Web--><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><!--Spring MVC--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!--JSP标准标签库--><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--Servlet--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!--对json的支持--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.7</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.7</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.7</version></dependency><!--对xml的支持--><dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.5.3</version></dependency></dependencies>
</project>

3、创建日志属性文件 - log4j.properties

  • 在resources目录里创建log4j.properties
    在这里插入图片描述
log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

4、创建首页文件 - index.jsp

  • 在resources里创建templates子目录,然后在子目录里创建index.jsp
    在这里插入图片描述

5、创建Spring MVC配置类 - SpringMvcConfig

  • 创建net.hw.spring包,然后在里面创建SpringMvcConfig类
    在这里插入图片描述
package net.hw.spring;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
/*** 功能:Spring MVC配置类* 作者:华卫* 日期:2020年10月01日*/
@Configuration
@EnableWebMvc
@ComponentScan("net.hw.spring")
public class SpringMvcConfig implements WebMvcConfigurer {@Beanpublic InternalResourceViewResolver viewResolver () {InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();viewResolver.setPrefix("/WEB-INF/classes/templates/");viewResolver.setSuffix(".jsp");viewResolver.setViewClass(JstlView.class);return viewResolver;}
}

6、创建Web应用初始化配置类 - MyWebInitializer

  • 现在Java配置方式在逐步取代XML配置方式,WebApplicationInitializer接口可以看做是web.xml的替代,通过实现WebApplicationInitializer接口,在其中可以添加servlet,listener等,在加载Web项目时会加载这个接口实现类,从而起到web.xml相同的作用。
    在这里插入图片描述
package net.hw.spring;import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;/*** 功能:Web应用初始化配置类* 作者:华卫* 日期:2020年10月01日*/
public class MyWebInitializer implements WebApplicationInitializer {@Overridepublic void onStartup(ServletContext servletContext) throws ServletException {// 创建Web应用容器AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();// 注册配置类(配置类对应以前的spring-mvc-config.xml文件)context.register(SpringMvcConfig.class);// 与当前ServletContext关联context.setServletContext(servletContext);// 注册Spring MVC的前端控制器(DispatcherServlet)ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(context));// 过滤一切资源请求servlet.addMapping("/");// 设置启动加载顺序servlet.setLoadOnStartup(1);}
}

7、创建问候控制器 - HelloController

  • 在net.hw.spring包里创建controller子包,然后在里面创建HelloController类
    在这里插入图片描述
package net.hw.spring.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** 功能:问候控制器* 作者:华卫* 日期:2020年10月01日*/
@Controller
public class HelloController {@RequestMapping("/hello")public String hello() {return "index";}
}

8、配置Tomcat服务器

  • 单击【Add Configuration…】
    在这里插入图片描述
  • 添加Tomcat Server - Local
    在这里插入图片描述
  • 单击【Fix】按钮
    在这里插入图片描述
  • 单击【OK】按钮
    在这里插入图片描述
  • 查看项目启动URL
    在这里插入图片描述

9、启动服务器,查看效果

在这里插入图片描述

10、 将Spring MVC配置类与Web应用初始化配置类放到config子包

在这里插入图片描述

二、实战练习

任务1、创建登录页面、登录成功与登录失败页面

在这里插入图片描述

1、登录页面 - login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>用户登录</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
</head>
<body>
<h3 style="text-align: center">用户登录</h3>
<form id="frmLogin" action="login" method="post"><table class="tb" border="1" cellpadding="10" style="margin: 0px auto"><tr><td align="center">账号</td><td><input id="username" type="text" name="username"/></td></tr><tr><td align="center">密码</td><td><input id="password" type="password" name="password"/></td></tr><tr align="center"><td colspan="2"><input type="submit" value="登录"/><input type="reset" value="重置"/></td></tr></table>
</form>
</body>
</html>

2、登录成功页面 - success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>登录成功</title>
</head>
<body>
<h1>${username},登录成功!</h1>
</body>
</html>

3、登录失败页面 - failure.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>登录失败</title>
</head>
<body>
<h1>${username},登录失败!</h1>
</body>
</html>

任务2、首页添加登录链接,单击可跳转到登录页面

1、 修改首页,添加超链接

在这里插入图片描述

2、修改Spring MVC配置类,定义视图控制器

在这里插入图片描述

package net.hw.spring.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;/*** 功能:Spring MVC配置类* 作者:华卫* 日期:2020年10月01日*/
@Configuration
@EnableWebMvc
@ComponentScan("net.hw.spring")
public class SpringMvcConfig implements WebMvcConfigurer {@Beanpublic InternalResourceViewResolver viewResolver() {InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();viewResolver.setPrefix("/WEB-INF/classes/templates/");viewResolver.setSuffix(".jsp");viewResolver.setViewClass(JstlView.class);return viewResolver;}/*** 添加视图控制器* @param registry*/@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/toLogin").setViewName("login");}
}

3、创建登录控制器 - LoginController

  • 在controller子包里创建LoginController类
    在这里插入图片描述
package net.hw.spring.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;import javax.servlet.http.HttpSession;/*** 功能:登录控制器* 作者:华卫* 日期:2020年10月01日*/
@Controller
public class LoginController {@RequestMapping("/login")public String login(@RequestParam("username") String username,@RequestParam("password") String password,HttpSession session) {session.setAttribute("username", username);if (username.equals("admin") && password.equals("12345")) {return "success"; // 逻辑视图名} else {return "failure"; // 逻辑视图名}}
}

4、启动服务器,查看效果

在这里插入图片描述

任务3、添加静态资源,让Spring MVC正确处理

  • 在resources里创建static目录,在static里创建images、css和js目录

1、在images目录里添加一张图片 - bear.jpg

在这里插入图片描述

2、修改Spring MVC配置文件,添加静态资源映射

在这里插入图片描述

@Override                                                                  
public void addResourceHandlers(ResourceHandlerRegistry registry) {        registry.addResourceHandler("/images/**").                             addResourceLocations("classpath:/static/images/");              
}                                                                          

3、修改首页文件,添加图片元素

在这里插入图片描述

4、启动服务器,查看效果

在这里插入图片描述

5、在js目录里创建脚本 - check.js

在这里插入图片描述

/*** 检验登录表单* * @returns {Boolean}*/
function checkLoginForm() {	// 获取用户名文本框var username = document.getElementById("username");// 获取密码文本框var password = document.getElementById("password");// 非空校验if (username.value == "") {alert("用户名不能为空!");// 让用户名文本框获得焦点username.focus();return false;}if (password.value == "") {alert("密码不能为空!");// 让密码文本框获得焦点password.focus();return false;}	return true; // 表明可以提交数据到服务器端
}

6、修改Spring MVC配置文件

在这里插入图片描述

registry.addResourceHandler("/js/**").addResourceLocations("classpath:/static/js/");

7、修改登录页面,导入脚本文件

在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>用户登录</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ><script src="js/check.js"></script>
</head>
<body>
<h3 style="text-align: center">用户登录</h3>
<form id="frmLogin" action="login" method="post"><table class="tb" border="1" cellpadding="10" style="margin: 0px auto"><tr><td align="center">账号</td><td><input id="username" type="text" name="username"/></td></tr><tr><td align="center">密码</td><td><input id="password" type="password" name="password"/></td></tr><tr align="center"><td colspan="2"><input type="submit" value="登录" onclick="return checkLoginForm()"/><input type="reset" value="重置"/></td></tr></table>
</form>
</body>
</html>

8、启动服务器,查看效果

在这里插入图片描述

9、在css目录里创建样式文件 - login.css

在这里插入图片描述

10、修改Spring MVC配置文件

在这里插入图片描述

registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/");

11、修改登录页面,导入样式文件

在这里插入图片描述

12、启动服务器,查看效果

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

相关文章:

企业级信息系统开发学习笔记1.8 基于Java配置方式使用Spring MVC

文章目录零、本节学习目标一、基于Java配置与注解的方式使用Spring MVC1、创建Maven项目 - SpringMVCDemo20202、在pom.xml文件里添加相关依赖3、创建日志属性文件 - log4j.properties4、创建首页文件 - index.jsp5、创建Spring MVC配置类 - SpringMvcConfig6、创建Web应用初始…...

【C语言复习】C语言中的文件操作

C语言中的文件操作写在前面文件操作什么是文件文件的分类文件名文件的操作文件指针文件的打开和关闭文件的顺序读写文件的随机读写fseekftellrewindfeof写在前面 文件操作在C语言部分只是属于了解内容&#xff0c;但是因为它可能会应用在项目中&#xff0c;所以我把它单独写成…...

00后整顿职场,当摸鱼测试员遇上了内卷00后。

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&…...

程序员的上帝视角(4)——视角

对于开发人员来说&#xff0c;工作都是从评估一个需求开始。我们第一个要解决的问题就是看待需求的视角。视角的不同&#xff0c;得到的设计方案可能是完全不同的。作为一个程序员&#xff0c;不能单单从个人视角来看待问题。而是要尝试从不同角色出发&#xff0c;不停思考。上…...

一、webpack基础

webpack基础 一、webpack是什么 webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。 说白了webpack就是一个构建和管理静态资源的工具&#xff0c;在我们使用框架开发时&#xff0c;它会在我们内部的一个或者多个入口根据我们引入的各个模块将他们根据一定的规…...

超详细VMware CentOS7(最小安装)安装教程

前言&#xff1a;在我们使用虚拟机的时候&#xff0c;不要去担心我们的一些操作会使虚拟机损坏或者有没有可能会使我们的电脑本身出现一些问题&#xff0c;要记住无论我们把我们的虚拟机如何都不会影响我们本身的机器&#xff0c;因为它只是虚拟的&#xff0c;在虚拟机里不要担…...

经典卷积模型回顾8—NIN实现图像分类(matlab)

首先&#xff0c;介绍一下NiN&#xff08;Network In Network&#xff09;模型。NiN模型是由加州大学伯克利分校的Lin、Chen、Yan等人在2013年提出的一种深度卷积神经网络模型&#xff0c;其特点是在传统的卷积神经网络中加入了多个小的全连接网络&#xff0c;用于对特征进行非…...

【Java笔记】泛型

本章专题与脉络 泛型概述 生活中的例子 举例1&#xff1a;中药店&#xff0c;每个抽屉外面贴着标签 举例2&#xff1a;超市购物架上很多瓶子&#xff0c;每个瓶子装的是什么&#xff0c;有标签 举例3&#xff1a;家庭厨房中&#xff1a; Java中的泛型&#xff0c;就类似于上…...

【Linux】用户管理

&#x1f60a;&#x1f60a;作者简介&#x1f60a;&#x1f60a; &#xff1a; 大家好&#xff0c;我是南瓜籽&#xff0c;一个在校大二学生&#xff0c;我将会持续分享C/C相关知识。 &#x1f389;&#x1f389;个人主页&#x1f389;&#x1f389; &#xff1a; 南瓜籽的主页…...

深入理解Mysql索引底层数据结构与算法

索引是帮助MySQL高效获取数据的排好序的数据结构 深入理解Mysql索引底层数据结构与算法1.常见的数据结构讲解1.1 二叉树1.1.1 二叉树的定义1.1.2 二叉树示例1.1.3 Mysql为什么不使用二叉树进行数据存储1.2 红黑树1.2.1 红黑树的定义1.2.2 红黑树示例1.2.3 Mysql 为什么不适用红…...

【SpringBoot高级篇】SpringBoot集成jasypt 配置脱敏和数据脱敏

【SpringBoot高级篇】SpringBoot集成jasypt数据脱敏配置脱敏使用场景配置脱敏实践数据脱敏pomymlEncryptMethodEncryptFieldEncryptConstantEncryptHandlerPersonJasyptApplication配置脱敏 使用场景 数据库密码直接明文写在application.yml配置中&#xff0c;对安全来说&…...

JAVA知识体系(二)

分布式&#xff1a; 微服务之间的通信 当前我们微服务架构中&#xff0c;微服务之间使用的三种通讯方式&#xff1a;代理访问&#xff0c;feign请求&#xff0c;消息队列 其中代理访问我们使用的是netflix-zuul&#xff0c;只要是对外暴露请求的所有网关&#xff0c;主要用在…...

Verilog 学习第八节(数码管段码显示)

共阴极数码管&#xff1a;低电平端接的都是0&#xff0c;高电平端哪里设置为1 &#xff0c;哪里就亮~ 共阳极数码管与之相反~ 视觉暂留&#xff1a; 对于三位的共阴极数码管 第0.01s&#xff1a;让数码管0的a段亮&#xff0c;其他数码管全灭 Sel0为高电平&#xff0c;sel1和sel…...

方案开发|快递吊钩电子秤方案

物流的发展为我们提供了生活的便利&#xff0c;足不出户仍可以感受天南地北的美食的特产&#xff0c;在现在这个时代已经是现实并发展成为常态的事情了。在物流发展的每一个环节中&#xff0c;吊钩电子秤也是它必不可缺的一环。人们在寄出物品前需要通过吊钩电子秤称量过重量&a…...

Spring-IOC容器初始化过程

Spring IOC容器的初始化过程:Resource定位,BeanDefinition载入,向IOC容器注册BeanDefinition。整个过程由refresh()方法触发,三个过程由不同的模块完成,使用户更加灵活的对这三个过程剪裁和扩展。 BeanDefinition 就是POJO对象在IOC容器中的抽象。通过BeanDefinition 这个…...

AspCms标签手册

网站通用标签{aspcms:sitepath} 网站终极目录(可放在二级目录,其它语言则在三级目录){aspcms:languagepath} 语言目录{aspcms:siteurl} 网站地址{aspcms:sitelogo} LOGO地址{aspcms:sitetitle} 网站标题{aspcms:additiontitle} 网站附加标题{aspcms:sitekeywords} 网站关键词{a…...

什么是Netty

一&#xff0e;Netty介绍 1.什么是netty Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架&#xff0c;用以快速开发高性能、高可靠性的网络 IO 程序,是目前最流行的 NIO 框架&#xff0c;Netty 在互联网领域、大数据分布式计算…...

SpringCloud:统一网关Gateway

目录 1、网关介绍 2、搭建网关服务 3、路由断言工厂 4、路由过滤器 5、全局过滤器GlobalFilter 6、过滤器执行顺序 7、跨域问题处理 1、网关介绍 网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连&#xff0c;是复杂的网络互 连设备&#xff0…...

【独家】华为OD机试 - 最差产品奖(C 语言解题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

​力扣解法汇总1599. 经营摩天轮的最大利润

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 你正在经营一座摩天轮&#xff0c;该摩天轮共有 4 个座舱 &#xff0c;每个座舱…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...