struts2基础学习收录重点之OGNL动态配置result , 使用注解配置action,实现java国际化

 rdirect结果类型和dispatcher结果类型的区别
testSuccess.jsp而dispatcher是导向到test.action
如果用户再单机刷新按钮。
redirect结果类型,仍然是testSuccess.jsp,用户提交的信息不会被再次请求。
如果是test.action,用户先前提交的信息将会再次提交,就会出现重复提交表单信息。



用户注册或则在线调查,当用户在提交注册或者调查信息时,服务器将导向到成功页面。
 

使用OGNL动态配置result (动态配置结果映射)

使用通配符动态配置result时,元素值为{1}.jsp,这是根据URL参数来匹配的。如果根据action
中的属性名称进行动态配置,那么就需要使用ORGL表达式。
实例:
·ORGLTest.jsp
·ORGLTest.jsp
·struts.xml
·xiaoxue.jsp


使用注解配置action


与action配置相关的注解
在struts2核心包org.apche.struts2.config包中,struts2框架定义了一些与action配置相关的注解类型,
这些注解类型如下:
·ParentPackage注解,用于指定action所在的包要继承的父包。
参数 value 数据类型 String 不可选 无默认值     指定要继承的父类

例如:
使用ParentPackage主角额,其value值为defult-struts,表示所在的action需要继承default-struts
包:@ParentPackage(value="default-struts")


·Namespace注解,用于指定action所属于的命名空间
参数 value 数据类型 String 不可选 无默认值     指定action所属的命名空间
例如:
使用Namespace注解,其value值为/myspace,表示action属于myspace命名空间:
@Namespace("/myapace")


·Result注解
Result注解,用于定义一个Result映射
Name String 可选 默认值为Action.SUCCESS     指定result的逻辑名,即结果代码
value String 不可选 无默认值             指定result对应资源的URL
type Class 可选 默认值为NULLResult.class     指定result的类型
Param String[] 可选 默认值为{}            为result传递参数,格式为{key1,value1,key2,value2}英文逗号
使用Result注解,定义返回结果的逻辑名字为register,对应的结果资源URL为/register.jsp;
param参数使用默认值,即{},表示返回结果不带参数;type参数值为默认结果类型:
packageaction;
@Result(name="register",value="/register.jsp",param={},type=ServletDispatcherResult.class)
public class Register{
    public String execute(){

        return SUCCESS;
    }
}

·Results注解 用于定义一组Result映射。
参数 value 数据类型Result[] 不可选 无默认值     为action定义一组Result映射
package action;
@Results({
    @Result(name="login",value="/login.jsp"),
    @Result(name="register",value="/register.jsp",type=ServletDispatcherResult.class)

})
public class Register{
    public String execute(){
        
        return SUCCESS;
    }
}

使用注解的注意事项

(1)在web.xml中配置FilterDispatcher过滤器,为该过滤器设置actionPackages参数,该参数指定
包含了action类的包的列表。

    actionPackage
    com.qdu.libin.struts2.action

(2)与action配置相关的4个注解都只能应用在类的级别上
(3)如果需要继承struts-default包,则不需要使用ParentPackage注解
    struts2框架可以自动实现对struts-default包的继承。


JAVA国际化

java对国际化的支持
使用java进行国际化时,主要使用如下3个类完成:
java.util.Locale 对应一个特定的区域和语言环境
Locale类主要用来构建本地化应用,该类主要包含对地理区域的区域性特征的封装。Locale类提供类一些
常量,可以使用这些语言环境创建Locale对象。例如,为中国应用环境创建一个Locale 对象:
Locale.CN
·java.util.ResourseBundle    用于加载一个资源包。
Locale locale = new Locale("zh","CN","WIN");
ResourceBundle myResource= ResourceBundle.getBundle("Resources",locale);
·java.text.MessageFormat    用于将信息格式化


使用资源文件来实现java国际化
Locale类里的getDefault()方法,获取默认的本地信息
getBundle()方法    获得locale对象的资源包信息


创建资源文件的方式:
在jdk的安装目录下,找到bin文件夹,有一个native2ascii.exe文件(创建工具)
在bin文件夹中创建记事本文件
temp.txt
内容:
userName=姓名
userPassword=密码
在命令提示窗口中,首先进入到jdk的bin目录下
执行:
native2ascii temp.txt MassagesResources_zh_CN.properties
表示使用native2ascii工具将temp.txt文件转换为MassagesResources_zh_CN.properties文件


使用资源类文件实现国际化


MessageFormat类
如果资源文件中包含动态内容,那么动态内容需要使用占位符表示,而加载资源时,必须使用MessageFormat
类,该类中有一个静态方法format(),调用方式如下:
MessageFormat.format(String pattern,Object values,...)
其中,参数pattern是包含有占位符的字符串,后面的多个参数,将以此填充pattern所代表的字符串的
占位符。
实例:
·MessageFormat_zh_CN.properties
·MessageFormat_en_US.properties
·MessageFormatThree.java










你可能感兴趣的:(Struts2)