Spring MVC工程中,习惯于把视图文件(例如jsp)放在WEB-INF目录下。
静态资源引用
要引用静态资源,Spring MVC 提供了2种方式
1 <mvc:default-servlet-handler /> : 会将请求静态资源的URL,提交到Web容器处理。
2 <mvc:resources>: 由Spring MVC 自己映射静态资源
<mvc:resources mapping="/resources/**" location= "/static/,
classpath:/META-INF/web-resources/" />
jsp中可以这样引用
<%@ taglib prefix="c" uri= "http://java.sun.com/jsp/jstl/core" %>
<c:set var= "ctx" value ="${pageContext.request.contextPath} "/>
<head>
<link href= "${ctx}/resources/styles/default.css" type="text/css" rel="stylesheet" />
</head>
国际化
Spring MVC 中的国际化由localeResolver定义,Spring MVC 会在上下文中查找名为localeResolver 的bean,找到后使用它来处理国际化。
默认定义在 DispatcherServlet.properties中
org.springframework.web.servlet.LocaleResolver= org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver
Spring 提供了3个Resolver和1个动态拦截器:
AcceptHeaderLocaleResolver:根据HTTP报文头的Accept-Language参数确定
CookieLocalResolver:根据Cookie值确定
SessionLocalResolver:根据Session值确定
LocaleChangeInterceptor:从请求参数中获得,默认获得locale参数值
常见用法是 LocaleChangeInterceptor 和 CookieLocalResolver 配合使用:
<!-- Configures Handler Interceptors -->
<mvc:interceptors>
<!-- Changes the locale when a 'locale' request parameter is sent; e.g. /?locale=de -->
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors>
<!-- Saves a locale change using a cookie -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
<!-- Application Message Bundle -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/messages/messages" />
<property name="cacheSeconds" value="0" />
<property name="fallbackToSystemLocale" value="true" />
</bean>
JSP中可以:
<spring:message code="welcome.title" var="title"/>
${title}
<a href="?locale=en_us">us</a>