struts2实现用户自行选择语言

如果用户根据自己的喜好能选择定制语言将是一件比较友好的事,struts2中可以轻易的实现用户定制语言。

在struts2中,可以通过ActionContext.getContext().setLocale(Locale arg)设置用户的默认语言。为了简化设置

用户默认语言环境。Struts2提供了一个名为i18n的拦截器(Interceptor),并且将其注册在默认的拦截器中(defaultStack).

程序的思路是i18n拦截器在执行Action方法钱,自动查找请求中一个名为request_locale的参数。如果该参数存在,拦截器就将其作为参数,转换成Locale对象,并将其设置为用户默认的Locale。

程序中将通过给request_locale的参数传递不同的参数(zh_CN或en_US)来实现页面语言符号的变化。看下面子:

在src下创建Action包,并在Action中创建名为LoginAction.java的Action。同时在src目录中创建资源文件

loginResource_en_US.properties和loginResource_zh_CN.properties文件,配置文件struts.properties和struts.xml。

LoginAction.java

package action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

private static final long serialVersionUID = 1L;

private String userName;

private String password;

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String succ(){

return "success";

}

public String lang(){

return "input";

}

}

代码后面的两个方法secc()和lang(),succ()对应表单数据提交,lang()的实质作用死实现视图页面的刷新。里面并没有

什么逻辑,这两个方法就是实现页面跳转。转向的同时根据i18n拦截器所获取request_locale的值不同而现实不同的页面

提示信息.

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<package name="struts2language" extends="struts-default">

<action name="succ" class="action.LoginAction" method="succ">

<result name="success">/success.jsp</result>

</action>

<action name="lang" class="action.LoginAction" method="lang">

<result name="input">/index.jsp</result>

</action>

</package>

</struts>

struts.properties

struts.custom.i18n.resources=loginResource

struts.i18n.encoding =gbk

第一个参数用于指定全局资源文件的名称。第二个参数用于国际化信息内码,否则传递的过程中会出现乱码。

loginResource_en_US.properties

login.title=English Page

login.welcome=Welcome To Login!

login.userName=UserName

login.password=Password

login.success=Login success

login.submit=Submit

loginResource_zh_CN.properties

login.title=\u4E2D\u6587\u9875\u9762

login.welcome=\u6B22\u8FCE\u767B\u9646

login.userName=\u767B\u5F55\u8D26\u53F7

login.password=\u767B\u5F55\u5BC6\u7801

login.success=\u767B\u5F55\u6210\u529F

login.submit=\u786E\u8BA4\u767B\u5F55

下面是两个页面视图

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title><s:text name="login.title" ></s:text></title>

</head>

<body>

<a href="lang.action?request_locale=zh_CN">中文</a>

<a href="lang.action?request_locale=en_US">English</a>

<s:form action="succ.action" method="post">

<s:textfield name="userName" key="login.userName">

</s:textfield>

<s:textfield name="password" key="login.password">

</s:textfield>

<s:submit key="login.submit">

</s:submit>

</s:form>

</body>

</html>

success.jps

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title><s:text name="login.success"/></title>

</head>

<body>

<%=request.getAttribute("userName")%>:<s:text name="login.welcome"/>

</body>

</html>

JSP页面中语言更改链接,用户选择某种语言链接时,超级链接就会传递一个request_locale值给Action。而这个值会

自动被i18n拦截器所读取,i18n根据这个值设置新的语言环境。

时间: 2024-08-04 04:14:31

struts2实现用户自行选择语言的相关文章

struts2学习笔记之十(用户选择语言环境小程序)

struts 默认使用浏览器设置选择国家和语言,提供机制让用户选择国家语言环境 根据request_locale来确定. 如在提交请求时加上request_locale=en_US来设定语言环境为English 例如:http://localhost:8080/I18n/I18nJSP?request_locale=zh_CN 这样就会得到中文的语言环境显示JSP页面 接下来演示一个用户在JSP页面选择语言环境的小程序 web.xml配置 制作JSP页面 Action处理类 struts.xml

php获取设置用户访问页面语言类

php实现获取及设置用户访问页面语言类,可实现获取/设置用户访问的页面语言,如果用户没有设置访问语言,则读取Accept-Language. 一个php获取及设置用户访问页面语言类,具体分析:该实例User Language Class 获取/设置用户访问的页面语言,如果用户没有设置访问语言,则读取Accept-Language. 根据用户选择的语言显示对应的页面(英文,简体中文,繁体中文)UserLang.class.php类文件如下: <?php /** User Language Clas

VB.NET &amp; 策略模式(下机用户类型选择)

上篇文章讲述了对于下机操作和基本数据设定的时间联系,今天主要就是应用"策略模式"来了解了解对于固定用户,以及临时用户之间的选择,看学习设计模式的时候自己对于策略模式的理解,我们可以把固定用户和临时用户封装起来,这样系统就可以按照用户的类型来进行选择了.当然前提首先要抽象一个类,来封装这两个用户类型. 看类图: 代码具体化: 首先看抽象类:BL_CashSuper,定义两种支持算法的公共接口 ''' <summary> ''' 抽象类,定义所有支持算法的公共接口 ''' &l

书写一个程序,可以根据用户的选择,分别运算圆形、长方形、三角形的面积

#include <stdio.h> #define PI 3.14 void main(){ int num; printf("请选择您要执行的操作:1.计算圆形面积2.长方形面积3.三角形面积\n"); scanf("%d",&num); switch (num) { case 1: { double r,area; printf("请输入圆形的半径:\n"); scanf("%lf",&r);

选盘秘籍:用户如何选择SSD/SATA/SAS?

先学习下一些专业词汇 IDE (Integrated Drive Electronics) 电子集成驱动器 它的本意是指把"硬盘控制器"与"盘体"集成在一起的硬盘驱动器.把盘体与控制器集成在一起的做法减少了硬盘接口的电缆数目与长度,数据传输的可靠性得到了增强,硬盘制造起来变得更容易,因为硬盘生产厂商不需要再担心自己的硬盘是否与其它厂商生产的控制器兼容.对用户而言,硬盘安装起来也更为方便.IDE这一接口技术从诞生至今就一直在不断发展,性能也不断的提高,其拥有的价格低廉

如何自学Struts2之Struts2值栈和OGNL语言[视频]

如何自学Struts2之Struts2值栈和OGNL语言[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95

域服务器 FTP 权限设置及用户自行修改域账户密码

由于部门需要搭建一台SVN服务器,服务器使用IBM X3650,系统winsdows2008 企业版.安装系统过程中想要使用加载软盘中RAID驱动的方式来安装,无奈IBM的售后技术支持十分让人蛋疼,借过保机器各种推脱,此处省略罢..后来找到随机引导光盘,引导模式安装也是十分简单.系统顺利安装. SVN的安装过程也是波澜不惊,比较顺利. 考虑到一整台服务器就单单提供SVN的代码服务有点浪费了,就准备兼做文件服务器和FTP,因为公司没有域控,对于文件共享和FTP服务,人员账户认证登录就需要用到AD了

Struts2中使用OGNL表达式语言访问静态方法和静态属性以及我遇到的问题和解决方法

1.上一篇文章,我介绍了OGNL表达式语言,本来想在那篇文章上加上一个使用OGNL访问静态方法和静态属性的例子,但是昨天晚上我写代码时,报了一个警告,获取得到静态属性的值,却获取不到静态方法的返回值,所以今天特别的写篇文章来介绍一下. 2.这里我先附上这个例子,来了解如何使用OGNL表达式访问静态方法和属性. (1).其中访问静态方法或者静态属性的语法分别为:@类的路径@方法名,@类的路径@属性名,语法中类的路径,即包名+类名. (2).对于OGNL来说,java.lang.Math是其默认的类

基于Struts2的用户登录程序

基本步骤: 1.新建Java工程,File>New>Project>Web>Dynamic Web Project,并将工程命名为:Struts2_Demo 2.导入struts2的重要jar包到WebContent>lib下 3.新建web.xml,右击WEB-INF>New>Other>XML>XML File,并命名为web.xml 更改其内容如下: <?xml version="1.0" encoding="