struts2 手动验证表单

struts.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>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<include file="cn/itcast/validate/struts_validate.xml"></include>
</struts>

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.itcast.validate.ValidateAction" method="{1}">
<result name="success">/validate/success.jsp</result>
<result name="input">/validate/login.jsp</result>
</action>
</package>
</struts>

ValidateAction.java

package cn.itcast.validate;
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;
public String getUsername() {
return username;
}
public void setUsername(String username) {
System.out.println("ValidateAction ***** setusername()");
this.username = username;
}
public String getPsw() {
return psw;
}
public void setPsw(String psw) {
this.psw = psw;
}
private String psw;
/*
 * 验证方法:
 * *改动作类action必须继承ActionSupport或者实现Validateable接口
 * *必须保证serUsername(),validate(),login()方法的执行顺序如下:
 * *setUsername()
 * *validate()
 * *login()
 **如果登陆失败,如何处理:
 **this.addFildError(key,value);
 **key:错误提示字段
 **value:错误提示信息
 **什么时候才是验证通过?
 **验证通过:1.map集合存在;2.map集合存在时为,
 **验证不通过:map集合存在,并且不为空
 **分析需求:
 **用户名不能为null,""
 **密码不能为null,"",并且密码的长度6-12之间
 * *针对所有业务方法进行验证还是针对某个指定业务方法进行验证?
 * *重写的validate()方法,针对所有业务方法进行验证
 * * 重写的validate()方法加上要验证的制定的业务方法名(业务方法名的首字母大写),实现针对某个指定的业务方法进行验证
 * *为什么要这样进行拼接?因为struts2框架底层拼接,如果不这样写底层就找不到对应方法名
 * (non-Javadoc)
 * @see com.opensymphony.xwork2.ActionSupport#validate()
 */
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()"+"username:"+username+"psw:"+psw);
return "success";
}
public String test(){
System.out.println("validate ******* test()");
return "success";
}
}

login.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>&nbsp;</td>
              <td><s:submit value="登陆"/></td>
           </tr>
         </table>
     </s:form>
  </body>
  
  <a href="${pageContext.request.contextPath}/validate/validateAction_test.action">test其他的方法</a>
  
</html>
时间: 2024-10-19 22:50:44

struts2 手动验证表单的相关文章

Spring框架整合Struts2使用Validation框架验证表单用户输入数据的详细教程

原创整理不易,转载请注明出处:Spring框架整合Struts2使用Validation框架验证表单用户输入数据的详细教程 代码下载地址:http://www.zuidaima.com/share/1778685765291008.htm 在<Struts2教程4:使用validate方法验证数据>中曾讲到使用validate方法来验证客户端提交的数据,但如果使用validate方法就会将验证代码和正常的逻辑代码混在一起,但这样做并不利于代码维护,而且也很难将过些代码用于其他程序的验证.在St

验证表单是否为空

验证表单是否为空,或者全是数字 可以用   var  reg = /^\s*(\S+)\s*$/;  正则表达式判断. var reg = /^\s*(\S+)\s*$/; if(reg.test(list[i].value)){ //将空格替换 RegExp.$1捕获匹配的非空格 list[i].value=RegExp.$1; }else{ alert('不能为空'); return; }

js 验证表单 js提交验证类

js 验证表单 js提交验证类 附加:js验证radio是否选择 <script language="javascript">function checkform(obj){for(i=0;i<obj.oo.length;i++)         if(obj.oo[i].checked==true) return true; alert("请选择")return false; }</script><form id="f

jquery验证表单 提交表单

问题: jquery中使用submit提交按钮时,当return false后,依然会提交表单. 解决: 使用button按钮,而不是submit按钮 <script type="text/javascript" src="scripts/jquery-2.0.2.js"></script> <script type="text/javascript"> function check(){ var npassw

ExtJS学习笔记3:加载、提交和验证表单

加载数据 1.比较好用的设置form数据的方法: formPanel.getForm().setValues([{id: 'FirstName', value: 'Joe'}]); 其中id值为form中field的name属性值,value为要赋的值 2.通过对象赋值: Ext.define('Request', { extend: 'Ext.data.Model', fields: [ 'FirstName', 'LastName', 'EmailAddress', 'TelNumberCo

Struts2中防止表单重复提交

一.防止表单的重复提交 1.在表单中加入<s:token/>标签 2.在动作类中加入token的拦截器<interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="token"></interceptor-ref> 3.增加一个名称为invalid.token的结果视图<result name="

ajax验证表单元素规范正确与否 ajax展示加载数据库数据 ajax三级联动

一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2在js中用keyup事件来进行操作 3创建ajax格式和内容:格式: $.ajax({ url:"哪一个服务端处理器", data:{"自己起名",所需要传给处理器的数据}, type:"post", dataType:"json"

表单的属性和方法, 获取表单和表单的元素, 验证表单

表单的属性和方法 一. 表单字段的属性(id/name/value/form),这里用value属性来举例 上面的form属性代表获取表单字段的父级表单对象 1. 属性的获取         console.log(document.myform.username.value); 2. 属性的设置            document.myform.username.value="123"; 3. 获取表单字段的父级表单对象 console.log(document.myform.u

js验证表单大全

js验证表单大全1. 长度限制<script>function test() {if(document.a.b.value.length>50){alert("不能超过50个字符!");document.a.b.focus();return false;}}</script><form name=a onsubmit="return test()"><textarea name="b" cols=&