天天看点

Struts2框架基础篇

首先,要了解struts2框架中参数传递的大体流程:

服务器端的web容器收到用户的请求(url)——struts2的核心控制器filterdispatcher接受用户发起的请求,然后判断这个请求是交给action还是交给web组件来处理;如果请求的action或web组件不存在,就会报错404。在整个处理过程中,需要一个辅助对象: actionmapper ,它会确定调用哪个action——相应的action会根据struts.xml的配置信息(首先执行拦截此action的所有拦截器,然后再执行请求的action对象;在这个处理过程中需要辅助对象:action代理类actionproxy)配置管理器(configurationmanager)——action执行完毕之后,返回一个结果(此结果用字符串来表示),这个结果经过拦截action的所有拦截器之后,返回给主控制器。主控制器根据此结果从配置文件中找到真正的路径,然后将请求转发给相应的视图。视图根据持久层作出相应的反应。整个参数传递的流程就结束了。

其次,导入struts所需的jar文件。

struts2要使用一些jar包文件,开发业务需求不一样,所需的包配置也不一样,以下这些包是最基本的,(一般情况下这些包也够用了),所需包的放置位置是\webroot\web-inf\lib:

Struts2框架基础篇

其中

struts-core-2.jar 是struts 2 框架的核心类库

  xwork-core.jar 是xwork类库,struts 2 在其上构建

  ognl.jar 是 object graph navigation language , struts 2 框架通过其读写对象的属性。

  freemarker.jar 是struts 2 的ui标签的模版使用 freemarker编写。

  commons-logging.jar 是asf出品的日志包。

  commons-fileupload.jar 是文件上传组件。

导包完成后要创建struts.xml,这是struts 2 的核心配置文件,主要用于配置开发人员编写的action。

该配置文件通常放在src下,下面通过一个struts.xml文件,详细分析一下这个核心配置文件:

在struts 2中,struts框架是通过filter启动,在web.xml中必须有相应的配置:

struts 2 在读取到 struts.xml的内容后,以javabean形式存放在内存中,以后struts 2对每一次请求处理将使用内存中的数据。

struts2提供了大量的数据校验器,有两种方法进行数据的校验:

1, 编码方式校验:

action继承自actionsupport,针对某个要进行校验的请求处理方法编写一个 public void validatexxx()方法,在方法内部进行表单数据校验.这种方法不提倡,和主代码容易造成代码混乱而且不易重用,需要为每个需要的地方加校验。

2,xml配置的方法校验:

针对要校验的action类,在同包下编写一个名为:action类名-validation.xml校验规则文件,这种是比较常用的,

命名规则:actionname-validation.xml,其中actionname是action类的名字;

输入校验失败后,和类型转换一样,会将错误封装成fielderror,并放入action context中,因此在jsp中添加<s:fielderror/>可显示错误,此内容也是我们在数据校验文件中配置的;

例如:必填校验器

对登录用户名进行非空验证:

年龄合法性验证:

日期验证(包括输入的是否 是date类型以及输入的日期是否合法)

同时,struts2还提供了很多内置的校验器,可以直接使用:

1.required校验器

此校验器要求字段必须为非空;

2.requiredstring校验器

此校验器要求检验字符串非空并且必须长度大于0,即不能是""

可选参数为:

(1)trim:如果为true,则将前后的空白去掉,类似于string的trim函数;

3.int校验器

此校验器要求整数限定在一定范围之内;

(1)min:最小值;

(2)max:最大值;

4.date校验器

要求日期在一定范围之内;

可选参数:

(1)min:最小日期;

(2)max:最大日期;

5.fieldexpression校验器

要求此校验器满足指定的逻辑表达式;

(1)expression:逻辑表达式;格式为:<![cdata[(逻辑表达式)]]>

6.email校验器

要求字段一定要满足电子邮箱格式;

7.url校验器

要求字段格式满足url格式;

8.stringlength校验器

要求字段是string,并且长度在一定范围之内;

(1)trim:删除前后空白;

(2)minlength:最小长度;

(3)maxlength:最大长度;

9.regex校验器

要求满足给定的正则表达式;

(1)expression:给出正则表达式;格式如:<![cdata[(正则表达式)]]>

(2)casesensitive:是否区分大小写;

例如,当我们要验证邮箱时,不需要自己做验证,