struts学习笔记二:国际化和拦截器

1,xwork校验框架分为,属性优先,校验器优先:

思路:先写上校验器,然后写属性.

写法:<validator type="requiredstring">

<param name="fieldName">username</param>

<message>username invalide</message>

</validator>

<validator type="stringlength">

<param name="fieldName">username</param>

<param name="minLength">6</param>

<param name="maxLength">10</param>

<message>username  length should be 6-10</message>

</validator>

2,ognl标签库

<s:form action="register" theme="simple">

<s:textfield name="username" label="username"></s:textfield>

<s:password name="password" label="password"></s:password>

<s:password name="repassword" label="repassword"></s:password>

<s:textfield name="age" label="age"></s:textfield>

<s:textfield name="graduation" label="graduation"></s:textfield>

<s:textfield name="birthday" label="birthday"></s:textfield>

</s:form>

不仅内置了信息输出的功能,还能保存之前输入的信息.

3,struts2如何判断输入信息出错的?

ActionSupport类中有

bool hasActionError()

bool hasFieldError()

bool hasErrors()

4,属性驱动的Action:把对象的属性写在Action中

模型驱动的Action:直接把类写在Action中,需要实现ModelDriven<T>接口

Action不是单实例的,一个请求实例化一次;serverlet是单实例的.

Preparable接口,预处理跟逻辑无关的准备工作.

5,国际化 internationalization

获得系统提供的语言种类

Locale[] locals=Locale.getAvailableLocales();

locale[i].getDisplayCountry()

locale[i].getCountry()

获取国际化相关的信息

Locale locale=Locale.US;

ResourceBundle bundle=ResourceBundle.getBundle("helloworld",locale);

bundel.getString("hello");

helloworld-en-US.properties

helloworld-zh-CN.properties

获得动态指定的信息

MessageFormat.format("hello",new Object[]{"中国"}) 输出hello:中国

getText( key,value)

原理:浏览器发送请求的时候发送了语言.

6.过滤器和拦截器原理

过滤器:实现Filter接口

拦截器:Intercepor接口,struts的核心,

init() 

String intercept(ActionInvocation invacation)

destory()

第一步:定义一个拦截器类,必须实现Interceptor接口.

invoke() 调用下一个拦截器

第二步:申明拦截器

在配置文件中申明:

<interceptors>

<interceptor name="a" class=""></interceptor>

</interceptors>

第三步:使用拦截器

在Action的result后使用

<interceptor-ref name="a"></interceptor-ref>

拦截器在服务器启动前init()

执行自己的方法,执行Action的方法

注意:引用自己的拦截器在先,然后再引用struts默认的拦截器.defaultStack

使用拦截器中的参数值:<param name="hello">world</param>

在类中增加一个属性,即可读取value.

 

实现拦截器也可继承AbstractIntercptor,重写intercept()方法即可.

多拦截器执行顺序:后进先出.

对方法的拦截器和对类的拦截器

MethodFilterInterceptor

成员excludeMethods 不拦截的方法

 

 

 

你可能感兴趣的:(struts 拦截器 国际化)