超简单的Spring Cloud+Mybatis+jsp集成

记录一个 spring boot 打jar包后,无法访问Jsp和静态文件的问题 很奇怪的问题,在Idea中调试就访问正常,一旦打成jar包,就会出现无法访问JSP和静态页面的情况。 最后查询到出现问题的可能情况如下: 首先保证Resource配置里面有相关的内容 <resources> <!-- mybatis mapper 存放位置修改 --> <resource> <dir... 阅读详情

    Spring Cloud项目默认是不支持jsp文件的,我们要想在项目中用到jsp,就需要增加相关依赖。本文中将进述通过两种形式来操作数据库(一种是通过注解,二是通过配置文件)来实现简单的增删改, 本项目使用的是JDK 1.8    spring boot版本是2.2.1。

一、通过注解操作数据库:

1、首先一个创建spring boot web工程(选择war) 如图:

增加如下依赖:

搭建完成后再增加jsp的相关依赖 如下:

<dependencies>
		<!-- spring mvc等依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!-- mybatis依赖包 -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.0.0</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<!-- end -->

		<!-- jsp依赖 -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
		</dependency>
		
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
		</dependency>
		
		<dependency>      
			<groupId>org.springframework.boot</groupId>      
			<artifactId>spring-boot-devtools</artifactId>   
		</dependency>
		<!-- end -->

		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		
	</dependencies>

以上工程的全部依赖都配置好了。

2、配置mysqldatasources在application.properties文件中:

server.port=8080


#jsp前后缀
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

#datascoure配置
spring.datasource.driverClassName =com.mysql.cj.jdbc.Driver
spring.datasource.url =jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username =root
spring.datasource.password =root

#mapeer文件位置
mybatis.mapper-locations=classpath:/mapper/UserDao.xml

mvc:配置的就是视图的前缀和后缀

spring.datasource.driverClassName使用了最新的驱动名称:com.mysql.cj.jdbc.Driver。

url后面需要加上serverTimezone=UTC,mysql会自动提供给我们数据空间。

 

3、接一来创建pojo,mapper等对象,创建如下表结构:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

 

 

创建工程目录如下:

 

4、pojo对象:


public class User implements Serializable{

	private Integer id;
	private String  name;
	private Integer  age;
	
	public User(Integer id, String name, Integer age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}
	
	public User(String name, Integer age) {
		super();
		this.name = name;
		this.age = age;
	}



	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
}

5、Mapeer对象:


@Mapper
public interface UserMapper {

	@Select("select * from users")
    @Results({
        @Result(property = "id",  column = "id", jdbcType=JdbcType.INTEGER),
        @Result(property = "name",  column = "name", jdbcType=JdbcType.VARCHAR),
        @Result(property = "age",  column = "age", jdbcType=JdbcType.INTEGER)
    })
	List<User> getAll();
	
	
	@Select("select * from users where id=#{id}")
    @Results({
        @Result(property = "id",  column = "id", jdbcType=JdbcType.INTEGER),
        @Result(property = "name",  column = "name", jdbcType=JdbcType.VARCHAR),
        @Result(property = "age",  column = "age", jdbcType=JdbcType.INTEGER)
    })
	User getOne(Integer id);
	
	
	//@Insert("INSERT INTO users(id,name,age) VALUES(#{id},#{name}, #{age})")
	@Insert("INSERT INTO users(name,age) VALUES(#{name}, #{age})")
	void insert(User user);
	
	@Update("update users set name=#{name},age=#{age} where id=#{id}")
	void update(User user);
	
	@Delete("delete from users where id=#{id}")
	void delete(Integer id);
}

6、增加control控制器:


//通过注解操作数据库
@Controller
public class UserControl {
	
	private List<User> list;
	
	@Autowired
	UserMapper userMapper;

	@RequestMapping("/add")
	public String welcome() {
		/*userMapper.insert(new User(1,"aa", 12));
		userMapper.insert(new User(2,"bb", 13));
		userMapper.insert(new User(3,"cc", 34));*/
		
		userMapper.insert(new User("aa", 12));
		userMapper.insert(new User("bb", 13));
		userMapper.insert(new User("cc", 34));
		
		return "index";
	}
	
	@RequestMapping("/getusers")
	public String getusers(Model model) {
		list=userMapper.getAll();
		System.out.println(list.toString());
		model.addAttribute("userlist", list);
		
		return "index";
	}
	
	@RequestMapping("/del/{id}")
	public String del(@PathVariable Integer id) {
		userMapper.delete(id);
		
		return "index";
	}
	
	@RequestMapping("/del/{id}/{name}")
	public String update(@PathVariable Integer id,@PathVariable String name) {
		User user=userMapper.getOne(id);
		user.setName(name);
		userMapper.update(user);
		
		return "index";
	}
}

7、将结果再通过jsp展示出来,以上将数据放到了model对象,将对象模型存入到key中jsp再取出:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body style="text-align: center;">

<table border="1" style="width: 300px;height: 100px;margin: auto;">
	<tr>
		<th>学号</th>
		<th>姓名</th>
		<th>年龄</th>
	</tr>
	<c:forEach items="${userlist}" var="list">
	<tr style="text-align: center;">
		<td>${list.id}</td>
		<td>${list.name}</td>
		<td>${list.age}</td>
	</tr>
	</c:forEach>
</table>
</body>
</html>

项目运行再后面内容。

二、通过Xml文件操作数据库:

1、因为使用注解不需要services和dao层,但是xml这种需要,为了满足MVC模型,增加services包下增加:


@Service
public class UserServices {
	
	@Autowired
	UserDao dao;
	
	public List<User> getAll(){
		return dao.getAll();
	}
	
	public User getOne(Integer id) {
		return dao.getOne(id);
	}
	
	public void insert(User user) {
		dao.insert(user);
	}
	
	public void delete(Integer id) {
		dao.delete(id);
	}
	
	public void update(User user) {
		dao.update(user);
	}

}

2、在dao层增加如下:

@Mapper
public interface UserDao {

    List<User> getAll();
    
    User getOne(Integer id);
    
    void insert(User user);
    
    void update(User user);
    
    void delete(Integer id);
}

接下就是创建UserDao.xml文件 放在src/main/resources中,放其它路径也可以,但需要配置下路径,可以参考其它文档。在resources创建文件需要在build path创建之后再更换名称就可以了,如图:

 

4、增加userDao.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.example.demo.dao.UserDao" >
    <resultMap id="BaseResultMap" type="com.example.demo.pojo.User" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="age" property="age" jdbcType="INTEGER" />
    </resultMap>

    <sql id="Base_Column_List" > 
        id, name, age
    </sql>

    <select id="getAll" resultMap="BaseResultMap"  >
       SELECT 
       <include refid="Base_Column_List" />
       FROM users
    </select>

    <select id="getOne" parameterType="java.lang.Integer" resultMap="BaseResultMap" >
        SELECT 
       <include refid="Base_Column_List" />
       FROM users
       WHERE id = #{id}
    </select>

    <insert id="insert" parameterType="com.example.demo.pojo.User" >
       INSERT INTO 
            users
            (id,name,age) 
        VALUES
            (#{id}, #{name}, #{age})
    </insert>

    <update id="update" parameterType="com.example.demo.pojo.User" >
       UPDATE 
            users 
       SET 
        <if test="name != null">name = #{name},</if>
        <if test="age != null">age = #{age},</if>
       WHERE 
            id = #{id}
    </update>

    <delete id="delete" parameterType="java.lang.Integer" >
       DELETE FROM
             users 
       WHERE 
             id =#{id}
    </delete>
</mapper>

前面在application.properties中指定了xml的位置,所以可以扫描到文件 如下:

#mapeer文件位置
mybatis.mapper-locations=classpath:/mapper/UserDao.xml

5、在control中增加一个控制类UserXmlControl:


//通过xml文件配置操作数据库
@Controller
public class UserXmlControl {
	
	private List<User> list;
	
	@Autowired
	UserServices services;

	@RequestMapping("/addXml")
	public String welcome() {
		/*services.insert(new User(1,"aa", 12));
		services.insert(new User(2,"bb", 13));
		services.insert(new User(3,"cc", 34));*/
		
		services.insert(new User("aa", 12));
		services.insert(new User("bb", 13));
		services.insert(new User("cc", 34));
		
		return "index";
	}
	
	@RequestMapping("/getusersXml")
	public String getusers(Model model) {
		list=services.getAll();
		System.out.println(list.toString());
		model.addAttribute("userlist", list);
		
		return "index";
	}
	
	@RequestMapping("/delXml/{id}")
	public String del(@PathVariable Integer id) {
		services.delete(id);
		
		return "index";
	}
	
	@RequestMapping("/delXml/{id}/{name}")
	public String update(@PathVariable Integer id,@PathVariable String name) {
		User user=services.getOne(id);
		user.setName(name);
		services.update(user);
		
		return "index";
	}
}

jsp已经写过了,运行项目 ->将入项目放到tomcat当中   因为是war工程需要在url增加项目名:

首先运行:http://localhost:8080/spring-cloud-mybatis-jsp/add  做增加数据操作,

再运行查看:http://localhost:8080/spring-cloud-mybatis-jsp/getusers

这种是通过注解来操作数据库。

接下来通过xml来操作;

访问:http://localhost:8080/spring-cloud-mybatis-jsp/addXml 来增加数据

读取数据:http://localhost:8080/spring-cloud-mybatis-jsp/getusersXml 

 数据成功增加以上就是通过注解和XML两种形式来操作数据库。

 

项目思考:

1、可以看到工程为什么都是基于com.example.demo包下,如果需要自定义包就需要进行加载,可以参考

微服务架构Spring Boot运行原理 这篇文章。

2、UserDao中的方法是与UserDao.xml中的id 一一对应的,其中insert,update,delete都是不需要返回所以都是void类型,@Mapper注解会将UserDao转换为一个xml的数据对象。

@Mapper
public interface UserDao {

    List<User> getAll();
    
    User getOne(Integer id);
    
    void insert(User user);
    
    void update(User user);
    
    void delete(Integer id);
}

3、将项目放入tomcat中如果提示版本过高需要在spring-cloud-mybatis-jsp工程目录下\.settings\org.eclipse.wst.common.project.facet.core.xml修改,将<installed facet="jst.web" version="3.0"/> 修改成向下一级<installed facet="jst.web" version="2.0"/> 就可以了

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="java" version="1.8"/>
  <installed facet="jst.web" version="3.0"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>

4、项目中如果提示这样的一些错误:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.demo.dao.UserDao.getAll

可能就是你的文件或者类没有扫描,可以用我的项目代码参考。

代码我放在git上面地址为: https://github.com/lookloop21/Spring-Boot-Rersource  名为:spring-cloud-mybatis-jsp

项目过程中有什么问题可以在下方留言。 

SSM框架入门:从零搭建Java Web项目,理解Spring生态核心 在Java Web开发领域,掌握经典框架组合是构建企业级应用的基础。SSM(Spring + Spring MVC + MyBatis)作为Java EE时代的经典架构,其核心价值在于清晰的三层分离架构与配置驱动的开发模式。从概念层面看,Spring框架通过控制反转(IoC)和面向切面编程(AOP)实现了组件解耦;Spring MVC基于前端控制器模式处理Web请求分发;MyBatis则通过SQL映射文件简化了数据库操作。这种组合让开发者能够透彻理解从请求接收到数据持久化的完整链路,特别是通过手动配置数据源 阅读详情

相关推荐

基于JSP与SSM框架的智能报销系统:从架构设计到业务实现

在Java Web开发领域,SSM(Spring+SpringMVC+MyBatis)框架组合与JSP技术构成了经典的企业级应用开发范式。其核心原理在于通过Spring的IoC容器实现组件解耦与依赖注入,利用SpringMVC的DispatcherServlet调度HTTP请求,并由MyBatis完成灵活的数据持久化操作,共同构建出清晰的三层架构。这种技术组合的价值在于,它能高效支撑起包含复杂业务规则与多角色协作的管理系统开发,例如智能化的费用报销流程。在实际应用场景中,系统需处理从报销申请、多级审批到财务

weixin_30363981的博客 464

spring cloud整合jsp和需要注意的地方(小小坑)

spring cloud整合jsp spring cloud现在的使用者越来越多,导致有部分用户需要将原始项目改造成spring cloud项目,或更习惯于jsp开发,这是就需要使用jsp整合到项目中.(若无要求,当然还是freemaker比较好) 添加依赖 在原来的spring cloud基础上添加依赖: <!-- spring boot 内置tomcat jsp支持 --> &...

不锈钢大铁锤的博客 4806

Spring Cloud Consul服务消费方集成JSP和Mybatis完成示例

SpringCloudConsul服务消费方

SpringCloud项目整合JSP,打成jar包出现的问题

因为最近要为公司完成一个小工具,需要用到简单的页面,所以就用SpringCloud项目去整合JSP去完成,但是出现了许许多多的问题,打成jar包之后会读取不到配置文件,或者读取不到JSP页面,就一直访问不到页面。下面把修改完成的配置放上。 首先在pom文件中加入支持jsp的依赖。 &lt;dependency&gt; &lt;groupId&gt;org.apache.tomcat.emb...

New soul 1835

在IDEA中构建Spring Boot + JSP项目

在IDEA中构建Spring Boot + JSP项目,项目配合我的博客文章会显得更通俗易懂。适合准备入门的小伙伴

NXP S32K3xx 多次复位(reset)后MCU跑死、崩溃、出错分析

s32k3出现多次复位后死机的情况

HeFlyYoung的博客 9515

集成spring、springMVC、mybatis、JSP完整示例

我们将通过几个实例来学习 MyBatis 的用法,提供的例子中不仅仅只有MyBatis 部分的代码,还包含Service、Controller、JSP 的代码。这一节会通过一整套的代码来演示MyBatis在项目开发中的基本用法。按照自下而上的顺序进行开发,从Mapper开始,依次开发 Service 层、Controller 层、JSP 前端页面。在实际开发过程中,可能会根据每一层的需求对各层接口进行调整。

虾米大王的学习历程 390

Xilnx大学计划/XUP ZYNQ ZU开发板

TUL PYNQ™-ZU板,基于Xilinx Zynq UltraScale+ MPSoC,是为Xilinx大学项目设计的,以支持Xilinx PYNQ (Python Productivi-ty for Zynq)开源框架和嵌入式系统开发。

weixin_57025922的博客 947

新人一看就懂:Spring Boot+Spring mvc+Mybatis的基础框架demo

Spring Boot的设计目的是来简化新Spring应用的初始搭建以及开发过程,大大减少了代码量,通过这篇文章你可以清楚的看到。这是一个基于Spring Boot的简单demo,希望读者可以通过这篇文章大概能看懂这一个简单的框架搭建。后续我会陆续更新,微服务架构(Spring Boot、Spring Cloud)、分布式架构(Dobbo+Zookeeper)、大数据架构以及源码解析等相关的文章,感兴趣的话可以关注一下。

程序员云帆哥的博客 2万+

华为交换机实战:如何用ACL+流分类精准限制特定IP的网速(附完整命令)

本文详细介绍了华为交换机如何通过ACL+流分类技术实现精准IP限速,包括ACL规则配置、流分类关联、流行为定义及流策略应用等完整步骤。文章提供了实战命令和配置验证方法,帮助网络管理员有效管理带宽资源,解决特定IP占用过多带宽的问题。

weixin_29229055的博客 100

PLC控制气缸与电磁阀:从原理到实战编程详解

在工业自动化领域,很多工程师都能编写PLC程序控制电机启停,但当涉及到气缸和电磁阀的精确控制时,却常常遇到动作不协调、响应延迟甚至设备损坏的问题。这背后的关键不在于PLC编程本身,而在于对气动元件特性和控制逻辑的深入理解。 本文将从实际工程问题出发,深入解析气缸与电磁阀的工作原理、PLC控制逻辑设计、常见故障排查方法,并通过完整的梯形图实例,帮助读者掌握气动系统自动化编程的核心要点。无论你是刚接触PLC的初学者,还是希望提升气动控制技能的工程师,都能从中获得实用的技术指导。 1. 气缸与电磁阀在自动化控制中

weixin_42522374的博客 340

普通spring jsp+mybatis项目修改为springboot + jsp +mybatis项目

由于公司决定使用spring cloud,但是公司积累了大量的普通的jsp项目,老的项目直接全部修改为springboot成本过高,周期比较长,而且公司业务正在快速拓展,所以需要把之前的老项目修改为springboot项目,特花了几天时间研究如何把老的项目修改为springboot项目,研究过程中非常坎坷,一步一坑,所以现在整理一下相关代码,希望能够对有类似需要的朋友有所帮助。代码下载:http://www.demodashi.com/demo/10310.html

findhappy117的博客 1137

QT插件学习系列(一) 初识QtPlugin

QT插件学习系列(一) 初识QtPlugin 1、 概述 为什么我们要学习插件化,其和 windows 导出 dll 有什么区别呢? 导出的动态库如果缺失,程序不能运行。但插件可以。 同一套代码,即可分别在 windows 下和 linux 下生成插件。 QT 本身提供两种插件支持,一种称为高级 API,一种称为低级 API。 高级API的作用是扩展 QT 程序本身,需要子类化 QT 提供的插件基类,例如现有的 QTSqlDriver,因此你可也以编写自己的 QTStyle 扩展 QT。 低级

L_Andy的专栏 3115

Dubbo、Spring Cloud、Spring Boot

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC(是远程过程调用(Remote Procedure Call)的缩写形式) 实现服务的输出和输入功能,可以和Spring框架无缝集成。 Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 主要核心部件编辑 Remot...

trxcsdn2的博客 388

CS 188 Project3(RL) Q10:Approximate Q-Learning

实现一个近似的Q-learning学习代理,它学习状态特征的权重,其中许多状态可能共享相同的特征。在qlearningAgents.py中的ApproximateQAgent类中编写实现,它是PacmanQAgent的子类。 注:近似Q-learning学习假设在状态和动作对上存在一个特征函数f(s,a),它产生一个向量f1(s,a) .. fi(s,a) .. fn(s,a)特征值。我们在fe...

大模型与Agent智能体 2657

86、高斯过程:学习、应用与自动相关性确定

本文介绍了高斯过程回归的基本原理及其在实际应用中的关键技术,重点探讨了通过最大化对数似然函数来学习模型超参数的方法,并详细阐述了自动相关性确定(ARD)技术如何用于评估输入变量的重要性。文章涵盖了从协方差函数定义、梯度计算到优化算法的应用流程,并通过流程图和表格形式总结了核心步骤与公式。此外,还讨论了贝叶斯处理方式及异方差问题的建模策略,展示了高斯过程在复杂数据建模中的灵活性与强大能力。

android的专栏 114

Spring Security OAuth2.0(4):Spring Security集成SpringBoot

qquadSpring Boot 是一套Spring的快速开发框架,基于Spring4.0设计,使用Spring Boot开发可以避免一些繁琐的工程搭建和配置,同时它集成了大量的常用框架,快速导入依赖包,避免依赖包的冲突。

不积跬步,无以至千里 980

YOLOv12改进策略【注意力机制篇】| 2024 PPA 并行补丁感知注意模块,提高小目标关注度(二次改进A2C2f)

本文记录的是利用改进检测精度,详细说明了优化原因,注意事项等。原论文在红外小目标检测任务中,小目标在多次下采样操作中容易丢失关键信息。通过替代编码器和解码器基本组件中的传统卷积操作,更好地保留小目标的重要信息。HCF-Net: Hierarchical Context Fusion Network for Infrared Small Object Detection采用多分支特征提取策略,通过不同分支提取不同尺度和层次的特征。利用局部、全局和串行卷积分支,对输入特征张量进行处理。通过控制 patch si

Limiiiing的博客 1888

Spring 5.x 、Spring Boot 2.x 、Spring Cloud 与常用技术栈整合

本项目仓库提供spring、spring-boot、spring-cloud 的常用整合用例。每个用例都提供详细的图文说明,并给出官方文档的具体链接作为参考。随着spring的迭代,本仓库会持续更新,升级版本和丰富用例。 仓库地址:github.com/heibaiying/… 版本说明: Spring: 5.1.3.RELEASE Spring-Boot:2.1.1.RELEASE Spring...

weixin_34378767的博客 187

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SSM框架实战:水果电商系统设计与防超卖实现

SSM框架(Spring+SpringMVC+MyBatis)是Java企业级开发的核心技术栈,通过分层架构实现业务逻辑解耦。其核心原理在于Spring的IoC容器管理对象生命周期,MyBatis的SQL映射简化数据库操作,结合SpringMVC的请求路由机制形成完整MVC体系。在电商等高并发场景中,SSM框架配合乐观锁机制能有效解决库存超卖问题,例如通过版本号控制实现并发安全的数据更新。本文以水果销售系统为例,详解如何利用策略模式处理订单状态流转,使用Caffeine+Redis构建二级缓存体系,并分享日

weixin_33714884的博客 1978

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

JSP悠然餐吧订餐系统01595(程序+源码+数据库+调试部署+开发环境)

悠然餐吧作为本地知名休闲餐饮品牌,日均客流量超300人次,但传统订餐模式面临三大挑战:其一,电话订餐与现场排队占比达65%,导致高峰期(12:00-14:00)顾客等待时间超25分钟,影响消费体验;其二,手工记录订单错误率高达8%,易引发客诉;其三,缺乏数据分析能力,无法精准预测食材需求,造成15%以上的食材浪费。本研究旨在构建基于移动互联网的智能化订餐系统,通过数字化手段优化服务流程,提升运营效率与客户满意度,为中小餐饮企业数字化转型提供可复制的解决方案。

sheji5423的博客 981

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JSP杂货网络销售及配送系统56w5y(程序+源码+数据库+调试部署+开发环境)

在消费升级与“懒人经济”的双重驱动下,杂货(涵盖日用品、生鲜食品、家居用品等)的线上销售需求呈现爆发式增长。据统计,2023年我国即时零售市场规模突破6500亿元,其中杂货类商品占比超40%。然而,现有杂货电商平台存在两大痛点:一是商品管理粗放,分类模糊导致用户搜索效率低下,且缺乏对易腐品(如生鲜)的特殊管理;二是配送服务单一,多数平台仅支持固定时段配送,无法满足用户“即时达”与“预约达”的差异化需求。此外,中小杂货商因缺乏数字化能力,难以接入主流电商平台,进一步加剧了市场供需失衡。因此,开发一套集精细化商

Kittyxia001的博客 861

JSP智能酒店管理系统i60h2程序+源码+数据库+调试部署+开发环境

随着酒店业数字化转型加速与消费者对个性化服务需求的提升,传统酒店管理系统(PMS)面临功能割裂、数据利用不足、人力成本高企等痛点。数据显示,2023年中国酒店业人力成本占比达28%,而智能技术应用可降低运营成本15%-20%。本研究旨在设计一套融合物联网、人工智能与大数据分析的智能酒店管理系统,通过客房智能控制、动态定价优化与无感化服务,提升客户满意度评分(NPS)至85分以上,助力酒店实现降本增效与差异化竞争。

sheji3467的博客 1307

动力节点-Servlet-JSP课堂笔记

关于直播 什么时间直播? 晚上8:00到10:00 每周直播几天? 3天(周一、周三、周五) 本周比较特殊:周四周五周六三天直播,从下周开始就是一三五直播。 直播什么内容? 从JavaWEB开始。(Servlet为核心,从Servlet开始学习。) JSP(JSP使用较少了,但是还有用,所以时间上少一些。快速地学习一下JSP。) AJAX(异步通信技术。) jQuery(JavaScript库。) MyBatis Spring SpringMVC SpringBoot SpringCloud

weixin_43433391的博客 2183

JSP座位选座系统ppi7g(程序+源码+数据库+调试部署+开发环境)

随着文化娱乐、教育及公共服务领域的快速发展,影院、剧院、会议室等场景对高效、公平的座位分配需求日益增长。传统人工选座方式存在效率低、冲突频发、用户体验差等问题,尤其在高峰时段易导致现场混乱。本课题旨在设计一套智能化座位选座系统,通过数字化手段实现座位资源的动态管理、可视化选择及冲突预警,提升空间利用率与用户满意度,为文化消费、教育服务及公共管理提供技术支撑。

sheji5423的博客 1236

JSP智慧楼宇可视化管理系统的设计与实现06n3j--程序+源码+数据库+调试部署+开发环境

随着城市化进程加速,楼宇规模不断扩大,其设备数量与复杂度呈指数级增长。传统楼宇管理依赖人工巡检与分散式监控,存在效率低下、响应滞后、能耗浪费等问题。例如,某大型商业综合体因空调系统调控不及时,年能耗超标达20%;部分楼宇因消防设备故障未及时发现,埋下安全隐患。在此背景下,智慧楼宇可视化管理系统通过集成物联网、大数据、三维可视化等技术,实现楼宇设备、环境、能耗的实时监测与智能调控,对提升楼宇运营效率、降低运维成本、保障安全具有重要意义。

sheji7009的博客 725
上一篇: Spring Cloud内部运行原理
下一篇: NoSql for Redis
MiKuJack
博客等级 码龄11年 6粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值