问题描述:
在MyEclipse2016 中使用servlet进行文件上传操作,从jsp提交到servlet报404错误。由于MyEclipse2016 在创建servlet时,不会在lib目录下生成web.xml文件,而是在创建的servlet代码中加入了@WebServlet("/所建的servlet名字"),起同等替代作用。我是刚用这个版本,一些操作也摸不请。下面把代码附上,求教大神指定。
jsp页面:
<body>
文件上传
<hr>
<form action="servlets/UploadServlet" method="post" enctype="multipart/form-data">
你选择一个文件进行上传:
<input type="file" name="myFile">
<input type="submit" value="上传">
</form>
${msg}
</body>
servlet:
package servlets;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jspsmart.upload.SmartUpload;
/**
* Servlet implementation class UploadServlet
*/
@WebServlet("/UploadServlet")
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public UploadServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
SmartUpload smartUpload = new SmartUpload();
//初始化
ServletConfig config = this.getServletConfig();
smartUpload.initialize(config,request,response);
try{
//上传文件
smartUpload.upload();
//得到上传的文件对象
com.jspsmart.upload.File smartFile = smartUpload.getFiles
().getFile(0);
//保存文件
smartFile.saveAs("D:/"+smartFile.getFileName
(),smartUpload.SAVE_PHYSICAL); //保存文件
}catch(Exception e){
e.printStackTrace();
}
String msg = "Upload Success";
request.setAttribute("msg", msg);
RequestDispatcher rd = request.getRequestDispatcher("/uploadForm.jsp");
rd.forward(request, response);
}
}
目录结构: