知识大全 struts标签+jstl标签之国际化实例

Posted 消息

篇首语:知识是珍贵宝石的结晶,文化是宝石放出的光泽。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 struts标签+jstl标签之国际化实例相关的知识,希望对你有一定的参考价值。

  Struts提供了国际化的功能 对于一个面向各国的系统来说 是非常有帮助的 只需要提供每个国家的语言资源包 配置后即可使用

  下面来用一个登录实例来演示一下Struts的国际化配置和显示

  创建一个login_i n_exception的javaweb项目 引入Struts的所有jar包以及jstl jar和standard jar 登录界面无非就是输入用户名 密码 所以ActionForm中只需要设置 个属性即可

  [java]

  package bjpowernode struts;

  import apache struts action ActionForm;

  /**

  * 登录ActionForm 负责收集表单数据

  * 表单的数据必须和ActionForm的get set一致

  * @author Longxuan

  *

  */

  @SuppressWarnings( serial )

  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;

  

  

  登录时会验证密码是否正确 需要提供异常处理 本实例显示 个异常 用户名未找到 密码错误

  [java]

  package bjpowernode struts;

  /**

  * 密码错误异常

  * @author Longxuan

  *

  */

  @SuppressWarnings( serial )

  public class PasswordErrorException extends RuntimeException

  public PasswordErrorException()

  // TODO Auto generated constructor stub

  

  public PasswordErrorException(String message)

  super(message)

  // TODO Auto generated constructor stub

  

  public PasswordErrorException(Throwable cause)

  super(cause)

  // TODO Auto generated constructor stub

  

  public PasswordErrorException(String message Throwable cause)

  super(message cause)

  // TODO Auto generated constructor stub

  

  public PasswordErrorException(String message Throwable cause

  boolean enableSuppression boolean writableStackTrace)

  super(message cause enableSuppression writableStackTrace)

  // TODO Auto generated constructor stub

  

  

  package bjpowernode struts;

  /**

  * 用户未找到异常

  * @author Longxuan

  *

  */

  @SuppressWarnings( serial )

  public class UserNotFoundException extends RuntimeException

  public UserNotFoundException()

  // TODO Auto generated constructor stub

  

  public UserNotFoundException(String message)

  super(message)

  // TODO Auto generated constructor stub

  

  public UserNotFoundException(Throwable cause)

  super(cause)

  // TODO Auto generated constructor stub

  

  public UserNotFoundException(String message Throwable cause)

  super(message cause)

  // TODO Auto generated constructor stub

  

  public UserNotFoundException(String message Throwable cause

  boolean enableSuppression boolean writableStackTrace)

  super(message cause enableSuppression writableStackTrace)

  // TODO Auto generated constructor stub

  

  

  提供用户管理类 处理用户的相关操作 这里主要处理用户登录

  [java]

  package bjpowernode struts;

  /**

  * 用户管理类

  * @author Longxuan

  *

  */

  public class UserManager

  /**

  * 简单处理登录逻辑

  * @param username  用户名

  * @param password  密码

  */

  public void login(String username String password)

  if(! admin equals(username))

  throw new UserNotFoundException()

  

  if(! admin equals(password))

  throw new PasswordErrorException()

  

  

  

  现在写LoginAction的处理

  [java]

  package bjpowernode struts;

  import javax servlet HttpServletRequest;

  import javax servlet HttpServletResponse;

  import apache struts action Action;

  import apache struts action ActionForm;

  import apache struts action ActionForward;

  import apache struts action ActionMapping;

  import apache struts action ActionMessage;

  import apache struts action ActionMessages;

  /**

  * 登录Action 负责取得表单数据 调用业务逻辑 返回转向信息

  *

  * @author Longxuan

  *

  */

  public class LoginAction extends Action

  @Override

  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()

  UserManager userManager = new UserManager()

  ActionMessages messages = new ActionMessages()

  try

  //用户登录

  userManager login(username password)

  //获取登录成功的国际化消息

  ActionMessage success= new ActionMessage( login success username)

  messages add( login_success_ success)

  //传递消息

  this saveMessages(request messages)

  return mapping findForward( success )

   catch (UserNotFoundException e)

  e printStackTrace()

  //获取登录成功的国际化消息

  ActionMessage error = new ActionMessage( login user not found username)

  messages add( login_error_ error)

  //传递消息

  this saveErrors(request messages)

   catch (PasswordErrorException e)

  e printStackTrace()

  //获取登录成功的国际化消息

  ActionMessage error = new ActionMessage( login user password error )

  messages add( login_error_ error)

  //传递消息

  this saveErrors(request messages)

  

  return mapping findForward( error )

  

  

  来一个手动切换语言的类 方便演示

  [java]

  package bjpowernode struts;

  import java util Locale;

  import javax servlet HttpServletRequest;

  import javax servlet HttpServletResponse;

  import apache struts action Action;

  import apache struts action ActionForm;

  import apache struts action ActionForward;

  import apache struts action ActionMapping;

  /**

  * 完成语言的手动切换

  * @author Longxuan

  *

  */

  public class ChangeLanguageAction extends Action

  @Override

  public ActionForward execute(ActionMapping mapping ActionForm form

  HttpServletRequest request HttpServletResponse response)

  throws Exception

  //获取语言

  String lang = request getParameter( lang )

  String[] split = lang split( )

  //设置语言

  Locale locale = new Locale(split[ ] split[ ])

  this setLocale(request locale)

  return mapping findForward( login )

  

  

  新建国际化信息文件 创建resource包 创建 英文语言包MessageBundle_en_US properties 中文语言包MessageBundle_zh_CN properties 默认语言包MessageBundle properties 这 个语言包 具体内容如下

  英文语言包和默认语言包设置成一样的

  [java]

  # standard errors

  errors header=<UL>

  errors prefix=<font color= red ><LI>

  errors suffix=</LI></font>

  errors footer=</UL>

  login form field username=User Name

  login form field password=Password

  login form button login=Login

  login success= Login Succedd!!

  login user not found=Use cant be found! Username=[ ]

  login user password error=Password  Error!

  中文语言包

  [java]

  # standard errors

  errors header=<UL>

  errors prefix=<font color= red ><LI>

  errors suffix=</LI></font>

  errors footer=</UL>

  login form field username=\\u \\u \\u D

  login form field password=\\u BC \\u

  login form button login=\\u B\\u F

  login success= \\uFF C\\u B\\u F \\u \\u F\\uFF

  login user not found=\\u \\u \\u A\\u E\\u \\uFF C\\u \\u \\u D\\uFF A\\u \\u

  login user password error=\\u BC \\u \\u \\u BEF

  把login jsp源码也贴出来

  []

  <%@ page language= java contentType= text/; charset=GB

  pageEncoding= GB %>

  <%@ taglib uri= /tags bean prefix= bean %>

  <%@ taglib uri= /tags prefix= %>

  <%@ taglib uri= /jsp/jstl/fmt prefix= fmt %>

  <! $sessionScope[ apache struts action LOCALE ]可以获取到当前设置的语言 >

  <fmt:setLocale value= $sessionScope[ apache struts action LOCALE ] />

  <fmt:setBundle basename= resource MessageBundle />

  <>

  <head>

  <meta equiv= Content Type content= text/; charset=GB >

  <title>Struts登录</title>

  </head>

  <body>

  <a >中文登录</a>|

  <% <a >English Login</a><br>

  <:link action= changelang do?lang=zh cn >中文登录</:link>| %>

  <:link action= changelang do?lang=en us >English Login</:link>

  <hr>

  <:errors />

  <hr>

  <h >

  struts标签读取国际化文件

  </h >

  <form action= login do method= post >

  <bean:message key= login form field username />

  :

  <input type= text name= username />

  <br />

  <bean:message key= login form field password />

  :

  <input type= text name= password />

  <br />

  <input type= submit

  value= <bean:message key= login form button login /> />

  </form>

  <hr>

  <h >

  jstl读取国际化文件

  </h >

  <form action= login do method= post >

  <fmt:message key= login form field username />

  :

  <input type= text name= username />

  <br />

  <fmt:message key= login form field password />

  :

  <input type= text name= password />

  <br />

  <input type= submit

  value= <fmt:message key= login form button login /> />

  </form>

  </body>

  </>

  login_success jsp:

  []

  <%@ page language= java contentType= text/; charset=GB

  pageEncoding= GB %>

  <%@ taglib uri= /tags prefix= %>

  <%@ taglib uri= /tags bean prefix= bean %>

  <!DOCTYPE PUBLIC //W C//DTD HTML Transitional//EN /TR/ /loose dtd >

  <>

  <head>

  <meta equiv= Content Type content= text/; charset=GB >

  <title>Insert title here</title>

  </head>

  <body>

  <! message 属性设置为true 则读取message中的消息 false 则读取error中的消息 saveMessages/saveErrors >

  <:messages id= msg message= true >

  <bean:write name= msg />

  </:messages>

  </body>

  </>

  最后的最后 在web xml中配置一下struts:

  []

  <?xml version= encoding= UTF ?>

  <web app version=

  xmlns= /xml/ns/j ee

  xmlns:xsi= / /XMLSchema instance

  xsi:schemaLocation= /xml/ns/j ee

  /xml/ns/j ee/web app_ _ xsd >

  <wele file list>

  <wele file>login jsp</wele file>

  </wele file list>

  <servlet>

  <servlet name>action</servlet name>

  <servlet class> apache struts action ActionServlet</servlet class>

  <init param>

  <param name>config</param name>

  <param value>/WEB INF/struts config xml</param value>

  </init param>

  <init param>

  <param name>debug</param name>

  <param value> </param value>

  </init param>

  <init param>

  <param name>detail</param name>

  <param value> </param value>

  </init param>

  <load on startup> </load on startup>

  </servlet>

  <! Standard Action Servlet Mapping >

  <servlet mapping>

  <servlet name>action</servlet name>

  <url pattern>* do</url pattern>

  </servlet mapping>

  </web app>

  在Struts config xml中配置action actionform等信息

  []

  <?xml version= encoding= ISO ?>

  <!DOCTYPE struts config PUBLIC

   //Apache Sofare Foundation//DTD Struts Configuration //EN

   /struts/dtds/struts config_ _ dtd >

  <struts config>

  <form beans>

  <form bean name= loginForm type= bjpowernode struts LoginActionForm ></form bean>

  </form beans>

  <action mappings>

  <action path= /login

  type= bjpowernode struts LoginAction

  name= loginForm

  scope= request >

  <forward name= success path= /login_success jsp ></forward>

  <! <forward name= error path= /login_error jsp ></forward> >

  <forward name= error path= /login jsp ></forward>

  </action>

  <action path= /changelang

  type= bjpowernode struts ChangeLanguageAction

  >

  <forward name= login path= /login jsp redirect= true ></forward>

  </action>

  </action mappings>

  <message resources parameter= resource MessageBundle ></message resources>

cha138/Article/program/Java/ky/201311/27934

相关参考

知识大全 再论El和JSTL标签

Taglib原理和实现:再论El和JSTL标签  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  问

知识大全 struts标签使用举例--logic篇

 logic:empty  该标签是用来判断是否为空的如果为空该标签体中嵌入的内容就会被处理该标签用于以下情况  )当Java对象为null时  )当String对象为时  )当javaut

知识大全 Struts自定义标签的过程

Struts自定义标签的过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  近日体验了一下Ecl

知识大全 Struts Logic标签汇总与说明

StrutsLogic标签汇总与说明  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts

知识大全 struts2标签取值方式

   标签取值方式一      通过<s:propertyvalue=/>取值 &nbs

知识大全 Struts自定义标签--使用表格显示数据

Struts自定义标签--使用表格显示数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  app

知识大全 使用 Struts 提供的 HTML 标签库

使用Struts提供的HTML标签库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在本文系列的

知识大全 在Struts中使用displaytag标签的排序

在Struts中使用displaytag标签的排序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 常用Struts HTML标签库汇总

常用StrutsHTML标签库汇总  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  <:fo

知识大全 Struts Gossip: 其它 Html 标签参考

StrutsGossip:其它Html标签参考  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &