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>