一、表单校验
js,jquery是客户端校验,今天要说的是客户端校验。
禁止js,或者机器代码会破坏客户端校验,所以客户端校验相对不安全。
服务器端校验是基于java代码在服务器端进行校验,特点是相应慢,但是相对安全。
二、Struts2中的表单校验
(1)自己写validate方法
第一步:Action继承ActionSupport
第二步:写public void validate();方法
package xsyu.action; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ private String name; private String pwd; //表单的数据检查 public void validate(){ if("".equals(name) || name == null){ this.addFieldError("name", "姓名不能为空!"); } if("".equals(pwd) || pwd == null){ this.addFieldError("pwd", "密码不能为空"); } //底层是一个集合,如果判断该集合中有内容就不执行execute方法。 } public String execute(){ if("scott".equals(name)&&"1234".equals(pwd)){ return "success"; } return "login"; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }默认返回的result是“input"
<package name="pack1" extends="struts-default"> <action name="login" class="xsyu.action.LoginAction"> <result name="success" type="dispatcher">/ok.jsp</result> <result name="login" type="redirect">/index.jsp</result> <result name="input">/index.jsp</result> </action> </package>
用struts标签在页面显示
<s:fielderror></s:fielderror>
运行结果:
我们在页面加上<s:debug>标签后会发现多了一个errors标签
我们可以这样取出错误信息。
姓名:<input type="text" name="name"/>${errors.name}<br> 密码:<input type="password" name="pwd"/>${errors.pwd }
结果:
如果我的Action中有多个业务方法怎么办,这时候给需要的方法添加validate,比如给add()方法添加则这样写 public void validateAdd(){ ...}
(2)使用XML配置校验(功能和上面的一样,一般不推荐使用)
请看下节.......