javaweb图片上传回显的jsp和servlet完整代码
时间: 2023-09-02 10:07:35 浏览: 174
以下是一个简单的JavaWeb图片上传回显的JSP和Servlet的完整代码:
1. JSP 文件代码:
```
<!DOCTYPE html>
<html>
<head>
<title>Image Upload and Display</title>
</head>
<body>
<h1>Image Upload and Display</h1>
<form action="ImageUploadServlet" method="post" enctype="multipart/form-data">
<input type="file" name="file" /><br/><br/>
<input type="submit" value="Upload" />
</form>
<br/><br/>
<% if(request.getAttribute("imagePath") != null) { %>
<img src="<%= request.getContextPath() %>/<%= request.getAttribute("imagePath") %>" />
<% } %>
</body>
</html>
```
2. Servlet 文件代码:
```
import java.io.File;
import java.io.IOException;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/ImageUploadServlet")
@MultipartConfig(fileSizeThreshold=1024*1024*2, maxFileSize=1024*1024*10, maxRequestSize=1024*1024*50)
public class ImageUploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String imagePath = null;
String appPath = request.getServletContext().getRealPath("");
String savePath = appPath + File.separator + "uploads";
File fileSaveDir = new File(savePath);
if (!fileSaveDir.exists()) {
fileSaveDir.mkdir();
}
for (Part part : request.getParts()) {
String fileName = extractFileName(part);
if (fileName != null && !fileName.equals("")) {
String extension = fileName.substring(fileName.lastIndexOf("."));
String uuid = UUID.randomUUID().toString();
imagePath = "uploads" + File.separator + uuid + extension;
part.write(savePath + File.separator + uuid + extension);
}
}
request.setAttribute("imagePath", imagePath);
request.getRequestDispatcher("index.jsp").forward(request, response);
}
private String extractFileName(Part part) {
String contentDisp = part.getHeader("content-disposition");
String[] items = contentDisp.split(";");
for (String s : items) {
if (s.trim().startsWith("filename")) {
return s.substring(s.indexOf("=") + 2, s.length()-1);
}
}
return null;
}
}
```
在这个例子中,我们使用了Servlet 3.0的@MultipartConfig注解来处理文件上传。这个注解告诉容器这个Servlet将会接收multipart/form-data类型的请求,并且指定了上传文件的大小限制。在doPost()方法中,我们首先获取应用程序的根目录,并且创建一个名为“uploads”的文件夹来保存上传的文件。然后,我们遍历所有的文件部件,提取文件名,并且生成一个唯一的UUID和文件扩展名的组合作为文件名。最后,我们将文件保存到uploads文件夹中,并且将图片路径作为请求属性存储,并且转发到JSP页面以显示上传的图片。
请注意,这里的示例代码仅供参考,您需要根据自己的需求进行修改和调整。
阅读全文