做好了文件上传,当然也要做下对上传文件的校验了,我也不太清楚struts2有没有现成的验证文件后缀的方法,然后就自己写了一个,也蛮简单的~~~
在struts.xml同级目录下的validators.xml中加上一行配置文件
<validator name="postfixcheck" class="com.validators.PostfixCheck"/>
然后看PostfixCheck类代码
package com.validators;
import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;
public class PostfixCheck extends FieldValidatorSupport{
String validPostfix;
public String getValidPostfix() {
return validPostfix;
}
public void setValidPostfix(String validPostfix) {
this.validPostfix = validPostfix;
}
public void validate(Object object) throws ValidationException {
String fieldName = getFieldName();
String fileName = (String)this.getFieldValue(fieldName, object);
System.out.println(fileName);
String postfix = getExtention(fileName);
boolean valid = checkValid(validPostfix, postfix);
if(valid != true)
{
addFieldError(fieldName, object);
}
}
private static String getExtention(String fileName)
{
int pos = fileName.lastIndexOf(".");
return fileName.substring(pos + 1);
}
private static boolean checkValid(String validPostfix, String post)
{
boolean valid = false;
for(int i = 0, j = 0, k = 0;i < validPostfix.length();i ++)
{
if(validPostfix.charAt(k) != ',' && k != validPostfix.length() - 1)
{
k++;
}
else
{
String postfix;
if(k == validPostfix.length() - 1)
{
postfix = validPostfix.substring(j, k + 1);
}
else
{
postfix = validPostfix.substring(j, k);
}
if(postfix.equals(post))
{
valid = true;
break;
}
else
{
j = k;
j ++;
k ++;
}
}
}
return valid;
}
public static void main(String[] args)
{
System.out.println(checkValid("jpg,gif,jpfg,jpeg", "exe"));
}
}
最后当然是添加相应的验证文件了,依然是 Action名-validation.xml的格式
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphonyGroup//XWorkValidator1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="fileName">
<field-validator type="postfixcheck">
<param name="validPostfix">wma,mp3</param>
<message>文件格式错误</message>
</field-validator>
</field>
</validators>
就这么简单,应该蛮好懂的~~~
分享到:
相关推荐
在这个"struts2实现的文件上传(带文件类型和大小验证的)"示例中,我们将深入探讨如何在Struts2中实现这一功能。 首先,我们需要在Struts2的配置文件(struts.xml)中添加一个或多个action配置,用于处理文件上传...
在这里,我们将深入探讨Struts的基础知识、Validator验证框架以及国际化的实现。 **一、Struts框架基础** 1. **MVC模式**:Struts是基于MVC设计模式的,将业务逻辑、数据和用户界面分离,使得开发者可以独立地修改...
- **文件格式检查**:通过字符串操作判断文件后缀名是否属于预设的合法格式列表,如果不符合,则返回错误提示。 - **文件大小计算与显示**:根据文件的实际大小,将其转换为更易读的单位(如KB或MB),并格式化...
- **拦截器**:Struts2的核心之一,通过拦截器可以实现诸如文件上传、输入验证等功能。 - **处理与分配流程**: - **前端请求**:用户发起的HTTP请求。 - **StrutsPrepareAndExecuteFilter**:处理请求的第一道...
在Struts的配置文件(如struts-config.xml或struts2的struts.xml)中,可以定义动作映射来隐藏请求的后缀。例如,对于Struts1,可以将`<forward>`标签的路径设置为不包含`.action`的URL;对于Struts2,可以使用`...
Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中,为开发者提供了构建可维护、可扩展的Web应用程序的结构。本案例主要关注如何使用Struts2实现一个基本的登录功能。 首先,我们...
在标签“ST2”中,ST2即Struts2的缩写,进一步确认了该文件与Struts2框架及其相关的安全问题相关联。 至于压缩包中的"logs"文件,这通常表示日志文件。在安全工具中,日志文件会记录扫描过程、发现的漏洞以及任何...
Struts2是一个流行的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。在深入探讨Struts2的学习笔记之前,先来理解它的核心概念。 **1. Struts2依赖的JAR包** Struts2的运行离不开一系列的依赖库...
Struts2是一个强大的Java EE应用程序框架,主要用于构建Web应用程序,特别是MVC(Model-View-Controller)架构的应用。它的核心是Action,通过Action类来处理用户的请求并返回响应。本详解文档将涵盖从Struts2的基本...
### Apache Struts 2 Web Application Development ...通过本书的学习,读者不仅能够掌握Struts 2 的基本用法,还能深入了解其内部原理及最佳实践,为成为一名优秀的Java Web开发者打下坚实的基础。
创建一个名为`Logon`的类,继承自`ActionSupport`,这是Struts2提供的基础Action类,包含了一些内置的验证和国际化支持。在`execute()`方法中,我们进行简单的验证:如果用户名或密码为空,则返回`INPUT`,否则返回...
Struts2是一个流行的Java Web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。它简化了开发过程,提供了丰富的插件和动作,以及强大的表单验证和结果映射功能。以下是对搭建Struts2环境的详细步骤的说明...
#### 三、Struts2文件上传配置与实现 **1. 创建上传表单** 为了实现在Struts2中上传图片的功能,首先需要创建一个HTML表单用于文件的选择和提交。示例代码如下: ```html <font color="red"><s:fielderror />...
4. `<constant>` 元素:用于设置Struts2的全局常量,例如修改默认的Action后缀名,这里将Action后缀设置为".do"。 二、Web应用配置 1. `web.xml` 文件:是Servlet容器的部署描述符,配置了过滤器和监听器来启动和...
总结来说,文件内容涉及了Struts2框架的Action映射、业务逻辑处理、验证机制、结果页面跳转以及JSP页面与Struts2之间的交互。这些知识点在Web应用开发中具有广泛的运用,并且是Java Web开发工程师必须掌握的核心技能...
4. **`Struts.action.extension`**:设定Struts2处理的请求后缀,默认为`action`,可以设置多个后缀,如`json`、`xml`等。 5. **`Struts.enable.DynamicMethodInvocation`**:控制Struts2是否支持动态方法调用,...
2. **Struts2框架**: Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架。在这里,它被用来处理用户请求并返回相应的响应。Struts2提供了Action类,用户可以自定义Action类来处理业务...
"struts普通版.rar"可能是一个没有应用安全更新的Struts 2框架的版本,用于对比和研究漏洞的存在。在安全环境中,这种行为是禁止的,因为这可能违反法律,或者无意中为攻击者提供了练习平台。 "Struts终极漏洞利用...
使用struts2文件上传时,前台<input>name属性为myfile,则关于后台,下列说法错误的是(D)。** - **后台File类型属性命名应为file**,而不是其他形式,因为Struts2框架约定以file开头的参数作为文件上传处理。 ...
根据请求的后缀名(默认为.action),判断是否需要进一步处理。 3. **分发处理**:`FilterDispatcher`根据`struts.xml`配置,找到与请求匹配的Action,并调用其`execute`方法。 4. **执行业务逻辑**:Action对象...