Struts2实现图片上传教程
4星 · 超过85%的资源 需积分: 9 76 浏览量
更新于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中上传图片文件的基本流程,包括前端表单、后端处理和配置文件的设置。实际应用中,你可能还需要考虑错误处理、文件大小限制、文件类型的检查等安全问题。
2015-12-14 上传
139 浏览量
2009-06-15 上传
2014-12-03 上传
2011-04-23 上传
2012-03-27 上传
2010-10-21 上传
2012-01-20 上传
2019-03-17 上传
howard2005
- 粉丝: 1w+
- 资源: 20
最新资源
- IEEE 14总线系统Simulink模型开发指南与案例研究
- STLinkV2.J16.S4固件更新与应用指南
- Java并发处理的实用示例分析
- Linux下简化部署与日志查看的Shell脚本工具
- Maven增量编译技术详解及应用示例
- MyEclipse 2021.5.24a最新版本发布
- Indore探索前端代码库使用指南与开发环境搭建
- 电子技术基础数字部分PPT课件第六版康华光
- MySQL 8.0.25版本可视化安装包详细介绍
- 易语言实现主流搜索引擎快速集成
- 使用asyncio-sse包装器实现服务器事件推送简易指南
- Java高级开发工程师面试要点总结
- R语言项目ClearningData-Proj1的数据处理
- VFP成本费用计算系统源码及论文全面解析
- Qt5与C++打造书籍管理系统教程
- React 应用入门:开发、测试及生产部署教程