struts文件上传和遇到的问题
2012-05-03 21:48
513 查看
1.这里从学习中遇到的问题入手:代码运行异常情况是:
Error setting expression 'image' with value '[Ljava.lang.String;@b1221b'
ognl.MethodFailedException: Method "setImage" failed for object com.jdf.fileupload1.HelloWorldAction@11c345a
[java.lang.NoSuchMethodException: com.jdf.fileupload1.HelloWorldAction.setImage([Ljava.lang.String;)]
异常中的
image,setImage ,com.jdf.fileupload1.HelloWorldAction会在下面的代码中给出。
2.程序源代码
2.1程序用到的包:这个大家都知道,不再讨论
2.2上传页面代码:fileupload.jsp
action :处理上传文件的actin调用路径,在struts.xml配置的
enctype:就是说,在发送到服务器之前,所有字符都会进行编码。用于文件的传输(当然包括图片)
只给出了form表单中的内容。代码简答,只为说明问题
2.2 action类:HelloWorldAction.java,在我的机子上位于package com.jdf.fileupload1包中,
这也是上面提到的com.jdf.fileupload1.HelloWorldAction的由来
2.3struts.xml配置信息
2.4.结果展示试图showmessage.jsp
${message }:显示HelloWorldAction.java中ActionContext.getContext().put("message", "上传成功");message映射的值
3.程序结果:
刚开始的时候控制台显示:
刚开始很郁闷:瞪着两眼去寻找哪里出错了---通过网上查资料,可能原因如下
一:粗心:(不要郁闷啊,好多错误都是粗心的结果):enctype写成entype.,改过来之后还是出现同样错误。怎么回事呢、?---忘了重新部署工程了(我用的myeclipse)
二:method方法设置错误---这里坚决要用post方法,用get方法就会出现出项本文开头的错误。一是文件大小的限制,貌似还有传输数据的类型的关系。因为即使用get方法传输一个空文件也是会出项错误的。
4.期望的结果
正确的输出应该是:
Error setting expression 'image' with value '[Ljava.lang.String;@b1221b'
ognl.MethodFailedException: Method "setImage" failed for object com.jdf.fileupload1.HelloWorldAction@11c345a
[java.lang.NoSuchMethodException: com.jdf.fileupload1.HelloWorldAction.setImage([Ljava.lang.String;)]
异常中的
image,setImage ,com.jdf.fileupload1.HelloWorldAction会在下面的代码中给出。
2.程序源代码
2.1程序用到的包:这个大家都知道,不再讨论
2.2上传页面代码:fileupload.jsp
<form action = "${pageContext.request.contextPath }/test/fileupload" enctype="multipart/form-data" method = "post"> 文件:<input type ="file" name="image" /> <input type = "submit" value = "上传"/>
action :处理上传文件的actin调用路径,在struts.xml配置的
enctype:就是说,在发送到服务器之前,所有字符都会进行编码。用于文件的传输(当然包括图片)
只给出了form表单中的内容。代码简答,只为说明问题
2.2 action类:HelloWorldAction.java,在我的机子上位于package com.jdf.fileupload1包中,
这也是上面提到的com.jdf.fileupload1.HelloWorldAction的由来
import java.io.File; import org.apache.commons.io.FileUtils; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; public class HelloWorldAction { /* * 名称与fileupload.jsp中form表单中file类型的input的名称相同。 * <input type ="file" name="image" /> */ private File image;// private String imageFileName; public HelloWorldAction(){ } public String getImageFileName() { return imageFileName; } public void setImageFileName(String imageFileName) { this.imageFileName = imageFileName; } public File getImage() { return image; } public void setImage(File image) { this.image = image; } public String execute() throws Exception{ String realpath = ServletActionContext.getServletContext().getRealPath("/images");//存放上传的文件的路径 System.out.println(realpath); System.out.println(imageFileName); System.out.println(image); if(image!=null){ File savefile = new File(new File(realpath), imageFileName); if(!savefile.getParentFile().exists()) savefile.getParentFile().mkdirs(); FileUtils.copyFile(image, savefile); ActionContext.getContext().put("message", "上传成功");//为了上传成功后显示信息 } return "success"; } }
2.3struts.xml配置信息
<package name="itcast" namespace="/test" extends="struts-default"> <action name="fileupload" class="com.jdf.fileupload1.HelloWorldAction" method="execute" > <result name="success">/showmessage.jsp</result> </action> </package>
2.4.结果展示试图showmessage.jsp
<body> 传输状态: ${message } </body>
${message }:显示HelloWorldAction.java中ActionContext.getContext().put("message", "上传成功");message映射的值
3.程序结果:
刚开始的时候控制台显示:
Error setting expression 'image' with value '[Ljava.lang.String;@b1221b' ognl.MethodFailedException: Method "setImage" failed for object com.jdf.fileupload1.HelloWorldAction@11c345a [java.lang.NoSuchMethodException: com.jdf.fileupload1.HelloWorldAction.setImage([Ljava.lang.String;)] savefile 的值:D:\apache-tomcat\webapps\struts2\images imageFileName的值:null image的值:null
刚开始很郁闷:瞪着两眼去寻找哪里出错了---通过网上查资料,可能原因如下
一:粗心:(不要郁闷啊,好多错误都是粗心的结果):enctype写成entype.,改过来之后还是出现同样错误。怎么回事呢、?---忘了重新部署工程了(我用的myeclipse)
二:method方法设置错误---这里坚决要用post方法,用get方法就会出现出项本文开头的错误。一是文件大小的限制,貌似还有传输数据的类型的关系。因为即使用get方法传输一个空文件也是会出项错误的。
4.期望的结果
正确的输出应该是:
D:\apache-tomcat\webapps\struts2\images 学语言.txt-------传输的文件 D:\apache-tomcat\work\Catalina\localhost\struts2\upload__2c40c23_13712ca2ea4__7fff_00000007.tmp
相关文章推荐
- struts文件上传和遇到的问题
- struts中post方式上传文件,enctype="multipart/form-data",request.getParameter("file") 是null的问题分析
- struts2上传下载文件中遇到的乱码问题
- html使用iframe实现伪异步表单,实现无刷新上传文件时遇到的问题
- Struts2中实现文件上传遇到的问题
- 使用commons-fileupload.jar servlet上传文件 遇到的问题
- php上传文件遇到的问题
- 上传图片文件遇到的文件损坏问题
- Struts文件上传allowedTypes问题,烦人的“允许上传的文件类型”
- 表单包含file上传文件提交,使用ajaxSubmint或者ajaxForm 遇到的问题以及解决方法
- struts上传大文件失败的问题
- 使用FTPClient文件上传下载遇到的问题
- Struts2开发遇到的问题之多文件上传
- 搭建SSH框架遇到的struts.xml找不到spring定义的bean的错误(配置文件的路径问题)
- struts 上传文件乱码问题解决方法
- HTML表单上传文件时遇到PHP无法获取文件的问题
- 再问struts多文件上传的问题
- Struts文件上传allowedTypes/allowedExtensions问题
- Struts文件上传allowedTypes问题,烦人的“允许上传的文件类型”
- SpringMVC上传文件遇到的问题