SpringMVC工作原理

SpringMVC工作原理

springMVC是什么:

springMVC是一个MVC的开源框架,springMVC=struts2+spring,springMVC就相当于是Struts2加上sring的整合,但是这里有一个疑惑就是,springMVC和spring是什么样的关系呢?这个在百度百科上有一个很好的解释:意思是说,springMVC是spring的一个后续产品,其实就是spring在原有基础上,又提供了web应用的MVC模块,可以简单的把springMVC理解为是spring的一个模块(类似AOP,IOC这样的模块),网络上经常会说springMVC和spring无缝集成,其实springMVC就是spring的一个子模块,所以根本不需要同spring进行整合。

1、SpringMvc的工作流程

(1)用户请求发送到前端控制器DispatchServlet;

(2)DispatchServlet收到请求调用HadlerMapping处理器映射器;

(3)处理器映射器根据配置XML、注解查找具体的处理器,生成处理器对象以及处理器拦截器(如果有就生成)一并返回给DispatchServlet;

(4)DispatchServlet通过HandlerAdapter处理器适配器调用处理器;

(5)HandlerAdapter通过适配调用具体的处理器(Controller,也叫后端控制器)

(6)Controller执行完成返回ModelAndView

(7)HandlerAdapter将Controller的执行结果ModelAndView返回给DispatchServlet

(8)DispatchServlet将ModelAndView传给ViewReslover视图解析器

(9)ViewReslover解析后返回具体的view

(10)DispatchServlet根据view进行渲染视图(将模型数据填充到视图中)

(11)DispatchServlet响应用户。

2、组件说明

(1)DispatchServlet前端控制器,整个流程的控制中心,控制其他组件,统一调度,降低各个组件之间的耦合性,提高每个组件的扩展性

(2)HandlerMapping处理器映射器,通过处理器映射器实现不同的映射方式,例如:配置文件方式、实现接口方式、注解方式。

(3)HandlAdapter:通过扩展处理器适配器,支持更多类型的处理器。

(4)ViewResolver:通过扩展视图解析器,支持更多类型的视图解析,例如:jsp、freemarker、pdf、excel等。

3、springMVC–4种映射处理器handlerMapping

如何根据http请求选择合适的controller是MVC中一项十分关键的功能,在spring MVC中,
HandlerMapping接口是这一活动的抽象。

4种映射处理器handlerMapping:

  1. 根据controller的name名称来映射寻找controller
    BeanNameUrlHandlerMapping (默认)

1.1开启该映射:默认是开启的

1.2定义bean的name属性:

1.3界面访问URL:与bean的name属性值一致
http://localhost:5080/springmvc/hello1.do

2.根据URL来映射寻找controller:推荐使用
SimpleUrlHandlerMapping

2.1开启该映射:



HelloController



2.2定义bean:

2.3界面URL访问:与prop的key属性值一致
http://localhost:5080/springmvc/hello2.do
优点:将controller定义与映射分离开,耦合性低。

3.根据controller的类名来映射寻找controller:
ControllerClassNameHandlerMapping

3.1开启类名映射处理器:

3.2定义bean

3.3界面URL访问:与bean的id属性值无关。
http://localhost:5080/springmvc/hello2.do 正确
http://localhost:5080/springmvc/hello2Controller.do 正确
http://localhost:5080/springmvc/hello21111.do 正确
http://localhost:5080/springmvc/hello3.do 错误
注意点:使用类名来访问一个Controller,
类名首字符要小写,后面要加.do (不建议使用)

4.使用注解来映射寻找controller:
DefaultAnnotationHandlerMapping

DefaultAnnotationHandlerMapping和RequestMappingHandlerMapping都是处理requestMapping的注解,
前者以废弃,不建议使用,后者用来代替前者

1.开启注解扫描组件:
作用:当我加载配置文件时,到我们指定的包下扫描(读取)Java文件,
寻找标注注解的地方(接口,类,方法或者其他),进行完成初始化。

<context:component-scan base-package=“com”></context:component-scan>

2.在类上标记:@Controller 声明该类是一个springMVC Controller
3.在方法上使用:@RequestMapping("/login") 声明该方法处理哪一个请求

@Controller
@RequestMapping("/login")
public ModelAndView login() {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("login");
        return mv;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值