SpringMVC

烂漫一生 提交于 2020-01-08 13:45:26

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里面的东西

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!