程序人生的专栏

我为代码疯狂

Struts2总结1

1----    Struts 2下的控制器不再像Struts 1下的控制器,需要继承一个Action父类,甚至可以无需实现任何接口,Struts 2的控制器就是一个普通的POJO实际上,Struts 2Action就是一个包含execute方法的普通Java类,该类里包含的多个属性用于封装用户的请求参数。

2---   //通过ActionContext对象访问Web应用的Session

             ActionContext.getContext().getSession().put("user" , getUsername());

上面通过ActionContext设置了一个Session属性:user。的JSP页面中就可以通过${sessionScope.user}来访问这个user。同理,在action中可以通过如下来得到user。

                 //获取Session中的user属性

3--- 实际项目中不会在控制器中直接创建业务逻辑组件的实例,而是通过工厂模式管理业务逻辑组件实例,或者通过依赖注入将业务逻辑组件实例注入控制器组件。

4----  程序国际化的设计思想是非常简单的,其主要思想是:程序界面中需要输出国际化信息的地方,我们不要在页面中直接输出信息,而是输出一个key值,该key值在不同语言环境下对应不同的字符串。当程序需要显示时,程序将根据不同的语言环境,加载该key对应该语言环境下的字符串——这样就可以完成程序的国际化。

5---  ActionSupport类是一个工具类,它已经实现了Action接口。除此之外,它还实现了Validateable接口,提供了数据校验功能。通过继承该ActionSupport类,可以简化Struts 2Action开发。

     Validatable接口中定义了一个validate()方法,重写该方法,如果校验表单输入域出现错误,则将错误添加到ActionSupport类的fieldErrors域中,然后通过OGNL表达式负责输出。

     ActionSupport增加了让提示信息国际化的能力,ActionSupport提供的getText方法可以根据资源文件加载获得国际化提示信息。

6---  类似于Struts 1Struts 2也允许通过定义配置文件来完成数据校验。Struts 2的校验框架实际上是基于XWorkvalidator框架。

下面还是使用原来的Action类(即重写validate方法),却增加一个校验配置文件,校验配置文件通过使用Struts 2已有的校验器,完成对表单域的校验。Struts 2提供了大量的数据校验器,包括表单域校验器和非表单域校验器两种。

 

本应用主要使用了requiredstring校验器,该校验器是一个必填校验器——指定某个表单域必须输入。

下面是校验规则的定义文件:

<?xml version="1.0" encoding="GBK"?>

<!-- 指定校验规则文件的DTD信息 -->

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator

                                 1.0.2//EN"

                                 "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<!--
校验规则定义文件的根元素 -->

<validators>

                                 <!-- 校验第一个表单域:username -->

                                 <field name="username">

                                    <!-- 该表单域必须填写 -->

                                  <field-validator type="requiredstring">

                                        <!-- 如果校验失败,显示user.required对应的信息 -->

                                   <message key="user.required"/>

                                  </field-validator>

                                  </field>

                                 <!-- 校验第二个表单域:password -->

                                  <field name="password">

                                  <field-validator type="requiredstring">

                                        <!-- 如果校验失败,显示pass.required对应的信息 -->

                                   <message key="pass.required"/>

                                  </field-validator>

                                  </field>

</validators>

定义完该校验规则文件后,该文件的命名应该遵守如下规则:

ActionName-validation.xml:其中ActionName就是需要校验的Action的类名。

因此上面的校验规则文件应该命名为“LoginAction-validation.xml”,且该文件应该与Action类的class文件位于同一个路径下。因此,将上面的校验规则文件放在WEB-INF/classes/lee路径下即可。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭