Struts2 手动验证
* 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法
    
    * 要继承ActionSupport类或者实现Validateable接口
    
    * 重写Validateable接口的validate()方法
        * 前提是:要保证setUsername()、validate()、login()方法要按照这个先后顺序执行
    
    * 如果登录失败,如何处理:
        * this.addFieldError( key, value);
            * key:错误提示字段
            * value:错误提示信息
    
    * 什么时候才是验证通过?
        * 验证通过:1、map集合不存在;2、map集合存在并为空
        * 验证不通过:map集合存在并且不为空
    
    * 分析需求:
        * 用户名不能为null ,""
        * 密码不能为null, "" ,并且密码的长度6-12之间 
    
    * 针对所有业务方法进行验证还是针对某个指定业务方法进行验证?
        * 重写的validate()方法,针对所有业务方法进行验证
        * 重写的validate()方法加上要验证的指定的业务方法名(业务方法名的首字母大写),实现针对某个指定的业务方法进行验证
            * 为什么要这样进行拼接?因为struts2框架底层拼接,如果不这样写,底层就找不到对应方法名
index.jsp
<s:fielderror></s:fielderror>
<s:form name="loginForm" namespace="/validate" action="ValidateAction_login.action" method="post">
用户名:<s:textfield name="username"/><br/>
密码:<s:password name="pwd"/><br/>
<s:submit value="登录"/>
</s:form>
<a href="${pageContext.request.contextPath}/validate/ValidateAction_test.action">test</a>
 @SuppressWarnings("serial")
 public class ValidateAction extends ActionSupport {
     private String username;
     private String pwd;
     public String getUsername() {
         return username;
     }
     public void setUsername(String username) {
         this.username = username;
     }
     public String getPwd() {
         return pwd;
     }
     public void setPwd(String pwd) {
         this.pwd = pwd;
     }
     //只验证Login 业务,不验证test,如果全部验证,把方法名携写作validate()
     public void validateLogin() {
         if(username==null || username.equals(""))
         {
             this.addFieldError("error", "用户名不能为空");//key:错误标示;value:错误提示
         }
         if(pwd==null || pwd.equals(""))
         {
             this.addFieldError("error", "密码不能为空");
         }else {
             String pattern="^[0-9a-zA-Z]{6,12}$";
             Pattern p=Pattern.compile(pattern);
             Matcher m=p.matcher(pwd);
             boolean b=m.matches();
             if(!b){
                 this.addFieldError("error", "密码格式错误");
             }
         }
     }
     public String login(){
         System.err.println("1234567890-");
         return "success";
     }
     public String test(){
         System.err.println("987654321");
         return "success";
     }
 }
Struts2 手动验证的更多相关文章
- 【Java EE 学习 35 下】【struts2】【struts2文件上传】【struts2自定义拦截器】【struts2手动验证】
		一.struts2文件上传 1.上传文件的时候要求必须使得表单的enctype属性设置为multipart/form-data,把它的method属性设置为post 2.上传单个文件的时候需要在Act ... 
- struts2输入验证
		1.方法 ① 基于Annotations的验证 ②基于XML配置的验证 http://blog.csdn.net/furongkang/article/details/692204 ... 
- Struts2数据验证机制
		1. 手动验证的实现 只需要在继承ActionSupport类的情况下,直接重写validate()方法即可.使用validate()方法可以对用户请求的多个Action方法进行验证,但其验证的逻辑是 ... 
- struts2 的验证框架validation如何返回json数据 以方便ajax交互
		struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror />才能取出,(EL应该也可以). 如果使 ... 
- Struts2 框架验证
		struts2框架验证(xml方式): * 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法 * 创建一个xml格式验证文 ... 
- AngularJS实现表单手动验证和表单自动验证
		AngularJS的表单验证大致有两种,一种是手动验证,一种是自动验证.一.手动验证 所谓手动验证是通过AngularJS表单的属性来验证.而成为AngularJS表单必须满足两个条件: 1.给for ... 
- Struts学习之手动验证
		* 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法 * 要继承ActionSupport类或者实现Validateable接口 ... 
- AngularJS表单验证,手动验证或自动验证
		AngularJS的表单验证大致有两种,一种是手动验证,一种是自动验证. 手动验证 所谓手动验证是通过AngularJS表单的属性来验证.而成为AngularJS表单必须满足两个条件:1.给form元 ... 
- Struts2数据验证与使用Java代码进行数据验证
		Struts2数据验证 使用Java代码进行数据验证 重写ActionSupport的validate()方法 对Action类的中所有请求处理方法都会进行验证! 对Action类的数据属性进行检查, ... 
随机推荐
- 转:implementing cons/car/cdr without explicit storage
			I know this is old wine but it’s just too cool! It elegantly demonstrates closure and higher-order f ... 
- JavaScript权威指南学习笔记4
			今天看了第9.10.11章,感觉收获最大还是正则表达式那章节,不过这些不用太多脑子思考,问题用到了直接查书就可以了,下面分别总结一下: 第9章类和模块:分9节,前面8节都是在讲类相关的知识,最后一节讲 ... 
- 编写高质量js代码
			原文链接:http://code.tutsplus.com/tutorials/24-javascript-best-practices-for-beginners--net-5399 jquery代 ... 
- selenium webdriver python 等待
			AJAX,即“Asynchronous Javascript And XML”.可以实现网页的异步更新.也就是在不重新加载整个网页的情况下,对网页的某部分进行更新. 现在大多数网站都使用AJAX技术 ... 
- FSharp.Data 程序集之 Http
			FSharp.Data 程序集之 Http (** # F# Data: HTTP Utilities .NET 库提供了强大的 API,产生和发送 HTTP WEB 请求,有两个类型,一个简单,`W ... 
- fedora19配置 SSH 免密码登陆
			a.ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa b.cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ... 
- Robotium--takeScreenshot(截图)
			在Robotium中,截图的方法时调用takeScreenshot(). 但有使用你会发现明明代码里调用了solo.takeScreenshot(),但却没有截图成功,那是因为被测试的应用没有SD卡的 ... 
- QP01 BAPI、QP02 BDC
			近期在改动一个检验计划分配的一个程序.上网查了一些资料,分别对QP01检验计划创建.改动QP02.删除物料等操作.分享一下. 一.QP01 BAPI BAPI_INSPECTIONPLAN_CREAT ... 
- Java基础知识强化之IO流笔记03:throws的方式处理异常
			1. 什么时候使用throws ? (1)定义功能方法时候,需要把出现的问题暴露出来,让调用者去处理.那么就通过throws在方法上标识. (2)有时候,我们是可以对异常进行处理的,但是又有些时候,我 ... 
- Java基础知识强化71:正则表达式之基本规则 和 常用正则表达式
			1. 基本规则: A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D') B:字符类 [abc] a.b 或 ... 
