一个完整的Spring+Hibernate+FreeMarker系统搭建过程(二)

2014-11-24 00:38:39 · 作者: · 浏览: 1
的是message_zh_CN.properties, message_en_US.properties。我们在这两个文件中加入系统中要用到的相关文本信息。

我的文件目录及内容分别为

/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">

/WEB-INF/language/core/message