struts检验

struts2对用户输入数据的校验方法有两种方式,一种是通过编码的方式,另一种则是通过使用XML配置方式。

本章主要介绍struts2编码方式的输入校验。以下将结合一个实例程序进行说明。

代码结构:

image

关键代码:

RegistAction.java
regist.jsp
struts.xml

RegistAction.properties:

image

struts2的ActionSupport提供了validate这种输入校验方法用于对用户输入的数据进行检验,在将用户数据传递到具体的action处理方法(toRegist)前会先调用validate方法进行输入校验,同时用户也可以自己定义对应方法(toRegist)的校验方法(validateToRegist),另外,struts2也提供了内置类型转换功能(例如:传递一个非数字给age(Integer),传递非日期类型给birthday(Date)),调用顺序:内置类型转换->validateToRegist->validate->toRegist

如果未定义特地的处理方法(toRegist)将使用默认的execute方法,这时如果想要定制检验方法,可以自定义一个validateExecute方法进行检验,将validate方法空实现。

当struts2用户输入数据传递到后台进行内置类型转换时,如果转换失败,默认的提示信息如下:

imageimage

这时如果我们想要定制提示信息可以在对应的Action的目录下添加一个Action类名.properties文件(RegistAction.properties)更改默认的提示信息,命名方式为:invalid.fieldvalue.检验对象=提示信息  如:invalid.fieldvalue.birthday=出生日期格式错误,因为properties文件对中文需转换为Unicode编码,所以最好使用IDE自带的properties文件编辑模式,会自动将对应的中文转换为Unicode编码。

image

修改默认提示信息后:

image

struts2中的检验错误默认两种:ActionError、FieldError。其中ActionError是Action级别的错误,FieldError是属性错误。可以通过addActionError和addFieldError添加这两类检验错误的提示信息,addFieldError有两个参数,分别是:属性名、提示信息。展示页面可以通过struts2标签<s:actionerror />显示ActionError,<s:fielderror />显示FieldError。另外,如果展示页面使用struts2的标签容纳属性输入,那么该属性的检验错误信息会默认显示在对应属性标签上。

以下是实例程序的实际运行效果:

imageimageimage

imageimageimage

原理解析:

ActionSupport双继承了Validateable和ValidationAware接口,validate()是Validateable接口中的方法,我们继承Validateable接口,实现validate()就可以在调用Action的execute()方法之前,执行validate()方法进行数据检验。

ActionSupport中有一个属性对象validationAware ,用于存放错误信息:

private final ValidationAwareSupport validationAware = new ValidationAwareSupport(); 
public void addActionError(String anErrorMessage) { 
    validationAware.addActionError(anErrorMessage); 

public void addActionMessage(String aMessage) { 
    validationAware.addActionMessage(aMessage); 

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

而ValidationAwareSupport对象中,错误信息实际是存放在几个集合中:

private Collection<String> actionErrors; 
private Collection<String> actionMessages; 
private Map<String, List<String>> fieldErrors; 
private Map<String, List<String>> internalGetFieldErrors() { 
    if (fieldErrors == null) { 
        fieldErrors = new LinkedHashMap<String, List<String>>(); 
    } 
    return fieldErrors; 

public synchronized void addFieldError(String fieldName, String errorMessage) { 
    final Map<String, List<String>> errors = internalGetFieldErrors(); 
    List<String> thisFieldErrors = errors.get(fieldName); 
    if (thisFieldErrors == null) { 
        thisFieldErrors = new ArrayList<String>(); 
        errors.put(fieldName, thisFieldErrors); 
    } 
    thisFieldErrors.add(errorMessage); 

public synchronized boolean hasActionErrors() { 
    return (actionErrors != null) && !actionErrors.isEmpty(); 

public synchronized boolean hasFieldErrors() { 
    return (fieldErrors != null) && !fieldErrors.isEmpty(); 

public synchronized boolean hasErrors() { 
    return (hasActionErrors() || hasFieldErrors()); 
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: struts2检测工具是一种可用于检测struts2框架应用程序中漏洞的软件。使用此类工具可以帮助开发人员和安全专业人员识别潜在的漏洞和弱点,并将其纠正,从而提高应用程序的安全性和可靠性。 struts2检测工具可以自动化执行模糊测试、扫描和漏洞验证过程,对于大型或复杂的应用程序,这非常有用。 与其他漏洞扫描程序类似,Struts 2检测工具可以查找许多不同类型的漏洞,包括跨站脚本攻击(XSS)、SQL注入攻击、认证漏洞、路径遍历漏洞等。此外,struts2检测工具还可以测量应用程序的性能和扩展性,并提供其他安全建议和建议以帮助开发人员构建更安全和可靠的应用程序。 总结而言,struts2检测工具是一种强大而有用的工具,可用于检测struts2应用程序中的漏洞并提供其他安全建议。它可以帮助开发人员和安全专业人员加强应用程序的安全性,提高它们的可靠性,并避免被利用或受到攻击。 ### 回答2: Struts2是Java开发中常用的MVC框架之一,由于其易用性和高效性,被广泛使用。然而,由于Struts2存在某些漏洞,如远程代码执行、安全性和验证漏洞,可能会导致应用程序受到攻击。 为了确保应用程序安全性,可以使用Struts2检测工具进行检测。目前市场上有一些流行的Struts2检测工具,例如:S2-057漏洞检测工具、S2-045漏洞检测工具等。这些工具利用各种方式扫描并检测是否存在Struts2漏洞。例如,S2-057漏洞检测工具可以通过发送特定的HTTP请求来检测应用程序是否存在此漏洞,而S2-045漏洞检测工具则可以扫描应用程序中的Struts2代码和配置文件,寻找可能导致漏洞的代码。 使用Struts2检测工具可以及时检测和排除漏洞,从而确保应用程序的安全性。因此,在开发过程中,应该注重代码和配置文件的安全性,并及时使用这些工具进行检测和排除漏洞。 ### 回答3: Struts2是一个Java Web应用程序的开源框架。随着它的使用越来越广泛,安全漏洞暴露的可能性也越来越大。因此,及时进行Struts2应用程序的安全检测是非常必要的。 目前市面上已有很多优秀的Struts2检测工具,例如OWASP Dependency Check、JFrog Xray、Snyk等等。这些工具可以对Struts2应用程序进行静态分析和动态分析,检测出应用程序中存在的漏洞和风险,并提供相应的解决方案和建议。这些工具的使用非常简单,只需要在应用程序中集成相应的依赖库,然后按照工具的指引进行使用即可。 利用Struts2检测工具,可以大大简化安全检测的过程,提高效率和准确性,降低应用程序安全漏洞被攻击的风险。建议开发人员在应用程序的开发和部署过程中一定要使用相应的安全工具,确保应用程序的安全性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值