Java 使servlet在后台工作

Java 使servlet在后台工作,java,jsp,servlets,Java,Jsp,Servlets,我有一个文件上传sevlet,我的JSP上有一个UI <form method="post" action="mygeco" enctype="multipart/form-data" style="position: absolute; left: 30%; bottom: 2%;"> <input type="file" name="dataFile" id="fileChooser" />&nbsp; <input type="submit" valu

我有一个文件上传sevlet,我的JSP上有一个UI

<form method="post" action="mygeco" enctype="multipart/form-data" style="position: absolute; left: 30%; bottom: 2%;">
<input type="file" name="dataFile" id="fileChooser" />&nbsp;
<input type="submit" value="Upload" multiple="multiple" />
</form>

文件上传是在我的dopost方法上完成的,我还考虑了doget()方法的其他代码,因此,当用户在我的jsp页面上按下upload按钮时,我希望上传发生在后台,而用户停留在jsp页面上,并在上传完成时返回一个警报,我如何做到这一点

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
    // TODO Auto-generated method stub          

      boolean isMultipart = ServletFileUpload.isMultipartContent(request);  
      response.setContentType("text/html");  

      if (isMultipart) 
      {  
          // Create a factory for disk-based file items  
          FileItemFactory factory = new DiskFileItemFactory();  
          // Create a new file upload handler  
          ServletFileUpload upload = new ServletFileUpload(factory);  
          try 
          {  
              // Parse the request  
              List items = upload.parseRequest(request);  
              Iterator iterator = items.iterator();  
              System.out.println("starting saver");
              while (iterator.hasNext()) 
              {  
                  FileItem item = (FileItem) iterator.next();  
                  if (!item.isFormField())  
                  {  
                      String fileName = item.getName();      
                      String root = getServletContext().getRealPath("/");  
                      File path = new File("/u/poolla/workspace/FirstServlet/");  
                      if (!path.exists())  
                      {  
                          boolean status = path.mkdirs();  
                      }  
                      File uploadedFile = new File(path + "/" + fileName);  
                      System.out.println(uploadedFile.getAbsolutePath());  
                  if(fileName!="")  
                      item.write(uploadedFile);  
                  else  
                  System.out.println("file not found");  
                  System.out.println("<h1>File Uploaded Successfully....:-)</h1>");  
              }  
              else  
              {  
                  String abc = item.getString();  
                  System.out.println("<br><br><h1>"+abc+"</h1><br><br>");  
              }  
          }  
      } 
      catch (FileUploadException e) 
      {  
          System.out.println(e);  
      } 
      catch (Exception e) 
      {  
          System.out.println(e);  
      }  
  }  
  else  
  {  
      System.out.println("Not Multipart");  
  }  
}  

}
protectedvoiddopost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException
{
//TODO自动生成的方法存根
布尔值isMultipart=ServletFileUpload.isMultipartContent(请求);
response.setContentType(“text/html”);
if(isMultipart)
{  
//为基于磁盘的文件项创建工厂
FileItemFactory=new DiskFileItemFactory();
//创建新的文件上载处理程序
ServletFileUpload upload=新的ServletFileUpload(工厂);
尝试
{  
//解析请求
列表项=upload.parseRequest(请求);
迭代器迭代器=items.Iterator();
System.out.println(“启动保护程序”);
while(iterator.hasNext())
{  
FileItem=(FileItem)迭代器.next();
如果(!item.isFormField())
{  
字符串文件名=item.getName();
字符串root=getServletContext().getRealPath(“/”);
文件路径=新文件(“/u/poolla/workspace/FirstServlet/”);
如果(!path.exists())
{  
布尔状态=path.mkdirs();
}  
文件上传文件=新文件(路径+“/”+文件名);
System.out.println(uploadedFile.getAbsolutePath());
如果(文件名!=“”)
item.write(上传文件);
其他的
System.out.println(“未找到文件”);
System.out.println(“文件已成功上载…-)”;
}  
其他的
{  
字符串abc=item.getString();
System.out.println(“

”+abc+“

”); } } } 捕获(文件上载异常) { 系统输出打印ln(e); } 捕获(例外e) { 系统输出打印ln(e); } } 其他的 { System.out.println(“非多部分”); } } }
您可以使用Ajax来实现

通过Ajax调用上传文件


我建议您使用AJAX,它是一个提供异步communication@suufang你们能在google.com上查一下吗?Ajax调用或异步servlet,但第二个更难,使用Ajax方法