zoukankan      html  css  js  c++  java
  • 基于Struts2框架实现登录案例 之 程序国际化

    国际化牵涉的知识非常多,这里只能简单的介绍,程序国际化的一般做法是:在jsp页面时,

    不是直接输出信息,而是输出一个key值,该key值在不同语言环境下找到对应资源文件下的

    对应信息,因此首先要创建满足不同国家或地域用户的资源文件。

    1) 创建国际化资源文件
      资源文件的命名规则:basename_语言代码_国家代码.properties,文件中包含一些键值对。
      A、语言代码_国家代码:zh_CN、en_US等。
      B、国际资源文件放在classes文件夹下。

      MessageResource_zh_CN.properties

      

       MessageResource_en_US.properties

      


    2)加载资源文件
      Struts2提供非常多的加载国际化资源文件的方式,但最为常用的是加载全局的资源文件,具体方法如下:
      A、配置struts.xml文件,添加一个struts.custom.i18n.resources常量。 形如:
        <constant name="struts.custom.i18n.resources" value="资源文件basename"></constant>
      B、创建struts.properties文件,添加一个struts.custom.i18n.resources常量。形如:
        struts.custom.i18n.resources=资源文件basename

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4     "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 
     6 <struts>
     7     <constant name="struts.custom.i18n.resources" value="MessageResource"></constant>    
     8     <package name="mypack" extends="struts-default">
     9         <action name="first">
    10             <result>first.jsp</result>
    11         </action>
    12     </package>
    13 
    14     <!-- Action必须放在指定的包空间中 -->
    15     <package name="struts2" extends="struts-default">
    16         <!-- 定义login的action,其实现类为com.mhb.action.LoginAction -->
    17         <action name="userlogin" class="com.mhb.action.LoginAction2">
    18             <!-- 定义处理结果与视图资源之间的关系 -->
    19             <result name="success">/login_success.jsp</result>
    20             <result name="failure">/login_failure.jsp</result>
    21             <result name="input">/login2.jsp</result>
    22         </action>
    23     </package>
    24 </struts>

    3)应用国际资源文件
      A、输出国际化信息:<s:text name="messageKey">
      B、表单标签国际化:通过指定key属性,即在表单中加:key="messageKey"
      C、校验信息国际化:在基于硬编码方式下,通过getText()方法指定key来获得国际化校验信息提示;

        基于验证框架下用message标签中的key属性来实现。形式为

        在没开启客户端验证情况下:<message key="messageKey"></message>
        在开启客户端验证情况下: <message >${getText("username.required")}</message>

     1 <%@ page language="java" pageEncoding="utf-8"%>
     2 <%@ taglib prefix="s" uri="/struts-tags" %>
     3 
     4 <html>
     5     <body>
     6         <center>
     7         <h3><s:text name="login.title"></s:text></h3>
     8             <%-- 登录表单,提交到login.action --%>
     9             <s:form action="userlogin">
    10                 <%--用户名输入框--%>
    11                 <s:textfield name="username" key="login.username"></s:textfield>
    12                 <%--用户密码输入框--%>
    13                 <s:password name="userpwd" key="login.userpwd"></s:password>
    14                 <%--登录按钮--%>
    15                 <s:submit key="login.submit"></s:submit>
    16                 <%--重置按钮--%>
    17                 <s:reset key="login.reset"></s:reset>
    18             </s:form>
    19         </center>
    20     </body>
    21 </html>

    浏览器效果,调整语言的先后顺序,依次设定显示中文和英文。

      A:IE属性--常规--语言--〉中文:显示中文信息

      

      

      B:IE属性--常规--英语(美国)--〉显示英文信息  

      

      

  • 相关阅读:
    linux安装lamp/lamp/lanmp
    git命令
    redis常问面试题
    liunx 项目发布(django + uwsgi + nginx+supervisor发布web服务器)
    安装nginx
    liunx安装mysql(mariadb)
    linux安装python3
    scrapy框架day01
    网络编程, socket用法
    面向对象进阶
  • 原文地址:https://www.cnblogs.com/tdcqma/p/4807680.html
Copyright © 2011-2022 走看看