(struts2学习篇)struts2文件上传

2023-11-17

第一步:编写相关相关文件上传Action

public class UploadFileAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	// 相关属性封装
	private File upload; // 上传文件

	private String uploadContentType;// 上传文件类型
	private String uploadFileName;// 上传文件名

	private String filename;// 上传文件重新命名

	private String upladPath;// 上传文件路径

	private String result;// 上传结果

	public File getUpload() {
		return upload;
	}

	public void setUpload(File upload) {
		this.upload = upload;
	}

	public String getUploadContentType() {
		return uploadContentType;
	}

	public void setUploadContentType(String uploadContentType) {
		this.uploadContentType = uploadContentType;
	}

	public String getUploadFileName() {
		return uploadFileName;
	}

	public void setUploadFileName(String uploadFileName) {
		this.uploadFileName = uploadFileName;
	}

	public String getFilename() {
		return filename;
	}

	public void setFilename(String filename) {
		this.filename = filename;
	}

	public String getUpladPath() {
		return upladPath;
	}

	public void setUpladPath(String upladPath) {
		this.upladPath = upladPath;
	}

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		String file = "";
		// 如果新文件名未输入,则使用上传文件的文件名,做为服务器保存文件的文件名
		if (filename.equals("")) {
			file = upladPath + uploadFileName;
		} else {
			file = upladPath + uploadFileName;
		}
		// 判读服务器是否存在同名的文件,否则相关的信息提示
		if (new File(file).exists()) {
			result = "该文件已经存在,请为文件重新命名";
		} else {
			FileOutputStream fileoutput = new FileOutputStream(file);
			InputStream input = new FileInputStream(upload);
			byte[] buffer = new byte[8192];
			int count = 0;
			while ((count = input.read(buffer)) > 0) {
				fileoutput.write(buffer, 0, count);
			}
			fileoutput.close();
			input.close();
			result = "文件上传成功";
		}
		return "result";
	}

	public void setResult(String result) {
		this.result = result;
	}

	public String getResult() {
		return result;
	}
}


第二步:struts2.xml文件配置

	<!--struts2文件上传  -->
	<package name="fileupload" extends="struts-default">
	<action name="fileupload" class="com.rf.action.UploadFileAction">
	<!--struts2 服务器保存上传文件  -->
	<param name="upladPath">c:\upload\</param>
	<result name="result">/error.jsp</result>	
	</action>
	</package>


 

第三步:jsp页面相关代码(文件上传页面)

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>    
    <title>struts2文件上传实例代码</title>	
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>  
  <body>
  <!--struts2文件上传  -->
  <s:form action="fileupload" enctype="multipart/form-data">
     <s:file label="文件上传" name="upload"/>
     <s:textfield label="新文件名" name="filename"/>
     <s:submit value="上传"/>
  </s:form>
  </body>
</html>


 

结果页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>    
    <title>上传文件结果</title>
   <!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>  
  <body>
 	 文件上传结果:
       <s:property value="result"/><br>
  </body>
</html>


结果展示:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(struts2学习篇)struts2文件上传 的相关文章

  • 理解文本编码,ASCII、Unicode、UTF8、字节序和乱码-word打开是乱码

    原文网址提示有风险 基础知识 在计算机的内部 信息都是以二进制的方式存储的 二进制的一位 bit 可以表示0和1 位也叫做比特 位作为单位太小 为了便于使用 通常使用字节 byte 来表示二进制 一个字节有8位 可以表示256种 2的8次方
  • Docker+Jenkins+Golang 持续集成交付实战

    最近因公司发展需要 增加了一些go语言开发 对项目要求使用jenkins go docker自动部署上线 一 安装jenkins 1 安装Jenkins 详情见centos使用docker搭建jenkins jenkins使用方法见jenk
  • 使用face_recognition(一)人脸识别

    关于使用face recognition 安装方面还是有些坑的 之前用的是python3 5 pip安装出错 需要dlib什么的 按照网上的教程弄 还是有问题 搞了一天搞不定 后来看到说用python3 6比较简单 就换了个版本 结果pip
  • Ubuntu 14.04升级openssh7.7p1

    安装流媒体kurento 指定操作系统是Ubuntu 14 04 用户最近安全漏洞扫描 Ubuntu主机的ssh版本太低 OpenSSH 6 6 1p1 需要需要对该主机的SSH版本进行升级 准备升级的安全包 本次升级我准备了三个文件 op
  • 【学术探讨】万能密码原理剖析

    作者主页 士别三日wyx 作者简介 CSDN top100 阿里云博客专家 华为云享专家 网络安全领域优质创作者 推荐专栏 对网络安全感兴趣的小伙伴可以关注专栏 网络安全入门到精通 万能密码 顾名思义 就是可以 登录任意网站 的账号和密码
  • ORA-28040: 没有匹配的验证协议 问题解决

    出现这类问题 是因为 jar包不匹配造成 更换ojdbc jar包可以解决 下载ojdbc7 jar 用以前的jar包会出问题 以前的jar包会出现ora 28040 没有匹配的验证协议 项目使用的 ojdbc14报错 更换oidbc6解决
  • linux环境文件或者文件夹打包

    1 linux zip压缩 压缩当前文件夹下所有文件 压缩为a zip 命令行的方法是怎样 常用格式 zip r fileName zip 文件夹名 1 把 home目录下面的data目录压缩为data zip zip r data zip
  • java for循环删除元素_JAVA中循环删除list中元素的方法总结

    JAVA中循环遍历list有三种方式for循环 增强for循环 也就是常说的foreach循环 iterator遍历 1 for循环遍历list for int i 0 i if list get i equals del list rem
  • 第十二届蓝桥杯 ——左孩子右兄弟

    问题描述 对于一棵多叉树 我们可以通过 左孩子右兄弟 表示法 将其转化成一棵二叉树 如果我们认为每个结点的子结点是无序的 那么得到的二叉树可能不唯一 换句话说 每个结点可以选任意子结点作为左孩子 并按任意顺序连接右兄弟 给定一棵包含 N N
  • 腾讯广告算法大赛冠军、Kaggle Grandmaster倾力打造,涵盖Kaggle、阿里天池等赛题...

    随着互联网时代的到来 以及计算机硬件性能的提升 人工智能在近几年可以说是得到了爆发式的增长 互联网时代带来了大量的信息 这些信息是名副其实的大数据 另外 性能极佳的硬件也使得计算机的计算能力大大增强 这二者结合到一起 人工智能的蓬勃兴盛就变
  • MySQL数据库连接

    1 连接数据库 Class forName com mysql cj jdbc Driver 加载驱动 Connection conn DriverManager getConnection jdbc mysql localhost 330

随机推荐

  • 易云维®医院后勤管理系统软件利用物联网智能网关帮助实现医院设备实现智能化、信息化管理

    近年来 我国医院逐渐意识到医院设备信息化管理的重要性 逐步建立医院后勤管理系统软件 以提高信息化管理水平 该系统是利用数据库技术 为医院的中央空调 洁净空调 电梯 锅炉 医疗设备等建立电子档案 把设备监控 管控 维保 设置等主要管理操作都通
  • UHF超高频RFID应用RFID珠宝盘点管理

    关于UHF超高频RFID技术对RFID珠宝盘点管理的好处 在商场上逛 我们总会看到关于珠宝柜台展示的时候 无论多小的物品都会有一个个条码标签挂着 如果店员想对这些珠宝盘点 传统的做法是一个一个扫 如果实施RFID物联网技术 珠宝贴上RFID
  • qemu调试linux内核

    有了qemu后我们可以使用一台电脑就能模拟出多种cpu架构的单板 不需要去进行重复复杂的编译烧写调试工作了 提高开发的效率 一 主机环境 vmware或者hyper v安装ubuntu20 04 二 gdb安装 这里我们直接用gdb mul
  • vsftpd服务器上传文件,当我将文件上传到 Vsftpd 服务器时,文件被锁定

    我正在使用 FTP 的 spring 集成将文件上传到 FTP 服务器 Bean ServiceActivator inputChannel toFtpChannel public FtpMessageHandler handler Ftp
  • [ACM] 1016 Prime Ring Problem (深度优先搜索)

    Prime Ring Problem Problem Description A ring is compose of n circles as shown in diagram Put natural number 1 2 n into
  • Linux-3种方法快速找出监听特定端口的进程

    Pre 端口是代表通信端点的逻辑实体 并与操作系统中的给定进程或服务相关联 在之前的文章中 我们解释了如何找出 Linux 中所有开放端口的列表 以及如何使用 Netcat 命令检查远程端口是否可达 在这个简短的指南中 我们将展示在 Lin
  • TypeScript 中如何使用 getter 和 setter

    使用 get 和 set 关键字在 TypeScript 中定义 getter 和 setter getter 使我们能够将属性绑定到在访问属性时调用的函数 而 setter 将属性绑定到在尝试设置属性时调用的函数 class Develo
  • Qt助手(assistant):方便查找Qt类

    一个方便查找QT类用法的地方 QT自带的 QT助手 在qt安装路径中找到assistant exe 它就是QT助手 运行之后就可以查找QT中的类和函数了 找到后 将其发送到桌面快捷方式 更名为Qt助手
  • 关于pytorch图像处理模块的数据处理

    文章参考 chsasank github io from future import print function division import torch import torch nn as nn import torch optim
  • egg-jwt egg jwt 使用

    1 安装egg jwt npm install egg jwt save 2 配置 config plugin ts import EggPlugin from egg const plugin EggPlugin jwt enable t
  • MySQL数据库之DDL操作

    1 数据库管理系统的一些常用术语 学习数据库首先要清楚数据库的一些常用术语 行 又叫做记录 每一行都是一组相关的数据 列 又叫做字段 每一列都是一组数据类型相同数据 主键 是唯一的 在一张数据表中只有一个主键 且不能为空 外键 主要用于关联
  • 【牛客101】06,07判断链表中是否有环,找到环的入口

    文章目录 1 判断是否有环 1 1 题目描述 1 2 题目分析 1 3 代码讲解 2 找到环的入口 2 1 题目描述 2 2 问题分析 2 3 代码详解 1 判断是否有环 1 1 题目描述 判断给定的链表中是否有环 如果有环则返回true
  • JAVA中“+”加号用法总结及注意事项

    用法总结 1 若加号左右两边都是数值型时 做的是加法运算 2 若加号左右两边有任一方是非数值型时 做的都是拼接运算 注意事项 若加号左右两侧为方法名时将各方法结果输出后拼接打印 lo setAge 18 lo setName lou Sys
  • 关闭套接字close还是shutdown

    close 这个函数会对套接字引用计数 1 一旦发现引用计数到0 就会对套接字进行彻底释放 并且会关闭tcp两个方向的数据流 因为套接字可以被多个进程共享 你可以理解为我们给每个套接字都设置了一个积分 如果我们通过fork的方式创建了子进程
  • 软件工程导论习题

    软件工程是软件工程专业的一门重要学科 掌握好软件工程原理是开发软件的重要基础知识 本博客对软件工程导论部分习题解释 以更加深理解 选择 1 业界存在三种需求分析方法 面向功能分析 面向对象分析和 B A 面向算法分析 B 面向数据分析 C
  • 使用ESP定律_手工脱壳

    ESP定律脱壳一般的加壳软件在执行时 首先要初始化 保存环境 保存各个寄存器的值 一般利用PUSHAD 相当于把所有寄存器都压栈 当加壳程序的外壳执行完毕以后 再来恢复各个寄存器的内容 通过跨区段的转移来跳到程序的OEP来执行原程序 简单点
  • lr(1)分析法 算数表达式 c语言,编译原理及技术期末考试复习试题整理

    2 1 考虑文法G S 其产生式如下 S L a L L S S 1 试指出此文法的终结符号 非终结符号 终结符号为 a 非终结符号为 S L 开始符号为 S 2 给出下列各句子的分析树 a a a a a a a a a a 3 构造下列
  • Ubuntu20.04 开机无法进入登陆界面,一致转圈圈解决方案

    昨天把一个新的主机装了显卡驱动 cudnn没装完就关机走人了 今天早上一开机发现显示了这个 我没拍照片 这里盗用别的博主的照片了 搜了一下 本着能省则省的原则先从最简单的情况试起 怀疑是Lightdm出了问题 借用一下博主原话 是安装了li
  • 机器视觉开源代码集合

    机器视觉开源代码集合 一 特征提取Feature Extraction SIFT 1 Demo program SIFT Library VLFeat PCA SIFT 2 Project Affine SIFT 3 Project SUR
  • (struts2学习篇)struts2文件上传

    第一步 编写相关相关文件上传Action public class UploadFileAction extends ActionSupport private static final long serialVersionUID 1L 相