1

안녕하세요.이 코드는 부적절한 코드입니다. 서버에 파일을 업로드하고 데이터베이스에 보관하려고했습니다.Struts가 처리되지 않은 예외를 감지했습니다. java.lang.NullPointerException

첫 번째 버전은 fileupload가없는 동일한 코드이며 모두 잘 작동했습니다.

<action name="Crear" class="actions.AccionAnadirCliente"> 
    <interceptor-ref name="fileUpload"> 
     <param name="maximunSize">1048576</param> 
     <param name="allowedTypes">image/png,image/gif,image/jpg,image/jpeg</param> 
    </interceptor-ref> 
    <result name="input">/paginaBienvenida.jsp</result> 
    <result name="success">/nuevoCliente.jsp</result> 
</action> 

struts.xml은 이제

public String execute() throws Exception { 
    String filePath = "C:\\Users\\alumno\\Desktop\\DWES_JAVA\\imagenes"; 
    //crea un fichero 
    File fileToCreate = new File(filePath, this.fileFileName); 
    String rutaCompleta=filePath+ this.fileFileName; 
    //volcado de datos. 
    FileUtils.copyFile(this.file, fileToCreate); 


    Cliente cliente = new Cliente(); 
    System.out.println(getNombre()); 

    cliente.setNombre(getNombre()); 
    cliente.setEdad(getEdad()); 
    cliente.setEmail(getEmail()); 
    cliente.setTelefono(getTelefono()); 
    cliente.setRuta(rutaCompleta); 

    InterfaceClienteDAO clienteDAO = FactoriaDAO.getAlumnoDAO("MySQL"); 

    clienteDAO.insertarCliente(cliente);  

    return SUCCESS; 

} 

콩 Cliente

private String nombre; 
private String email; 
private String telefono; 
private int edad; 
private String ruta; 

와 getter 및 setter accionAnadirCliente

에 실행합니다.

ClienteDAO

public void insertarCliente(Cliente c){ 

    try { 
     db.abrirConexion(); 
     String query = "insert into cliente values('" + c.getNombre() + "','" 
       + c.getEmail() + "','" + c.getTelefono() + "'," 
       + c.getEdad() + ","+c.getRuta()+")"; 
     db.ejecutarUpdate(query); 
     db.commit(); 
     db.cerrarConexion(); 

    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
} 

는 nuevoCliente.jsp에만 정보가 포함되어 있습니다.

이제는 예외입니다.

Struts Problem Report 

Struts has detected an unhandled exception: 

Messages: 
Stacktraces 

java.lang.NullPointerException 
    java.io.File.(Unknown Source) 
    actions.AccionAnadirCliente.execute(AccionAnadirCliente.java:38) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    java.lang.reflect.Method.invoke(Unknown Source) 
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450) 
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252) 
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:325) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) 
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:562) 
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99) 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    java.lang.Thread.run(Unknown Source) 

감사합니다.

편집 : 당신이 그것을 (기본 하나, 또는 만든 사용자 정의 하나와 함께 전체 스택을 포함 할 필요가있는 동안 예외 라인은, 당신은 단지 파일 업로드 인터셉터를 포함하는이

File fileToCreate = new File(filePath, this.fileFileName); 

답변

1

입니다 당신) :

<action name="Crear" class="actions.AccionAnadirCliente"> 

    <interceptor-ref name="defaultStack"> 
     <param name="fileUpload.maximumSize">1048576</param> 
     <param name="fileUpload.allowedTypes"> 
      image/png,image/gif,image/jpg,image/jpeg 
     </param> 
    </interceptor-ref> 

    <result name="input">/paginaBienvenida.jsp</result> 
    <result name="success">/nuevoCliente.jsp</result> 
</action> 

첫 번째 PARAM에 오타도 있었다, 그것은 maximum하지 maximun입니다.

관련 문제