SpringMVC期末复习

SpringMVC期末复习-简要版
更好的阅读体验请前往鄙人博客
闪闪の小窝——

一、介绍:

SpringMVC结构
SpringMVC运行流程

二、原理图

SpringMVC原理

三、各组件名称以及作用

• 在整个体系中各组件的职责如下:

Front Controller:

• 前端控制器,负责为表现层提供统一访问点,从而避免Model2中出现的重复的控制逻辑 (由前端控制器统一回调相应的功能方法);并且可以为多个请求提供共用的逻辑(如准备上下文等等),将选择具体视图和具体的功能处理;

Application Controller:

• 应用控制器,前端控制器分离选择具体视图和具体的功能处理之后,需要有人来管理,应用控制器就是用来选择具体视图技术(视图的管理)和具体的功能处理(页面控制器/命令对象/动作管理),一种策略设计模式的应用,可以很容易的切换视图/页面控制器,相互不产生影响;

Page Controller(Command):

• 页面控制器/动作/处理器:功能处理代码,收集参数、封装参数到模型,转调业务对象处理模型,返回逻辑视图名交给前端控制器(和具体的视图技术解耦),由前端控制器委托给应用控制器选择具体的视图来展示,可以是命令设计模式的实现。页面控制器也被称为 处理器或动作

Context:

• 上下文,在Model2中为视图准备要展示的模型数据直接放在request中(Servlet API相关),有了上下文之后,我们就可以将相关数据放置在上下文,从而与协议无关(如Servlet API)的访问/设置模型数据,一般通过ThreadLocal模式实现;

四、SpringMVC优缺点

1,优点:

封装代码,耦合性低,维护成本低,修改只需修改对应层代码而不会影响其他层
按层把系统分开,有利于开发中的分工,提高开发效率
分层后更有利于组件的重用,有利于代码复用,重用性高

2,缺点

没有明确定义,不易理解
不适合小型、中等规模的应用程序,降低开发效率
增加系统结构和实现的复杂性,降低运行效率
视图与控制器过于紧密链接,妨碍了独立重用
视图对模型数据的低效率访问
一般高级的界面工具或构造器不支持这个模式

五、模型驱动(结合Spring_MVC项目看)

1、配置处理器映射器

注解式处理器映射器,对类中标记了@ResquestMapping的方法进行映射。根据@ResquestMapping定义的url匹配@ResquestMapping标记的方法,匹配成功返回HandlerMethod对象给前端控制器。
HandlerMethod对象中封装url对应的方法Method。
在springmvc.xml配置文件中配置如下:

<!-- 配置处理器映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />

2、配置处理器适配器

注解式处理器适配器,对标记@ResquestMapping的方法进行适配。

3、注解驱动(最ez)

直接配置处理器映射器和处理器适配器比较麻烦,可以使用注解驱动来加载。
SpringMVC使用mvc:annotation-driven自动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter
可以在springmvc.xml配置文件中使用mvc:annotation-driven替代注解处理器和适配器的配置。
1)

<!-- springMVC注解模式,注册了DefaultAnnotationHandlerMapping
和AnnotationMethodHandlerAdapter这两个Bean,这两个Bean是springmvc运行中非常重要的类 -->
	<mvc:annotation-driven/>

2)在controller里的方法前加上注解即可
例如

@RequestMapping("pagedata")
	public String getPageData(String gname,String type,Model model){
		System.out.println(gname+" "+type);
		model.addAttribute("goods", gname+" "+type);
		return "showdata";
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值