问题一:中文乱码 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拦截器没有机会执行,因此看到的是页面没有任何变化,也没有任何提示信息,只是在控制台打印出了上面的那些上传文件过大的异常。