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 不拦截的方法