`
一代宗师
  • 浏览: 15616 次
社区版块
存档分类
最新评论

Struts2对Action提交方法进行验证

阅读更多

 

 

【Struts2】★☆之struts2对Action提交方法进行验证

 

 

    在实际的开发项目中,我们通常采用的是js对我们输入的值进行验证,例如,用户名的长度,密码长度,等等。但是这样做,不好之处就是我们可以通过人为的将开发者的验证js注掉,这样就导致验证失败,对后台安全性是一个很大的威胁,在采用struts2进行开发时,我们可以采用框架内置的校验器,对我们的Action进行校验。本文所讲诉的就是如何使用重写struts2中的ActionSupport里面的validate方法对输入值进行校验。

 

    ok,看下面代码!

 

1、搭建struts2开发环境-struts2开发环境

 

2、编写我们的Action方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package csg.struts2.action;
 
import java.util.regex.Pattern;
 
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
 
/**
 
 * @author 小夜的传说
 * @2014-7-20
 * @validate
 * @csg.struts2.action
 * @StrutsAction
 * @2014-7-20下午7:21:26
 */
public class StrutsAction extends ActionSupport {
    private static final long serialVersionUID = 1L;
    private String username;
    private String mobile;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
     
    public String update(){
        ActionContext.getContext().put("message""更新成功");
        return "success";
    }
    public String save(){
        ActionContext.getContext().put("message""保存成功");
        return "success";
    }
    /**
     * 全局方法进行验证
     */
    /*@Override
    public void validate() {
        if(this.username==null||"".equals(this.username.trim())){
            this.addFieldError("username", "用户名不能为空");
        }
        if(this.mobile==null||"".equals(this.mobile.trim())){
            this.addFieldError("mobile", "手机号不能为空");
        }else{
            if(!Pattern.compile("^1[358]\\d{9}$").matcher(this.mobile).matches()){
                this.addFieldError("mobile", "手机号格式不正确");
            }
        }
        super.validate();
    }*/
    /**
     * 单个方法进行验证
     */
    public void validateSave() {
        if(this.username==null||"".equals(this.username.trim())){
            this.addFieldError("username""用户名不能为空");
        }
        if(this.mobile==null||"".equals(this.mobile.trim())){
            this.addFieldError("mobile""手机号不能为空");
        }else{
            if(!Pattern.compile("^1[358]\\d{9}$").matcher(this.mobile).matches()){
                this.addFieldError("mobile""手机号格式不正确");
            }
        }
        super.validate();
    }
}

 

    在这里讲解一下,我们的validate()方法会对我们Action里面的所有方法进行验证,但是比如说我们的get,list方法是不需要验证的所以通过validateXxx这样就可以对我们单个方法进行验证(validateXxx注意我们需要被验证的方法名首字母一定要大写)

 

ok,

 

3、编写我们的jsp提交页面(index.jsp)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>后台验证表单提交</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>
  <s:fielderror/><!--获取验证失败之后的提示信息-->
  <body>
    <form action="/validate/test/list_save" method="post">
        用户名:<input type="text" name="username"/>不能为空<br/>
        手机号:<input type="text" name="mobile"/>不能为空符合手机号格式<br/>
    <input type="submit" value="提交"/>
    </form>
  </body>
</html>

 

大家注意了,当我们验证成功之后,我的提示信息通过ActionContext.getContext()直接放在request范围里面,那么我们的验证失败之后的信息呢?这个就是放在ActionSupport里面这个属性中(看一下源码就知道了),ActionSupport里面有如下这段代码!

 

1
2
3
 public void addFieldError(String fieldName, String errorMessage) {
        validationAware.addFieldError(fieldName, errorMessage);
    }

 

但是当我们验证失败之后,ActionSupport默认返回的是return "input"视图,所以我们需要在struts.xml中配置一项视图,如下

 

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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="struts" namespace="/test" extends="struts-default">
        <action name="list_*" class="csg.struts2.action.StrutsAction" method="{1}">
            <result name="success">/WEB-INF/page/success.jsp</result>
            <result name="input">/index.jsp</result>
        </action>
    </package>
</struts>

 

那么在index.jsp中我们就可以直接通过struts标签来取到

this.addFieldError里面的值。

 

ok,我们验证成功之后,直接转发到success.jsp页面,里面直接通过el表达式,${message}取到值

 

源码下载:通过struts2中的validate()方法进行Action验证-源码

 

 

 

0
0
分享到:
评论

相关推荐

    struts2对Action提交方法进行验证

    在实际的开发项目中,我们通常采用的是js对我们输入的值进行验证,例如,用户名的长度,密码长度,等等。但是这样做,不好之处就是我们可以...本附件为【Struts2】★☆之struts2对Action提交方法进行验证,下载源码!

    struts2 对action中的所有方法进行校验

    下面我们将深入探讨Struts2如何对Action中的所有方法进行校验。 首先,Struts2的校验机制基于两个主要组件:Validator和ValidationInterceptor。Validator负责定义校验规则,而ValidationInterceptor则是在执行...

    struts2官方例子7-表单验证 xml形式的验证

    总结起来,Struts2的XML表单验证是通过创建XML文件定义验证规则,然后在Action类中处理数据,通过框架自动进行验证并返回错误信息。这种方式使得验证逻辑与业务逻辑分离,提高了代码的可维护性和复用性。对于大型...

    struts2验证框架

    在 Struts2 中,验证机制是通过 validator 来实现的,该机制可以对用户输入的数据进行验证,从而确保数据的正确性和一致性。 在 Struts2 中,验证分为两部分:客户端验证和服务器端验证。客户端验证是指在浏览器端...

    struts2登陆验证

    5. **数据验证**:在Action的`login()`方法中,需要对用户输入的数据进行校验。可以使用Struts2的Validator框架,通过定义验证规则文件(如login-validation.xml)来自动执行验证。 6. **会话管理**:如果验证成功...

    struts2 + jquery +ajax 登录验证

    2. 当表单提交时,使用jQuery的`$.ajax()`方法,设置URL为Struts2的Action地址,数据为用户名和密码,类型通常为POST。 3. 在Ajax的success回调函数中,接收到服务器返回的验证结果,如果成功则更新页面状态,例如...

    Struts2防止重复提交解决方案

    这里,`defaultStack`包含了Struts2的默认拦截器,`token`拦截器被添加到栈中,并且设置了`includeMethods`参数,指定了哪些方法需要进行重复提交检查。 2. **创建令牌**:当用户首次访问包含表单的页面时,服务器...

    struts2 登陆注册 以及验证

    登录时,Action会接收到HTTP请求中的参数,如username和password,然后调用业务层方法进行验证。如果验证成功,通常会将用户信息保存到Session中,以便后续请求识别用户状态。注册过程则包括接收用户提交的信息,...

    Struts2用validate方法进行表单验证

    在Struts2中,我们可以利用validate方法进行高效且灵活的前端数据验证,确保用户输入的数据满足业务规则,从而提升应用的安全性和用户体验。 在Struts2中,表单验证主要依赖于两个核心组件:Action类和Validator...

    整合了struts2 jquery的formValidator表单验证的页面代码

    6. **Struts2 Action处理**:在后台,Struts2 Action会接收到Ajax请求,对提交的数据进行校验,如果一切正常,可以进行业务逻辑处理,如保存用户信息,否则返回错误信息。 7. **反馈结果**:最后,前端根据Ajax请求...

    Struts2 in action中文版

    11.1.2 Struts 2如何解决本地Java对i18n支持的问题 243 11.2 Struts 2 i18n示例 244 11.2.1 Struts 2 i18n快速展示 244 11.2.2 幕后一览 246 11.3 Struts 2 i18n详情 247 11.3.1 Struts 2默认的TextProvider Re-...

    struts2令牌解决页面重复提交问题

    3. **表单提交**:用户填写完表单并提交后,Struts2拦截器会自动将表单中的令牌值与session中的令牌进行比较。 4. **验证令牌**:如果两者匹配且令牌未被使用过,那么处理表单请求;若不匹配或令牌已被使用,Struts...

    基于用户登陆的struts2中action的分类实例

    本实例将深入探讨在基于用户登录场景下,如何在Struts2中对Action进行分类和设计。 首先,我们需要了解Struts2中的Action是如何工作的。一个Action类通常对应一个具体的业务操作,比如登录、注册、修改个人信息等。...

    struts2简单的登陆验证

    这个"struts2简单的登陆验证"项目是一个基础入门级别的教程,适合初学者学习理解Struts2的核心概念和工作原理。 在Struts2中,登陆验证是常见的功能,涉及到用户身份的确认和权限控制。下面我们将详细探讨Struts2...

    struts2验证框架示例

    在Struts2中,验证框架是其核心特性之一,它允许开发者对用户输入的数据进行校验,确保数据的完整性和安全性。这个“struts2验证框架示例”提供了深入理解并实际操作Struts2验证功能的机会。 首先,让我们了解一下...

    struts2连接mysql数据库登录验证程序

    1. **Struts2框架**:Struts2作为MVC设计模式的实现,负责处理HTTP请求,通过Action类将用户请求映射到业务逻辑,并将结果传递给视图进行展示。它的核心组件包括FilterDispatcher(或现在的...

    struts2 防止表单重复提交的例子

    Struts2框架提供了一种解决方案,即使用Token机制来防止表单的重复提交。以下是对这个主题的详细说明: 1. **表单重复提交问题**:当用户在提交表单时,由于网络延迟或用户误操作,可能会导致同一个表单被多次提交...

    struts2 valadation验证

    当用户提交表单时,Struts2会根据Action类中声明的`@Validated`注解或XML配置文件来调用相应的Validator,对请求参数进行验证。验证规则通常定义在Action类的属性上,使用JavaBeans规范的`@.Validate`注解,或者在...

    struts2验证框架简单示例

    Struts2验证框架主要负责在服务器端检查用户提交的数据。它通过配置文件或注解定义验证规则,并在动作执行前进行验证。如果数据无效,框架会阻止动作的执行,并将错误信息返回给用户。 ### 二、验证配置 1. **XML...

    Struts2_Action

    以上内容介绍了Struts2 Action的核心知识点,包括其概念、配置方法、Action类的编写以及与Struts2框架的交互方式。在实际开发中,开发者可以根据具体需求,灵活运用这些知识点来构建健壮、可扩展的Web应用程序。

Global site tag (gtag.js) - Google Analytics