Spring MVC

86 阅读1分钟
  • 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()