Struts 2 验证教程

Struts 2 验证例题

 

在这个例子中我们将了解到怎么样用Struts 2验证登录页面。让我们先创建一个登录页面。使用Struts UI标签,在HTML页面的头部可以放置<s:head />标签。s:head可以自动生成链接CSS和Javascript库,它对显示表单元素起到很重要的作用。

 

s:form标签包含所有的表单元素。action属性是指定的动作(action)名,指定那个表单被提交。动作(action)名要和XML设置文件声明的保持一致。在这个例子里是用struts.xml文件设置的。

 

textfield标签用来创建一个文本框。textfield标签的label属性值是在页面上要显示的名称,name属性值是与动作(action)类相映射的属性。password标签和textfield标签一样,只是输入值是被掩盖的。submit标签被用来创建一个提交按钮,value属性描述按钮的标签。

 

需要注意的是,代码并没有HTML的table,这是因为Struts 2可以自动的在页面上创建需要的表格。主题默认色XHTML。

 

 

 

 

 

当用户点击登录按钮将转向login动作(action)。

 

我们在struts.xml文件里设置动作(action)映射。首先我们需要为动作(action)创建一个包。

 

这里的default包继承于struts-default包,所以动作(action)将继承在defaultStack中定义的一系列拦截器(interceptor)。struts-default在struts-default.xml文件中定义的。

 

通过单独的动作(action)和设置不同的拦截器(interceptor)来作用于共同的任务。你可以为每个动作(action)定义一个拦截器(interceptor)栈,最常用的拦截器(interceptor)组合都是来自struts-default包的defaultStack。defaultStack可以满足大多数情况。拦截器(interceptor)在栈中被声明在动作(action)执行之前和之后执行,然后释放。

 

这里Login动作(action)被映射到在vaannila包中的Login类。结果(result)是用result标签来定义的。如果出现任何校验错误将转向login.jsp页面,如果登录成功将转向success.jsp页面。

 

defaultStack包含以下拦截器:

 

Login动作(action)类继承于ActionSupport。ActionSupport提供为很多共同任务提供了默认功能。

 

ActionSupport类继承Action接口实现execute()方法。

 

下面是在Action接口中声明的常量,可在execute()方法返回值的时候使用。

public static final String ERROR = "error"
public static final String INPUT = "input"
public static final String LOGIN = "login"
public static final String NONE = "none"
public static final String SUCCESS = "success"

 

ERROR 当动作(action)执行出错的时返回。

INPUT 当动作(action)需要从用户那里获得更多的入例内容时返回。

LOGIN 当没有登录到系统的时返回。

NONE 当(action)执行成功,但没有视图(view)显示时返回。

SUCCESS 当(action)执行成功,并向用户展示整合结果时返回。

 

让我们来看看不同拦截器(interceptor)发挥的做作。

 

参数拦截器(params interceptor)在动作(action)对象上传输请求数据时发挥作用。

工作流拦截器(workflow interceptor)控制流程操作。

工作流拦截器(workflow interceptor)检验动作(action)是否捕获了Validateable接口,如果是,工作流拦截器(workflow interceptor)将调用动作(action)类的validate()方法。

在validate()方法中校验用户名和密码,如果验证失败将通过addFieldError()方法添加错误。

validate()方法不会返回任何信息,而是在ValidateAware接口上保存所有错误信息。

现在工作流拦截器(workflow interceptor)将检查任何可能发生的错误。如果,发生错误工作流拦截器(workflow interceptor)将停止处理请求并用适当的错误信息传输到页面中。

 

下面是运行结果:

 

可以通过addFieldError()方法给每个区域添加错误信息。错误信息可以直接添加,也可以通过特定的属性文件进行添加。

属性文件需要和动作(action)类同名。在我们的例子中,属性文件名是"Login.properties"文件,动作(action)名是"Login.java"。

 

下面是属性文件包含的内容:

 

TextProvider接口的getText()方法能够取回错误信息。

 

也可以在validate()方法中进行业务校验。

 

如果没有错误,execute()方法将通过工作流拦截器(workflow interceptor)被调用。

在我们的execute()方法中只是简单的返回"success"。下面是执行页面。

 

源代码:下载

源代码 + lib:下载

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值