第七章:Springmvc中applicationContext.xml配置文件应用上下文详解

news2025/1/22 15:40:53

主要配置程序的总体用上下文,让容器对全局掌握来龙去脉
1.扫描所有项目的包名
2.配置项目所有的静态资源映射
3.配置请求方法的映射驱动
4.配置适配器适配@RequestMapping注解标注的Handler(HandlerMethod类型)
5.配置消息转换器决定浏览器以什么样的形式解析响应的消息
6.配置视图解析器即如何从服务器端转向具体页面解析
7.配置上传文件的大小限制

头文件

<?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:mvc="http://www.springframework.org/schema/mvc" 
   
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
               
               http://www.springframework.org/schema/mvc
       		   http://www.springframework.org/schema/mvc/spring-mvc.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-4.3.xsd
               http://www.springframework.org/schema/tx
               http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
               http://www.springframework.org/schema/aop
               http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
               ">

1.扫描所有项目的包名–注入容器

作用:扫描包及其子包下的所有带注解的类,注入Spring的bean。
如果有@Component(组件)、@Service(服务)、@Controller(控制器)、@Repository(数据仓库)构造型(stereotype)注解所标注的类,则将对象作为Bean注册注入到Spring IOC容器中。
举例:
在注解后加上例如@Component(value=”a”)时,注册的这个类的bean的id就是a.

#base-package指明一个包,多个包用逗号隔离开
#扫描这个包下所有项目
<context:component-scan base-package="com.test"></context:component-scan>
#扫描多个指定多个包下的所有项目,逗号隔离开
<context:component-scan base-package="com.test1.xxx,com.test2.xxx"/>
多个包逗号隔开。

2.配置项目所有的静态资源的映射(放行资源)

作用:自定义请求项目内静态资源的访问路径URL规则。
目的:为了访问或者加载项目内静态资源。
SpringMVC的配置文件中使用mvc:resource标签来设置要放行的静态资源
mvc:resources 加入后框架会创建ResourceHttpRequestHandler这个处理器对象。 让这个对象处理静态资源的访问,不依赖tomcat服务器。
注意: css,js,images文件夹放于WebContent目录下。

	<mvc:resources mapping="/jspath/**" location="/js/" />
	<mvc:resources mapping="/imgpath/**" location="/img/" />
	<mvc:resources mapping="/csspath/**" location="/css/" />
#静态资源解释:以配置的js为例
mapping和@RequestMapping区别
mapping: 访问静态资源的uri地址,使用通配符 **  意思是代表某个映射规则下所有请求形式
location:静态资源在你的项目中的目录位置。
1.mapping中定义的是访问静态资源的url,最前面的/表示的是WebContent根目录,后面的js是WebContent目录下的js文件夹或者子目录,最后的**表达多层路径(可能是一层或者多层路径)
2.location中定义的是根目录下的js文件位置
举例:比如 /js/login/login.js  如何访问login.js???
假设整个项目的包名为Shopping
根据mapping定义的访问规则映射访问项目中静态资源。
localhost:8080/Shopping/jspath/login.js 这个url就能访问到location=/js/”这是项目中静态资源所在的位置

当然,为了方便,也可以把images、js、html等文件夹都放到一个文件夹下(创建static文件夹)

<mvc:annotation-driven />
<mvc:resources mapping = "/static/**" location = "/static/" />
<!-- static/**表示该目录下所有文件-->

3.配置静态资源方法的映射驱动

spring配置文件中启动mvc注解驱动
mvc:annotation-driven
静态资源乱码StringHttpMessageConverter引出的客户端服务器端之间的乱码配置两种方式
使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter

#第一种方式
<mvc:annotation-driven>
#处理静态资源请求和返回乱码问题
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
              <constructor-arg value="UTF-8" />
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
#第二种方式
<mvc:annotation-driven >
        <!-- 消息转换器,添加对文字编码的全局处理,解决中文返回问号的毛病 --> 
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
#第三种方式
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <!-- String 转换器 -->
               <ref bean="stringHttpMessageConverter"/>
                <!-- JSON 转换器 -->
                <ref bean="jsonHttpMessageConverter"/>
                <!-- XML 转换器 -->
            </list>
        </property>
</bean>
    
    <!-- <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"/> -->
 
<bean id="jsonHttpMessageConverter"
          class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
        <property name = "supportedMediaTypes">
             <list>
                 <value>text/html;charset=UTF-8</value>  
                 <value>text/plain;charset=UTF-8</value>  
            </list>   
       </property>   
</bean>
<bean id="stringHttpMessageConverter"
          class="org.springframework.http.converter.StringHttpMessageConverter">
        <property name = "supportedMediaTypes">
             <list>
            	 <value>text/html;charset=UTF-8</value> 
                 <value>text/plain;charset=UTF-8</value>   
            </list>   
       </property> 
</bean>    
如果GET方式请求页面依然出现乱码的情况,可以在view中请求的jsp页面的第一行,添加如下jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<mvc:annotation-driven />标签是为了解决resources标签 和@RequestMapping注解的冲突。

<!--采用注解驱动-->
在我们设置
<url-pattern>/</url-pattern>后,
动态资源和静态资源的访问就会造成冲突,我们此时就需要配置另外静态资源
一、<mvc:default-servlet-handler />标签
在springmvc配置文件中加入
<mvc:annotation-driven />
<mvc:default-servlet-handler />
原理是:
加入<mvc:default-servlet-handler />标签后,
框架会创建控制器对象DefaultServletHttpRequestHandler(类似我们自己创建的Controller对象)。
DefaultServletHttpRequestHandler这个对象可以把接收的请求转发给tomcat的default这个servlet。
----------------------------------------------------
<mvc:annotation-driven />标签是为了解决default-servlet-handler标签
和@RequestMapping注解的冲突。
------------------------------------------------
二、<mvc:resources />标签
mvc:resources 加入后框架会创建ResourceHttpRequestHandler这个处理器对象。
让这个对象处理静态资源的访问,不依赖tomcat服务器。

<mvc:annotation-driven />注解意义
提供Controller请求转发,json自动转换等功能

0.HttpServletResponse 对象写回数据,HttpServletRequest对象带回数据,ModelandView对象带回数据
或者@ResponseBody将字符串数据返回对象或集合@ResponseBody和<mvc:annotation-driven/>
1.提供Controller请求转发,json自动转换等功能。
2.解决了@Controller注解的使用前提配置<context:annotation-config/>是对包进行扫描,
实现注释驱动Bean定义,将bean自动注入容器中使用。即解决了@Controller标识的类的bean的注入和使用
3.自动注册RequestMappingHandlerMapping与RequestMappingHandlerAdapter两个Bean
4.提供数据绑定支持
5.@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持读写XML的支持(JAXB)和读写JSON的支持(默认Jackson)等功能。
6.处理响应ajax请求时,就使用到了对json的支持
7.写JUnit单元测试时,要从spring IOC容器中取DefaultAnnotationHandlerMapping
与AnnotationMethodHandlerAdapter 两个bean来完成测试,这是通过<mvc:annotation-driven />
注册的这两个bean

4.配置消息转换器

json消息转换器
spring默认使用的json消息转换器是MappingJackson2HttpMessageConverter,spring3是使用MappingJacksonHttpMessageConverter。
类MappingJackson2HttpMessageConverter是实现json序列化和反序列化的核心。

<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
	<bean	class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<!--json转换器 -->
				<ref bean="testMessageConverter" />
			</list>
		</property>
	</bean>
	<bean  class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="testMessageConverter" />
			</list>
		</property>
	</bean> 
<bean  id="testMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<bean class="org.springframework.http.MediaType">
					<constructor-arg index="0" value="text" />
					<constructor-arg index="1" value="plain" />
					<constructor-arg index="2" value="UTF-8" />
				</bean>
				<bean class="org.springframework.http.MediaType">
					<constructor-arg index="0" value="*" />
					<constructor-arg index="1" value="*" />
					<constructor-arg index="2" value="UTF-8" />
				</bean>
				<bean class="org.springframework.http.MediaType">
					<constructor-arg index="0" value="text" />
					<constructor-arg index="1" value="*" />
					<constructor-arg index="2" value="UTF-8" />
				</bean>
				<bean class="org.springframework.http.MediaType">
					<constructor-arg index="0" value="application" />
					<constructor-arg index="1" value="json" />
					<constructor-arg index="2" value="UTF-8" />
				</bean>
			</list>
		</property>
</bean>  
------------------------代码测试1---------------------------
var parameter= {
		"name":"zhangsan",
		"age": 18
	};
	$.ajax({
		url:"testurl",
		type:"post",
		data:JSON.stringify(parameter), //参数转换成json对象
		contentType:"application/json;charset=UTF-8",//告诉收件人服务器接收的数据类型
		dataType: 'json',//从接口返回的数据形式
		success: function (res) {
			
		},
		error: function (res) {
			
		}
});
@RequestMapping(value="testurl", method=RequestMethod.POST, produces="application/json;charset=UTF-8", consumes="application/json;charset=UTF-8")
@ResponseBody //将java对象转成json
public String DoFunction(User user) { 
	//...
}

------------------------代码测试2---------------------------
@Controller
@RequestMapping("/test")
public class testController {
	@Autowired
	private TestService testService;
	
	// 查询数据
	@RequestMapping("getAll")testService
	@ResponseBody
	public Map<String, Object> doSelectDfc() {
		return testService.findAll();
	}
	
	@RequestMapping("/getJson")
	@ResponseBody
	public String doGet() {
	    return testService.findAllList().toString;		
	}
	
	// 插入数据
	@RequestMapping("/InsertData")
	public boolean doInsertDfc(Data dataObject) { 
		if (testService.InsertData(dataObject)) {
			return true;
		} else {
			return false;
		}
	}
}

解释Content-type:application/json; charset = utf-8
$.ajax
contentType 和 dataType , contentType 主要设置你发送给服务器的格式,
dataType设置你收到服务器数据的格式。

5.配置视图解析器

配置xml前后缀如何拼接
请求接口的方法返回字符串与视图解析器的前后缀拼接后跳转。
在这里插入图片描述转发:forward:/WEB-INF/views/index.jsp
重定向:redirect:/index.jsp

#第一种方式
<!--定义内部资源视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/views(文件夹名字)/"/>
		<!--资源的后缀名-->        
        <property name="suffix" value=".jsp"/>
    </bean>
#	第二种方式 这是html
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 配置html路径的前缀,在哪个文件下 -->
		<property name="prefix" value="/WEB-INF/Html/"/>
		<!-- 哪个文件夹下以配置html路径的后缀文件 -->
		<property name="suffix" value=".html"/>		
	</bean>

如果返回的视图用到jstl标签库,就是${ } 取 modelandview 对象的参数 如果视图解析器解析jsp解析,默认使用jstl标签,classpath下的得有jstl的包
举例:

@Controller
@RequestMapping("/TestReturnView")
public class TestReturnView{
	@RequestMapping("/userLogin")
	public ModelAndView login(HttpSession session, String username, String password,HttpServletRequest request)
				throws Exception {
			ModelAndView view = new ModelAndView();
			User userinfo = userService.findUserByCondition(username,password);
			String projectPath = request.getContextPath();//从请求中获取项目的端口和项目路径
			if(login !=null){
				session.setAttribute("userinfo", userinfo);//session放用户信息
				view.addObject("projectPath", projectPath);
				view.setViewName("index");//主页面
			}			
			}else{
				//登录失败
				view.addObject("errmsg", "用户名或密码错误");
				view.setViewName("error");//错误页面
			}
			return view;
		}
}		
在index.jsp页面如何取session和view中值呢?

首先视图中携带这返回信息,信息以map形式存储在内存中

在index.jsp前端页面如何获取携带回的值?用jstl标签
1.在项目classpath下有jstl包
2.前端页面加jstl 标签
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
#获取携带回的值
var projectPath = '${projectPath}';
var userinfo = <%=session.getAttribute("userinfo") %>;

6.配置文件上传的大小限制

CommonsMultipartResolver的作用

<!--文件上传解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置请求编码格式,必须与JSP中的pageEncoding属性一致,默认为ISO-8859-1 -->
        <property name="defaultEncoding" value="UTF-8" />
        <!-- 设置允许上传文件的最大值单位为字节 ,比如10M= 10485760 字节=10*1024*1024  -->
        <property name="maxUploadSize" value="10485760"/>
    </bean>
    ------------------------------------
    注意:在配置CommonsMultipartResolver时必须指定该Bean的id为multipartResolver。 
	因为初始化MultipartResolver时,程序会在Spring容器中查找名称为multipartResolver的
	MultipartResolver实现类,
	如果没有查找到对应名称MultipartResolver实现类,将不提供文件解析处理
配置文件上传基础实操

项目中导入Apache Commons FileUpload组件的依赖,即commons-fileupload依赖和commons-io依赖。由于commons-fileupload依赖会自动依赖commons-io
前端页面
form表单的method属性设置为post。
form表单的enctype属性设置为multipart/form-data。
提供的文件上传输入框。

//创建一个 前端页面
<form action="uploadpath" method="post" enctype="multipart/form-data" >
这个  name=testfile   这个key 要和对接的接口形参数一致
    <input type="file" name="testfile666" multiple="multiple" />
    <input type="submit" value="文件上传" />
</form>
@Controller
@RequestMapping("/uploadtest")
uploadpath
public ModelAndView FileUpload {
    @RequestMapping("/testfileUpload")
    public String testfileUpload(MultipartFile testfile666, HttpServletRequest request) throws IOException {
    //这个 testfile参数 要与input 输入框的name 属性的值也就是name的key 相同
        String filepath = request.getServletContext().getRealPath("/") + "testfile666/";
		ModelAndView view = new ModelAndView();
        if (!testfile.isEmpty()) {
            // 保存上传的文件,filepath为保存的目标目录
            String filePath = filepath + testfile666.getOriginalFilename();
            testfile.transferTo(new File(filePath));
            //返回成功上传页面
			view.addObject("msg","成功");
			view.setViewName("success");			
		}else{
			view.setViewName("failure");
		}		
       	return view; 
    }
}

7.引发思考:xml 文件中配置的信息注册类不是唯一的

根据实际情况或者项目的复杂程度进行配置

点解连接
第一章:Spring流程执行步骤
第二章:Spring核心思想和IOC和AOP依赖注入
第三章:Spring常用注解解释
第四章:Spring七大核心模块Bean、Core、Context
第五章:Spring细分一如何让mapper文件夹下的SQL语句对数据库生效,jdbc和mybatis-config.xml
第六章:Springmvc事务管理和配置文件xml详解和七大事务和注解@Transactional
第七章:Springmvc中applicationContext.xml配置文件应用上下文详解

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

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

相关文章

Unity游戏Mod/插件制作教程04 - 如何创建配置文件

ConfigEntry<T> 在插件功能的设计中&#xff0c;经常会有需要玩家自己配置的东西&#xff0c;比如插件的各种设置&#xff0c;快捷键的分配等。在BepInEx中&#xff0c;提供了一个ConfigEntry类简化了配置操作。 我们来看一段示例&#xff1a; (注:由于阿B在代码页中会…

Docker的网络模式

一、Docker网络 1.1 Docker网络实现原理 docker 使用linux 桥接&#xff0c;在宿主机虚拟一个docker 容器网桥&#xff08;docker0) &#xff0c;docker 启动一个容器时会根据docker 网桥的网段分配给容器一个IP地址&#xff0c;称为Container-IP&#xff0c;同时Docker 网桥…

JAVA接入OPC DA2.0引发的问题

背景&#xff1a; JAVA接入OPC DA后&#xff0c;在生产环境跑了一段时间后就会出现异常&#xff0c;给折腾的够呛&#xff0c;起初的报错还能通过重启OPC连接解决&#xff0c;后来强制重新连接也不行&#xff0c;最终一套测试下来&#xff0c;除非重启OPC服务器&#xff0c;别…

生产制造企业数字化转型:流程制造ERP

ERP的含义是企业资源计划&#xff0c;含义是对企业所拥有各种资源进行综合规划和优化管理&#xff0c;用以降低成本&#xff0c;提高效率&#xff0c;增加利润。ERP最初是在90年代初提出的&#xff0c;那时的ERP概念&#xff0c;还只是根据计算机技术的发展和供需链管理,推论各…

[附源码]java毕业设计校园闲置物品租赁系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

深度学习——动物数据集大合集(附下载地址)

说明&#xff1a;部分数据收费&#xff0c;付费后数据请关注私信内容&#xff0c;会给出下载链接&#xff0c;亲测数据质量不错&#xff0c;如下图所示&#xff1a; ​ 1、30种常见鱼类数据集 数据集介绍&#xff1a;30种常见鱼类数据集&#xff08;每类鱼30-100张图片不等&am…

丰田+比亚迪「围攻」大众,明年或将「让出」榜首之位

大众&#xff0c;正在经历最艰难的时刻。 高工智能汽车研究院监测数据显示&#xff0c;今年1-10月&#xff0c;大众集团旗下大众品牌乘用车在中国市场的交付上险同比下滑11.5%&#xff0c;而作为老对手&#xff0c;排名第二的丰田&#xff0c;则是同比增长13.72%。 豪华品牌部…

Oracle快速入门 | 黑马

简介 概述 Oracle目前使用最广的大型数据库管理系统&#xff0c;作为分布式数据库实现分布式处理功能。 广泛用于金融行业&#xff0c;大量数据而且需要很安全 特点 支持多用户&#xff0c;大事务量的事务处理数据安全性和完整性控制&#xff08;主要卖售后的&#xff0c…

信息安全工程实践笔记--Day1 信息收集漏洞扫描

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录实验目标&#xff08;一&#xff09;信息收集一、搜索引擎二、域名1.whois 查询2.子域名查询3.真实ip(1)什么是cdn&#xff1f;(2) 如何验证目标服务器是否挂载cdn&a…

吴恩达-机器学习-k-means聚类算法

目录 吴恩达-机器学习2022版 k-means聚类算法实现整理 1.核心函数四个&#xff1a; 1.find_closest_centroids &#xff1a;寻找最近的质心 2.compute_centroids &#xff1a;迭代重新计算质心 3.kMeans_init_centroids &#xff1a;随机初始化质心 4.run_kMean…

Centos安装Rclone,操作Minio基本命令

简介 Rclone 是一个用于和同步云平台同步文件和目录命令行工具。它允许在文件系统和云存储服务之间或在多个云存储服务之间访问和同步文件&#xff0c;它具有单向同步功能&#xff0c;使目录完全相同&#xff0c;它具有加密、缓存和联合后端&#xff0c;支持 Fuse 安装&#…

MindSpore是一种适用于端边云场景的新型开源深度学习训练/推理框架

MindSpore是一种适用于端边云场景的新型开源深度学习训练/推理框架。 MindSpore提供了友好的设计和高效的执行&#xff0c;旨在提升数据科学家和算法工程师的开发体验&#xff0c;并为Ascend AI处理器提供原生支持&#xff0c;以及软硬件协同优化。 同时&#xff0c;MindSpore…

【计算机网络】

1、应用层 web应用——http协议 请求消息格式&#xff1a;请求行&#xff0c;头部行&#xff0c;消息体 请求方法get&#xff0c;post&#xff0c;delete&#xff0c;put上传文件 Email应用——SMTP&#xff0c;POP3/IMAP DNS应用——DNS协议 P2P应用&#xff1a;文件分发等…

实战项目【7】MEMS惯性传感器的精度参数和单位换算

1 前言 有不少朋友在做项目的时候经常涉及到加速度计和陀螺仪的原始数据转换为其他的单位的问题&#xff0c;这篇文章梳理和推导一下。 1&#xff09;加速度计的原始数据 在应用时常见的转换单位有: g、m/s^2 、角度 2&#xff09;陀螺仪的原始数据 在应用时常见的转换单位有&a…

〖全域运营实战白宝书 - 运营角色认知篇⑤〗- “运营“ 是否有前途?

大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &#x1f4e…

UE4 回合游戏项目 23- 进入战斗

在上一篇&#xff08;UE4 回合游戏项目 22- 控制新角色&#xff09;基础上继续增加两个角色进入战斗的逻辑 效果&#xff1a; 步骤&#xff1a; 1. 打开“gameMode1”&#xff0c;新增一个变量命名为“正在控制的所有玩家”&#xff0c;变量类型为“roleCategory”的数组 2.打…

Jitamin 安装与配置

Jitamin Jitamin (读作/ˈdʒɪtəmɪn/) 是一款免费、开源&#xff0c;使用PHP语言开发的项目管理系统。Jitamin灵感来自于Vitamin&#xff0c;并结合了Just In Time(准时)和敏的拼音min&#xff0c;意指效率与敏捷是项目管理的维他命。 功能特性 简洁、美观的界面支持多主题…

Celix是什么?能做什么?

半路突然看到了OSGI,又学习了一下&#xff0c;大概了解了架构的一些基础知识。 像MVC&#xff0c;MVP等其实就是分层架构&#xff0c;这类是最容易想到的。 然后其实我就没有接触&#xff0c;如微服务架构&#xff0c;微内核架构。 是什么&#xff1f; 而Celix就是属于微内…

[附源码]java毕业设计校园网学生成绩查询系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Redis源码篇(6)——主从复制

主从复制 从服务器执行 SLAVEOF IP PORT 命令即可实现对主服务器的复制。 复制又分为完整同步和部分同步&#xff08;2.8之后&#xff09; 完整同步&#xff1a;与混合持久化过程类似&#xff0c;先以rdb的方式保存rdb文件然后发送给从服务器。再将期间的命令保存到复制缓存区…