表单数据验证 缺乏、安全感 2024-02-17 22:50 8阅读 0赞 表单验证分三种:客户端格式验证,服务端格式验证,数据库中的数据有效性验证;基于客户端格式验证很不安全,如果软件需求高,通常需要在服务端进行验证。 一)、手工验证: \-------验证Action的所有方法 (1)jsp代码: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri = "/struts-tags" prefix="s"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <s:fielderror/> <br> ${fieldErrors } <form action="login.action" method = "post"> 用户名:<input name = "name" type = "text"><br><br> 电话号:<input name = "mobile" type = "text"><br><br> <input type = "submit" value = "提交"> </form> </body> </html> action代码: package com.action; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ private static final long serialVersionUID = 1L; private String name ; private String mobile; public String execute(){ //重写validate方法后不用手动调用 return "success"; } //重写此方法后,可以使用struts2提供的error类,如果fieldError有内容,需要指定input视图 public void validate(){ System.out.println("validate"); if(name == null || "".equals(name)){ this.addFieldError("name", "用户名不能为空"); } if(mobile == null || "".equals(mobile)){ this.addFieldError("mobile", "电话号码不能为空"); }else{ if(!this.mobile.matches("^1[34578]\\d{9}$")){ this.addFieldError("mobile", "手机号格式不正确"); } } } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public static long getSerialversionuid() { return serialVersionUID; } } 通过以上,表单验证会在action的执行之前自动调用,fieldErrors中没有内容才调用execute方法。 问题,Action中可能存在多个方法,那么每个方法执行之前都会调用验证方法(有的方法可能不需要验证!) \-----------验证Action指定的方法:只需要将validate方法名改成 validate+要验证的方法名。注意:方法名首字母大写 struts.xml配置文件: <package name = "default" namespace = "/" extends = "struts-default"> <action name = "login_*" class = "com.action.LoginAction" method = "{1}"> <result name = "success">/welcome.jsp</result> <result name = "input" >/index.jsp</result> </action> </package> jsp页面: <br> ${fieldErrors } <form action="login_doOther.action" method = "post"> 用户名:<input name = "name" type = "text"><br><br> 电话号:<input name = "mobile" type = "text"><br><br> <input type = "submit" value = "提交"> </form> Action代码: public class LoginAction extends ActionSupport{ private static final long serialVersionUID = 1L; private String name ; private String mobile; public String doFirst(){ //重写validate方法后不用手动调用 return "success"; } public String doOther(){ //重写validate方法后不用手动调用 return "success"; } //重写此方法后,可以使用struts2提供的error类,如果fieldError有内容,需要指定input视图 public void validateDoFirst(){ System.out.println("validate"); if(name == null || "".equals(name)){ this.addFieldError("name", "用户名不能为空"); } if(mobile == null || "".equals(mobile)){ this.addFieldError("mobile", "电话号码不能为空"); }else{ if(!this.mobile.matches("^1[34578]\\d{9}$")){ this.addFieldError("mobile", "手机号格式不正确"); } } } 二)、基于XML验证: 基于配置文件的表单验证方式,可以减少java代码的编写。 如果要验证的Action是LoginAction,那么配置文件名需要命名为"LoginAction-validation.xml" LoginAction-validation.xml配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd"> <validators> <field name = "name"> <field-validator type = "requiredstring"> <message>用户名不能为空</message> </field-validator> </field> <field name = "mobile"> <field-validator type = "requiredstring"> <message>电话号不能为空</message> </field-validator> <field-validator type = "regex"> <param name = "Expression"><![CDATA[^1[34578]\d{9}$]]></param> <message>电话号格式不正确</message> </field-validator> </field> </validators> Action代码: package com.action; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ private String name ; private String mobile; public String doFirst(){ //重写validate方法后不用手动调用 System.out.println("doFirst"); return "success"; } public String doOther(){ System.out.println("doOther"); //重写validate方法后不用手动调用 return "success"; } 以上代码也是对Action中的所以方法进行验证,但通常不需要全部进行验证,也需要对指定方法进行验证;基于XML的验证方法也很简单,执行将配置文件名改为如下格式, “ActionClassName-ActionMethodName-validation.xml”
相关 表单数据验证 表单验证分三种:客户端格式验证,服务端格式验证,数据库中的数据有效性验证;基于客户端格式验证很不安全,如果软件需求高,通常需要在服务端进行验证。 一)、手工验证: \--- 缺乏、安全感/ 2024年02月17日 22:50/ 0 赞/ 9 阅读
相关 表单验证 应用 一、引入 <script src="Scripts/jquery-1.7.1.min.js"></script> <script src="Scripts/jqu 朱雀/ 2022年07月24日 06:28/ 0 赞/ 442 阅读
相关 表单验证 java script验证表单时常用: "^-\[0-9\]\\[1-9\]\[0-9\]\$" //负整数 "^-?//d+$" //整 ゝ一纸荒年。/ 2022年06月13日 07:54/ 0 赞/ 273 阅读
相关 struts2表单数据验证 struts2的表单数据需要进行验证,验证有两种,一种是手动在action的方法中验证,另一种是使用框架的xml配置文件验证。 一、手动action中验证 程 野性酷女/ 2022年06月13日 05:26/ 0 赞/ 261 阅读
相关 表单验证 @Min(value = 18, message = " 不得小于18 ") private Integer age; / 表单验证 / ╰+攻爆jí腚メ/ 2022年06月05日 10:15/ 0 赞/ 272 阅读
相关 表单验证 angularjs 表单验证,包含必填、手机、邮箱、ip、网址等 基于angularjs自己封装的验证插件,之前的插件在angularjs上就不能使用了,然后将之前的封 淩亂°似流年/ 2022年06月04日 10:14/ 0 赞/ 265 阅读
相关 表单验证 表单验证为了减轻服务器的压力,请求次数减少,保证用户输入符合要求。 > 常用的表单验证 > \- 日期样式 > \- 表单内容是否为空 > \- 用户名和密码 梦里梦外;/ 2022年05月24日 04:40/ 0 赞/ 277 阅读
相关 表单验证 java script验证表单时常用: "^-\[0-9\]\\[1-9\]\[0-9\]\$" //负整数 "^-?//d+$" //整 小灰灰/ 2022年01月07日 14:35/ 0 赞/ 416 阅读
相关 验证表单数据并实现数据的自定义验证 一 代码位置 [https://gitee.com/cakin24/code/tree/master/05/ValidatorDemo][https_gitee.com_ca 蔚落/ 2021年07月24日 21:05/ 0 赞/ 494 阅读
还没有评论,来说两句吧...