14 Spring MVC的工作机制与设计模式

14.1 Spring MVC总体设计

使用Spring MVC只需

  1.  web.xml中配置一个DispatcherServlet
  2. 在定义一个dispatcherServlet-servlet.xml文件

其中DispatcherServlet继承了HttpServlet,在Servletinit方法调用的时候做以下操作:
  1. initMultipartResovler:初始化MultipartResover,用于处理文件上传服务,当有文件上传时,将HttpServletRequest封装成DefaultMultipartHttp,将每个上传的内容封装成CommonsMultipartFile

  1. initLocaleResolver:用于处理国际化问题
  2. initThemeResolver:用于定义一个主题,可根据用户喜好来设置用户访问的页面的样式
  3. initHandlerMappings:定义请求和处理Handler之间的关系,如果没有定义,则获取默认的两个,BeanNameURLHandlerMappingDefaultAnnotationHandlerMapping
  4. initHandlerAdapters:根据Handler定义类型不同定义不同的处理规则
  5. initHandlerExceptionResolvers:当Handler处理出错的时候,通过这个Handler来统一处理
  6. initRequestToViewNameTranslator:将指定的ViewName按照定义的RequestToViewNameTranslator替换成想要的格式
  7. initViewResovlers:将view解析成页面

 

计算机生成了可选文字:spring MVC Spring WC HandlerMapping MultipartResolver LocaleResolver ViewResolver HandlerExcepuon Resolver HandlerAdapter ThemeResolver RequestToVievNan eTrans1ator 14-2 spring MVC

 

HandlerMapping:定义URL映射规则

HandlerAdapter:实现业务逻辑的Handler实例对象

ViewResolver:渲染模板资源

 

14.2 Control设计

主要有HandlerMappingHandlerAdapters两个组件提供

HandlerMapping:映射用户的URL和对应的处理类,根据一个URL返回一个HanderExecutionChain代表的处理链

Handler初始化时,将URLHandler的对应关系保存在handlerMap中;将所有的interceptors对象保存在adaptedInterceptors数组中

 

HandlerAdapter的三种实现类:

  1. SimpleServletHandlerAdapter:可以继承HttpRequestHandler接口,所有的Handler实现其handleRequest方法
  2. SimpleControllerHandlerAdapter:可以继承Controller接口返回ModelAndView
  3. SimpleServletHandlerAdapter:可以直接继承Servlet接口

 

Controller调用时序图

计算机生成了可选文字:Control 14-7 AbstractHandlerMapping HandlerExecutionChain Handterlnterceptor HandlerAdapter 1.doDispatch 2.checkMultipart$ìÊ 3.getHandlerÈìÉ HandlerExecutionChain 8.getHandlerAdapter 2.checkMultipart co multipart/hfi* MultipartHttpServl WhEE$4HandlerMappingï etRequestR* 5,new HandlerExecutionChain0 AE4HandlerMappingï HandlerExecutionChainR* 7BTFHandlerrnterceptorï preHandleBîÈ false 9.hasupports , 14-7 Control

 

14.3 View设计

view包含两个模块:RequestToViewNameTranslatorViewResolver

RequestToViewNameTranslator:支持用户自定义对ViewName的解析

ViewResolver:根据用户请求的ViewName创建合适的模板引擎来渲染最终的页面

 

SpringMVC模板设计模式

成员:

Abstract:抽象模板,定义完成框架后,方法调用的顺序,但是还有些抽象方法需要在子类中实现

Concrete:具体模板实现类

 

SpringMvcHandlerMapping的设计继承AbstractHandlerMapping,其中getHandlerInternal留给子类实现

View继承AbstractView其中renderMergedOutputModel给子类去实现。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值