- 浏览: 151237 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
hx0637:
楼主!小弟要面临面试了,能否指导下小弟?
面试 深圳一家公司的 -
kljismi:
你好,我现在正在开这项目的代码,但是我不明白@Privileg ...
权限管理模块分析 -
yzhw:
终于找到了
ImageSizer.java -
sunloveny:
国
struts国际化 -
jackotty:
谢谢楼主的分享
struts validator验证框架
1、struts国际化的配置
* 在struts-config.xml文件中加入:<message-resources parameter="MessageResources" />
2、提供不同版本的国际化资源文件,中文需要采用native2ascii转换成unicode
3、在jsp中采用<bean:message>标签来读取国际化消息文本
4、了解利用struts默认将locale放到session中的特性,完成采用编程的方式切换语言设置
* 参见:ChangeLanguageAction.java
5、消息文本的国际化处理,共有三个步骤:
* 创建国际化消息
* 传递国际化消息
* 显示国际化消息
如何创建国际化消息?
理解ActionMessage和ActionMessages两个对象的区别
如何传递国际化消息?
* 调用saveMessage()传递普通消息,调用saveErrors传递错误消息
如何显示国际化消息?
通过<html:messages>标签显示消息(可以显示普通消息和错误消息)
通过<html:errors>显示消息(只能显示错误消息)
LoginAction.java
LoginActionForm.java
UserManager.java
ChangeLanguageAction.java
UserNotFoundException.java
PasswordErrorException.java
MessageResources.properties
MessageResources_en_US.properties
MessageResources_zh_CN.properties
struts-config.xml
index.jsp
login_jstl.jsp
login.jsp
login_error.jsp
login_success.jsp
* 在struts-config.xml文件中加入:<message-resources parameter="MessageResources" />
2、提供不同版本的国际化资源文件,中文需要采用native2ascii转换成unicode
3、在jsp中采用<bean:message>标签来读取国际化消息文本
4、了解利用struts默认将locale放到session中的特性,完成采用编程的方式切换语言设置
* 参见:ChangeLanguageAction.java
5、消息文本的国际化处理,共有三个步骤:
* 创建国际化消息
* 传递国际化消息
* 显示国际化消息
如何创建国际化消息?
理解ActionMessage和ActionMessages两个对象的区别
如何传递国际化消息?
* 调用saveMessage()传递普通消息,调用saveErrors传递错误消息
如何显示国际化消息?
通过<html:messages>标签显示消息(可以显示普通消息和错误消息)
通过<html:errors>显示消息(只能显示错误消息)
LoginAction.java
package com.bjsxt.struts; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; /** * 用户登录的Action * @author Administrator * */ public class LoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LoginActionForm laf = (LoginActionForm)form; String username = laf.getUsername(); String password = laf.getPassword(); ActionMessages messages = new ActionMessages(); try { UserManager.getInstance().login(username, password); //创建国际化消息文本 ActionMessage message = new ActionMessage("user.login.success", username); //ActionMessage message = new ActionMessage("user.login.success", new Object[]{username}); messages.add("loginSuccess1", message); ActionMessage message1 = new ActionMessage("user.login.success", username); messages.add("loginSuccess2", message1); //传递国际化消息文本 this.saveMessages(request, messages); return mapping.findForward("success"); }catch(UserNotFoundException unfe) { unfe.printStackTrace(); //创建国际化消息文本 ActionMessage message = new ActionMessage("user.not.found", username); messages.add("error1", message); //传递国际化消息文本 this.saveErrors(request, messages); }catch(PasswordErrorException pee) { pee.printStackTrace(); //创建国际化消息文本 ActionMessage message = new ActionMessage("user.password.error"); messages.add("error2", message); //传递国际化消息文本 this.saveErrors(request, messages); } return mapping.findForward("error"); } }
LoginActionForm.java
package com.bjsxt.struts; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; /** * 登录的ActionForm,ActionForam是做数据收集的, * * ActionForm中的属性必须和表单中输入域的名称一致 * @author Administrator * */ public class LoginActionForm extends ActionForm { 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; } @Override public void reset(ActionMapping mapping, HttpServletRequest request) { System.out.println("----------LoginActionForm.reset()-----------"); } @Override public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { System.out.println("----------LoginActionForm.validate()-----------"); return null; } }
UserManager.java
package com.bjsxt.struts; public class UserManager { private static UserManager instance = new UserManager(); private UserManager() {} public static UserManager getInstance() { return instance; } public void login(String username, String password) { if (!"admin".equals(username)) { throw new UserNotFoundException(); } if (!"admin".equals(password)) { throw new PasswordErrorException(); } } }
ChangeLanguageAction.java
package com.bjsxt.struts; import java.util.Locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.Globals; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class ChangeLanguageAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String lang = request.getParameter("lang"); Locale currentLocale = Locale.getDefault(); if ("zh".equals(lang)) { currentLocale = new Locale("zh", "CN"); }else if("en".equals(lang)) { currentLocale = new Locale("en", "US"); } //request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale); this.setLocale(request, currentLocale); return mapping.findForward("index"); } }
UserNotFoundException.java
package com.bjsxt.struts; public class UserNotFoundException extends RuntimeException { }
PasswordErrorException.java
package com.bjsxt.struts; public class PasswordErrorException extends RuntimeException { }
MessageResources.properties
引用
# -- standard errors --
errors.header=<UL>
errors.prefix=<LI><font color="red">
errors.suffix=</font></LI>
errors.footer=</UL>
user.title=User Login
user.username=User Name
user.password=Password
user.button.login=Login
user.login.success={0},Login Success
user.not.found=User Not Found,UserName[{0}]
user.password.error=Password Error
user.login.error=Login Error
errors.header=<UL>
errors.prefix=<LI><font color="red">
errors.suffix=</font></LI>
errors.footer=</UL>
user.title=User Login
user.username=User Name
user.password=Password
user.button.login=Login
user.login.success={0},Login Success
user.not.found=User Not Found,UserName[{0}]
user.password.error=Password Error
user.login.error=Login Error
MessageResources_en_US.properties
引用
# -- standard errors --
errors.header=<UL>
errors.prefix=<LI><font color="red">
errors.suffix=</font></LI>
errors.footer=</UL>
user.title=User Login
user.username=User Name
user.password=Password
user.button.login=Login
user.login.success={0},Login Success
user.not.found=User Not Found,UserName[{0}]
user.password.error=Password Error
user.login.error=Login Error
errors.header=<UL>
errors.prefix=<LI><font color="red">
errors.suffix=</font></LI>
errors.footer=</UL>
user.title=User Login
user.username=User Name
user.password=Password
user.button.login=Login
user.login.success={0},Login Success
user.not.found=User Not Found,UserName[{0}]
user.password.error=Password Error
user.login.error=Login Error
MessageResources_zh_CN.properties
引用
# -- standard errors --
errors.header=<UL>
errors.prefix=<LI><font color="red">
errors.suffix=</font></LI>
errors.footer=</UL>
user.title=\u7528\u6237\u767b\u5f55
user.username=\u7528\u6237
user.password=\u5bc6\u7801
user.button.login=\u767b\u5f55
user.login.success={0},\u767b\u5f55\u6210\u529f
user.not.found=\u7528\u6237\u4e0d\u80fd\u627e\u5230\uff0c\u7528\u6237\u540d\u79f0=[{0}]
user.password.error=\u5bc6\u7801\u9519\u8bef
user.login.error=\u767b\u5f55\u5931\u8d25
errors.header=<UL>
errors.prefix=<LI><font color="red">
errors.suffix=</font></LI>
errors.footer=</UL>
user.title=\u7528\u6237\u767b\u5f55
user.username=\u7528\u6237
user.password=\u5bc6\u7801
user.button.login=\u767b\u5f55
user.login.success={0},\u767b\u5f55\u6210\u529f
user.not.found=\u7528\u6237\u4e0d\u80fd\u627e\u5230\uff0c\u7528\u6237\u540d\u79f0=[{0}]
user.password.error=\u5bc6\u7801\u9519\u8bef
user.login.error=\u767b\u5f55\u5931\u8d25
struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> <struts-config> <form-beans> <form-bean name="loginForm" type="com.bjsxt.struts.LoginActionForm"/> </form-beans> <action-mappings> <action path="/login" type="com.bjsxt.struts.LoginAction" name="loginForm" scope="request" validate="false" > <forward name="success" path="/login_success.jsp"/> <forward name="error" path="/login.jsp"/> </action> <action path="/changelang" type="com.bjsxt.struts.ChangeLanguageAction" > <forward name="index" path="/index.jsp"/> </action> </action-mappings> <message-resources parameter="res.MessageResources" /> </struts-config>
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <a href="login.jsp">登录</a><br> <a href="changelang.do?lang=zh">中文</a>   <a href="changelang.do?lang=en">英文</a> <p> <a href="login_jstl.jsp">登录(jstl国际化)</a> </body> </html>
login_jstl.jsp
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <fmt:setLocale value="${header['accept-language']}"/> <fmt:setBundle basename="res.MessageResources"/> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title><fmt:message key="user.title"/></title> </head> <body> <h1><fmt:message key="user.title"/></h1> <hr> <form action="login.do" method="post"> <fmt:message key="user.username"/>:<input type="text" name="username"><br> <fmt:message key="user.password"/>:<input type="password" name="password"><br> <input type="submit" value="<fmt:message key="user.button.login"/>"> </form> </body> </html>
login.jsp
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%> <%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title><bean:message key="user.title"/></title> </head> <body> <h1><bean:message key="user.title"/></h1> <hr> <!-- <font color="red"> <html:messages id="msg" property="error1"> <bean:write name="msg"/> </html:messages> </font> <font color="blue"> <html:messages id="msg" property="error2"> <bean:write name="msg"/> </html:messages> </font> --> <html:errors/> <form action="login.do" method="post"> <bean:message key="user.username"/>:<input type="text" name="username"><br> <bean:message key="user.password"/>:<input type="password" name="password"><br> <input type="submit" value="<bean:message key="user.button.login"/>"> </form> </body> </html>
login_error.jsp
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%> <%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title></title> </head> <body> <font color="red"> <li> <html:messages id="msg" property="error1"> <bean:write name="msg"/> </html:messages> </li> </font> <font color="blue"> <li> <html:messages id="msg" property="error2"> <bean:write name="msg"/> </html:messages> </li> </font> </body> </html>
login_success.jsp
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%> <%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title></title> </head> <body> <html:messages id="msg" message="true" property="loginSuccess1"> <bean:write name="msg"/> </html:messages> </body> </html>
发表评论
-
drp_user
2009-01-11 15:10 1189采用DispathAction * 如果覆写DispathA ... -
编程式异常 -声明式异常
2009-01-11 11:28 14791、编程式异常 * 截获异常 * 创建相应的异常消息 * ... -
struts validator验证框架
2009-01-07 23:35 2902struts validator验证框架 1、配置: * ... -
了解Locale
2009-01-07 23:01 12731、了解缺省Locale是由操作系统决定的,Locale是由语 ... -
actionmapping
2009-01-07 22:48 14091、struts-config.xml文件中,每个<ac ... -
ActionForward的使用
2009-01-07 22:13 41991、理解全局和局部ActionForward的概念 2、red ... -
分步收集,ActionForm的scope=session
2009-01-07 21:58 1732StartAction.java package com.b ... -
ActionForm
2009-01-07 20:06 14971、动态ActionForm 动态ActionForm是为了 ... -
DispatchAction.java
2009-01-07 19:48 1076/* * $Id: DispatchAction.java ... -
模式匹配
2009-01-07 19:41 779UserAction.java package com. ... -
jstl标签库的配置
2009-01-07 18:51 3412jstl标签库的配置 * 将jstl.jar和standar ... -
1.2.9 RequestProcessor.java
2008-12-27 17:47 1301/* * $Id: RequestProcessor.ja ... -
1.2.9 ActionServlet.java
2008-12-27 17:43 1206/* * $Id: ActionServlet.java ... -
struts_login
2008-12-27 17:32 9071、配置struts * 拷贝struts lib下的所有j ... -
struts_trainnig_cal
2008-12-26 23:17 667CalAction.java package com.bj ... -
bjsxt test_servlet
2008-12-26 22:46 1126TestServlet.java package com. ...
相关推荐
在“struts国际化(项目)”中,我们关注的是如何使应用程序支持多种语言,即国际化(Internationalization,通常缩写为i18n)。这个主题包括了资源包的创建、配置文件的设置以及在Struts中如何调用这些资源来显示...
### Struts中文问题与国际化问题——终极解决方案深度解析 #### 引言 在Web应用开发中,特别是使用Struts框架时,中文显示和国际化(Internationalization,简称i18n)问题是开发者常遇的挑战。本文将深入探讨解决...
"Struts国际化完整dome"是一个示例项目,它演示了如何在Struts应用中实现国际化功能。 1. **国际化基础** 国际化是软件开发中的一个关键概念,目的是使软件能够适应不同地区的语言和文化习惯。在Java中,主要通过`...
通过本“Struts国际化录象教程”,你将学习如何创建资源包,配置Struts以支持国际化,以及如何在JSP页面上使用这些资源。同时,教程也将涵盖如何处理用户选择的语言偏好,确保应用的多语言支持功能顺畅运行。通过...
"Struts国际化小工具"可能是一个辅助工具,帮助开发者更方便地管理这些资源束文件,进行翻译和测试。这个小工具可能具有以下功能: 1. **资源文件管理**:工具可能提供了图形用户界面(GUI),允许用户创建、编辑和...
通过这个Java Struts国际化演示项目,你可以深入理解Struts如何处理不同语言的用户请求,以及如何设计和组织资源包。实践操作将帮助你更好地掌握这一技能,从而在实际项目中为用户提供更好的多语言支持。
以下是对Struts国际化进行详细解释的知识点: 1. **i18n的基本概念**:i18n代表的是“国际化”,之所以称为i18n是因为从'i'到'n'共有18个字母。这个术语用于描述软件或Web应用的设计和实现,使其能够轻松地适应不同...
"Struts国际化处理"是指在Struts框架中实现应用程序的多语言支持。这通常涉及到以下几个关键概念和步骤: 1. **资源文件**:在Struts中,我们使用.properties文件来存储不同语言的文本资源。例如,`messages_en....
### Struts国际化的使用 #### 一、Struts框架简介 Struts是一个开源的MVC(Model-View-Controller)框架,它简化了Java Web应用的开发过程,并且支持多种功能,包括表单验证、国际化等。对于需要支持多语言的应用...
本实例“MyI18N-struts国际化实例”将指导我们如何在Struts项目中实现国际化。下面我们将深入探讨Struts的国际化实现过程、关键组件和步骤。 首先,理解“i18n”的概念,它是“Internationalization”的缩写,i18n...
### Struts国际化程序尝试 #### 一、Struts与国际化简介 Struts是一个基于MVC(Model-View-Controller)模式的开源Java Web应用框架,它可以帮助开发者构建可扩展、结构清晰的应用系统。Struts提供了丰富的功能来...
在处理Struts国际化问题时,开发者通常需要考虑以下几个关键知识点: 1. **资源文件**:在Struts中,国际化的核心是资源文件,通常命名为`Messages.properties`,它们存储了应用程序中的所有可本地化的字符串。每个...
本项目“struts国际化注册登录验证”是基于Struts实现的一个实例,涵盖了用户注册、登录及验证功能,并结合了MySQL数据库来存储用户信息。 1. **Struts框架基础** Struts是一个开源的Java框架,它基于Model-View-...
在"struts国际化例子"中,我们看到的是如何在Struts框架中实现国际化功能的一个实例。 首先,我们需要理解i18n的基本概念。"i18n"是“国际化”的缩写,这里的数字18代表单词"internationalization"中的字母数量。...
在压缩包文件`jvaee上机struts国际化`中,很可能包含了上述步骤的示例代码。这些代码可能包括了资源文件、Struts配置文件、ActionForm或Action类以及展示本地化内容的JSP页面。通过分析和运行这些示例,你可以更深入...
在这个"Struts2国际化源代码"资源中,我们可以深入理解如何在Struts2应用中实现国际化功能。 首先,国际化的核心在于资源文件,通常命名为`Messages.properties`,其中包含了应用程序中的所有可本地化的字符串。...
下面将详细介绍Struts国际化处理的配置步骤和关键知识点。 首先,我们需要了解什么是国际化和本地化。国际化(Internationalization,简称i18n,i与n之间有18个字母)是指设计一个软件或系统,使其能够适应不同的...
2009 MLDN魔乐科技 Struts课堂实战视频教程 全6讲 01-Struts_简介与登陆...02-Struts_工作原理与核心配置 03-Struts_对于输入参数的处理 04-Struts_Bean标签功能 05-Struts_Struts国际化处理 非常经典,适合初学者!
标题中的“SSH分页小例子,Struts国际化”涉及到两个主要的Java Web开发技术:Struts框架和SSH(Spring、Struts、Hibernate)集成。SSH是流行的企业级应用开发框架,其中Struts处理表现层,Spring负责业务逻辑,...