赞
踩
Spring Web MVC 是基于Servlet API构建的Web框架,初始Spring框架就包含了该框架。
与其他许多web框架一样,Spring MVC的设计是围绕前置控制器模式其中心是Servlet,DispatcherServlet 为请求处理提供了一个共享算法,而实际工作是由可配置的代理组件执行的,这种模型灵活且执行多种工作流。
DispatcherServlet和任何Servlet一样,需要使用Java配置或web.xml配置,根据Servlet规范进行声明和映射。
反过来说DispatcherServlet使用Spring配置去发现所需要的代理组件,如:请求映射、试图解析、异常处理等。
基于Java配置
public class MyWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) { // Load Spring web application configuration AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); context.register(AppConfig.class); // Create and register the DispatcherServlet DispatcherServlet servlet = new DispatcherServlet(context); ServletRegistration.Dynamic registration = servletContext.addServlet("app", servlet); registration.setLoadOnStartup(1); registration.addMapping("/app/*"); } }
基于 Web.xml配置
<web-app> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/app-context.xml</param-value> </context-param> <servlet> <servlet-name>app</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value></param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>app</servlet-name> <url-pattern>/app/*</url-pattern> </servlet-mapping> </web-app>
这两个配置是一样的意思。
如果请求需要上传文件,就需要配置MultipartResolver,来完成将HttpServletRequest转换为MultipartHttpServletRequest。
multipart/
来判断是否是多文段请求。multipart/
来判断是否是多文段请求。根据用户当前使用的区域设置以及可能的时区,以便能够提供国际化试图。
通过使用RequestContext获取用户的时区。getTimeZone()方法。来获得本地化Locale。
实现分别有:
FixedLocaleResolver:只能返回默认设置的Locale和TimeZone。
SessionLocaleResolver:将TimeZone和Locale保存到Session中。
通过请求头accept-language
来获取到对应的,不支持时区解析。
解析客户端上Cookie,是否设置了Locale或Timezone。如果设置了则使用指定详细信息。
可以通过将LocaleChangeInterceptor添加到HandlerMapping去修改本地化,在检测到请求头参数并修改对应的Locale值。
默认使用:AcceptHeaderLocaleResolver
通过使用Spring Web MVC框架中主题来设置应用程序的整体外观,从而增强用户体验。主题是影响应用程序视觉样式的静态资源的集合,通常是样式或图像。
主体必须和主题资源结合在一起使用
。
ResourceBundleThemeSource设置主题资源
styleSheet=/themes/cool/style.css
background=/themes/cool/img/coolBg.jpg
JSP页面使用示例,读取key即可。
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<html>
<head>
<link rel="stylesheet" href="<spring:theme code='styleSheet'/>" type="text/css"/>
</head>
<body style="background=<spring:theme code='background'/>">
...
</body>
</html>
只能设置默认主题,提供默认主题
主题在用户的HTTP会话中维护,它只需要为每个会话设置一次,但不会在会话之间持久化。
主题存储在客户端的Cookie中。
通过拦截器允许通过一个简单的请求参数在每个请求上更改主题。
默认使用:FixedThemeResolver
将请求映射到处理程序以及用户预处理和后处理的拦截器列表。映射基于一些标准,这个标准的细节由HandlerMapping具体实现而异。
getHandlerInternal
获取对象Handler。默认使用
BeanNameUrlHandlerMapping
RequestMappingHandlerMapping
RouterFunctionMapping
默认使用
HttpRequestHandlerAdapter
SimpleControllerHandlerAdapter
RequestMappingHandlerAdapter
HandlerFunctionAdapter
默认使用
ExceptionHandlerExceptionResolver
ResponseStatusExceptionResolver
DefaultHandlerExceptionResolver
前缀
和后缀
。默认值DefaultRequestToViewNameTranslator
默认启用:SessionFlashMapManager
根据viewName(视图名称)和locale(本地化)来获取对应的View。
默认启用:InternalResourceViewResolver
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。