FileUploadTools.java 封装了 四个属性和一个beginUpload()方法
private String username;
private File uploadFile[];
private String uploadFileFileName[];
private String uploadFileContentType[]; public String beginUpload() { ...};然后用Register.java调用FileUploadTools.java的方法报错,检查了很多遍,就是没有找到原因,还望大家帮帮忙,找找别扭啊。
Register.java代码:package controller;import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.text.SimpleDateFormat;import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;import upload.FileUploadTools;import com.opensymphony.xwork2.ActionSupport;
public class Register extends ActionSupport{
/**
*
*/ private FileUploadTools fileUploadTools = new FileUploadTools();
public FileUploadTools getUploadTools(){
return fileUploadTools;
}
public void setFileUploadTools(FileUploadTools fileUploadTools){
this.fileUploadTools=fileUploadTools;
}
@Override
public void validate(){
} public String execute() throws IOException{
fileUploadTools.beginUpload();
return "register";
}
}
FileUploadTools.java代码:
package upload;import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;public class FileUploadTools { private String username;
private File uploadFile[];
private String uploadFileFileName[];
private String uploadFileContentType[];
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username=username;
}
public File[] getUploadFile(){
return uploadFile;
}
public void setUploadFile(File[] uploadFile){
this.uploadFile=uploadFile;
}
public String[] getUploadFileFileName(){
return uploadFileFileName;
}
public void setUploadFileFileName(String[] uploadFileFileName){
this.uploadFileFileName=uploadFileFileName;
}
public String[] getUploadFileContentType(){
return uploadFileContentType;
}
public void setUploadFileContentType(String[] uploadFileContentType){
this.uploadFileContentType=uploadFileContentType;
}
public String beginUpload() throws IOException {
System.out.println("username的值是:"+username);
String targetDirectory=ServletActionContext.getServletContext().getRealPath("/upload");
for(int i=0;i<uploadFile.length;i++){
File target = new File(targetDirectory,new SimpleDateFormat(
"yyyy_mm_dd_hh_mm_ss").format(new Date()).toString(
)+System.nanoTime()+uploadFileFileName[i]);
FileUtils.copyFile(uploadFile[i],target);
}
System.out.println("");
return "register";
}
}其他代码及配置register.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page isELIgnored="false" %>
<%@ taglib uri="/struts-tags" prefix="s" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<s:form action="register" method="post" enctype="multipart/form-data" >
username:<s:textfield name="fileUploadTools.username"></s:textfield>
<br/>
<s:file name="fileUploadTools.uploadFile"></s:file>
<br/>
<s:file name="fileUploadTools.uploadFile"></s:file>
<br/>
<s:file name="fileUploadTools.uploadFile"></s:file>
<br/>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>struts.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"><struts><package name="struts3.1" extends="struts-default" > <action name="register" class="controller.Register">
<result name="register">showregister.jsp</result>
<result name="input">register.jsp</result>
</action>
</package><constant name="struts.ui.theme" value="simple"></constant>
</struts>
struts.propertiesstruts.multipart.maxSize=2048000000
struts.multipart.SaveDir=/tempUploadFile
BeanJavaStrutsweb
2013-6-29 2:13:37 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error
严重: Exception occurred during processing request: null
java.lang.NullPointerException
at upload.FileUploadTools.beginUpload(FileUploadTools.java:61)
at controller.Register.execute(Register.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:325)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:546)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
java.lang.NullPointerException
at upload.FileUploadTools.beginUpload(FileUploadTools.java:61)
at controller.Register.execute(Register.java:39)
Register调用FileUploadTools的时候,username没有获取到,也就是null,所有报空指针异常,你可以把FileUploadTools中的get,set()放到Register里面,然后再方法中传参数过去。
for(int i=0;i<uploadFile.length;i++){
System.out.println("当前i的值是:"+i);
File target = new File(targetDirectory,new SimpleDateFormat(
"yyyy_MM_dd_hh_MM_ss").format(new Date()).toString(
)+System.nanoTime()+uploadFileFileName[i]);
FileUtils.copyFile(uploadFile[i],target);
}
问题出在这段代码上面,for循环的第一句都没有执行