1.mvc要作哪些事:html
先说下Servlet 作哪些事情:前端
处理用户提交的数据;java
调用业务方法;web
处理业务结果;spring
控制视图显示;tomcat
a)将url映射到java类或java 类方法安全
b)封装用户提交的数据网络
c)处理请求-调用相关的业务处理-封装相应的数据mvc
d)将响应的数据进行渲染,Jsp,html,freemarker等app
2.spring mv是一个轻量级的,基于请求响应的mvc框架。
3.为啥要学习spring mvc 呢?
性能较struts2好。
简单,便捷,易学。
天生和spring无缝集成(使用spring ioc ,aop)使用约定优于配置
可以进行简单junit测试
支持Restful风格
异常处理
本地化,国际化
数据验证,类型转换等
拦截器等
--------------------------------使用的人多,使用的公司多
简单结构图:
4.跳转结果的方式
4.一、设置ModelAndView对象。根据View的名称和视图解析器跳转到指定页面。
页面:视图解析器的前缀+view name +视图解析器的后缀
4.二、经过Servlet对象来实现。不须要视图解析器的配置
经过HttpServletResponse来进行输出
经过HttpServletResponse实现重定向
经过HttpServletRequest实现转发
4.三、经过springmvc来实现转发和重定向——没有视图解析器
转发的实现
转发1:
转发2:
重定向
4.四、经过spring mvc 来实现转发和重定向——有视图解析器
转发方式
注意:重定向"redirect:index.jsp"不须要视图解析器
5.数据的处理。
5.1.提交数据的处理:
a.提交的域名称和处理方法的参数一致便可。
处理方法:
b.若是域名称和参数名不一致
c.若是提交的是一个对象
要求提交的表单域名和对象的属性名一致,参数名使用对象便可
处理方法
实体类
5.二、将数据显示到UI层
第一种经过Model And View ——须要视图解析器
第二种经过ModelMap来实现——不须要视图解析器
ModelMap须要做为处理方法的参数
ModelAndView 和ModelMap的区别
相同点:均可以将数据封装显示到表示层页面中
不一样点:ModelAndView能够指定跳转的视图,而ModelMap不能;ModelAndView须要视图解析器,ModelMap不须要配置
6.乱码及Restful
a)spring mvc 中提供了CharacterEncodingFilter解决Post乱码
同一个Controller经过参数来达到不一样的处理方法不重要
Spring Mvc使用框架实现的组件(不须要开发):
DispatcherServlet:做为前端控制器,整个流程控制的中心,控制其它组件执行,统一调度,下降组件之间的耦合性,提升每一个组件的扩展性。----------------------接收请求,响应结果,至关于电脑的CPU
做用:接收请求,响应结果,至关于转发器,中央处理器。有了dispatcherServlet减小了其它组件之间的耦合度。
用户请求到达前端控制器,它就至关于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在下降了组件之间的耦合性。
HandlerMapping:经过扩展处理器映射器实现不一样的映射方式,例如:配置文件方式,实现接口方式,注解方式等。----------------------根据URL去查找处理器
做用:根据请求的url查找Handler
HandlerMapping负责根据用户请求找到Handler即处理器,springmvc提供了不一样的映射器实现不一样的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
HandlAdapter:经过扩展处理器适配器,支持更多类型的处理器。-----------------会把处理器包装成适配器,这样就能够支持多种类型的处理器,类比笔记本的适配器(适配器模式的应用)
做用:按照特定规则(HandlerAdapter要求的规则)去执行Handler
经过HandlerAdapter对处理器进行执行,这是适配器模式的应用,经过扩展适配器能够对更多类型的处理器进行执行。
ViewResolver:经过扩展视图解析器,支持更多类型的视图解析,例如:jsp、freemarker、pdf、excel等。----------------------进行视图解析,多返回的字符串,进行处理,能够解析成对应的页面
做用:进行视图解析,根据逻辑视图名解析成真正的视图(view)
View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果经过页面展现给用户。 springmvc框架提供了不少的View视图类型,包括:jstlView、freemarkerView、pdfView等。
通常状况下须要经过页面标签或页面模版技术将模型数据经过页面展现给用户。
View是一个接口,实现类支持不一样的View类型(jsp、freemarker、pdf...)
springMVC和spring之间的关系:
springMVC是spring的一个后续产品,其实就是spring在原有基础上,又提供了web应用的MVC模块,能够把springMVC理解为是spring的一个模块(相似AOP,IOC这样的模块),网络上常常会说springMVC和spring无缝集成,其实springMVC就是spring的一个子模块,因此根本不须要同spring进行整合。