springMVC原理

本文详细介绍了SpringMVC的工作原理,包括请求处理流程、关键组件的作用等,并深入探讨了@Controller注解及其搭配@RequestMapping的应用方式。

一、springMVC原理简介




1、HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息
2、DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI:也就是XXX.action)。然后根据该URI,调用HandlerMapping映射器处理器获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器,可以根据xml配置或者注解进行查找)。
3、处理器映射器HandlerMapping向前端控制器返回一个Handler对象(准确来说是HandlerExecutionChain对象)。
4、DispatherServlet根据获得的Handler对象,就会选择合适的处理器适配器HandlerAdapter(在成功获取HandlerAdapter对象后,会开始执行Handler的拦截器preHandler方法)。
5、提取Request中的模型数据(可能就是为什么要传入一个HttpServletRequest对象),填充Handler入参,然后开始执行Handler(也就是Controller)。在填充Handler入参的时候,处理器适配器(HandlerMapping)就会根据我们的配置,spring会帮我们执行一些数据的适配工作:
HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息
数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中
6、Handler执行完之后,会向前端控制器DispatherServlet返回一个ModelAndView对象。
7、根据返回的ModelAndView对象,前端控制器就会请求调用视图解析器ViewResolver(必须是已经注册到spring容器中的视图解析器),然后按照逻辑视图名去解析成真正的view(jsp)。
8、向前端控制器DisatherServlet返回view视图解析器。
9、前端控制器就会将模型数据(ModelAndView)填充到request域中,利用model进行视图的渲染
10、最后前端控制器响应到客户端。


二、@Controller的使用、@rewquestMapping的使用

1、DispatcherServlet是Spring MVC的灵魂和心脏,它负责接收HTTP请求并协调Spring MVC的各个组件完成请求处理的工作。
2、和任何Servlet一样,用户必须在web.xml中配置好DispatcherServlet,并且让其接受一 切HTTP请求。
3、当用户的请求被截获时,DispatcherServlet通过HandlerMapping定位到特定的Controller(使用 @Controller注解的普通Java类,此处已经定位到了具体的业务处理方法了,所以我们称其为Handler)。


package ssm.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class ItemsController {
	
	@RequestMapping("/queryItems")
	public ModelAndView queryItems(HttpServletRequest request) throws Exception {
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("test");
		modelAndView.setViewName("items/itemsList");
		return modelAndView;
	}
}
在POJO类定义处标注@Controller,再通过<context:component-scan/>扫描相应的类包,即可使POJO 成为一个能处理HTTP请求的控制器。一个控制器的每一个方法都可以成为请求处理方法,如何将请求映射到控制器的方法中是Spring MVC框架最重要的任务之一,这项任务由@RequestMapping承担。


1、@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。
2、@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。

3、单单使用@Controller 标记在一个类上还不能真正意义上的说它就是SpringMVC 的一个控制器类,因为这个时候Spring 还不认识它。那么要如何做Spring 才能认识它呢?这个时候就需要我们把这个控制器类交给Spring 来管理。

这个时候有两种方式可以把Controller 交给Spring 管理,好让它能够识别我们标记的@Controller 。

(1) 第一种方式是在SpringMVC 的配置文件中定义Controller 的bean 对象。

<bean class="ssm.controller.ItemsController"/>

(2) 第二种方式是在SpringMVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller 控制器。
<context:component-scan base-package="ssm.controller"></context:component-scan>



---------------------------------------------------------------------------------------------------------------------------------------------------------------

乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值