Java 使servlet在后台工作
我有一个文件上传sevlet,我的JSP上有一个UIJava 使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" /> <input type="submit" valu
<form method="post" action="mygeco" enctype="multipart/form-data" style="position: absolute; left: 30%; bottom: 2%;">
<input type="file" name="dataFile" id="fileChooser" />
<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方法