Struts2实现图片上传教程
4星 · 超过85%的资源 需积分: 9 169 浏览量
更新于2024-09-13
收藏 536KB PDF 举报
"在Struts2中上传图片文件的详细步骤和源代码示例"
在Struts2框架中上传图片文件是一项常见的功能,这通常涉及到前端表单提交、后端处理以及文件存储。以下是实现这一功能的具体步骤和相关源代码。
一、环境准备
1. 创建一个名为`UploadFile`的Web项目。
2. 添加Struts2框架所需的库文件到项目的`WebRoot/WEB-INF/lib`目录,并在项目属性中将其加入到构建路径。通过【JavaBuildPath】 -> 【Libraries】选项卡 -> 【AddJARs】来添加所有jar包。
二、配置文件修改
3. 修改`web.xml`配置文件,配置Struts2的过滤器。配置如下:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
</web-app>
```
4. 创建`struts.xml`配置文件,定义Action和结果页面。例如:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- ... -->
<package name="default" namespace="/" extends="struts-default">
<action name="upload" class="cn.hw.struts2.UploadAction">
<result name="success">uploadOK.jsp</result>
<result name="input">uploadFile.jsp</result>
</action>
</package>
</struts>
```
在这个配置中,我们定义了一个名为`upload`的Action,类为`cn.hw.struts2.UploadAction`,成功后返回`uploadOK.jsp`,失败则返回`uploadFile.jsp`。
三、编写Action类
5. 在`src`目录下的`cn.hw.struts2`包中创建`UploadAction.java`,实现文件上传逻辑。例如:
```java
import org.apache.struts2.interceptor.FileUploadInterceptor;
import com.opensymphony.xwork2.ActionSupport;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
public class UploadAction extends ActionSupport {
private List<File> file; // 用于接收上传的文件
private List<String> fileName; // 文件名
private List<String> fileContentType; // 文件类型
// getters and setters...
public String execute() {
if (file != null && !file.isEmpty()) {
File saveDir = new File("WebContent/upload"); // 设置文件保存的目录
if (!saveDir.exists()) {
saveDir.mkdirs();
}
for (int i = 0; i < file.size(); i++) {
File itemFile = file.get(i);
String fileName = this.fileName.get(i);
String filePath = saveDir.getAbsolutePath() + File.separator + fileName;
try (FileOutputStream fos = new FileOutputStream(filePath)) {
fos.write(itemFile.getBytes());
} catch (IOException e) {
e.printStackTrace();
return INPUT;
}
}
}
return SUCCESS;
}
}
```
在这个Action中,我们使用了Struts2的`FileUploadInterceptor`拦截器来处理文件上传,将上传的文件保存到服务器的指定目录。
四、创建前端页面
6. 创建两个JSP页面:`uploadFile.jsp`用于显示上传表单,`uploadOK.jsp`用于显示上传成功的消息。例如:
`uploadFile.jsp`:
```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>上传图片</title>
</head>
<body>
<form action="upload.action" method="post" enctype="multipart/form-data">
<input type="file" name="file" multiple/>
<input type="submit" value="上传"/>
</form>
</body>
</html>
```
`uploadOK.jsp`:
```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>上传成功</title>
</head>
<body>
<h1>图片上传成功!</h1>
</body>
</html>
```
五、项目目录结构
项目的目录结构如下(假设):
- WebRoot
- uploadFile.jsp
- uploadOK.jsp
- WEB-INF
- lib
- 所需的Struts2和其他依赖库
- classes
- cn
- hw
- struts2
- UploadAction.class
- web.xml
- upload
- 上传的图片文件将保存在这里
通过以上步骤,我们完成了在Struts2中上传图片文件的基本流程,包括前端表单、后端处理和配置文件的设置。实际应用中,你可能还需要考虑错误处理、文件大小限制、文件类型的检查等安全问题。
点击了解资源详情
点击了解资源详情
点击了解资源详情
120 浏览量
110 浏览量
2011-04-23 上传
167 浏览量
123 浏览量
2014-10-10 上传
酒城译痴无心剑
- 粉丝: 1w+
- 资源: 20
最新资源
- 由小波滤波器系数求尺度函数和小波函数
- Visual C++ MFC 简明教程
- C51单片机程序实例大全
- Hardware Design Guidelines for TMS320F28xx .pdf
- C2000_系统设计(硬件部分)
- CISCO ACS 安装详细手册(中文版)
- ICMP 的说明与解释
- VLAN总结(对VLAN作了详细说明与介绍,其中包括对VTP的介绍)
- shell编程指南(有作者对重要部分进行高亮显示)
- EAserver程序员指南
- 《c#手册》非常不错
- C#语法攻略(详细介绍了.NET语法知识)
- CCNA路由链路负载均衡,浮动静态路由
- SQL循序渐进(看完不会你可以砍我)教程
- UML 互动图的教程PPT,63页,很详细
- Java+Servlet+API说明文档,JAVA人的真爱