struts2验证框架
来源:互联网 发布:mac软件安装其它盘 编辑:程序博客网 时间:2024/06/01 08:18
数据验证就是对数据的合法性进行检查,只允许合法的数据进入应用程序。
一般情况都会使用Javascript客户端脚本进行页面提交数据的验证。例如:注册页面需要验证用户名和密码的长度,如果长度不符合要求则不允许客户端提交数据,就更用去验证数据的真实性的问题了。但是,如果客户端禁止浏览器运行javascript,则验证无法起到作用(这样是很危险的,因为可以提交危险的信息内容,例如sql注入)。那么在这种情况下,我们就需要在服务器端进行一些验证。
如何实现在服务器进行验证框架呢?
1、让action继承ActionSupport类,并重写ActionSupport中的validate方法。
2、在调用目标方法指定方法之前会首先调用validate方法(这个类似Spring中的AOP 前置方法增强)。
3、在validate方法中可以通过调用父类的addFieldError方法,添加错误字段以及错误提示信息。并且需要在struts.xml中配置结果视图名input,配置它要跳转的界面
但是如果当一个action中有很多自定义的方法的时候怎么办,他怎么知道那个要调用validate或者哪个不用呢?
这个时候就需要为每一个需要验证的方法重写validate方法,该验证的命名规则为validate+方法名(首字母大写)。比如需要验证login方法,就需要编写validateLogin方法。这样就达到一对一的效果了
4、最后可以在视图页面通过struts标签获值栈中的错误信息,并显示在页面上。
前端界面:
<form action="mylogin_login" method="post"> <table> <tr> <td>account:</td> <td><input type="text" name="user.account"></td> <!-- 用struts的property标签来输出通过addFieldError添加到值栈的错误消息 --> <td><s:property value="fieldErrors.accounterror"/></td> </tr> <tr> <td>password:</td> <td><input type="password" name="user.password"></td> <td><s:property value="fieldErrors.passworderror"/></td> </tr> <tr> <td colspan="3"><input type="submit" value="login"></td> </tr> </table></form><!-- struts标签:用来debug --><s:debug></s:debug>
action代码:
public class LoginAction extends ActionSupport { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String login() { // 这是模拟的一个假的数据的验证(因为这里没有连接数据库,所以数据是模拟的) if ("danni".equals(user.getAccount()) && "123456".equals(user.getPassword())) { return "loginSuccess"; } return "login"; } //验证login方法 public void validateLogin() { if(user.getAccount().length() < 5){ addFieldError("accounterror", "用户名的长度不可以小于5"); } if(user.getPassword().length() <6){ addFieldError("passworderror", "密码的长度不可以小于6"); } }}
struts.xml配置:
<struts> <package name="Login" namespace="/" extends="struts-default"> <action name="mylogin_*" class="org.danni.web.action.LoginAction" method="{1}"> <result name="loginSuccess">/index.jsp</result> <result name="login">login.jsp</result> <result name="input">/login.jsp</result> <!-- 用来配置通过validate验证之后应该跳转的页面 --> <allowed-methods>login</allowed-methods> </action> </package></struts>
下面我们来讲一下原理:
1、通过<s:debug></s:debug>
来查看存储在值栈中重点内容的错误信息
2、为什么要为结果视图名input配置对应跳转路径。
3、为什么要设置成validate+方法名(首字母大写)的形式来为指定的方法定义validate验证呢?
在调用指定方法xxx之前会默认先调用validateXxx方法。该验证方法由PrefixMethodInvocationUtil.invokePrefixMethod 实现(前置方法)。因此我们编写指定方法的validate验证的时候需要validateXxx来命名,他会默认先去调用validateXxx然后再调用xxx方法
- struts2 validate(struts2 验证框架)
- Struts2 验证框架-前台验证
- Struts2验证(框架验证)
- Struts2 中的验证框架
- 关于struts2验证框架
- struts2.x 验证框架
- struts2的验证框架
- struts2 自动验证框架
- struts2的框架验证
- struts2 的验证框架
- struts2验证框架小结
- Struts2验证框架
- Struts2的验证框架
- struts2的验证框架
- struts2 验证框架、国际化
- struts2的框架验证 .
- Struts2之验证框架
- struts2验证框架
- 点联动自动无限轮播
- activiti组
- pip 更换源
- 哈希表查找——成功和不成功时的平均查找长度
- 机械师F117夜鹰双盘双系统windows10+ubuntu14.04
- struts2验证框架
- const引用
- 关于框架(spring)中ajax请求报406错误的情况
- 字符排序
- 排序算法_0,桶排序
- 解决Linux网卡由eth0变为eth1的问题
- arcgis for android 基础底图
- 故事中的酒---我依旧在古楼
- Android -Intent