使用Spring和JSP在列表中显示上传的文档可以通过以下步骤实现:
- 配置Spring MVC:在Spring配置文件中添加MultipartResolver bean,用于处理文件上传。同时配置视图解析器,将JSP视图解析为HTML。
- 创建上传文件表单:在JSP页面中创建一个表单,包含一个文件选择框和一个提交按钮。设置表单的enctype属性为"multipart/form-data",以支持文件上传。
- 创建Controller:创建一个Spring MVC的Controller类,处理文件上传请求。使用@RequestParam注解将上传的文件绑定到MultipartFile对象。
- 处理文件上传:在Controller中,使用MultipartFile对象的方法获取文件名、大小和内容。可以将文件保存到服务器的指定位置,或者将文件内容存储到数据库中。
- 显示上传的文档列表:在Controller中,将上传的文档信息存储到一个列表中,并将列表作为模型数据传递给JSP视图。
- 创建JSP视图:在JSP页面中,使用JSTL标签库或者EL表达式遍历文档列表,并将文档信息显示在列表中。可以显示文件名、大小、上传时间等信息。
以下是一个示例代码:
- Spring配置文件(spring-config.xml):<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置最大上传文件大小 -->
<property name="maxUploadSize" value="10485760" />
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
- JSP页面(upload.jsp):<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="Upload" />
</form>
<h2>Uploaded Documents:</h2>
<c:forEach items="${documents}" var="document">
<p>${document.name} (${document.size} bytes)</p>
</c:forEach>
- Controller类:@Controller
public class DocumentController {
private List<Document> documents = new ArrayList<>();
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
try {
String name = file.getOriginalFilename();
long size = file.getSize();
byte[] content = file.getBytes();
// Save the file or store the content in the database
documents.add(new Document(name, size));
} catch (IOException e) {
e.printStackTrace();
}
}
return "redirect:/upload";
}
@RequestMapping(value = "/upload", method = RequestMethod.GET)
public String showUploadForm(Model model) {
model.addAttribute("documents", documents);
return "upload";
}
}
- Document类:public class Document {
private String name;
private long size;
public Document(String name, long size) {
this.name = name;
this.size = size;
}
// Getters and setters
}
这样,当用户上传文档后,列表中将显示上传的文档信息。注意,这只是一个简单的示例,实际应用中可能需要进行更多的错误处理和安全性考虑。