当前位置: 首页 > news >正文

拦截器实现文件过滤(JSP)

上面手动实现文件过滤的方式虽然简单,但毕竟需要书写大量的过滤代码,不利于程序的高层次解构,而且开发复杂。

Struts 2提供了一个文件上传的拦截器,通过配置该拦截器可以更轻松地实现文件过滤。Struts 2中文件上传的拦截器是fileUpload,为了让该拦截器起作用,只需要在该Action中配置该拦截器引用即可。

配置fileUpload拦截器时,可以为其指定两个参数。

Ø  allowedTypes:该参数指定允许上传的文件类型,多个文件类型之间以英文逗号(,)隔开。

Ø  maximumSize:该参数指定允许上传的文件大小,单位是字节。

通过配置fileUpload的拦截器,可以更轻松地实现文件过滤,当文件过滤失败后,系统自动转入input逻辑视图,因此必须为该Action配置名为input的逻辑视图。除此之外,还必须显式地为该Action配置defaultStack的拦截器引用。

通过拦截器来实现文件过滤的配置文件如下。

程序清单:codes\04\4.3\autoFilter\WEB-INF\src\struts.xml

 
  1. <?xml version="1.0" encoding="GBK"?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" 
  4.     "http://struts.apache.org/dtds/struts-2.1.7.dtd">     
  5. <struts>  
  6.     <constant name="struts.custom.i18n.resources" value="mess"/>  
  7.     <!-- 设置该应用使用的解码集 -->  
  8.     <constant name="struts.i18n.encoding" value="GBK"/>  
  9.     <package name="lee" extends="struts-default">  
  10.         <!-- 配置处理文件上传的Action -->  
  11.         <action name="uploadPro" class="org.crazyit.app.action.UploadAction">  
  12.             <!-- 配置fileUpload的拦截器 -->  
  13.             <interceptor-ref name="fileUpload">  
  14.                 <!-- 配置允许上传的文件类型 -->  
  15.                 <param name="allowedTypes">image/png  
  16.                     ,image/gif,image/jpeg</param>  
  17.                 <!-- 配置允许上传的文件大小 -->  
  18.                 <param name="maximumSize">2000</param>   
  19.             </interceptor-ref>  
  20.             <!-- 配置系统默认的拦截器 -->  
  21.             <interceptor-ref name="defaultStack"/>  
  22.             <!-- 动态设置Action的属性值 -->  
  23.             <param name="savePath">/uploadFiles</param>  
  24.             <!-- 配置Struts 2默认的视图页面 -->  
  25.             <result>/WEB-INF/content/succ.jsp</result>  
  26.             <result name="input">/WEB-INF/content/upload.jsp</result>  
  27.         </action>  
  28.         <action name="*">  
  29.             <result>/WEB-INF/content/{1}.jsp</result>     
  30.         </action>  
  31.     </package>  
  32. </struts>  

上面的拦截器过滤不仅过滤了文件的类型,也过滤了文件大小。上传文件的类型只能是图片文件,并且文件大小不能大于2000字节(当然,我们随时可以更改到更大)。如果我们上传文件的文件太大,系统将转入input逻辑视图,也就是/WEB-INF/content/upload.jsp页面。

注意:如果需要使用文件上传拦截器来过滤文件大小,或者过滤文件内容,则必须显示配置引用Struts默认的拦截器栈:defaultStack。而且fileUpload拦截器必须配置在defaultStack拦截器栈之前。

本文出自 “疯狂Java李刚” 博客,请务必保留此出处http://javaligang.blog.51cto.com/5026500/890915

相关文章:

  • LFI本地包含漏洞利用小技巧
  • MSSQL注入防范安全策略大全
  • NWebsec 1.0.3 The Security library for ASP.NET
  • 详细MSSQL注入语句
  • Microsoft IIS 短文件名/目录名 枚举漏洞
  • 如何更有效使用 Rational AppScan 扫描大型网站
  • Thinksns微博系统注入漏洞即后台拿webshell
  • PJBlog 3.2.9.518 getwebshell 漏洞
  • php5.4.3的远程代码执行漏洞,提权挺管用
  • DNS缓存中毒攻击与防护
  • Typecho导航栏上显示分类目录
  • 1分钟内保护你的Linux服务器—Server Shield v1.0.2
  • linux小技巧——添加永久生效的路由
  • nginx设置emlog伪静态
  • 让百度快速收录文章的方法
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【React系列】如何构建React应用程序
  • 2017前端实习生面试总结
  • ECS应用管理最佳实践
  • gops —— Go 程序诊断分析工具
  • JavaScript DOM 10 - 滚动
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Linux各目录及每个目录的详细介绍
  • Mithril.js 入门介绍
  • Netty源码解析1-Buffer
  • oldjun 检测网站的经验
  • Solarized Scheme
  • web标准化(下)
  • 分布式事物理论与实践
  • 关于使用markdown的方法(引自CSDN教程)
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 基于组件的设计工作流与界面抽象
  • 两列自适应布局方案整理
  • 前端之Sass/Scss实战笔记
  • 嵌入式文件系统
  • 如何用vue打造一个移动端音乐播放器
  • 数据仓库的几种建模方法
  • 为什么要用IPython/Jupyter?
  • 我有几个粽子,和一个故事
  • - 转 Ext2.0 form使用实例
  • 7行Python代码的人脸识别
  • linux 淘宝开源监控工具tsar
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​io --- 处理流的核心工具​
  • # Maven错误Error executing Maven
  • #、%和$符号在OGNL表达式中经常出现
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #LLM入门|Prompt#3.3_存储_Memory
  • #在 README.md 中生成项目目录结构
  • (06)Hive——正则表达式
  • (8)STL算法之替换
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)计算机毕业设计ssm电影分享网站