日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Strusts2笔记7--国际化

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Strusts2笔记7--国际化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

國際化:

  國際化是指,使程序在不做任何修改的情況下,就可以使用在不同的語言環境中。國際化在一般性項目中是不常用的。在編程中簡稱 i18n。

  國際化是通過讀取資源文件的形式實現的。資源文件的定義與注冊,主要分為全局范圍的、包范圍的、Action范圍的,下面分別介紹:

  (1)全局范圍的:

    全局資源文件是指,整個應用中所有文件均可訪問的資源文件,其命名要遵循的格式:baseName-language_country.properties

    其中baseName是資源文件的基本名,可以自定義。但language和country必須是Java支持的語言和國家的簡稱。例如:myBaseName_en_US.properties

  (2)包范圍的:

    可以針對不同模塊、不同的action來組織國際化文件

    再要使用該資源文件的java包下,放置以下格式的資源文件:package_language_country.properties。其中,package為固定寫法。例如:package_en_US.properties

  (3)Action范圍的:

    可以單獨為某個action指定資源文件,只需在Action類所在的包中放置以下格式的資源文件:ActionClassName_language_country.properties。其中ActionClassName是action類的簡單名稱。例如:LoginAction_en_US.properties

  綜述:對于前端的某個值來說,如果未指定讀取哪一個范圍的資源文件,則加載資源文件的順序是Action范圍-->包范圍-->全局范圍

  下圖是資源文件的放置示意圖:

  

  國際化的代碼:

    (1)資源文件的配置(分別是myBaseName_en_US.properties和myBaseName_zh_CN.properties):

    

    

    解釋:其中的占位符 {0} 是為了實現,為資源文件的動態參數賦值

    (2)Action類的代碼:

package com.tongji.actions;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport{private static final long serialVersionUID = -7398591714651064707L;private String username;private int age;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String execute() {String msg = this.getText("action.out.msg");System.out.println(msg);String[] args = {username};  String msg2 = this.getText("action.out.msg2",args);System.out.println(msg2);return "success";}
}

    解釋:ActionSupport中的getText方法,是在Action內加載資源文件,第二種實現方式加入了動態參數。

    (3)前端頁面代碼:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%><html><head><title>index page</title></head><body><a href="test/language.action?request_locale=zh_CN">中文</a><a href="test/language.action?request_locale=en_US">English</a><br><br><s:i18n name="com/tongji/actions/LoginAction"><s:text name="index.form.title" /><br> <!-- 讀取Action范圍資源文件 --></s:i18n><s:i18n name="com/tongji/package"> <!-- 讀取包范圍資源文件 --><s:form action="test/login.action" method="POST"><s:textfield name="username" key="index.form.uname"/><s:textfield name="age" key="index.form.uage"/><s:submit key="index.form.submit"/></s:form></s:i18n></body>
</html>

    解釋:對于前端的某個值來說,如果未指定讀取哪一個范圍的資源文件,則加載資源文件的順序是Action范圍-->包范圍-->全局范圍;但是,這里指定了讀取指定范圍的資源文件。

    (4)struts.xml代碼:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd">
<struts><constant name="struts.custom.i18n.resources" value="myBaseName"/><package name="demo" namespace="/test" extends="struts-default"><action name="language"><result>/index.jsp</result></action><action name="login" class="com.tongji.actions.LoginAction"><result>/welcome.jsp</result></action></package>
</struts>

    解釋:第一次加載頁面,頁面就加載了全局資源文件(如果未指定讀取包范圍或Action范圍的資源文件),這個資源文件的類型(zh_CN,還是en_US,還是其他)由瀏覽器默認指定的

       只有在執行Action時才會自動加載包范圍的或Action范圍的資源文件。因此,如果想在Action未執行前,改變加載的資源文件類型,可以這樣做:

    前端:<a href="test/language.action?request_locale=zh_CN">中文</a>

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

    struts.xml配置:<action name="language">

              <result>/index.jsp</result>

            </action>

    目的:是為了讓i18n攔截器起作用,改變其中的request_locale值,從而改變加載的資源文件類型。一旦,request_locale值改變,接下來的Action加載的包范圍的或Action范圍的資源文件都會遵從這個類型

轉載于:https://www.cnblogs.com/qjjazry/p/6241516.html

總結

以上是生活随笔為你收集整理的Strusts2笔记7--国际化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。