Struts2讲义4

[size=xx-large]使用ActionSupport进行校验[/size]
如果From数据操作有误,比如输入不是我们需要的数据,又或者没有输入等输入原因。Action实例执行execute方法前会使用校验来进行控制。本节就是介绍如何在Struts2中实现校验功能。
技术要点
本节代码中还是使用登录功能作为示例
 [align=left]Action类中ActionSupport使用以及validate方法重写实现。
 属性文件messageResource.properties定义以及JSP页面上错误信息如何显示。
 导航结果页面演示。[/align]
演示代码
<!-------------------------文件名:LoginAction.java------------------->
public class LoginAction extends [b]ActionSupport [/b]{
//校验方法,用来校验输入值为空或没有输入返回错误信息
public void validate() {
if (getUsername() == null || getUsername().trim().equals("")) {
//返回错误信息键值,user.required包含具体内容见messageResource.properties
addFieldError("username", getText("user.required"));
}
if (getPassword() == null || getPassword().trim().equals("")) {
//返回错误信息键值,pass.required包含具体内容见messageResource.properties
addFieldError("password", getText("pass.required"));
}
}
}
struts.properties定义显示信息文件名
<!------------------------------文件名:struts.properties -------------------------->
#支持本地化的资源文件名定义
struts.custom.i18n.resources=messageResource
messageResource.properties定义出错信息
<!-------------------------------------------文件名:messageResource.properties -------------------------------->
#用key=value格式定义页面上显示的内容
user.required=请输入用户名!
pass.required=请输入密码!

登录JSP代码:
<!-------------------------文件名:login.jsp ------------------------>
<%@ page language="java" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- struts2标签库调用声明 -->
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<!-- form标签库定义,以及调用哪个Action声明 -->
<s:form action="Login">
<table width="60%" height="76" border="0">
<!-- 各标签定义 -->
<s:textfield name="username" label="用户名"/>
<s:password name="password" label="密 码" />
<s:submit value="登录" align="center"/>
</table>
</s:form>
</body>
</html>
登录页面如图4.1所示。
[img]http://dl.iteye.com/upload/attachment/83418/790520c4-7212-3f95-8471-62890eae1d3a.jpg[/img]
图4.1 登录初始页面
不输入直接登录显出出错页面如图4.2所示。
[img]http://dl.iteye.com/upload/attachment/83420/65296b36-11ca-31d4-9221-a4269958f02e.jpg[/img]
图4.2 错误提示页面
输入数据页面如图4.3所示。
[img]http://dl.iteye.com/upload/attachment/83422/4bf06a17-105e-3e26-a07b-4afada7048f4.jpg[/img]
图4.3 输入数据页面
登录成功JSP代码:
<!------------------------文件名:success.jsp ------------------------>
<%@ page language="java" contentType="text/html; charset=GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登录成功</title>
</head>
<body>
<!-- 取得session中用户名值 -->
${sessionScope.user},欢迎您~~
</body>
</html>
登录成功页面如图4.4所示。
[img]http://dl.iteye.com/upload/attachment/83424/23092d23-2b9c-33d0-89ab-8625db136b31.jpg[/img]
图4.4 登录成功页面
代码解释
(1)LoginAction类中继承ActionSupport类,此类也是Struts2自带的类之一。该类有一个validate方法,所以继承ActionSupport类的Action子类都可以通过重写此方法来定义自己开发的项目操作失败后的错误提示信息。
注意:Struts2类库里有个BaseAction类,该类也是继承ActionSupport类的。因此也可以在具体Action类代码里,直接继承BaseAction类。比如在LoginAction代码粗体所示处,将“ActionSupport”改为“BaseAction”,这样同样可以重写validate方法,不会产生任何编译错误。
如代码所示出错信息,其中addFieldError方法和getText方法也是ActionSupport类的方法,只是Action子类是直接调用没有重写它们。addFieldError方法顾名思义就是对JSP页面上Form中某个需要校验的field,如果操作有错误时候如何进行错误信息处理的方法。比如“username”就是JSP页面上这个字段的名字,而“user.required”是错误信息属性文件里定义的。我们使用getText方法可以得到属性文件里“user.required”对应的具体错误信息。
注意:validate方法一般都是Action类执行execute方法之前执行,这样如果操作失败,就直接返回到struts.xml中定义的“input”指向的URL。而“input”指向的JSP页面也正是登录初始页面,如图4.2所示,在登录初始页面显示了错误提示信息。
(2)在Struts2中还有个很重要的概念就是属性文件,一般有个名字为struts.properties的属性文件是Struts2中全局属性配置的文件。如代码里看到的,对于本地化的处理,直接使用该文件里定义的messageResource.properties文件。
(3)messageResource.propertie文件定义的两个属性就是在Action类里显示的“user.required”和“pass.required”,采用“key=value”格式,定义了具体错误信息内容。
如果result值为“success”则转到success.jsp。在该示例中这个页面代码中我们显示了之前放置在HTTP的session里的用户名值。如图4.4所示。
如果result值为“input”则转到login.jsp。在该示例中,login.jsp将之前所述的错误提示信息值在JSP页面上显示。如图4.2所示。
(4)login.jsp里用Struts2的标签库显示Form和它里面各字段定义。具体标签使用方式可见之后章节内容,在此就不详述了。唯一值得说的就是只有在JSP页面使用Form标签,这节叙述的校验功能才会起作用。因为Form标签本身已具备显示校验错误的能力。
下载前可以先看下教程 https://pan.quark.cn/s/16a53f4bd595 小天才电话手表刷机教程 — 基础篇 我们将为您简单的介绍小天才电话手表新机型的简单刷机以及玩法,如adb工具的使用,magisk的刷入等等。 我们会确保您看完此教程后能够对Android系统有一个最基本的认识,以及能够成功通过magisk root您的手表,并安装您需要的第三方软件。 ADB Android Debug Bridge,简称,在android developer的adb文档中是这么描述它的: 是一种多功能命令行工具,可让您与设备进行通信。 该命令有助于各种设备操作,例如安装和调试应用程序。 提供对 Unix shell 的访问,您可以使用它在设备上运行各种命令。 它是一个客户端-服务器程序。 这听起来有些难以理解,因为您也没有必要去理解它,如果您对本文中的任何关键名词产生疑惑或兴趣,您都可以在搜索引擎中去搜索它,当然,我们会对其进行简单的解释:是一款在命令行中运行的,用于对Android设备进行调试的工具,并拥有比一般用户以及程序更高的权限,所以,我们可以使用它对Android设备进行最基本的调试操作。 而在小天才电话手表上启用它,您只需要这么做: - 打开拨号盘; - 输入; - 点按打开adb调试选项。 其次是电脑上的Android SDK Platform-Tools的安装,此工具是 Android SDK 的组件。 它包括与 Android 平台交互的工具,主要由和构成,如果您接触过Android开发,必然会使用到它,因为它包含在Android Studio等IDE中,当然,您可以独立下载,在下方选择对应的版本即可: - Download SDK Platform...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值