博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springMVC国际化配置和使用
阅读量:4989 次
发布时间:2019-06-12

本文共 5752 字,大约阅读时间需要 19 分钟。

下面是基于session的,springMVC国际花的一个例子:    

需求是

输入url:展示中文界面

http://localhost:8080/MySSM/user?lang=zh

输入url:  展示英文界面

http://localhost:8080/MySSM/user?lang=en

下面是我demo项目的例子使用:

1.工程结构:

2.springMVC配置文件中 国际化相关的配置:

View Code

注意我重新使用了自己的拦截器:com.cy.interceptor.LanguageInterceptor

因为原来的拦截器org.springframework.web.servlet.i18n.LocaleChangeInterceptor,浏览器必须要输入lang=en_US,lang=zh_CN,才能改变语言。但是觉得输入这么多麻烦,因为一般就认为zh中文,en英文了。

 

3.语言LanguageInterceptor.java:

我只是把LocaleChangeInterceptor源代码拷贝了一部分过来;做些修改,主要是:

localeResolver.setLocale(request, response, newLocale)设置语言了;

package com.cy.interceptor;import java.util.Locale;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.LocaleResolver;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import org.springframework.web.servlet.support.RequestContextUtils;/** * 语言拦截器 * @author CY * */public class LanguageInterceptor extends HandlerInterceptorAdapter{        /**     * Default name of the locale specification parameter: "locale".     */    public static final String DEFAULT_PARAM_NAME = "locale";    private String paramName = DEFAULT_PARAM_NAME;        public void setParamName(String paramName) {        this.paramName = paramName;    }    public String getParamName() {        return this.paramName;    }    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {        Locale newLocale = getLocale(request.getParameter(getParamName()));        LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);                if (localeResolver == null) {            throw new IllegalStateException("No LocaleResolver found: not in a DispatcherServlet request?");        }                localeResolver.setLocale(request, response, newLocale);                return true;    }        //根据language 获取Locale    public static Locale getLocale(String language){        Locale locale = new Locale("zh", "CN");        if(language!=null && language.equals("en")){            locale = new Locale("en", "US");        }                return locale;    }    }

4.如果想在controller中获取messages配置文件中的值怎么做呢?

下面是一部分代码:

import org.springframework.web.servlet.support.RequestContext;import org.springframework.web.servlet.support.RequestContextUtils;import java.util.ResourceBundle;@Controllerpublic class UserController {    private static Logger logger = Logger.getLogger(UserController.class);        @Autowired    private UserService userService;            /**     * 从国际化资源配置文件中根据key获取value  方法一     * @param request     * @param key     * @return     */    public static String getMessage(HttpServletRequest request, String key){        Locale currentLocale = RequestContextUtils.getLocale(request);        String lang = currentLocale.getLanguage();        ResourceBundle bundle = ResourceBundle.getBundle("messages_"+lang, currentLocale);        return bundle.getString(key);    }    /**     * 从国际化资源配置文件中根据key获取value  方法二     * @param request     * @param key     * @return     */    public static String getMessage2(HttpServletRequest request, String key){        RequestContext requestContext = new RequestContext(request);        String value = requestContext.getMessage(key);        return value;    }            @RequestMapping("/user")    public ModelAndView getUsers(HttpServletRequest request){        List
userList = userService.getUsers(); ModelAndView mv = new ModelAndView(); //从message中获取文字 //String showUserInfo = getMessage(request, "showUserInfo"); String showUserInfo = getMessage2(request, "showUserInfo"); mv.addObject("showUserInfo", showUserInfo); mv.addObject("userList", userList); mv.setViewName("user"); return mv; } }

5.jsp中使用spring:message code:主要是:

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<spring:message code="userName"/>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:message code="userManage"/>

${showUserInfo}

View Code

6.messages_zh.properties和messages_en.properties配置:

userManage=userManagementuserName=usernameage=agephotoName=photo namephoto=photoaddUser=add usershowUserInfo=this is display user information
userManage=\u7528\u6237\u7BA1\u7406userName=\u59D3\u540Dage=\u5E74\u9F84photoName=\u7167\u7247\u540D\u79F0photo=\u7167\u7247addUser=\u589E\u52A0\u7528\u6237showUserInfo=\u8FD9\u91CC\u662F\u5C55\u73B0\u7528\u6237\u4FE1\u606F

 

效果:

 

 

 

 

 

 

-------------

 

转载于:https://www.cnblogs.com/tenWood/p/7535502.html

你可能感兴趣的文章
字符串转整型C++
查看>>
随机生成红包算法
查看>>
Datatable get请求传参应用
查看>>
杭电1170
查看>>
3unit8
查看>>
kettle与各数据库建立链接的链接字符串
查看>>
【转】Apache Solr 访问权限控制
查看>>
PostgreSQL - 转义字符
查看>>
两步搞定一台电脑同时开启多个tomcat
查看>>
jQuery EasyUI弹出确认对话框(确认操作中.....)
查看>>
CentOS7 监控网络流量
查看>>
根据控件名称反射查找控件
查看>>
编写和执行C#代码的插件:CS-Script for Notepad++
查看>>
BZOJ3569: DZY Loves Chinese II(线性基构造)
查看>>
Android系统源码下载及使用(Android 14到19源码)
查看>>
绑定dropdownlist
查看>>
[LeetCode] Sudoku Solver
查看>>
实验四
查看>>
Python Day04
查看>>
Android新增API之AudioEffect中文API与应用实例
查看>>