Struts 2下的helloword(7)

2019-04-08 18:57

this.username = username; }

//password属性对应的getter方法 public String getPassword() {

return password; }

//password属性对应的setter方法 public void setPassword(String password) {

this.password = password; }

//处理用户请求的execute方法

public String execute() throws Exception {

//当用户请求参数的username等于scott,密码请求参数为tiger时,返回success 字符串

//否则返回error的字符串 if (getUsername().equals(\&& getPassword().equals(\) {

return \} else {

return \} }

//完成输入校验需要重写的validate方法 public void validate() {

//如果用户名为空,或者用户名为空字符串

if (getUsername() == null || getUsername().trim().equals(\{

//添加表单校验错误

addFieldError(\\}

//当密码为空,或者密码为空字符串时,添加表单校验错误 if (getPassword() == null || getPassword().trim().equals(\{ addFieldError(\\} } } 上面的Action类重写了validate方法,该方法会在执行系统的execute方法之前执行,如果执行该方法之后,Action类的fieldErrors中已经包含了数据校验错误,请求将被转发到input逻辑视图处。 为了在校验失败后,系统能将视图转入input处,必须在配置该Action时配置input属性。下面是修改后login Action的配置片段: 对比上面的Action配置与前面的Action配置,我们发现该Action配置片段中增加了input逻辑视图的配置,该逻辑视图映射到login.jsp页面。 前面已经提到:当用户提交请求时,请求得到execute方法处理之前,先会被validate方法处理,如果该方法处理结束后,Action的fieldErrors里的校验错误不为空,请求将被转发给input逻辑视图。如果我们不输入用户名、密码而直接提交表单,将看到如图2.13所示的界面。 图2.13 输入校验的界面 看到这里也许读者觉得非常神奇:我们仅仅在Action添加了数据校验错误,并未在输入页面输出这些校验错误信息,但图2.13所示的页面,却可以看到页面已经输出了这些校验信息——这是因为Struts 2的标签,上面的JSP页面中表单使用的并不是HTML表单,而是用了标签,Struts 2的标签已经具备了输出校验错误的能力。

提示 Struts 2的默认已经提供了输出校验错误的能力。 但上面的程序还存在一个问题:校验信息的国际化。查看上面的Action类代码发现:重写validate方法时,如果发生校验失败的问题,校验错误的提示信息是以硬编码方式写死了——这就失去了国际化的能力。

实际上,ActionSupport类已经提供了国际化信息的能力,它提供了一个getText(String key)方法,该方法用于从资源文件中获取国际化信息。为了让校验信息支持国际化,再次改写Action里的validate方法,改写后的validate方法代码如下:

//执行数据校验的validate方法 public void validate() {

//如果用户名为空,或者为空字符串

if (getUsername() == null || getUsername().trim().equals(\{

//添加校验错误提示,使用getText方法来使提示信息国际化 addFieldError(\getText(\}

if (getPassword() == null || getPassword().trim().equals(\{

addFieldError(\getText(\} }

在上面的validate方法中,添加校验错误提示时,并不是直接给出了错误提示的字符串,而是调用了getText方法来获取错误提示。因为在Action中,

使用getText方法来获取了两个国际化提示:user.required和pass.required,因此应该在国际化资源文件中添加这两条提示信息。

提示 ActionSupport增加了让提示信息国际化的能力,ActionSupport提供的getText方法可以根据资源文件加载获得国际化提示信息。 此时,如果没有任何输出,直接提交登录表单,将看到如图2.14所示的界面。 图2.14 国际化数据校验的错误提示 2.8.2 使用Struts 2的校验框架 上面的输入校验是通过重写ActionSupport类的validate方法实现的,这种方法虽然不错,但需要大量重写的validate方法——毕竟,重复书写相同的代码不是一件吸引人的事情。 类似于Struts 1,Struts 2也允许通过定义配置文件来完成数据校验。Struts 2的校验框架实际上是基于XWork的validator框架。 下面还是使用原来的Action类(即不重写validate方法),却增加一个校验配置文件,校验配置文件通过使用Struts 2已有的校验器,完成对表单域的校验。Struts 2提供了大量的数据校验器,包括表单域校验器和非表单域校验器两种。 本应用主要使用了requiredstring校验器,该校验器是一个必填校验器——指定某个表单域必须输入。 下面是校验规则的定义文件:

\

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

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

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

当然,在struts.xml文件的Action定义中,一样需要定义input的逻辑视图名,将input逻辑视图映射到login.jsp页面。

如果不输入用户名、密码而提交表单,将再次看到如图2.14所示的界面。在这种校验方式下,无需书写校验代码,只需要通过配置文件指定校验规则即可,因此提供了更好的可维护性。

2.9 本章小结

本章以一个HelloWorld应用为例,简要介绍了Struts 2 MVC框架的基本流程,从Action类基本流程控制讲起,详细介绍了如何开发一个Struts 2应用。本章的后面部分在基本Struts 2应用基础上,介绍了一些Struts 2的深入应用,包括在Action中访问HttpSession状态,将Action处理结果传回JSP页面显示,本应用也综合应用了Struts 2的标签库、数据校验、程序国际化等常用功能。通过阅读本章的内容,读者应该对Struts 2框架有一个大致的掌握。


Struts 2下的helloword(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:班级操行量化评分细则1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: