日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用Struts拦截器限制上传图片的格式和大小

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用Struts拦截器限制上传图片的格式和大小 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在這之前

Struts的一個核心功能就是大量的攔截器,既然是框架,那么自然也就貼心地為我們準備好了各種常用的功能,比如這里即將討論的如何限制上傳圖片的格式和大小。那么既然是使用Struts已經寫好的攔截器,不需要我們去自定義了,那么這個攔截器的基本配置如何進行?在哪里進行配置?
以上,要弄懂基本原理的話,就要先了解Struts運行的大致流程。

Struts的運行大致流程

核心運行流程:Struts的啟動是依靠 StrutsPrepareAndExecuteFilter 過濾器來完成,當過濾器啟動時會執行其 init() 方法,它會去讀取Struts的配置信息,并將其封裝到JavaBean中,然后執行過濾器的 doFilter() 來解析地址,實例化Action并根據result進行頁面的跳轉。在Action的執行前后,會執行各類功能不同的攔截器。
用一張圖來說明以上的過程,就是:
很明顯,init() 中讀取的配置文件至關重要,這里有幾個核心文件被讀取,分別是 default.properties、struts-default.xml、struts-plugin.xml、struts.xml,并且按順序讀取,同樣的變量和配置項,后讀取的配置文件會覆蓋已讀取的配置文件。這也就是即使前幾個文件是Struts配置好的我們沒法改變,我們也依然可以通過在struts.xml中進行相關變量的配置來進行最終實現上的改變。
default.properties 中,定義了Struts中大量的常量,也就是許多設置的默認值。

而攔截器這部分的配置信息,在 struts-default.xml 中,它在 struts2-core-x.x.x 核心包的根目錄下,它不僅包含了大量bean的定義,還有大量的攔截器、攔截器棧,同時還定義了11種不同類型的頁面跳轉方式(result-type)等等。(這也就是我們的Action在配置時候總要extends struts-default.xml 的原因)
在struts-default.xml中,默認使用的是?defaultStack 這個攔截器棧,其中包含了一系列的攔截器(如下圖)可以看到,fileUpload攔截器正是默認攔截器棧的一員,而我們,就要從這里入手,來實現我們對上傳圖片的限制功能。?

如何使用攔截器限制上傳圖片

我們先來看看源碼,在之前已經說過,fileUpload這個攔截器是我們默認攔截器棧中的一員,我們同樣在default-struts.xml中來找到該攔截器:打開Struts文件上傳的攔截器org.apache.struts2.interceptor.FileUploadInterceptor,發現其包含三個重要屬性
它們分別表示的是:
  • 上傳文件的最大長度(單位為字節)(在default.properties我們可以查到struts.multipart.maxSize=2097152,即默認最大為2M大小的文件
  • 允許上傳文件的類型
  • 允許上傳文件的文件擴展名。

而之前我們提到的,這些默認的配置可以在struts.xml中將其默認值覆蓋,所以我們如果要限制上傳為jpg、png類型的最大為1M的圖片,那么:(圖例為使用限制文件擴展名的方式)?
以上,叨叨了這么多,其實也就這么簡單的幾排,就完成了我們想要的功能。另外,還要提醒的是,雖然如此配置讓struts幫我們完成了對文件上傳的限制,但是假如我們上傳了不符合條件的文件,會發生什么?
答案是,系統會報錯,并使Action自動直接返回 “input” ,所以不需要在action中的方法出現一個 return "input",同時,我們還要對返回的result name=“input” 進行配置,以便于即使上傳了不符的文件,頁面也能正常跳轉:(圖例讓其跳轉到mainAction中執行 input() 方法)?
也可以參考如下方式:
至此,我們就對Struts攔截器完成圖片上傳限制的功能進行了了解和使用。

參考鏈接和源碼

參考鏈接
  • struts2--上傳總結(限制大小和類型 非法上傳的跳轉)
  • 用文件上傳了解struts2攔截器的使用
  • Struts2文件上傳

源碼地址
  • 源碼地址Github
  • 功能實現前,commit id:11e893eea4baea2683d6083368c758a3afe1a0bf
  • 功能實現后,commit id:2a6127d1d50eeeb98fa64e19b8d4321f9d61b360

附:struts.xml概述和配置文件的思維導圖

轉載于:https://www.cnblogs.com/deng-cc/p/6370322.html

總結

以上是生活随笔為你收集整理的利用Struts拦截器限制上传图片的格式和大小的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。