基于Session的国际化实现

其他链接:http://blog.csdn.net/jinwufeiyang/article/details/52338268

如何将我们网站的其它内容(如菜单、标题等)做国际化处理呢?这就是本篇要将的内容—>国际化。

在项目的spring.xml文件添加的内容如下

[html] view plain copy

  1. <mvc:interceptors>
  2. <span style="white-space:pre">    </span><!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie)则必需配置 -->
  3. <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
  4. </mvc:interceptors>

在项目中的源文件夹resources中添加myproperties.properties、myproperties_zh_.properties、myproperties_en_.properties三个文件

下面是jsp页面的一些简单信息如下,仅仅是演示没考虑其他的:

[html] view plain copy

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <%
  10. Locale name = (Locale) session.getAttribute("i18nlanguage");
  11. ResourceBundle myResourcesBundle = ResourceBundle.getBundle("myproperties",name);
  12. %>
  13. <body>
  14. <a href="${pageContext.request.contextPath}/index/findex.do?langType=en&page=Home">ENG</a> |
  15. <a href="${pageContext.request.contextPath}/index/findex.do?langType=zh&page=Home"><%=myResourcesBundle.getString("simplified")%></a>
  16. </body>
  17. </html>

后台Action层代码如下:

[html] view plain copy

print?

  1. package com.zhidao.oms.index;
  2. import java.util.Locale;
  3. import javax.servlet.http.HttpServletRequest;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RequestParam;
  7. @Controller
  8. @RequestMapping("/index")
  9. public class IndexAction {
  10. @RequestMapping("/findex")
  11. public String Findex(HttpServletRequest request,@RequestParam String langType,String page){
  12. if(langType.equals("zh")){
  13. Locale locale = new Locale("zh", "CN");
  14. request.getSession().setAttribute("i18nlanguage",locale);
  15. }
  16. else if(langType.equals("en")){
  17. Locale locale = new Locale("en", "US");
  18. request.getSession().setAttribute("i18nlanguage",locale);
  19. }else{
  20. request.getSession().setAttribute("i18nlanguage",Locale.getDefault());
  21. }
  22. return "/front/"+page+".jsp";
  23. }
  24. }

有关的效果图展示大家测试一下就好了!写的不好的地方希望大家批评指正。

时间: 2025-01-14 14:33:03

基于Session的国际化实现的相关文章

基于session 的springMvc 国际化

项目中采用springMvc的框架,需要动态切换语言,找了一些资料,最后决定采用基于session的动态切换,实现动态切换中文,英文,韩文,其实就是把中文翻译成其他语言显示 springMvc国际化包括两个方面,一个是前台页面的国际化,spring有自己的标签可以去实现,非常方便,另一个是后台java代码种涉及中文的国际化. 1.项目总体结构 有关bean的主要配置在spring-mvc.xml里配置,messages文件夹里放的是需要翻译的内容格式如下:key  =  value 的格式 英文

使用Oracle基于session的临时表要注意的问题

在Oracle中有两种临时表,一种是基于session,就是当出现commit之后,数据就会被清空:一种是基于session,当session断开后,数据会被清空. --基于事务的临时表 create global temporary table test ( ID   number ) on commit delete rows; --基于session的临时表 create global temporary table test ( ID   number ) on commit prese

Django 基于session认证 小作业

基于session认证  相亲小作业 用户登录 如果男用户登录,显示女生列表 如果女用户登录,显示男生列表 """s4day74 URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/1.11/topics/http/urls/ Examples: Function vie

Asp.net基于session实现购物车的方法

本文实例讲述了asp.net基于session实现购物车的方法.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 7

Spring Cloud微服务安全实战_5-2_基于session的SSO

上一篇将OAuth2授权模式的password模式改造成了授权码模式,并初步实现了一个前后端分离架构下基于session的微服务的SSO.用户在客户端点击登录,会跳转到认证服务器的登录页面进行登录,登录成功后,认证服务器回调到客户端应用的callback方法,并携带了授权码,客户端拿着授权码去认证服务器换取access_token ,客户端拿到access_token后存到自己的session,就认为该用户已登录成功. 上边这个流程是一个基于session的SSO,其中有三个效期: 1,客户端应

Spring Cloud微服务安全实战_5-6_基于session的SSO优缺点以及适用场景

到目前为止已经实现了一个基于session的SSO 优点: 1,安全 .所有的token的信息都是放在session里(客户端应用session.认证服务器session),在浏览器里只有一个jsessionId,在浏览器这边只要做好session固定攻击的防护,一般是不会有什么风险的. 2,可控性高.token信息存在了数据库,登录信息存在了redis,想让谁下线就让谁下线,想让谁失效就让谁失效. 3,跨域.客户端应用部署在哪个域名下,都可以直接跟认证服务器交互. 缺点: 1,复杂度高. se

利用session做国际化引起的old区内存爆满及修复方法

题记:昨天加班打车回家,看见前面有辆路虎在高速上开的巨慢,挡住了我坐的出租车的路,于是就跟司机吐槽了一句:“前面这车怎么这么面啊?”,司机沉默了大概3秒,说了一句富含哲理性的话:“没有面车,只有面人”.借用这句话套在软件开发上就是:“没有面代码,只有面的程序猿”.只不过这次我就是那个面的程序猿.(面:是一个方言,大意就是优柔寡断,反应迟缓,没有主见,好欺负之类的). 背景是这样的,最近项目要做国际化,主要是基于spring的i18来做,通过拦截器拦截request过来的url中是否包含local

JavaWeb基于session和cookie的数据共享

在了解session和cookie技术之前,我们需要先了解一下什么是会话?会话可以简单理解为用户打开一个浏览器,点击多个超链接,访问服务器的多个web资源,然后关闭浏览器,整个过程称为一个会话.这样,在一次会话过程中,用户在访问web资源的过程中,各自产生了一些数据,那么用户如何来保存这些数据呢?举个简单例子,假如我们的网站是一个购物的网站,如果用户点击了购买的servlet的之后产生了一条购买的商品数据,这个数据应该存到哪里呢?那么当该用户点击付款servlet的时候,又从哪里去获取上次购买之

SpringMVC基于session存储注解的值 (全局使用)

用户网站 有一个中英文切换的地方,会把切换后的language的属性值l, 存入session 这个值language在多个控制器参数里面会被调用,现在将其声明为注解 利用拦截器 再切换语言的时候 修改language的值 利用aop思想 一处修改多处直接拿到该值 不需要每次都在从session中获得该值 稍微方便一下下.. 1.注解声明 @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented