jacksun1978

导航

 

1、修改web.xml

要在web应用中使用Struts2框架,首先修改web.xml,在web.xml中加入:

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

将所有的请求(/*),都映射到struts2过滤器中进行处理。

2、增加struts.xml

struts.xml文件放置在/WEB-INF/classes文件夹根目录中,具体配置参见struts.xml详解。

 

3、增加处理类

根据struts.xml中的配置,增加Action处理类。。Action类可以不继承任何其他的类和实现其他的接口,只要是一个具有public String execute()方法的POJO类即可。

 

4、使用UI标签

标签库是Struts2的一个重要组件。

 

5、完成国际化

    5.1 定义国际化资源文件

    编写.properties文件,对于包含非西欧字符的资源文件,一定要使用native2ascii命令来处理,否则看到的是一堆乱码。

    5.2 加载资源文件

    在struts.properties文件中,增加:

    struts.custom.i18n.resources=messageResource,表明资源文件的baseName是messageResource,放置在/WEB-INF/classes目录下。如果struts.custom.i18n.resources=source.messageResource,表明资源文件的baseName是messageResource,放置在/WEB-INF/classes/source目录下

 

6、增加数据校验

6.1 通过集成ActionSupport

ActionSupport类是一个工具类,已经实现了Action接口,还实现了Validateable接口,通过重写validate方法,如果校验表单的输入域存在错误,则将错误添加到ActionSupport类的fieldErrors域中。

public void validate() {
    if(this.getUsername()==null||this.getUsername().trim().equals("")){
        this.addFieldError(username, "用户名不能为空");
    }
    if(this.getPassword()==null || this.getPassword().trim().equals("")){
        this.addFieldError(password, "密码不能为空");
    }
}

validate方法会在execute方法执行之前执行,如果执行该方法以后,存在校验错误,请求会被转发到input逻辑视图处。

所以必须在struts.xml中配置action时指定<result name=”input”>/input.jsp</result>.

struts2的<s:form>标签默认提供了输入校验错误的能力,所以如果存在校验错误,会自动在页面上显示。

 

为了使用国际化,不能把校验提示信息以硬编码的方式写死,而是调用getText(key)的方法,来提取错误提示信息。

 

6.2使用struts2 的校验框架

  增加一个校验配置文件,文件名命名规则:<ActionClassName>-validation.xml,将该文件与action文件放置在同一个文件夹下。

如果对一个Action中的多个方法进行校验,校验文件的命名规则为:<ActionClassName>-别名-validation.xml

Struts2的验证框架为了使验证信息通用,指定了较为复杂的验证继承关系,当验证框架需要验证一个Action的时候,会按照以下的优先级收集验证信息:

父类-validation.xml

父类-别名-validation.xml

接口-validation.xml

接口-别名-validation.xml

Action类名-validation.xml

Action类名-别名-validation.xml

别名其实对应的就是<action>元素的method属性的值,因此,虽然看着很多,其实我们只需要记住基本的顺序是:父类 > 接口 > Action类 就可以了。

 

注意:要使用Struts2的校验框架,需要Action继承ActionSupport

posted on 2012-06-28 17:36  jacksun1978  阅读(352)  评论(0编辑  收藏  举报