- 浏览: 148014 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
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 1159采用DispathAction * 如果覆写DispathA ... -
编程式异常 -声明式异常
2009-01-11 11:28 14531、编程式异常 * 截获异常 * 创建相应的异常消息 * ... -
struts validator验证框架
2009-01-07 23:35 2876struts validator验证框架 1、配置: * ... -
了解Locale
2009-01-07 23:01 12371、了解缺省Locale是由操作系统决定的,Locale是由语 ... -
actionmapping
2009-01-07 22:48 13871、struts-config.xml文件中,每个<ac ... -
ActionForward的使用
2009-01-07 22:13 41691、理解全局和局部ActionForward的概念 2、red ... -
分步收集,ActionForm的scope=session
2009-01-07 21:58 1697StartAction.java package com.b ... -
ActionForm
2009-01-07 20:06 14721、动态ActionForm 动态ActionForm是为了 ... -
DispatchAction.java
2009-01-07 19:48 1058/* * $Id: DispatchAction.java ... -
模式匹配
2009-01-07 19:41 744UserAction.java package com. ... -
jstl标签库的配置
2009-01-07 18:51 3379jstl标签库的配置 * 将jstl.jar和standar ... -
1.2.9 RequestProcessor.java
2008-12-27 17:47 1281/* * $Id: RequestProcessor.ja ... -
1.2.9 ActionServlet.java
2008-12-27 17:43 1181/* * $Id: ActionServlet.java ... -
struts_login
2008-12-27 17:32 8911、配置struts * 拷贝struts lib下的所有j ... -
struts_trainnig_cal
2008-12-26 23:17 643CalAction.java package com.bj ... -
bjsxt test_servlet
2008-12-26 22:46 1100TestServlet.java package com. ...
相关推荐
struts国际化struts国际化struts国际化
经典的struts中文问题,国际化问题终极解决方案
struts国际化的使用struts国际化的使用 struts国际化的使用struts国际化的使用 struts国际化的使用struts国际化的使用
使用时请添加库struts文件 使用时请添加库文件使用时请添加库文件使用时请添加库文件
struts国际化的问题struts国际化的问题struts国际化的问题struts国际化的问题
Struts国际化例子,完整版可运行。 Struts国际化例子,完整版可运行。
struts国际化小工具,和大家共享,希望对学习struts国际化的朋友有所帮助。
struts国际化功能,在ssh框架技术的网页中实现国家化功能,可以切换网站的语言
java struts国际化演示 国际化的源码 供大家学习用!
struts国际化程序尝试
Struts国际化录象教程
009MLDN魔乐科技Struts课堂05-Struts_Struts国际化处理.
Struts国际化(定义资源)
2009 MLDN魔乐科技 Struts课堂实战视频教程 全6讲 01-Struts_简介与登陆...02-Struts_工作原理与核心配置 03-Struts_对于输入参数的处理 04-Struts_Bean标签功能 05-Struts_Struts国际化处理 非常经典,适合初学者!
一个小的Struts国际化完整dome!
MyI18N-struts国际化实例
struts国际化在eclipse里需要的插件, 解压文件后,把文件夹复制到eclipse根目录下,把文件复制到 ..\eclipse\links文件夹重新启动eclipse就OK了.
(Struts国际化方式)【图解】.....很实用的
struts国际化例子,是jbuilder9上做的,所以大家要运行到eclipse上要把代码考过去就行了。
第六章JAVA框架_STRUTS国际化与连接池_实验指导书.doc第六章JAVA框架_STRUTS国际化与连接池_实验指导书.doc