struts2 之 struts2数据校验

1. 数据校验一般分为2类:前端的校验(js校验),后端的校验(java代码);实际开发中大部分情况下都是采用js校验。在对数据安全要求较高的情况下可能会采用后端验证。

2.  Struts2提供了后端验证机制。有两种方式来实现,一种是通过硬编码来实现,一种是通过校验框架来实现。在struts2如果使用struts2提供校验机制,那么必须继承ActionSuport类。该类中有一个vaildete方法,在处理的action类中重写该方法,那么在执行所有方法的时候,会执行validate方法。validate方法通过以后才执行处理方法。如果要验证特定的方法,那么需要为特定的方法指定其验证方法,命名规则,如果处理方法为xxx,那么验证方法为vaildateXxx。执行顺序为先执行validateXxx,在执行validate方法,在执行xxx方法。

3. 添加校验方法后执行流程:

4. 实现步骤:

(a).在处理类中添加校验方法:

public class UserAction extends ActionSupport{
    private User user;

    //添加的处理方法
    public String add(){
        System.out.println("执行add");
        System.out.println("执行添加动作");
        return Action.SUCCESS;
    }
    public void validateAdd(){
        System.out.println("执行validateAdd");
        if(user.getName().trim().length()==0){
            //添加错误消息有两种做法,一种是全局的--addActionError
            //一种局部的Field--addFieldError
            //用户名不能为空
            this.addFieldError("name", "用户名不能为空");
        }
        if(user.getName().trim().length()>0&&user.getName().trim().length()<4||user.getName().trim().length()>10){
            this.addFieldError("name", "用户名长度为4到10之间");
        }
    }

    @Override
    public String execute() throws Exception {
        System.out.println("执行execute");
        return super.execute();
    }
    /**
     * 该方法会在执行execute(会在所有的处理方法前)之前执行,该方法通过以后再执行处理方法
     * 如果在validate方法中 有添加FieldError或者ActionError则该方法验证没通过
     * 重写父类的校验方法  在方法中实现相关的校验规则
     *
     */
    public void validate() {
        System.out.println("执行validate方法");

    }
    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}

(b). 在页面中添加struts的标签库,并且将错误信息显示<s:fieldError>或者<s:actionError>

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
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%>">
  </head>

  <body>
    <form action="add.action" method="post">
    用户名:<input type="text" name="user.name"/><s:fielderror fieldName="name"></s:fielderror><br>
    密码:<input type="password" name="user.pwd"/><br>
    年龄:<input type="text" name="user.age"/><br>
    <input type="submit" value="submit"/>
    </form>
  </body>
</html>

c)    在action的配置中一定要配置结果为input的跳转页面
<action name="add" class="cn.sxt.action.UserAction" method="add">
            <result name="input">/add.jsp</result>
            <result>/success.jsp</result>
        </action>

5 .通过struts2提供的校验框架来实现数据校验:

(a).  在action所在包下添加校验规则文件 ActionClassName-validation.xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <!-- 配置某一个field的验证规则 -->
    <field name="user.name">
        <!-- 在field中添加其验证规则 -->
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>用户必须输入</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">4</param>
            <param name="maxLength">10</param>
            <message>用户名长度在${minLength}到10之间</message>
        </field-validator>
    </field>
</validators>

(b). 在页面中添加struts的标签库,并且将错误信息显示<s:fieldError>或者<s:actionError>

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
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%>">
  </head>

  <body>
    <form action="add.action" method="post">
    用户名:<input type="text" name="user.name"/><s:fielderror fieldName="user.name"></s:fielderror><br>
    密码:<input type="password" name="user.pwd"/><br>
    年龄:<input type="text" name="user.age"/><br>
    <input type="submit" value="submit"/>
    </form>
  </body>
</html>

(c). 在action的配置中一定要配置结果为input的跳转页面:

<action name="add" class="cn.sxt.action.UserAction" method="add">
            <result name="input">/add.jsp</result>
            <result>/success.jsp</result>
        </action>
时间: 2024-10-14 21:06:01

struts2 之 struts2数据校验的相关文章

struts2中服务器端数据校验

数据校验指对数据合法性进行检查,根据验证数据的位置可以分为客户端验证和服务器端验证,今天随笔主要写的是实现服务器端的数据验证,服务器端数据验证主要特点: ·数据提交后在服务器端验证 ·防止绕过客户端验证提交的非法数据 ·可以在服务器端处理数据前保证数据的合法性 Struts2中有两种实现服务器端验证的方式. 一.       使用ActionSupport编码实现验证 在Action类的方法中直接验证 在Action 类中直接进行校验是一种最为原始的方法,这里作为了解,首先是action 类中的

Struts2之数据校验

时间:2017-1-11 11:09 --Struts2提供的数据校验 在开发中,请求参数是需要校验的:    客户端:过滤正常用户的错误操作,通过JS代码完成    服务器:Java代码 Struts2提供的校验是服务器端校验. 校验方式分为两种:    1.手动校验(编码校验)    2.配置校验(自动校验,基于Annotation,基于XML) 1.手动校验:    要求:Action类必须继承ActionSupport,需要重写validate()方法(是Validateable接口中的

使用Struts2实现数据校验

为什么需要数据校验呢?答案很简单,假如当你登录想要京东,这时就需要数据校验了如果不输入用户名的话,那么就不会登陆成功,并且会提示出"请输入用户名"的字样 那么,在Struts2中实现数据校验的方法有哪些呢?接下来我们探讨一下. 实现数据校验有四种方法: 1.用execute()方法实现数据校验 编写一个Action,继承ActionSupport类,重写execute() 步骤1:在Web项目的cn.happy.action下创建一个ExecuteAction(UserInfo为用户实

Struts2学习第二天——获取参数与数据校验

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.06.14 lutianfei none struts2中获取请求参数 在struts2中action是什么?(struts2是一个mvc框架) View : jsp Model : action Control : action & StrutsPrepareAndExecuteFilter 1.属性驱动 1.直接将action做一个model(类似bean结构),就可以得到请求参数. 问题1:action封装请求参

Struts2学习第三天——保存登陆信息及数据校验

在JSP中服务器端保存数据的作用域通常有request.session.application,它们对应的Servlet API分别是HttpServletRquerst.HttpSession.ServletContext.同样在Struts2的控制器中也需要访问这些作用域. Struts2提供了一个ActionContext类,该类被称为Action上下文或者Action环境,Action可以通过该类访问最常用的ServletAPI. ServletAPI有多种访问方式: 1. Servle

Struts2(五)数据校验

一.概述 在提交表单数据时,如果数据需要保存到数据库,空输入等可能会引发一些异常,为了避免引起用户的输入引起底层异常,通常在进行业务逻辑操作之前,先执行基本的数据校验. 下面通过两种方式来阐述Struts 2的数据校验功能. 二.重写validate方法 我们编写的Action一般继承与ActionSupport,而ActionSupport不仅实现了Action接口,还实现了Validatable接口,提供了数据校验功能.在Validatable接口中定义一个validate方法,重写该方法,

深入分析JavaWeb Item46 -- Struts2数据校验与国际化

1.用户输入数据的校验 1.校验方式 a:客户端校验.(防君子防不了小人)在页面中写js脚本. 这样做的好处是: 输入错误的话提醒比较及时: 减轻服务器的压力 b.服务器端校验. 数据安全 ,整个应用阻止非法数据的最后防线 而在实际开发中通常选择:a+b 2.服务器端数据校验: 1.编程式校验:自己Action中编写一个校验代码(缺点:验证规则都写在了代码中) 前提:动作类继承ActionSupport,重写Validateable接口中的validate()方法 ,在该方法中完成验证. 步骤如

(转)struts2:数据校验,通过XWork校验框架实现(validation.xml)

转载自:http://www.cnblogs.com/nayitian/p/3475661.html struts2:数据校验,通过XWork校验框架实现(validation.xml) 根据输入校验的处理场所的不同,可以将输入校验分为客户端校验和服务器端校验两种.服务器端验证目前有两种方式: 第一种: 参考:struts2:数据校验,通过Action中的validate()方法实现校验,图解 第二种: 使用validate()方法校验时,如果Web应用中存在大量Action就需要多次重写val

Struts2学习笔记(九)——数据校验

Struts2的数据校验属于服务器端校验,Struts2 支持校验方式 : 手动校验(代码校验) :在服务器端通过编写java代码,完成数据校验 自动校验(配置校验) :XML配置校验(主流) 和 注解配置校验 1.手动校验 1)Struts2的手动校验步骤: 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法; 要继承ActionSupport类或者实现Validateable接口: 重写Validateable接口的validate()