`
gg19861207
  • 浏览: 182810 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用反射机制来验证上传文件的格式是否符合要求

阅读更多

public boolean validateFileType(String propertyName) throws Exception{
PropertyDescriptor[] propertydesc = Introspector.getBeanInfo(this.getClass()).getPropertyDescriptors();
boolean exsit = false;
for(PropertyDescriptor property : propertydesc){
if(property.getName().equals(propertyName)){
exsit = true;
Method method = property.getReadMethod();
if(method!=null){
FormFile formfile = (FormFile) method.invoke(this);
if(formfile!=null && formfile.getFileSize()>0){
List<String> arrowType = Arrays.asList("image/bmp","image/png","image/gif","image/jpeg","image/pjpeg");
return arrowType.contains(formfile.getContentType().toLowerCase());
}
}else{
new RuntimeException(propertyName+"属性的getter方法不存在");
}
}
}
if(!exsit) new RuntimeException(propertyName+"属性不存在");
return true;
}

这个方法其实有点过于复杂化了,因为要实现的功能就是判断上传的文件的类型,因为上传的文件在Struts中都是用FormFile来保存的,所以可以有以下的解决方案:

1:在每一个模块的formbean当中都提供一个方法,该方法只要接受FormFile类型的属性,就可以判断该上传文件是什么类型的了。

2:为了实现封装,可以在BaseForm当中提供一个方法,就是上面的这个方法,这个方法使用的是反射机制,就是你只需要传递一个属性的名称,就可以通过反射机制来得到该属性所引用的对象,然后就可以判断该属性的类型,所以在验证的时候,不同的formbean(都继承自BaseForm)就都可以调用上面的这个方法(只要传递的参数不同就可以,比如参数可以是logofile,uploadfile),但是由于反射机制以及上面这个方法的代码决定,logofile,uploadfile都必须是FormFile类型的)

3:以可以有一个简便的方法,就是:

public boolean validateFileType(FormFile formfile) throws Exception{

if(formfile!=null && formfile.getFileSize()>0){
List<String> arrowType = Arrays.asList("image/bmp","image/png","image/gif","image/jpeg","image/pjpeg");
return arrowType.contains(formfile.getContentType().toLowerCase());
}

return true;
}

这样看来的话,第一个用反射机制的方法确实是多此一举,因为完全可以使用上面的这个简单方法来实现该功能,只需要在调用的时候传入不同的FormFile类型的对象就可以了(反射机制的那个方法也是得传入不同的参数,传递的是属性名,即简单方法的传递的参数可能是formfile ,反射机制的方法可能传递的参数是“formfile”)

分享到:
评论

相关推荐

    利用java反射机制的建议计算器源码

    通过这个例子,新手可以学习到如何使用Java反射机制来增强代码的动态性,以及如何设计可扩展的系统。反射在很多场景下都很有用,例如在插件系统、序列化、动态代理等领域都有广泛应用。然而,需要注意的是,反射也...

    利用java反射机制解析XML文件

    利用java反射机制读取XML文档,省去了花费很多时间浪费在判断元素名词上面。

    dom4j解析xml,利用反射机制

    在这个项目中,我们利用DOM4J来解析XML文件,并通过Java的反射机制将解析出的信息存储到特定的类中。 首先,我们需要了解XML的基本概念。XML(Extensible Markup Language)是一种标记语言,常用于数据交换和结构化...

    C++反射机制实现

    综上所述,C++的反射机制实现需要考虑到语言的特性,如静态类型、性能要求等,并且需要选择合适的方法来添加反射能力。这些实现方式中,利用宏定义、模板和泛型编程技术是较为常见和有效的选择。通过这些技术,C++...

    反射机制和类加载机制学习总结

    2. **验证**:确保类文件符合JVM规范,不会给JVM带来危害。 3. **准备**:为类的静态变量分配内存,并设置初始值。 4. **解析**:将符号引用转换成直接引用。 5. **初始化**:执行类构造器`()`。 #### 七、类加载器...

    基于Java反射机制的Excel文件导出实现.pdf

    2. 通过Java反射机制,获取用户选择的数据列信息,并将其转换为Excel文件的格式。 3. 将转换后的数据写入到Excel文件中,并保存到指定的文件路径中。 该方法可以实现用户自行选择数据列的Excel导出,提高了导出文件...

    Qt 反射机制实现,通过类名创建对象

    反射是指程序在运行时动态获取对象属性与方法的一种机制,即编译器需要将类型信息(属性类型与偏移地址以及成员函数的地址等信息)编译到程序文件中,当程序运行时将这些信息加载到内存中去,做到运行时只根据对象的...

    一种基于Java注解和反射机制的Excel文件读写操作方法.pdf

    在处理Excel文件时,反射机制可以动态地根据Excel文件中数据的格式和内容,来决定执行哪些操作。这种机制有助于实现程序的灵活性和可扩展性,因为它可以避免硬编码和固定的数据结构依赖。 3. Excel文件操作的改进...

    java反射机制.zip

    java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...

    利用反射和动态代理机制实现自定义拦截器Interceptor

    在本文中,我们将探讨如何利用反射和动态代理机制来实现自定义拦截器Interceptor。拦截器Interceptor是一种常见的设计模式,用于在方法调用前后执行某些操作,以实现日志记录、安全检查、性能监控等功能。下面我们将...

    Java反射机制

    - **框架开发**:许多框架(如Spring、Hibernate)都大量使用反射机制来实现其功能。 - **代码解析**:在开发IDE时,可以通过反射来获取类的信息进行代码提示和分析。 #### 四、Class对象 `Class`对象是反射的核心...

    反射机制例子及反射方法调用

    3. 测试框架:反射机制可以用于实现测试框架,测试框架可以使用反射机制来动态地加载和使用类、方法、变量等。 在这个例子中,我们可以看到反射机制的强大之处,它可以使我们的程序更加灵活和可扩展。但是,反射...

    Java中的反射机制

    反射不仅限于编程语言领域,近年来也被广泛应用于视窗系统、操作系统以及文件系统中。尽管“反射”一词在计算机科学中有着全新的含义,但它与物理学中的反射原理在某些方面存在相似之处,这有助于我们理解其概念。 ...

    利用宏实现反射机制

    总结来说,利用宏实现反射机制是一种创新的编程技巧,它可以为不支持或限制反射的语言提供类似的功能。通过宏,程序员可以在编译期间生成必要的代码,实现运行时对类和方法的动态操作,增强了代码的灵活性。在实际...

    java反射机制讲解

    Java反射机制是Java语言提供的一种强大的能力,它允许我们在运行时检查类的信息并动态地创建和操作对象。这种机制使得程序具有更高的灵活性和扩展性,尤其是在框架开发中有着广泛的应用。 首先,我们要理解反射的...

    java面试题--反射机制

    ### Java反射机制详解 #### 一、引言 在Java面试中,经常会出现与反射机制相关的题目。这是因为Java反射机制不仅是Java语言的一项重要特性,也是理解Java动态特性的关键所在。通过本文,我们将深入探讨Java反射...

    Qt 使用QMetaObject实现反射机制代码demo

    综上所述,这个代码示例展示了如何利用Qt的QMetaObject系统实现反射机制,使程序在运行时能够动态地了解和操作类的成员。这在编写高度动态和灵活的代码,或者需要进行元编程的应用场景中非常有用。通过理解并应用...

    java反射机制原理

    Java反射机制是Java编程语言中的一个核心特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这一机制使得Java具备了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用方法和访问...

Global site tag (gtag.js) - Google Analytics