Struts2的输入校验

网友投稿 620 2022-10-22

Struts2的输入校验

Struts2的输入校验

我们每天上网时常会遇到当需要用户输入或者选择一些信息时,你所填写或选择的内容与系统预期不同,此时系统会提示你错误信息。常见的如“用户名不能为空”,“密码长度不正确”等信息,我们把这类校验称之为用户输入验证。这类错误校验十分必要,如果没有进行用户输入验证将给系统造成极大的隐患,造成系统异常甚至系统崩溃。

用户输入校验具体在编码完成时分为客户端验证和服务器端验证两类。客户端验证,即该校验代码是在客户端完成,该请求并没有提交到服务器,如果出现错误立刻响应给客户。服务器端验证,即客户将请求提交到服务器端,由服务器端代码进行校验,如果出现错误将错误信息返回给客户。客户端验证的优势在于执行效率高,能够有效地降低服务器端负载。但是,熟悉编程人都知道用户完全可以绕过客户端验证直接提交到服务器端。因此,用户输入验证仅仅通过客户端验证安全性无法得到保证。服务器端验证的优势在于安全性高,该代码是部署到服务器端,能够有效地阻止与系统预期不一致的输入。但是,所有的请求都提交到服务器端,服务器的负载过重,效率低下,影响用户感受。因此正确的用户输入验证应该兼有客户端验证和服务器端验证。

基于Struts2框架编写的代码时,用户输入验证服务器端验证的代码是在Action中完成,Struts2框架除了提供编码方式实现用户输入验证,还提供了配置方式,即基于校验框架完成用户输入验证。

下面的例子演示了客户端验证的过程。

1创建一个名为ValidateDemo的Dynamic Web Project

2在WebContent/WEB-INF/下添加Struts2所需的6个包:

commons-fileupload-1.2.1.jar

commons-io-1.3.2.jar

freemarker-2.3.16.jar

javassist-3.7.ga.jar

ognl-3.0.jar

struts2-core-2.2.1.jar

xwork-core-2.2.1.jar。

3在WebContent/Web-INF下添加web.xml

      struts2    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter        struts2    /*  

4编写注册界面regist.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %><%@taglib prefix="s" uri="/struts-tags"%>请输入您的注册信息

请输入您的注册信息

5注册成功界面show.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %><%@taglib prefix="s" uri="/struts-tags"%>校验成功

校验成功

用户名:
密码:
年龄:
生日:

6在org.demo.action包下添加RegistAction.java

package org.demo.action;import com.opensymphony.xwork2.ActionSupport;import java.util.Date;public class RegistAction extends ActionSupport{ private String name; private String pass; private int age; private Date birth; //name属性的setter和getter方法 public void setName(String name) { this.name = name; } public String getName() { return this.name; } //pass属性的setter和getter方法 public void setPass(String pass) { this.pass = pass; } public String getPass() { return this.pass; } //age属性的setter和getter方法 public void setAge(int age) { this.age = age; } public int getAge() { return this.age; } //birth属性的setter和getter方法 public void setBirth(Date birth) { this.birth = birth; } public Date getBirth() { return this.birth; }}

7在org.demo.action包下添加校验文件RegistAction-validation.xml

true 必须输入名字 您输入的用户名只能是字母和数字 ,且长度必须在4到25之间 true 必须输入密码 您输入的密码只能是字母和数字 ,且长度必须在4到25之间 1 150 年纪必须在1到150之间 1900-01-01 2050-02-21 生日必须在${min}到${max}之间

8在src下添加stuts.xml

/regist.jsp /show.jsp .

9整个项目的文件目录如下所示

10运行结果

返回后输入正确的信息

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:GoFrame- Go语言应用开发框架
下一篇:grabbitmq- 基于giiwa 框架的 RabbitMQ 模块
相关文章

 发表评论

暂时没有评论,来抢沙发吧~