SpringMVC笔记(二)——默认配置

来源:互联网 发布:c语言程序举例 编辑:程序博客网 时间:2024/06/06 12:47

一个中心,三大组件

在上一篇中大致地说了一下SpringMVC请求处理的基本流程,其中,DispatcherServlet是前端控制中心,HandlerMapping负责返回包含对应的handler的HandlerExcutionChain,HandlerAdapter负责执行相应的handler,最后由ViewResolver来根据ModelAndView来渲染视图。
这里HandlerMapping、HandlerAdapter、ViewResolver就是SpringMVC的三大组件。

默认组件配置

在SpringMVC的org.springframework.web.servlet包下有一个DispatcherServlet.properties文件,它是“ Default implementation classes for DispatcherServlet’s strategy interfaces.”也即是配置了DispatcherServlet默认加载策略的一些组件的实现类。我们可以在此查看三大组件的默认配置。

# Default implementation classes for DispatcherServlet's strategy interfaces.# Used as fallback when no matching beans are found in the DispatcherServlet context.# Not meant to be customized by application developers.org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolverorg.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolverorg.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\    org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMappingorg.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapterorg.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\    org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\    org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolverorg.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslatororg.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolverorg.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager

其中第三个指定了HandlerMapping的实现,其默认有两个实现即配置式和注解式;接着是HandlerAdapter,有三个实现,第一种要求Controller实现HttpRequestHandler接口,第二种则需要实现Controller接口,第三种是注解式;ViewResolver默认为InternalResourceViewResolver。需要注意,在SpringMVC-3.1之后,DefaultAnnotationHandlerMapping不再推荐使用,推荐使用RequestMappingHandlerMapping,可在配置文件中进行配置,相应的HandlerAdapter也需要改为RequestMappingHandlerAdapter。但是有这么一个配置,可以直接打开SpringMVC的注解驱动,免去上述配置的繁琐,它等同于向spring容器中注册了上述两个bean,如下:
<mvc:annotation-driven/>

接下来是视图解析器的配置,InternalResourceViewResolver,在默认的情况下,我们的URL中需要包含“WEB-INF/页面路径”为前缀,但如果将其在容器中注册好,配置其前缀后缀,则访问时可以免去。
配置如下

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>        <property name="prefix" value="/WEB-INF/jsp/"/>        <property name="suffix" value=".jsp"/>    </bean>

想起来要补充一个问题,在web.xml中我们需要给DispatcherServlet配置上下文,同时整个web应用需要在context-param中配置contextConfigLocation,也就是ContextLoaderListener的上下文(根上下文),这两者的关系上,后者是前者的父上下文。

原创粉丝点击