昨天买了本淘宝大牛写的书-《深刻分析java web 技术内幕》,从今天开始,记录下本身的总结。 java
因为本人是使用spring MVC开发的,全部就先看了下spring MVC 工做机制与设计模式这章,感受看了以后受益不浅啊!!! web
在一个工程中若是想要使用 spring MVC的话,只须要两个步骤 spring
须要配置一个org.springframework.web.servlet.DispatcherServlet的servlet。 设计模式
在这个配置文件里面咱们只须要扩展一个路径映射关系,定义一个视图解析器,再定义一个业务逻辑的处理流程规则。 app
这样就能够搞定一个最基本的Spring MVC的应用了。 框架
--------------------------邪恶的分割线------------------------------------------------ ide
对于DispatcherServlet初始化的时候初始了哪些东西,这些能够在initStrategies中看到。 ui
/** * 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) { //初始化MultipartResolver,主要是处理文件上传服务。 initMultipartResolver(context); //用于处理应用的国际化问题 initLocaleResolver(context); //用于定义一个主题 initThemeResolver(context); //用于定义用户设置的请求映射关系 initHandlerMappings(context); //用于根据Handler的类型定义不一样的处理规则 initHandlerAdapters(context); //当Handler处理错误的时候,经过这个handler来作统一的处理 initHandlerExceptionResolvers(context); //将指定的ViewName按照定义的RequestToViewNameTranslator替换成想要的格式。 initRequestToViewNameTranslator(context); //用于将view解析成页面 initViewResolvers(context); //用于映射flash管理的。 initFlashMapManager(context); }--------------------------------------邪恶的分割线-------------------------------
小结: 对于spring MVC框架中,有三个组件是用户必须定义和扩展的: this
--------------------------------------邪恶的分割线------------------------------- spa
看看DispatcherServlet启用的时候作了哪些工做?
/** * Map config parameters onto bean properties of this servlet, and * invoke subclass initialization. * @throws ServletException if bean properties are invalid (or required * properties are missing), or if subclass initialization fails. */ @Override public final void init() throws ServletException { if (logger.isDebugEnabled()) { logger.debug("Initializing servlet '" + getServletName() + "'"); } // Set bean properties from init parameters. try { PropertyValues pvs = new ServletConfigPropertyValues(getServletConfig(), this.requiredProperties); BeanWrapper bw = PropertyAccessorFactory.forBeanPropertyAccess(this); ResourceLoader resourceLoader = new ServletContextResourceLoader(getServletContext()); bw.registerCustomEditor(Resource.class, new ResourceEditor(resourceLoader, this.environment)); initBeanWrapper(bw); bw.setPropertyValues(pvs, true); } catch (BeansException ex) { logger.error("Failed to set bean properties on servlet '" + getServletName() + "'", ex); throw ex; } // Let subclasses do whatever initialization they like. initServletBean(); if (logger.isDebugEnabled()) { logger.debug("Servlet '" + getServletName() + "' configured successfully"); } }
这样:spring MVC的初始化工做就完成了。这样就能够接受你的http请求了。