Struts2上傳文件學習筆記

問題一:中文亂碼 java

在使用Struts2實現文件上傳時,若上傳文件名爲中文,則會在項目的發佈目錄中看上傳文件名顯示爲亂碼。解決辦法很簡單: linux

在struts.xml配置文件中配置: apache

<constant name="struts.i18n.encoding" value="gbk/gb2312">便可。 windows

問題二:上傳過大時拋出org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException異常 tomcat

解決辦法:在struts.xml配置文件中: spa

<constant name="struts.multipart.maxSize" value="100000000">;若這時還不行,需重寫struts.properties文件:將strtuts.multipart.maxSize = 50097152 改成struts.multipart.maxSize=1000000000; .net

上兩種方法試後,在個人demo中仍是拋錯,JVM內存溢出。這時就得對JVM內存進行調優。咱們知道JVM默承認使用內存上限爲64M;也就是說當咱們要上傳的文件超過64M後,那麼錯誤也就接踵而來。 xml

能夠經過設置其最大和最小值來實現.設置的方法主要是幾個. blog

1.能夠在windows 更改系統環境變量
加上JAVA_OPTS=-Xms64m -Xmx512m ip

2,若是用的tomcat,在windows下,能夠在

D:\tomcat7.0\bin\catalina.bat  中加上:

set JAVA_OPTS=-Xms64m -Xmx256m

位置在: rem Guess CATALINA_HOME if not defined  這行的下面加合適.

3.若是是linux系統
Linux  在{tomcat_home}/bin/catalina.sh的前面,加 
set JAVA_OPTS='-Xms64 -Xmx512'

JVM堆的設置是指java程序運行過程當中JVM能夠調配使用的內存空間的設置.JVM在啓動的時候會自動設置Heap size的值,其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。能夠利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置。
例如:java -jar -Xmn16m -Xms64m -Xmx128m MyApp.jar
若是Heap Size設置偏小,除了這些異常信息外,還會發現程序的響應速度變慢了。GC佔用了更多的時間,而應用分配到的執行時間較少。
Heap Size 最大不要超過可用物理內存的80%,通常的要將-Xms和-Xmx選項設置爲相同,而-Xmn爲1/4的-Xmx值。
Heap size的 -Xms -Xmn 設置不要超出物理內存的大小。不然會提示「Error occurred during initialization of VM Could not reserve enough space for object heap」。

摘自他人語錄:

 ---使用 struts2的攔截器也能夠進行限制文件的類型、大小等,可是當上傳文件大小2M後,這個攔截器就不起做用了,只用小於2M(默認大小)的時候才起做用。那是由於:common-fileupload組件默認最大支持上傳文件的大小爲2M,當咱們上傳大於2M的文件時,就會出現上面所說的異常。是這個異常的發生致使了fileUpload攔截器沒有機會執行,因此看到的是頁面沒有任何變化,也沒有任何提示信息,只是在控制檯打印出了上面的那些上傳文件過大的異常。

相關文章
相關標籤/搜索