文档章节

Struts2上传文件学习笔记

键盘小生
 键盘小生
发布于 2012/06/10 00:00
字数 721
阅读 210
收藏 4

问题一:中文乱码

在使用Struts2实现文件上传时,若上传文件名为中文,则会在项目的发布目录中看上传文件名显示为乱码。解决办法很简单:

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

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

问题二:上传过大时抛出org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException异常

解决办法:在struts.xml配置文件中:

<constant name="struts.multipart.maxSize" value="100000000">;若这时还不行,需重写struts.properties文件:将strtuts.multipart.maxSize = 50097152 改为struts.multipart.maxSize=1000000000;

上两种方法试后,在我的demo中还是抛错,JVM内存溢出。这时就得对JVM内存进行调优。我们知道JVM默认可使用内存上限为64M;也就是说当我们要上传的文件超过64M后,那么错误也就接踵而来。

可以通过设置其最大和最小值来实现.设置的方法主要是几个.

1.可以在windows 更改系统环境变量
加上JAVA_OPTS=-Xms64m -Xmx512m

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

© 著作权归作者所有

上一篇: 传统文件上传
下一篇: Xml的CRUD操作
键盘小生
粉丝 2
博文 23
码字总数 10930
作品 0
浦东
私信 提问
加载中

评论(1)

TeamCenter
TeamCenter
<constant name="struts.i18n.encoding" value="gbk/gb2312">
会抛异常
value=gb18030就可以了


个人愚见
struts2学习笔记之文件上传

文件上传基础知识: 表单的enctype类型: 1 普通表单(默认):application/x-www-form-urlencoded 会将表单的元素值编码为url传输格式(用什么编码则根据页面编码而定)格式如param1=v1¶m...

美码师
2011/09/07
0
0
3.6 Struts2上传文件

3.6.1上传单个文件 Struts2的文件上传默认使用的是Jakarta的Common-FileUpload文件上传框架。因此需要增加两个Jar包,即:common-io-1.4.jar和commons-fileupload-1.2.1.jar。 下面举例实现文...

JerryPan
2016/02/24
243
0
《JavaEE基础实用教程》笔记说明

“《JavaEE基础实用教程》笔记”分类中的文章是本人学习《JavaEE基础实用教程》时所做的笔记。 该书作者:郑阿奇 著。ISBN:9787121091360。 这里整理出第3、4、5章的笔记,主要内容是Strut...

JerryPan
2016/02/19
1K
1
day25_Struts2学习笔记_01

一、框架概述   把重复性的繁琐的代码起来。使程序员在编码中把更多的精力放业务需求的和上面。   :封装了很多细节,程序员在使用的时候会非常简单。 三大框架:Struts2、Spring、Hiberna...

黑泽明军
2018/06/23
0
0
Struts2实现文件上传和下载

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来比较繁琐,...

颖辉小居
2015/11/26
78
4

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu环境下安装PaddlePaddle

开篇 深度学习技术是目前非常热门的技术,笔者在闲暇之余决定学习一下这门技术,入门选择了百度开源的PaddlePaddle框架。 paddlepaddle介绍 飞桨(PaddlePaddle) 是国际领先的端到端开源深度学...

豫华商
45分钟前
3
0
LeetCode 第 287 号问题:寻找重复数,一道非常简单的数组遍历题,加上四个条件后感觉无从下手

今天分享的题目来源于 LeetCode 第 287 号问题:寻找重复数。 题目描述 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只...

五分钟学算法
57分钟前
3
0
vuex mapActions

本文转载于:专业的前端网站➧vuex mapActions 在组件中使用 this.$store.dispatch('xxx') 分发 action,或者使用 mapActions 辅助函数将组件的 methods 映射为 store.dispatch 调用(需要先在...

前端老手
59分钟前
4
0
使用bash -x 调试信息查看lvextend -r的调用

--1.打开调试: [root@db01 storage]# set -x --2.执行命令: [root@db01 storage]# /usr/sbin/lvextend -r -L 710M /dev/shazam/storage + /usr/sbin/lvextend -r -L 710M /dev/shazam/sto......

突突突酱
今天
4
0
Linux重定向及反弹shell详解

这里说Linux重定向的原因主要还是为了详细了解一下Linux中的反弹shell 目录 0x01 文件描述符 0x02 重定向 0x03 反弹shell 0x04 交互重定向 0x05 命令变形 0x01 文件描述符 Linux的文件描述符...

无心的梦呓
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部