Struts2对Action提交方法进行验证

【Struts2】★☆之struts2对Action提交方法进行验证

在实际的开发项目中,我们通常采用的是js对我们输入的值进行验证,例如,用户名的长度,密码长度,等等。但是这样做,不好之处就是我们可以通过人为的将开发者的验证js注掉,这样就导致验证失败,对后台安全性是一个很大的威胁,在采用struts2进行开发时,我们可以采用框架内置的校验器,对我们的Action进行校验。本文所讲诉的就是如何使用重写struts2中的ActionSupport里面的validate方法对输入值进行校验。

ok,看下面代码!

1、首先搭建基本的struts2开发环境搭建struts2开发环境

2、编写我们的Action方法

packagecsg.struts2.action;importjava.util.regex.Pattern;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionSupport;/****@author小夜的传说*@2014-7-20*@validate*@csg.struts2.action*@StrutsAction*@2014-7-20下午7:21:26*/publicclassStrutsActionextendsActionSupport{privatestaticfinallongserialVersionUID=1L;privateStringusername;privateStringmobile;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetMobile(){returnmobile;}publicvoidsetMobile(Stringmobile){this.mobile=mobile;}publicStringupdate(){ActionContext.getContext().put(“message”,”更新成功”);return”success”;}publicStringsave(){ActionContext.getContext().put(“message”,”保存成功”);return”success”;}/***全局方法进行验证*//*@Overridepublicvoidvalidate(){if(this.username==null||””.equals(this.username.trim())){this.addFieldError(“username”,”用户名不能为空”);}if(this.mobile==null||””.equals(this.mobile.trim())){this.addFieldError(“mobile”,”手机号不能为空”);}else{if(!Pattern.compile(“^1[358]\\d{9}$”).matcher(this.mobile).matches()){this.addFieldError(“mobile”,”手机号格式不正确”);}}super.validate();}*//***单个方法进行验证*/publicvoidvalidateSave(){if(this.username==null||””.equals(this.username.trim())){this.addFieldError(“username”,”用户名不能为空”);}if(this.mobile==null||””.equals(this.mobile.trim())){this.addFieldError(“mobile”,”手机号不能为空”);}else{if(!Pattern.compile(“^1[358]\\d{9}$”).matcher(this.mobile).matches()){this.addFieldError(“mobile”,”手机号格式不正确”);}}super.validate();}}

在这里讲解一下,我们的validate()方法会对我们Action里面的所有方法进行验证,但是比如说我们的get,list方法是不需要验证的所以通过validateXxx这样就可以对我们单个方法进行验证(validateXxx注意我们需要被验证的方法名首字母一定要大写)

ok,

3、编写我们的jsp提交页面(index.jsp)

<%@pagelanguage=”java”import=”java.util.*”pageEncoding=”utf-8″%><%@taglibprefix=”s”uri=”/struts-tags”%><!DOCTYPEHTMLPUBLIC”-//W3C//DTDHTML4.01Transitional//EN”><html><head><title>后台验证表单提交</title><metahttp-equiv=”pragma”content=”no-cache”><metahttp-equiv=”cache-control”content=”no-cache”><metahttp-equiv=”expires”content=”0″><metahttp-equiv=”keywords”content=”keyword1,keyword2,keyword3″><metahttp-equiv=”description”content=”Thisismypage”><!–<linkrel=”stylesheet”type=”text/css”href=”styles.css”>–></head><s:fielderror/><!–获取验证失败之后的提示信息–><body><formaction=”/validate/test/list_save”method=”post”>用户名:<inputtype=”text”name=”username”/>不能为空<br/>手机号:<inputtype=”text”name=”mobile”/>不能为空符合手机号格式<br/><inputtype=”submit”value=”提交”/></form></body></html>

大家注意了,当我们验证成功之后,我的提示信息通过ActionContext.getContext()直接放在request范围里面,那么我们的验证失败之后的信息呢?这个就是放在ActionSupport里面这个属性中(看一下源码就知道了),ActionSupport里面有如下这段代码!

publicvoidaddFieldError(StringfieldName,StringerrorMessage){validationAware.addFieldError(fieldName,errorMessage);}

但是当我们验证失败之后,ActionSupport默认返回的是return “input”视图,所以我们需要在struts.xml中配置一项视图,如下

喜欢就该珍惜,珍惜就别放弃。

Struts2对Action提交方法进行验证

相关文章:

你感兴趣的文章:

标签云: