SpringMVC

http://www.xxx.com?id=&type=

Model:将传输数据封装成一个完整的整体

View:视图,用来展示或者输出的一个模块(HTML,JS,JSON,String,Swing,xml。。。 )

Control:控制交互的一个中间组件,由他来根据用户请求分发不同任务从而得到不同的结果

 

三者合在一起就叫做MVC,基于项目开发的设计模式,用来解决用户和后台交互的问题

J2EE标准,JSP页面是一个万能组件,可以写HTML,可以写JS,写java逻辑,写sql语句

MVC框架:Struts1,Struts2,WebWork,SpringMVC

SpringMVC只是MVC设计模式的应用典范,给MVC的实现制定了一套标准

M:支持将url参数自动封装成一个Object或者Map

V:自己只有一个默认的template,支持扩展,自定义View,而且能够自定义解析

C:能够把限制放宽了,任何一个类,都有可能是Controller

在dispatcherServlet中onRefresh方法

    protected void onRefresh(ApplicationContext context) {
        initStrategies(context);
    }

    /**
     * Initialize the strategy objects that this servlet uses.
     * <p>May be overridden in subclasses in order to initialize further strategy objects.
     */
    protected void initStrategies(ApplicationContext context) {
     //有九种策略
     //针对每个用户请求,都会经过一些处理的策略之后,最终才能有结果输出
     //每种策略可以自定义干预,但是最终的结果都是一致
     //ModelAndView

     //================== 这里就是Spring传说中的九大组件 =========================
initMultipartResolver(context); //文件上传解析,如果请求类型是multipart将通过multipartResolver进行文件上传解析 initLocaleResolver(context); //本地化解析 initThemeResolver(context); //主题解析

     //handlerMapping 用来保存Controller中配置的RequestMapping和Method的一个对应关系 initHandlerMappings(context); //通过handlerMapping,将请求映射到处理器

     //HandlerAdapters用来动态匹配Method参数,包括类转换,动态赋值 initHandlerAdapters(context); //通过handlerAdapter进行多类型的参数动态匹配 initHandlerExceptionResolvers(context); //如果执行过程中遇到异常,将交给HandlerExceptionResolver来解析 initRequestToViewNameTranslator(context); //直接解析请求到视图名

     //通过viewResolvers实现动态模板的解析
initViewResolvers(context); //通过viewResolver解析逻辑视图到具体视图实现 initFlashMapManager(context); //flash映射管理器 }

 

 

 

 

 

 第一阶段,配置阶段,通过我们的web.xml配置一个servlet,然后进入到初始化阶段,通过调用onRefresh方法初始化SpringMVC的九大组件,初始化完成以后,进入到请求处理阶段,调用doService方法,这个方法会调用doDispatch方法,里面又分别调用HandlerAdapter,ViewResolver和ResponseHttp里面的东西

posted @ 2020-01-08 12:52  MonsterZL  阅读(141)  评论(0编辑  收藏  举报