SpringMVC学习笔记

本文详细介绍了SpringMVC框架的基本概念、核心组件及其工作原理。包括MVC模式、与Struts2的区别、核心组件如DispatcherServlet的作用等,并通过示例展示了如何搭建SpringMVC环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. MVC框架概述
 M:model(模型)
 数据模型:数据实体
pojo、domain
 业务模型:与业务操作相关
 V:View(视图)
 展示数据
 C:Controller(控制器)
 作用:接收用户请求,委派模型组件作处理,将数据转发视图
 MVC作用:
 1、降低模型依赖关系,解耦
举例:
将模型与视图相分离
 2、每个程序可以各尽职责
 3、提高代码的扩展性、可维护性
2. MVC与JAVA经典三层构架
 
3. MVC框架应用
 struts1
 struts2
 SpringMVC
struts1:
 1、表现层单一,仅仅支持jsp
 2、与servlet api存在严重的依赖关系
 3、编写控制器必须要使用struts1的api实现
struts2:
 1、丰富表现层
 2、完全与servlet api脱离
 3、编写一个pojo作为控制器
4. SpringMVC与struts2的区别
 1、struts2它是针对类级别的拦截,一个url请求,对应一个Action类
      SpringMVC它是针对方法级别的拦截,一个url请求,对应一个方法
 2、struts2将全部request、session、pageContext、application的变量存储到ActionContext的map对象,比较耗内存
 3、SpringMVC针对ajax
 4、SpringMVC支持restful风格请求
 5、SpringMVC支持json数据解释
 6、struts2这是通过过滤器实现控制器,SpringMVC通过servlet实现控制器
 7、SpringMVC支持jsr301校验框架
 8、性能高于Struts2
 9、安生性springMVC要优于struts2
5. SpringMVC框架简介
 它是一个解决表示层的轻量级MVC框架
 SpringMVC框架图:
 
6. 第一个SpringMVC的实例
 步骤:
 (1) 导入springmvc依赖库
 (2) 编写web.xml文件,注册DispathcerServlet组件
 <!-- 注册DispathcerServlet组件 -->
 <servlet>
 <servlet-name>springmvc</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet
 </servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/springmvc-config.xml</param-value>
		</init-param>
 </servlet>
 <servlet-mapping>
	 <servlet-name>springmvc</servlet-name>
	 <url-pattern>/</url-pattern>
 </servlet-mapping>
 注意:/表示除jsp文件之外,/*表示所有文件,*.do表示以uri以.do结尾
 (3) 在WEB-INF目录下,新建springmvc-config.xml
 此文件配置:
 配置处理器映射器
 配置处理器适配器
 配置视图解析器
<!-- 配置处理器映射器 -->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
	
	<!-- 配置处理器适配器 -->
	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
	
	<!-- 视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
 (4) 新建Handler类
 a、编写一个类,此类要实现Controller接口
 b、重写handleRequest方法
 ModelAndView modelAndView=new ModelAndView();
 modelAndView.setViewName("/WEB-INF/content/jsp/success.jsp");
 (5) 在springmvc-config.xml文件,配置handler类对应的uri路径
<!-- 配置controller所对应的uri地址 -->
	 <bean id="/hello" class="com.gec.firstspringmvc.controller.HelloController"/>

7. 重点分析SpringMVC的核心组件
 1、DispathcerServlet
 前端控制器
1、接收用户请求,委派相应的组件去处理
委派HandlerMapper、HandlerAdpater、ViewResolver去处理
 2、HandlerMapping
 处理器映射器
 根据用户请求的uri地址,来找到对应目标handler
 处理器映射器种类:
 BeanNameUrlHandlerMapping
 SimpleUrlHandlerMapping
 ControllerClassNameHandlerMapping
 DefaultAnnotationHandlerMapping
 RequestMappingHandlerMapping
 3、HandlerAdapter
 处理器适配器
 进一步确认是否适合执行handler
 处理器适配器种类:
 HttpRequestHandlerAdapter
 SimpleControllerHandlerAdapter
 AnnotationMethodHandlerAdapter
 RequestMappingHandlerAdapter
 4、ViewResolver
 视图解析器
作用:根据逻辑视图名----》解析----》真正物理视图地址
 5、Handler(后端控制器)
 处理用户请求,真正执行的后端控制器
 6、ModelAndView
 Model:数据模型
 View:视图名(逻辑视图名)
8. HandlerMapping(处理器映射器)
 有以下种类:
 BeanNameUrlHandlerMapping
 SimpleUrlHandlerMapping
 ControllerClassNameHandlerMapping
 DefaultAnnotationHandlerMapping
 RequestMappingHandlerMapping
 BeanNameUrlHandlerMapping:根据bean的id或者name作为uri地址对应handler对象
 SimpleUrlHandlerMapping:
9. HandlerAdapter(处理器适配器)
 有以下种类:
 SimpleControllerHandlerAdapter
 HttpRequestHandlerAdapter
 AnnotationMethodHandlerAdapter
 RequestMappingHandlerAdapter
 SimpleControllerHandlerAdapter:handler类必须实现Controller接口,才能适配成功
 HttpRequestHandlerAdapter:handler类必须实现HttpRequestHandler,才能适配成功
8. 通过注解实现SpringMVC 
 1、导入springmvc依赖库
 2、编写web.xml文件,注册DispathcerServlet组件
<!-- 注册DispathcerServlet组件 -->
	  <servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring/springmvc-config.xml</param-value>
		</init-param>
	  </servlet>
	  <servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>/</url-pattern>
	  </servlet-mapping>
 3、在src目录下,新建spring目录,在此目录新建一个springmvc-config.xml
<!-- 注解的处理器映射器 -->
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>


	<!-- 注解的处理器适配器 -->
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>


	<!-- 视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	    <!-- 前缀 -->
        <property name="prefix">
            <value>/WEB-INF/content/jsp/</value>
        </property>
        <!-- 后缀 -->
        <property name="suffix">
            <value>.jsp</value>
        </property>
	</bean>
 4、编写Handler类
 a、添加@Controller注解
 b、在springmvc-config.xml文件进行扫描
<!-- 针对表示层的Controller进行扫描 -->
		<context:component-scan base-package="com.gec.anno.controller" />
 5、编写方法
 @RequestMapping("/dohello")
public ModelAndView doHello()
{
	ModelAndView modelAndView=new ModelAndView();
	modelAndView.addObject("username", "gec");
	modelAndView.setViewName("success");
	return modelAndView;
}
python+opencv简谱识别音频生成系统源码含GUI界面+详细运行教程+数据 一、项目简介 提取简谱中的音乐信息,依据识别到的信息生成midi文件。 Extract music information from musical scores and generate a midi file according to it. 二、项目运行环境 python=3.11.1 第三方库依赖 opencv-python=4.7.0.68 numpy=1.24.1 可以使用命令 pip install -r requirements.txt 来安装所需的第三方库。 三、项目运行步骤 3.1 命令行运行 运行main.py。 输入简谱路径:支持图片或文件夹,相对路径或绝对路径都可以。 输入简谱主音:它通常在第一页的左上角“1=”之后。 输入简谱速度:即每分钟拍数,同在左上角。 选择是否输出程序中间提示信息:请输入Y或N(不区分大小写,下同)。 选择匹配精度:请输入L或M或H,对应低/中/高精度,一般而言输入L即可。 选择使用的线程数:一般与CPU核数相同即可。虽然python的线程不是真正的多线程,但仍能起到加速作用。 估算字符上下间距:这与简谱中符号的密集程度有关,一般来说纵向符号越稀疏,这个值需要设置得越大,范围通常在1.0-2.5。 二值化算法:使用全局阈值则跳过该选项即可,或者也可输入OTSU、采用大津二值化算法。 设置全局阈值:如果上面选择全局阈值则需要手动设置全局阈值,对于.\test.txt中所提样例,使用全局阈值并在后面设置为160即可。 手动调整中间结果:若输入Y/y,则在识别简谱后会暂停代码,并生成一份txt文件,在其中展示识别结果,此时用户可以通过修改这份txt文件来更正识别结果。 如果选择文件夹的话,还可以选择所选文件夹中不需要识别的文件以排除干扰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值