Struts2——文件上传、下载

Struts2文件上传的实现过程详解 通过以上配置和代码的实现,就可以在Struts2框架中实现文件上传功能。在文件上传过程中,Struts2会自动将上传的文件保存到临时目录中,并提供相应的属性来访问上传的文件信息。文件上传是Web开发中常见的功能之一,Struts2框架提供了方便的方法来实现文件上传功能。本文将详细介绍Struts2文件上传的实现过程,包括配置文件的设置和代码的编写。在配置文件中,需要添加文件上传的拦截器配置以及相关的Action配置。是Struts2提供的文件上传拦截器,用于处理文件上传的请求。用于接收上传的文件, 阅读详情

1、文件上传

文件上传准备:

注意:

    1)表单必须使用POST方式提交(GET方式数据大小不能超过1KB);

    2)使用二进制编码.multipart/form-data(把文件的数据发送给服务端而不是文件的名).

    3)<input type="file" name=""/>

eg:

①upload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<h3>文件上传</h3>
<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">

上传图片:<input type="file" name="headImg"><br>
	   <input type="submit" value="提交">
</form>
②UploadAction.java

public class UploadAction extends ActionSupport{

	private static final long serialVersionUID = 1L;

	//注意:headImg并不是指前端jsp上传过来的文件本身,而是文件上传过来存放在临时文件夹下面的文件
	private File headImg;
	//提交过来的headImg的名字
	private String headImgFileName;

	public String upload() throws IOException{
		//获取根路径WebContent下upload文件夹的路径
		String dir = ServletActionContext.getServletContext().getRealPath("/upload");
		//System.out.println(headImg.getName());
		//System.out.println(headImg.getPath());
		System.out.println(dir);
		File dest = new File(dir,headImgFileName);
		if(!dest.getParentFile().exists()){
			dest.getParentFile().mkdir();
		}
		FileUtils.copyFile(headImg, dest);
		return NONE;
	}
	
	public File getHeadImg() {
		return headImg;
	}
	public void setHeadImg(File headImg) {
		this.headImg = headImg;
	}
	public String getHeadImgFileName() {
		return headImgFileName;
	}
	public void setHeadImgFileName(String headImgFileName) {
		this.headImgFileName = headImgFileName;
	}
}
③struts.xml

<struts>
	<package name="uploadPkg" extends = "struts-default" namespace="/">
		<action name="upload" class="action.upload.UploadAction" method="upload"/>
	</package>
</struts>
④测试

上传图片


控制台打印出存取图片的路径


在计算机查找该路径,找到图片


注意:


此处疑点:为什么路径不是F:\eclipseWrokspace\structTwo2\WebContent\upload而是F:\eclipseWrokspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\structTwo2\upload?

这是在Eclipse中配置完Tomcat后,发布到的部署路径

2、文件下载

eg:

①download.jsp

<h3>文件下载列表</h3>
<a href="${pageContext.request.contextPath}/down/download?fileName=logo.zip">logo</a>
<a href="${pageContext.request.contextPath}/down/download?fileName=图标.zip">图标</a>
②DownloadActon.java

public class DownloadAction extends ActionSupport {

	private static final long serialVersionUID = 1L;

	private String fileName;

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}

	public String getFileName() throws Exception {
		System.out.println(fileName);
		fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
		return fileName;
	}

	public InputStream getDownloadFile() throws Exception {
		String dir = ServletActionContext.getServletContext().getRealPath(
				"/WEB-INF/down");
		File f = new File(dir, fileName);
		System.out.println(f);
		return new FileInputStream(f);
	}

	@Override
	public String execute() throws Exception {
		System.out.println(fileName);
		return "success";
	}
}
③struts.xml

<struts>
	<package name="downloadPkg" extends="struts-default" namespace="/down">
		<action name="download" class="action.download.DownloadAction">
			<!-- type一定要定义成stream类型,告诉action这是文件下载的result -->
			<result name="success" type="stream">
				<!-- contentDisposition是文件下载的处理方式,包括内联(inline)和附件(attachment), 默认是inline, 
					使用附件时这样配置:attachment;filename="文件名" 。 -->
				<param name="contentDisposition">attachment;fileName="${fileName}"</param>

				<!-- 由getDownloadFile()方法获得inputStream., inputName这个属性就是得到action中的文件输入流,名字一定要和action中的输入流属性名字相同 -->
				<param name="inputName">downloadFile</param>
			</result>
		</action>
	</package>
</struts>
④测试

文件目录结构:

下载页面:

注意:

可以看到在struts.xml中配置result类型为stream,在struts-default中配置为:


查看该类源代码


a.


b.


Struts2框架下的文件上传与下载实现指南 Struts2是Apache组织下的一个开源的Web应用框架,其基于MVC设计模式,为Java Web应用提供了一个强大的开发基础。其特点在于将业务逻辑与展示层进行有效分离,极大地方便了开发人员对应用程序的维护和扩展。由于其良好的模块化和可配置性,Struts2在企业级应用中尤为流行,尤其适合于那些需要快速开发而又具有复杂业务逻辑的应用系统。Struts2框架主要分为几个核心组件:Model组件:用于处理业务逻辑和数据持久化。 阅读详情

相关推荐

Struts2框架下的文件上传和下载实现指南

Struts2框架是由OpenSymphony项目组开发的一个开源MVC框架,它是基于WebWork框架的优秀特性并结合了Struts1的优点而发展起来的。Struts2的核心价值在于分离表示层和业务逻辑层,提供了一个更加灵活和强大的方式来构建Web应用程序。在Struts2框架中,处理文件上传请求的后台类通常被定义为Action类。Action类在Struts2中扮演着控制器的角色,是MVC模式中C的关键部分。创建一个Action类需要继承自类或者实现Action接口。

weixin_42323064的博客 688

Struts2的文件上传

文件上传的概述:文件上传是将本地文件上传到服务器的指定目录下。要使用Struts2进行文件上传,首先将form表单的enctype属性值设置为multipart/form-data。文件上传还需要

Keep Doing this的博客 1480

Struts2文件上传与下载实战指南

Apache Struts2是一种用于构建Web应用程序的开源MVC框架。它基于Servlet API,提供了一种灵活的方式来创建动态网页。文件上传和下载是Web应用程序中常见的需求,Struts2框架通过其丰富的拦截器和插件机制,能够简洁地实现这些功能。在Struts2中,文件上传和下载的实现通常涉及拦截器、Action类和结果类型。本章将概述如何使用Struts2框架中的拦截器进行文件上传,并创建专门的Action类来处理文件下载。文件上传拦截器如fileUpload。

weixin_30978239的博客 1044

struts2实现文件上传与下载

一、单文件上传 1、文件上传条件: (1)请求方法必须是post (2)enctype的属性值必须为multipart/form-data (3)提供一个文件选择域 2、文件上传jsp代码 "java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> "s" uri="/struts-tags"%>

shaonianbz的博客 8308

Struts2 文件上传下载实战:架包配置与应用

本文还有配套的精品资源,点击获取 简介:Struts2框架用于构建企业级Java Web应用,支持文件上传和下载操作。实现这些功能需要Apache Commons FileUpload和Apache Commons IO库。本文详细介绍了如何集成这两个库,配置Struts2项目以处理文件上传和下载,并通过Action类实现业务逻辑。文档还强调了在实际应用中错误处理和权限控制...

weixin_36073714的博客 915

struts2实现文件上传下载

在struts2基础上实现的包括单文件、多文件的上传及下载

struts2(文件上传和文件下载)

文件上传文件上传准备:注意:     1):表单必须使用POST方式提交(GET方式数据大小不能超过1KB);    2):使用二进制编码.multipart/form-data(把文件的数据发送给服务端而不是文件的名).     3):&lt;input type="file"name=""/&gt;upload.xml:&lt;%@ page language="java" contentTy...

xgbnapsua的博客 9162

Changer: Feature Interaction Is What You Need forChange Detection

还有“交换“交互是一种完全不需要参数和计算的操作,它是通过交换空间或通道维度上的双时态特征映射来实现的,交换的特征在经过后续的卷积或令牌混合时进行混合。方法二:提出了两种简单的交互策略,AD和特征“交换”,大量的实验表明,它们可以极大地提高MetaChanger的性能,特别是特征“交换”,即使嵌入到复杂的网络中或应用于具有挑战性的数据集。在这里,我们用虚线勾勒本文的重点。这是变化检测任务的基本问题,双时相图像提供了同一地区在不同时间点的图像数据,通过对比这两个时间点的图像,我们可以检测出该地区的变化。

yokon的博客 1620

struts2实现文件的上传与下载

单个文件的上传 多个文件的上传 文件上传的过滤 文件的下载 ajax文件上传 1.单个文件的上传 1)struts2默认是采用apache的上传组件 commons-fileupload进行上传。 引入相关jar包: commons-fileupload-1.3.1.jar commons-io-2.2.jar 2)修改前台页面form表单的enctype属性的值为 multip

. 2204

深度解析direct path write temp与ASM IO性能问题:Oracle 19.17视图查询优化指南

本文深度解析了Oracle 19.17版本中复杂视图查询出现`direct path write temp`与`ASM IO for non-blocking poll`性能瓶颈的根本原因。通过对比11.2.0.4版本的执行计划差异,文章提供了从CBO参数调整、存储层优化到SQL架构重构的完整实战调优指南,帮助DBA有效解决升级后的查询性能问题。

2y3u4i5o6p的博客 1100

Unity 编辑器篇|(一)MenuItem菜单栏

"一级菜单/二级菜单上/三级菜单""一级菜单/二级菜单中 %#_B""一级菜单/二级菜单下 %&_C""一级菜单/二级菜单中 %#_B""一级菜单/二级菜单下 %&_C""GameObject/二级菜单""CONTEXT/组件名/菜单名""一级菜单/二级菜单上 #_A""Assets/二级菜单""一级菜单/二级菜单下""一级菜单/二级菜单上""一级菜单/二级菜单中""一级菜单/二级菜单下""一级菜单/二级菜单下""一级菜单/二级菜单上""一级菜单/二级菜单中""一级菜单/二级菜单下""自定义/Test"

游戏开发小Y的博客 13万+

struts2文件上传与下载

struts2框架中有封装文件上传的功能 那么我们在html或者jsp中的 form 应该添加属性 entype=“multipart/form-data” 并且提交的方式 应该设置为 post 提供 file 控件 提供name属性 <form action="hello.action" enctype="multipart/form-data" method="post"> ...

xiezhi_1130的博客 228

我用C#实现上位机数据一键导出Excel:从乱码到百万行数据秒级导出的实战技巧

ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("日报表");// 1. 标题(合并单元格)worksheet.Cells["A1"].Value = $"产线日报表 -DateTimeNowToString// 2. 表头和数据(同上)worksheet.Cells["A3"].Value = "时间";// ...省略表头和数据填充// 3. 合计行(公式计算)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 712

七、Struts2之文件上传与下载

一、Struts2文件上传   Struts2的文件上传实现非常简单,只需要简单几步就可完成; 注意: (1)文件上传的struts2标签为: (2)文件上传的前提是表单属性method="post" enctype="multipart/form-data"; (3)web应用中必须包含common-fileupload.jar和common-io.jar,因为struts2默认上传

xiazdong 2万+

YOLO11数据增强中的色彩空间变换:HSV、YUV等增强技术的原理、实现与参数调优全解析

摘要 本文介绍了色彩空间的基本概念及其在数据增强中的应用,重点分析了HSV色彩空间的原理与特性。色彩空间作为颜色表示的数学模型,在计算机视觉中具有重要作用,RGB、HSV、YUV等常用色彩空间各有特点。数据增强中的色彩变换能提升模型鲁棒性、缓解数据不平衡并防止过拟合。HSV色彩空间将颜色分为色调(H)、饱和度(S)和明度(V)三个独立分量,更符合人类视觉感知,便于针对性调整图像属性。文章详细阐述了HSV与RGB的转换公式,为YOLO11等目标检测框架的数据增强提供了理论基础。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 286

手把手教你学Simulink——基于Simulink的输入输出线性化精确转矩控制

由于IOFL控制律中实时引入了当前状态的反馈(id​,iq​,ωe​),电感的变化被非线性项自动补偿,转矩仅出现微小幅度的波动(< 2%),展现出极强的参数鲁棒性。:电压方程中的耦合项(ωe​Lq​iq​和 −ωe​Ld​id​)仅通过前馈补偿,当转速 ωe​较高时,微小的前馈误差会导致显著的d-q轴电流交叉耦合;其中,ud​,uq​为定子电压,id​,iq​为定子电流,Rs​为定子电阻,Ls​为定子电感,ωe​为电角速度,ψf​为永磁体磁链,p为极对数。(步长 Ts​=10μs,即100ns?

MHD0815的博客 82

struts2文件上传和下载

1. struts系统中的拦截器介绍 过滤器:javaweb中的服务器组件,主要针对的请求和响应进行拦截。 拦截器:主要针对方法的调用,进行拦截器,当使用代理对象调用某个方法时候 对方法的调用进行拦截,对拦截到的方法可以进行扩展,增强 Struts2中的拦截器主要针对Action中方法的调用进行拦截 <interceptors> <!—声明n个拦截器--> <interceptor name="fileUpload" class="org.

光何 198

【100%通过率】华为OD机试真题 Python 实现【网上商城优惠活动 / 模拟商场优惠打折II】

某网上商场举办优惠活动,发布了满减、打折、无门槛3种 优惠券,分别为: 1:每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~299可使用2张减20元,以此类推; 2:92折券,1次限使用1张,如100元,则优惠后为92元, 3:无门槛5元优惠券,无使用数限制,直接减5元。

MISAYAONE的博客 9370

struts2文件上传及下载

文件上传 单文件上传 struts2的文件上传功能通过commons-fileupload来实现 jsp表单需要为post提交,并且enctype="multipart/form-data" &lt;html&gt; &lt;head&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset...

char0321 2942

反应动力学仿真软件:CHEMKIN_(12).CHEMKIN与其他软件的接口

通过上述介绍,我们详细探讨了如何将 CHEMKIN 与 MATLAB、Python、COMSOL、Aspen Plus 和 Ansys Fluent 等软件工具进行接口配置和数据交互。这些接口不仅能够显著提升 CHEMKIN 在反应动力学仿真中的应用效果,还能充分利用其他软件工具的强大功能,实现更复杂的数据处理和分析。希望这些内容对您在化学反应动力学仿真中的工作有所帮助。

kkchenjj的博客 1137

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Struts2实现文件上传和下载

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来比较繁琐,而且不灵活,在学习了struts2后,struts2为文件上传下载提供了更好的实现机制,在这里我分别就单文件上传和多文件上传的源代码进行一下讲解,这里需要导入文件下载上传的两个jar文件,一...

筱进GG 4058

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

struts2之文件上传和下载

一个文件上传和下载的例子,思路:先上传几个文件,然后获取文件列表,列表中每个文件对应一个下载链接文件上传:Action:get/set方法省略package com.action; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.str...

终南山_张半仙的博客 230

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

struts2文件上传下载

文件上传1.struts2中文件上传介绍 struts2文件上传需要使用apache提供的文件上传组件(commons-fileupload.jar和commons-io.jar)。 struts2文件上传的核心是通过fileupload拦截器实现的。2.如何实现文件上传 1>.添加commons-fileupload和commons-io包 2>.在jsp页面做如下...

baifuzhan2888的博客 57

Struts2文件上传下载

Struts2文件上传下载(一) 要想将文件从客户端上传到服务器,首先要将form的enctype属性设置为” multipart/form-data”,method属性设置为post。然后在服务端获取上传的二进制流,解析出二进制流中所包含的全部表单域。表单域中包含的信息可能是文本信息,也可能是二进制的字节码,文本和字节码混合在一起。要想将一个文件中包含的二进制信息从一个二进制流中“

congcongsuiyue的专栏 1304
上一篇: Struts2——拦截器(Interceptor)
下一篇: Struts2——OGNL和ValueStack
ack_Finding
博客等级 码龄10年 6粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值