文档章节

struts实现文件的上传

风中帆
 风中帆
发布于 2014/06/19 16:09
字数 487
阅读 168
收藏 6
点赞 0
评论 0

struts实现文件的上传,有三个部分:JSP页面,Action,struts.xml

1.JSP页面

 <s:file name="image" label="请选择文件"></s:file>
 <s:submit value="上传"></s:submit>

 2.Action中

 //用于保存页面file控件上传的数据
 private File image;
 //保存上传文件的名称
 //格式必须是:页面file控件的名称再加上FileName的格式
 private String imageFileName;
 //保存上传文件的类型,如image、doc、zip等
 //格式必须是:页面file控件的名称再加上FileContent的格式
 private String imageContentType;
public String execute() throws Exception {
  //获取文件上传后在服务器保存的位置
  //注意要在Webcontent下创建
  //images文件夹用于保存文件
  String path=
   ServletActionContext.getServletContext()
   .getRealPath("/images");
  //按照原文件名在images文件夹下构建文件
  File file=
   new File(path+"//"+imageFileName);
  //利用commons-io包中的FileUtiles类实现文件上传
  FileUtils.copyFile(image, file);
  return SUCCESS;
 }

3.struts配置

 <struts>
 <!-- 设置上传文件的临时目录 -->
 <constant name="struts.multipart.saveDir" value="e:\\temp"></constant>
 <!-- 设置上传文件的大小 -->
 <constant name="struts.multipart.maxSize" value="2097152"></constant>
 <package name="file" extends="struts-default" namespace="/">
  <action name="fileAction" class="com.action.FileAction">
   <result name="success">/success.jsp</result>
  </action>
 </package>
</struts>

 

分析:
文件上传过程:在页面点击上传之后,会在临时目录上会生成临时文件(临时文件的路径在struts的配置文件中constant的struts.multipart.saveDir中设置,如果没有设置,就是默认的Javax.servlet.context.tempDir;)
在Action中接收的image文件就是这个临时文件。
在Action的execute方法中,路径path是文件上传到服务器上之后,该文件在服务器上的路径,
这里是通过ServletActionContext.getServletContext().getRealPath("/images")获取images文件夹在服务器上的绝对路径,
因为要把上传的文件放在images文件夹下,所以path+fileName,就是文件的绝对路径了;
然后使用new File(path+fileName)创建文件;
FileUtils.copyFile(image,file);把本地的临时文件上传到了服务器上。

 

© 著作权归作者所有

共有 人打赏支持
风中帆
粉丝 13
博文 186
码字总数 17363
作品 0
青岛
ST2-045 For POC

转载请注明: 转载自Legend‘s BLog 本文链接地址: ST2-045 For POC 利用方法: 漏洞说明: Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-045,CVE编号CVE-2017-5638,在使用基于J...

apachecn_飞龙 ⋅ 2017/03/18 ⋅ 0

MyEclipse 2017 整合SSH三大框架 到登录功能的实现(附源码)

本来以为学完Java EE之后用个三大框架没什么难度,结果昨天搭环境就搞了一晚上,还是靠室友找了半天才找出错误在哪,为了避免重复踩坑,而且目前网上用myeclipse2017做环境的教程还是蛮少的,...

xp731574722 ⋅ 03/02 ⋅ 0

企业未修复Apache Struts 2漏洞致Web服务器被批量入侵

  0×1 概述   腾讯御见威胁情报中心监控发现,近期有大批企业网站的Web服务器遭到入侵并被植入挖矿木马。   安全人员分析发现被攻击网站服务器多存在Apache Struts 2 Jakarta Multipa...

FreeBuf ⋅ 04/29 ⋅ 0

[Struts]Token 使用及原理

Struts Token 使用 1,先在一个Action中,调用saveToken(HttpServletRequest request)方法。然后转向带有表单的JSP页面。 2,在JSP页面提交表单给一个Action,再这个Action中进行是否为重复提...

thinkyoung ⋅ 2014/12/17 ⋅ 0

Java 模板引擎 Beetl 2.8.0 发布,增加根对象支持

Java 模板引擎 Beetl 2.8.0 发布了,改进内容包括: #348 beetl 默认配置DefaultTemplateEngine #347 增加根对象支持 #346 允许设置全局 ClassLoader #345 支持struts2.5, 由于struts升级不...

闲大赋 ⋅ 04/23 ⋅ 0

SSH (Struts2+Spring3.0+Hibernate3)框架(一) 理论

  典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层...

thinkyoung ⋅ 2014/12/17 ⋅ 0

开源产业不断发展,软件安全问题亟需得到关注

近日 Sonatype 发布了“2018年开源安全与风险分析”报告,该报告显示开源应用有大幅增长,在检测的应用中有96%包含开源组件,同时包含漏洞的软件数量也在不断增加。随着开源产业不断发展,目...

雨田桑 ⋅ 05/18 ⋅ 0

spring+springMvc+struts的SSH框架整合

小疯之前工作用的框架是o3w,SSH框架只是学习的时候用过,然后今天就回头来重新回顾SSH,就在网上找了一篇比较全而且比较简单的文章来帮助自己快速的理解SSH。 1.建立一个web项目 2.导入SSH...

野小疯 ⋅ 05/27 ⋅ 0

书单丨5本Java后端技术书指引你快速进阶

一名Java开发工程师 不仅要对Java语言及特性有深层次的理解 而且需要掌握与Java相关的 框架、生态及后端开发知识 本文涉及多种后端开发需要掌握的技能 对于帮助提高开发能力非常有帮助 NO.1...

Java高级架构 ⋅ 05/30 ⋅ 0

闲谈“如何优化SSH框架的项目”

使用struts框架的好处之一就是所有action类继承一个基类,将访问控制在基类中处理.2.所有的action类都继承自baseaction,一个资源对应一个action类. 1.实现一个继承自struts的action的baseact...

thinkyoung ⋅ 2014/12/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vim介绍、vim颜色显示和移动光标、vim一般模式下移动光标、一般模式下复制粘贴剪切

VIM Vim 是 UNIX 文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff),语法高亮,全面的帮助系统,本地脚本(Vimscript),和便于选择的...

蛋黄Yolks ⋅ 17分钟前 ⋅ 0

springboot+mockito测试controller层遇到的问题

使用MockitoJUnitRunner测试的一个例子,原来报错无法找到bean, 类似的异常如下:createBeanError..... 原因:是因为@Runwith使用了SpringRunner,应该修改为MockitoJUnitRunner 代码如下: ...

writeademo ⋅ 29分钟前 ⋅ 0

关于“幂等”操作

一个幂等(idempotent)操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同. 开发中, 我们经常考虑幂等操作的场景有“接口调用”、“MQ消费”、“自动任务”等 接口调用, 可能出现...

零二一七 ⋅ 36分钟前 ⋅ 0

Dubbo服务服务暴露之ProxyFactory Invoker

Dubbo服务暴露过程中有涉及到调用ProxyFactory 中方法获取Invoker对象的过程,现在我们来深究下源码,来看下这个过程是在做些什么,返回的Invoker 对象是什么,我们来看一下代码的切入点: ...

哲别0 ⋅ 51分钟前 ⋅ 0

GP两种连接方式性能测试

GP两种连接方式性能测试 Pivotal import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class GPQueryStrin......

仔仔1993 ⋅ 55分钟前 ⋅ 0

jsonrpc-4j代码解析

解析文件 AutoJsonRpcServiceImplExporter JsonServiceExporter AutoJsonRpcServiceImplExporter 路径:com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImplExporter AutoJsonRpcServi......

郭恩洲_OSC博客 ⋅ 今天 ⋅ 0

百度搜索

from selenium import webdriver import time brower=webdriver.Firefox() brower.get('http://www.baidu.com') input=brower.find_element_by_id('kw') input.send_keys('中南大学') time.s......

南桥北木 ⋅ 今天 ⋅ 0

tomcat 日志记录器

1、日志记录器是记录消息的组件 日志记录器需要与某个servlet 容器相关联 2、Logger 接口 共定义了5种日志级别:FATAL、ERROR、WARNING、INFORMATION、DEBUGGER setVerbosity 设置级别 setC...

职业搬砖20年 ⋅ 今天 ⋅ 0

Thrift RPC实战(三) Thrift序列化机制

1.Thrift基础架构 Thrift是一个客户端和服务端的架构体系,数据通过socket传输; 具有自己内部定义的传输协议规范(TProtocol)和传输数据标准(TTransports); 通过IDL脚本对传输数据的数据结构...

lemonLove ⋅ 今天 ⋅ 0

网站建设就要像2018世界杯的俄罗斯队大杀四方[图]

今天心情不错,因为昨天晚上观看了世界杯比赛,尤其是对俄罗斯队的大杀四方感到十分霸气侧漏啊,因此我联想到了自己的博客网站,我的博客是去年年底上线的,一直想建设一个关于读书和读后感作...

原创小博客 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部