【使用SSM框架开发企业级应用】Spring MVC体系结构和处理请求控制器
Spring MVC体系结构和处理请求控制器
MVC设计模式
视图(View)-对应组件:JSP或者HTML文件
控制器(Controller)-对应组件:Servlet
模型(Model) -对应组件:JavaBean
JSP Model1
JSP Model2
JSP:负责生成动态网页
Servlet:负责流程控制
JavaBean:负责业务逻辑处理
MVC 处理过程
MVC整体处理过程:
- 首先视图提供系统与用户交互的界面,并发送用户输入给控制器
- 控制器接收用户的请求,并决定应该调用哪个模型来进行处理
- 模型根据用户请求进行相应的业务逻辑处理,并返回处理结果(数据)
- 控制器根据返回的处理结果,调用相应的视图格式化模型返回的数据,并通过视图呈现给用户结果
MVC 优点
多视图共享一个模型,大大提高代码的可重用性
MVC三个模块相互独立,松耦合架构
控制器提高了应用程序的灵活性和可配置性
有利于软件工程化管理
完美的系统架构 = 松耦合+高重用性+高扩展性
MVC 缺点
原理复杂
增加了系统结构和实现的复杂性
视图对模型数据的低效率访问
Spring MVC框架介绍
Spring MVC
结构最清晰是Spring框架中用于web应用开发的一个模块,是Spring提供的一个基于MVC设计模式的优秀web开发框架,它本质上相当于Servlet,在mvc设计模式中,Spring MVC
作为控制器(Controller)来建立模型与视图的数据交互,是结构最清晰的MVC Model2实现,可称为最典型的MVC框架
【注意】
Spring MV
框架采用松耦合可插拔的组件结构,具有高度可配置性,比起其他MVC框架更具扩展性和灵活性.此外,Spring MVC 的注解驱动和对REST风格的支持,也是它最具特色的功能,无论是在框架设计,还是扩展性、灵活性等方面都已经全面超越了Struts2等MVC框架,并且它本身就是Spring框架的一部分,与Spring框架整合可以说是无缝集成,性能方面具有天生的优越性,对于开发者来说,开发效率也高于其他的Web框架,在企业中的应用越来越广泛,称为主流的mvc框架
Spring MVC环境搭建
Spring MVC框架搭建步骤
下载jar文件并导入工程
spring-web-3.2.13.RELEASE.jar
spring-webmvc-3.2.13.RELEASE.jar
配置文件
在web.xml中配置Servlet
创建Spring MVC的配置文件
创建Controller-处理请求的控制器
BeanNameUrlHandlerMapping
创建View-JSP
部署运行
注解驱动控制器
基于注解的处理器
<context:component-scan />
- @Controller:标注一个普通的JavaBean成为可以处理请求的控制器
- @RequestMapping:通过请求URL进行映射
<mvc:annotation-driven />
- 一键式配置,通过注解的方式进行Spring MVC开发
- DefaultAnnotationHandlerMapping
- AnnotationMethodHandlerAdapter
Spring MVC请求处理流程
Spring MVC体系结构
DispatcherServlet(前端控制器)
- Spring MVC最核心的类
- web.xml中配置
Handler(处理器):对应MVC中C(Controller层)
- 类型:Object
- 作用:实际处理请求
- 标注了@RequestMapping的所有方法都可以看作是一个Handler
ModelAndView
- 逻辑视图名
- 模型对象
核心组件
HandlerMapping(处理器映射)
- BeanNameUrlHandlerMapping(默认)
- 将请求URL映射到同名的控制器Bean上
- DefaultAnnotationHandlerMapping
- 将请求映射到标注@RequestMapping注解的控制器和处理方法上
- RequestMappingHandlerMapping
HandlerAdapter(适配器)
- AnnotationMethodHandlerAdapter
- RequestMappingHandlerAdapter
ViewResolver(视图解析器)
- InternalResourceView
Spring MVC框架特点
- 清晰地角色划分
- 灵活的配置功能
- 提供了大量的控制器接口和实现类
- 真正做到与View层的实现无关(JSP、Velocity、Xslt等)
- 国际化支持
- 面向接口编程
- Spring提供了Web应用开发的一整套流程,不仅仅是MVC,他们之间可以很方便的结合一起
参数传递(View to Controller)
Controller方法中参数前加@RequestParam进行直接入参
部署运行
http://localhost:8090/SMBMS_C09_03/welcome?username=admin
http://localhost:8090/SMBMS_C09_03/welcome
@RequestMapping
- 标注在类定义处
- 标注在方法定义处
- 映射规则
- 通过请求URL进行映射
- 通过请求参数进行映射
- 若选择方法参数直接入参的话,方法入参名必须与请求中参数名保持一致
- 通过请求方法进行映射
- GET
- POST
注意: @RequestMapping映射的请求信息必须保证全局唯一
@RequestParam
- Value:参数名
- Required:是否必需,默认true,表示请求中必须包含对应的参数名,若不存在将抛出异常
- defaultValue:默认参数名,不推荐使用
ModelAndView
- 包含视图信息和模型数据信息
- 常用方法
- 添加模型数据
- ModelAndView addObject(String attributeName, Object attributeValue);
- ModelAndView addAllObjects(Map<String,?> modelMap);
- 设置视图
- void setView(View view);指定一个具体的视图对象
- void setViewName(String viewName);指定一个逻辑视图名。
Model
- 数据结构:Map类型
- 常用方法:添加模型数据
Model.addAttribute(String attributeName,Object attributeValue);
- 处理方法的入参为Model类型
注意:在Model中增加模型数据,若不指定key,
则默认使用对象的类型作为key
作为Spring MVC的标准用法,推荐使用Model
视图解析器
视图解析器-ViewResolver
将逻辑视图名与JSP等视图技术进行匹配
InternalResourceViewResolver
prefix
suffix
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
本章总结
- MVC设计模式在各种成熟框架中都得到了良好的运用,它将view、Controller、model三层清晰的划分开、搭建一个松耦合,高重用性、高可适用性的完美架构
- Spring MVC框架是典型的MVC框架,是一个结构最清晰的jsp Model2实现。他基于Servlet,DispatcherServlet是整个框架的核心
- Spring MVC的处理器映射(HandlerMapping)可配置为支持注解式处理器,只配置<mvc:annotation-driven/>标签即可
- Spring MVC的控制器的处理方法返回的ModelAndView对象内包括数据模型和视图信息
- Spring MVC通过视图解析器来完成视图解析工作,把控制器的处理方法返回的逻辑视图名解析成一个真正的视图对象
内容就到这,
我是陈恰恰.77