我的文件目录及内容分别为
/WEB-INF/language/core/message_zh_CN.properties
exam.core.system.title=onlineexamsystem
/WEB-INF/language/core/message_en_US.properties
exam.core.system.title=在线考试系统
增加语系文件处理类;读取配置信息中当前的语系,设置本地化语言
package com.onlineexam.exam.core.common.interceptor;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.propertyeditors.LocaleEditor;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import org.springframework.web.servlet.support.RequestContextUtils;
public class LocaleLanguage extends HandlerInterceptorAdapter {
private static Logger logger = LoggerFactory.getLogger(LocaleLanguage.class);
/**
* 本地化字符串在ModelMap中的名称
*/
public static final String LOCALE = "locale";
private String language;
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
LocaleResolver localeResolver = RequestContextUtils
.getLocaleResolver(request);
if (localeResolver == null) {
throw new IllegalStateException(
"No LocaleResolver found: not in a DispatcherServlet request ");
}
logger.debug("当前语系为:{}",this.language);
String newLocale = this.language;
LocaleEditor localeEditor = new LocaleEditor();
localeEditor.setAsText(newLocale);
localeResolver.setLocale(request, response, (Locale) localeEditor
.getValue());
return true;
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
LocaleResolver localeResolver = RequestContextUtils
.getLocaleResolver(request);
if (localeResolver == null) {
throw new IllegalStateException(
"No LocaleResolver found: not in a DispatcherServlet request ");
}
if (modelAndView != null) {
modelAndView.getModelMap().addAttribute(LOCALE,
localeResolver.resolveLocale(request).toString());
}
}
}
增加登录认证和权限认证拦截器类
com.onlineexam.exam.core.common.interceptor.AdminContextInterceptor
此类也必须继承org.springframework.web.servlet.handler.HandlerInterceptorAdapter类。
然后在此类中记录自己的登录信息和权限信息。
第六步
前面的准备工作已经完成了,我们需要配置我们的FreeMarker了。
在Spring中增加FreeMarker信息
新建Spring配置文件,我这里的配置文件名为
/WEB-INF/config/online-exam-manager.xml
这个文件的具体内容如下:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
default-lazy-init="true">