Spring MVC
- Spring MVC是应用在表现层的框架
- 可以认为是对servlet的封装
- SpringMVC
- 全局只有一个DispatcherServlet-》Controller
- 1前端控制器DispatcherServlet请求查询handler
- 2handlermapping返回处理器执行链
- 3.请求执行
- 4.Handler执行
- 5.返回modelandview
- 6.请求视图解析器
- 7.返回view
- 8.渲染视图
- 核心组件:
- 1.HandlerMapping(处理器映射器)
- 用来查找handler的,标注了requestmapping的都是handler
- 2.handlerAdapter(处理器适配器)
- 3.HandlerExceptionResolver(异常处理)
- 4.ViewResolver(视图解析器)
- 5.RequestToviewNameTranslator(获取视图名称)
- 6.LocalResolver(国际化)
- 7.ThemeResolver
- 8.MultipartResolver(处理上传)
- 9.FlashMapManager(重定向参数传递)
- url-partten配置/*会拦截静态资源
- 解决:
- mvc:defualt-servlet-handler
- 添加该标签,会在Springmvc上下文中定义一个DefaultServletHttprequesthandler默认处理
- mvc:resources
- SpringMVC自己处理静态资源
- 传参时类型都是BindingAwareModelMap
- springmvc提供urlencoding过滤器
- 提供请求类型转换过滤器
- Filter过滤器:配置/*对request请求过滤处理
- 监听器:随容器启动销毁,做一些初始化工作,监听web的事件,如实现监控统计在线人数等
- 拦截器:执行拦截之前,跳转页面之前,跳转页面之后
- 多个拦截器按照配置perhandler顺序,posthandle和after是倒叙
- @ExceptionHandler注解只会对当前Controller生效
- @ControllerAdvice注解声明在自定义异常处理器上可以全局
- 转发:Url不变,参数不丢失,一个请求
- 重定向:url变,参数丢失,两个请求
- 自定义SpringMVC框架
- 1.DispatcherServlet doGet doPost init
- 2.init方法 加载配置文件->扫描类和注解->初始化bean->依赖注入->构造handlermappping处理器映射器处理url和mapping映射->等待请求进入
- Httpservlet->httpservletbean->framworkservlet->dispartsetvlet
- doGet/doPost
- Handler方法执行时机:
- doGet->doservice->dodispatch->handle()
- 视图渲染
- dodispatch->processdispatch()