java - Java - 将字符串值解析为整数不起作用

Intellij/Payara提供了以下错误:

[ 2019-10-26 T21:26:35.875 0200] [Payara 5.193 ] [WARNING] [] [javax.enterprise.web] [tid : _ThreadID=30 _ThreadName=http-thread-pool::http-listener-1(3)] [timeMillis : 1572117995875] [levelValue : 900] [[ StandardWrapperValve[FileUploadServlet] : Servlet.service() for servlet FileUploadServlet threw exception java.lang.NullPointerException at FileUploadServlet.doPost(FileUploadServlet.java:27 )

包含用于将字符串数据类型解析为int的代码。


public class FileUploadServlet extends HttpServlet {



 String result ="";



 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {


 HttpSession file = request.getSession(true);


 int uploadcode = Integer.parseInt(request.getParameter("uploadcode"));


 int code = 1111;


 boolean checkcode = check(uploadcode, code);



 if ((checkcode && ((uploadcode != 0))){


 try {


 Part filePart = request.getPart("fileToUpload");


 InputStream fileInputStream = filePart.getInputStream();


 File fileToSave = new File("filepath" +filePart.getSubmittedFileName());


 Files.copy(fileInputStream, fileToSave.toPath(), StandardCopyOption.REPLACE_EXISTING);


 result ="File send and saved";


 file.setAttribute("Bericht", result);


 } catch (Exception ex){


 result ="File not sent, please try again.";


 file.setAttribute("Bericht", result);


 } finally{


 result ="File sent and saved";


 file.setAttribute("Bericht", result);


 getServletContext().getRequestDispatcher("/Upload.jsp").forward(request, response);


 }


 } else {


 result ="incorrect upload code.";


 file.setAttribute("Bericht", result);


 getServletContext().getRequestDispatcher("/Upload.jsp").forward(request, response);


 }


 }


 public boolean check(int a, int b) {


 return a == b;


 }


}



这个问题可能是?


<form id="form1" enctype="multipart/form-data" method="post"


 action="FileUploadServlet">


 <div id="fileName"></div>


 <div id="fileSize"></div>


 <div id="fileType"></div>


 <input type="number" name="uploadcode" id="uploadcode"


 placeholder="Enter upload code" required>


 <div>


 Select the file to upload:


 <br>


 <input type="file" name="fileToUpload" id="fileToUpload"


 accept="image/*" />


 <br>


 <br>


 <ul class="actions">


 <li>


 <input type="submit" class="button alt"


 value="Send Message" />


 </li>


 </ul>


 </div>


 <div id="progressNumber"></div>


 <div id="text"></div>


</form>



或者可能是Javascript上传:


function uploadFile() {


 var fd = new FormData();


 fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]);


 var xhr = new XMLHttpRequest();


 xhr.upload.addEventListener("progress", uploadProgress, false);


 xhr.addEventListener("load", uploadComplete, false);


 xhr.addEventListener("error", uploadFailed, false);


 xhr.addEventListener("abort", uploadCanceled, false);


 xhr.open("POST","FileUploadServlet");


 xhr.send(fd);


}



不幸的是,(26-10-2019 23:10 )有不同的错误:


[2019-10-26T22:57:54.019+0200] [Payara 5.193] [WARNING] [] [javax.enterprise.web] [tid: _ThreadID=29 _ThreadName=http-thread-pool::http-listener-1(2)] [timeMillis: 1572123474019] [levelValue: 900] [[


 StandardWrapperValve[FileUploadServlet]: Servlet.service() for servlet FileUploadServlet threw exception


java.lang.NumberFormatException: For input string:""



在servlet使用这些变量将变量传递给JSP之后:


<%


 HttpSession file = request.getSession(false);


 String resultaat= (String)file.getAttribute("Bericht");


%>



还有:


<%out.println(resultaat);%>



时间:

传入请求中不包含名为uploadcode的参数,这意味着request.getParameter()调用返回null,然后试图通过Integer.parseInt将它转换为int,从而产生一个NullPointerException

因此,uploadcode你可能写错了,或者你的javascript和/或HTML中存在错误。

...