@WebServlet("/user-import.action")
public class SystemUserImportServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SystemUserImportServlet() {
super();
}
private String getFilename(Part p) {
String fname = null;
// 返回part对象文件部分的content-disposition
String header = p.getHeader("Content-disposition");
System.out.println("Header=" + header);
// 取子串,返回文件名
fname = header.substring(header.lastIndexOf("=") + 2, header.length() - 1);
fname.substring(fname.lastIndexOf("\\") + 1, fname.length());
System.out.println("fname=" + fname);
return fname;
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher(SystemConstant.view("/user/import")).forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
// 当前工程的路径
String path = this.getServletContext().getRealPath("/");
System.out.println("path=" + path);
String number = req.getParameter("number");
javax.servlet.http.Part p = req.getPart("fileName");
String message = "";
// getFilename(p);
if (p.getSize() > 1024 * 1024)// 上传文件的大小不能超过1MB
{
p.delete();
message = "文件大小超过1MB,不能上传!";
} else {
// 确定文件上传的位置
path = path + "\\uploadDiretory\\" + number;
java.io.File f = new File(path);
if (!f.exists()) {
// 创建文件夹(目录)
f.mkdir();
}
System.out.println("path=" + path);
// 准备实现上传
// 得到文件名
String fname = getFilename(p);
p.write(path + "\\" + fname);//将文件写如目的地
message = "文件上传成功!";
}
req.setAttribute("message", message);
req.getRequestDispatcher(SystemConstant.view("/user/import")).forward(req, resp);
}
}
这是一个Java Servlet,用于处理用户导入操作。当用户访问/user-import.action路径时,会调用doGet方法,显示用户导入页面。当用户提交导入表单时,会调用doPost方法,进行文件上传操作。
在doPost方法中,首先获取上传的文件Part对象,然后判断文件大小是否超过1MB。如果超过,则删除文件并返回错误