(九)Struts2中手工验证
来源:互联网 发布:多媒体教学软件破解版 编辑:程序博客网 时间:2024/05/01 12:58
前台jsp页面
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=utf-8"%><%@ taglib uri="/struts-tags" prefix="s" %><html> <head> <title>My JSP 'login.jsp' starting page</title> </head> <body> <br> <s:fielderror/> <s:form name="loginForm" method="post" namespace="/validate" action="validateAction_login.action" theme="simple" > <table border="1"> <tr> <td>用户名</td> <td> <s:textfield name="username" /></td> </tr> <tr> <td>密码</td> <td><s:password name="psw" /></td> </tr> <tr> <td> </td> <td><s:submit value="登陆"/></td> </tr> </table> </s:form> </body> <a href="${pageContext.request.contextPath}/validate/validateAction_test.action">test其他的方法</a> </html>
对应的Action
package cn.yh.validate;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")public class ValidateAction extends ActionSupport {private String username;private String psw;public void setUsername(String username) {System.out.println("ValidateAction ************ setUsername()");this.username = username;}/* * 验证方法: * * 该动作类action必须继承ActionSupport或者实现Validateable接口 * * 必须重写Validateable接口提供的validate()方法 * * * 必须要保证setUsername()、validate()、login()方法的执行顺序如下: * * setUsername() * * validate() * * login() * * * 如果登录失败,如何处理: * * this.addFieldError( key, value); * * key:错误提示字段 * * value:错误提示信息 * * * 通过底层代码说明: * public synchronized void addFieldError(String fieldName, String errorMessage) { final Map<String, List<String>> errors = internalGetFieldErrors();//声明一个map集合 List<String> thisFieldErrors = errors.get(fieldName);//声明一个list集合,放入对应错误提示信息 if (thisFieldErrors == null) {//如果list集合为空 thisFieldErrors = new ArrayList<String>();//重新创建一个list集合 errors.put(fieldName, thisFieldErrors);//把list集合放入到map集合中 } thisFieldErrors.add(errorMessage);//把错误提示信息放入到list集合中 } * * * 什么时候才是验证通过? * * 验证通过:1、map集合不存在;2、map集合存在并为空 * * 验证不通过:map集合存在并且不为空 * * * 分析需求: * * 用户名不能为null ,"" * 密码不能为null, "" ,并且密码的长度6-12之间 * * * 针对所有业务方法进行验证还是针对某个指定业务方法进行验证? * * 重写的validate()方法,针对所有业务方法进行验证 * * 重写的validate()方法加上要验证的指定的业务方法名(业务方法名的首字母大写),实现针对某个指定的业务方法进行验证 * * 为什么要这样进行拼接?因为struts2框架底层拼接,如果不这样写,底层就找不到对应方法名 * */public void validateLogin() {System.out.println("ValidateAction ************ validate()");if(username==null||username.equals("")){this.addFieldError("error", "用户名不能为空!");}if(psw==null||psw.equals("")){this.addFieldError("error", "密码不能为空!");}else{String pattern = "^[0-9a-zA-Z]{6,12}$";Pattern p = Pattern.compile(pattern);Matcher m = p.matcher(psw);boolean b = m.matches();if(!b){this.addFieldError("error", "密码的长度必须在6至12之间!");}}}public String login(){System.out.println("ValidateAction ********* login()");System.out.println("username = "+username);System.out.println("password = "+psw);return "success";}public String test(){System.out.println("ValidateAction ********* test()");return "success";}public String getUsername() {return username;}public String getPsw() {return psw;}public void setPsw(String psw) {this.psw = psw;}}
struts_validate.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><package name="validate" namespace="/validate" extends="struts-default"><action name="validateAction_*" class="cn.yh.validate.ValidateAction" method="{1}"><result name="success">/validate/success.jsp</result><result name="input">/validate/login.jsp</result></action></package></struts>
- (九)Struts2中手工验证
- Struts2手工验证
- struts2-验证(手工)
- Struts2(九):数据验证(二)
- Struts2学习总结(九):数据验证
- Struts2手工编写表单验证代码
- struts2中实现的手工校验
- struts2拦截器和服务器端手工编码验证
- Struts2手动进行表单验证(九)
- struts2中身份证号码验证
- Struts2中输入验证
- struts2 手工校验action中所有方法 张孝祥
- struts2中对数据进行校验---手工校验
- Struts2验证(框架验证)
- Struts2中实现验证码
- struts2中生成验证码
- (十)Struts2中XML验证
- struts2系列九之代码方式验证错误
- Android新闻客户端开发3--显示新闻详细内容UI设计
- 面向对象的白话理解-拍面人
- dos 下执行jar 包 解决依赖的jar 包问题
- ROS的学习(二十)rosserial中的Publisher和Subscriber中的编程步骤
- 拷贝构造函数与赋值函数;深拷贝,浅拷贝
- (九)Struts2中手工验证
- nullFilter
- SVN分支与合并透析
- 利用VBS实现 显示服务列表
- 基于axis的Webservice开发流程
- 拷贝构造函数的参数为什么必须使用引用类型
- 利用gdb在汇编指令级调试C程序
- Shell Scripting Tutorial-2: Shell, Kernel, Terminal & More
- hibernate循环执行update()时,问题详解