【使用SSM框架开发企业级应用】Spring MVC体系结构和处理请求控制器

Spring MVC体系结构和处理请求控制器

MVC设计模式

视图(View)-对应组件:JSP或者HTML文件

控制器(Controller)-对应组件:Servlet

模型(Model) -对应组件:JavaBean

JSP Model1

JSP Model2

JSP:负责生成动态网页

Servlet:负责流程控制

JavaBean:负责业务逻辑处理

MVC 处理过程

MVC整体处理过程:

  1. 首先视图提供系统与用户交互的界面,并发送用户输入给控制器
  2. 控制器接收用户的请求,并决定应该调用哪个模型来进行处理
  3. 模型根据用户请求进行相应的业务逻辑处理,并返回处理结果(数据)
  4. 控制器根据返回的处理结果,调用相应的视图格式化模型返回的数据,并通过视图呈现给用户结果

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(前端控制器)

  1. Spring MVC最核心的类
  2. web.xml中配置

Handler(处理器):对应MVC中C(Controller层)

  1. 类型:Object
  2. 作用:实际处理请求
  3. 标注了@RequestMapping的所有方法都可以看作是一个Handler

ModelAndView

  1. 逻辑视图名
  2. 模型对象

核心组件

HandlerMapping(处理器映射)

  1. BeanNameUrlHandlerMapping(默认)
  2. 将请求URL映射到同名的控制器Bean上
  3. DefaultAnnotationHandlerMapping
  4. 将请求映射到标注@RequestMapping注解的控制器和处理方法上
  5. RequestMappingHandlerMapping

HandlerAdapter(适配器)

  1. AnnotationMethodHandlerAdapter
  2. RequestMappingHandlerAdapter

ViewResolver(视图解析器)

  1. 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

  1. 标注在类定义处
  2. 标注在方法定义处
  3. 映射规则
  • 通过请求URL进行映射
  • 通过请求参数进行映射
  • 若选择方法参数直接入参的话,方法入参名必须与请求中参数名保持一致
  • 通过请求方法进行映射
  • GET
  • POST

注意: @RequestMapping映射的请求信息必须保证全局唯一

@RequestParam

  1. Value:参数名
  2. Required:是否必需,默认true,表示请求中必须包含对应的参数名,若不存在将抛出异常
  3. defaultValue:默认参数名,不推荐使用

ModelAndView

  1. 包含视图信息和模型数据信息
  2. 常用方法
  • 添加模型数据
  • ModelAndView addObject(String attributeName,                                               Object attributeValue);
  • ModelAndView addAllObjects(Map<String,?> modelMap);
  • 设置视图
  • void setView(View view);指定一个具体的视图对象
  • void setViewName(String viewName);指定一个逻辑视图名。

Model

  1. 数据结构:Map类型
  2. 常用方法:添加模型数据

Model.addAttribute(String attributeName,Object attributeValue);

  1. 处理方法的入参为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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值