新手求助,struts2文件上传的错误

问题描述

我在跑这段代码的时候遇到了java.lang.NullPointerException错误,代码和错误如下。可是如果我把execute函数改为直接返回SUCCESS就没有错误了,希望各位大神能帮帮我,谢谢了~publicclassUploadActionextendsActionSupport{//封装文件标题请求参数的属性privateStringtitle;//封装上传文件域的属性privateFileupload;//封装上传文件类型的属性privateStringuploadContentType;//封装上传文件名的属性privateStringuploadFileName;//直接在struts.xml文件中配置的属性privateStringsavePath;//接受struts.xml文件配置值的方法publicvoidsetSavePath(Stringvalue){this.savePath=value;}//返回上传文件的保存位置publicStringgetSavePath()throwsException{returnServletActionContext.getServletContext().getRealPath(savePath);}//文件标题的setter和getter方法publicvoidsetTitle(Stringtitle){this.title=title;}publicStringgetTitle(){return(this.title);}//上传文件对应文件内容的setter和getter方法publicvoidsetUpload(Fileupload){this.upload=upload;}publicFilegetUpload(){return(this.upload);}//上传文件的文件类型的setter和getter方法publicvoidsetUploadContentType(StringuploadContentType){this.uploadContentType=uploadContentType;}publicStringgetUploadContentType(){return(this.uploadContentType);}//上传文件的文件名的setter和getter方法publicvoidsetUploadFileName(StringuploadFileName){this.uploadFileName=uploadFileName;}publicStringgetUploadFileName(){return(this.uploadFileName);}@OverridepublicStringexecute()throwsException{//以服务器的文件保存地址和原文件名建立上传文件输出流//FileOutputStreamfos=newFileOutputStream(getSavePath()//+"\"+getUploadFileName());//FileInputStreamfis=newFileInputStream(getUpload());//byte[]buffer=newbyte[1024];//intlen=0;//while((len=fis.read(buffer))>0)//{//fos.write(buffer,0,len);//}//fos.close();returnSUCCESS;}}java.io.File.<init>(File.java:262)org.apache.naming.resources.FileDirContext.doGetRealPath(FileDirContext.java:180)org.apache.naming.resources.BaseDirContext.getRealPath(BaseDirContext.java:424)org.crazyit.app.action.UploadAction.getSavePath(UploadAction.java:44)org.crazyit.app.action.UploadAction.execute(UploadAction.java:91)sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)java.lang.reflect.Method.invoke(Method.java:597)com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)

解决方案

解决方案二:
没明白你的是什么意思。
解决方案三:
你上传文件的页面呢
解决方案四:
单步调下,看是不是文件没获取到
解决方案五:
引用1楼u013165779的回复:

没明白你的是什么意思。

不好意思,我没有说清楚。
解决方案六:
问题已经解决了,我把上传文件页面的文件名由upload.jsp改成uploada.jsp就可以了。我猜可能是命名空间冲突之类的问题。下面是配置文件和上传页面的代码。<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>简单的文件上传</title></head><body><s:formaction="uploadPro"method="post"enctype="multipart/form-data"><s:textfieldname="title"label="文件标题"/><br/><s:filename="upload"label="选择文件"/><br/><s:submitvalue="上传"/></s:form></body></html><struts><constantname="struts.custom.i18n.resources"value="mess"/><!--设置该应用使用的解码集--><constantname="struts.i18n.encoding"value="GBK"/><packagename="lee"extends="struts-default"><!--配置处理文件上传的Action--><actionname="uploadPro"class="org.crazyit.app.action.UploadAction"><!--动态设置Action的属性值--><paramname="savePath">/uploadFiles</param><!--配置Struts2默认的视图页面--><result>/WEB-INF/content/succ.jsp</result></action><actionname="*"><result>/WEB-INF/content/{1}.jsp</result></action></package></struts>
解决方案七:
引用2楼u012601065的回复:

你上传文件的页面呢

谢谢你的回复~

时间: 2024-08-31 17:37:27

新手求助,struts2文件上传的错误的相关文章

8、如何自学Struts2之Struts2文件上传[视频]

8.如何自学Struts2之Struts2文件上传[视频]   之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上:   http://pan.baidu.com/s/1kTDsa95 由于本次视频没有声音,将会在下节课"Struts2数据库访问"这一节课,一起再讲一下. 注意:不好意思,不知道为什么在这次录制过程中没有声音,很抱歉,本节重点是碰到一个空指针异常,原因是fileUpload这个拦截器要放在其他拦截器之前才没

upload-上传头像在本地正常,在linux服务器上总是报“文件上传保存错误

问题描述 上传头像在本地正常,在linux服务器上总是报"文件上传保存错误 public function uploadImage(){ if(!empty($_FILES)){ $upload = $this->upload; $upload->maxSize = 3145728; $upload->exts = array('jpg', 'jpeg', 'gif', 'png'); $upload->rootPath = 'Public/upload/headpic_

关于struts2文件上传和保存到数据库的同步问题!急~

问题描述 利用struts2文件上传后,对文件信息保存到数据库.文件上传成功后,对文件信息进行保存,失败则不保存.问题就在于如果文件上传成功后,对数据库保存失败,那么该如何保持事务的准确性.目前相到两种解决方法:1.建立temp临时文件夹,当保存数据库成功,则copy文件到正式目录,不论文件上传成功失败,最后删除temp.(麻烦)2.使用异步对文件进行操作.(不大清楚实现逻辑)希望大家能给我提供方案.谢谢~ 解决方案 先插入数据,成功则保存文件,不成功则不进行处理不就可以了么解决方案二:同意ji

java中Struts2文件上传问题详解_java

首先是网页部分,upload_file.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML> <html> <head> <title>Upload File</title> </head> <body> <form act

struts2 文件上传时,某次上传失败之后的所有上传都返回input,不跳到action

问题描述 在做文件上传时,不加限制上传任意类型文件都成功,但是如果加了"allowedTypes"限制文件类型后,上传正确类型成功,上传错误类型失败,这些都是理所当然的结果.问题是上传错误类型失败后,再上传正确的文件,也跳转到input视图,不经过action.如限制只能上传gif格式文件,第一次上传gif图片返回success:第二次上传非gif文件,返回input:第三次上传gif文件,还是返回input,怎么解决?代码如下:jsp页面: <s:form action =&q

struts2 文件上传 三种方式

struts.multipart.maxSize=10240000:用于限制上传文件的大小struts.multipart.allowedTypes=.xls,.zip:用于限制上传文件类型struts.multipart.parser=pell:解决上传空文件的报错问题 struts.multipart.saveDir:该属性指定上传文件的临时保存路径,该属性的默认值是javax.servlet.context.tempdir 第一种方式 package com.ljq.action; imp

关于Struts2文件上传与自定义拦截器_java

一.访问或添加request/session/application属性 public String scope() throws Exception{   ActionContext ctx = ActionContext.getContext();   ctx.getApplication().put("app", "应用范围");//往ServletContext里放入app   ctx.getSession().put("ses", &q

Struts2文件上传(一) Common-FileUpload

文件上传是许多项目都遇到的需求,Struts2中也带有文件上传功能,但它是利用的java领域的其他 俩个常用的文件上传的项目:Common- FileUpload和COS,在了解Struts2之前让我们了解下怎样使用 Common-FileUpload来实现文件上传以及文件上传实现过程中应该注意的问题. 在Common- FileUpload中,它把从客户端提交过来的表单封装成一个个FileItem对象,这也是它实现文件上传功能 的核心类.另一个很重要的类就是FileUploadBase,他的功

Struts2文件上传

以一个图片上传为例子,演示了文件上传的各个方面.包括客户端控制,服务端控制,图片预览,图片压缩等. 采用struts2的文件上传机制,除struts2必要的jar外还需要额外导入commons-fileupload.jar,commons-io-1.4.jar web.xml配置: 首先是一个上传界面及其HTML,和一个静态常量类: 客户端: 若直接点击上传,则效果如下: 对应的JS代码如下: 若是选择了非规定类型的文件,则效果如下