Struts的文件上传

Struts2框架之文件上传 在之前博客 Java Web 通过JSP上传文件实例,使用了html中内置的file标签<input type="file" name="file" value="浏览文件">进行文件上传。在Struts的内置标签库中,同样也提供了file标签,用户文件上传,称为文件选择域。使用Struts标签库中的file标签,在后端框架会自动进行文件接收,底层细节不用我们关注,这也正是框架的主要作... 阅读详情
Struts的文件上传
本文用的是Struts1.1的org.apache.struts.upload.FormFile类。很方便,不用自己写。也不用写一个jsp调用jspsmartupload就可以搞定。

选择上传文件页面:selfile.jsp

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<html:html>
<html:form action="/uploadsAction.do" enctype="multipart/form-data">
<html:file property="theFile"/>
<html:submit/>
</html:form>
</html:html>

UpLoadAction.java
import java.io.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;

 

/**
 * <p>Title:UpLoadAction</p>
 * <p>Description: QRRSMMS </p>
 * <p>Copyright: Copyright (c) 2004 jiahansoft</p>
 * <p>Company: jiahansoft</p>
 * @author wanghw
 * @version 1.0
 */

public class UpLoadAction extends Action {
  public ActionForward execute(ActionMapping mapping,
                               ActionForm form,
                               HttpServletRequest request,
                               HttpServletResponse response)
      throws Exception {
    if (form instanceof uploadsForm) {//如果form是uploadsForm
        String encoding = request.getCharacterEncoding();
        if ((encoding != null) && (encoding.equalsIgnoreCase("utf-8")))
        {
            response.setContentType("text/html; charset=gb2312");//如果没有指定编码,编码格式为gb2312
        }
        UpLoadForm theForm = (UpLoadForm ) form;
        FormFile file = theForm.getTheFile();//取得上传的文件
        try {
          InputStream stream = file.getInputStream();//把文件读入
          String filePath = request.getRealPath("/");//取当前系统路径
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          OutputStream bos = new FileOutputStream(filePath + "/" +
                                                  file.getFileName());//建立一个上传文件的输出流
          //System.out.println(filePath+"/"+file.getFileName());
          int bytesRead = 0;
          byte[] buffer = new byte[8192];
          while ( (bytesRead = stream.read(buffer, 0, 8192)) != -1) {
            bos.write(buffer, 0, bytesRead);//将文件写入服务器
          }
          bos.close();
          stream.close();
        }catch(Exception e){
          System.err.print(e);
        }
        //request.setAttribute("dat",file.getFileName());
        return mapping.findForward("display");
    }
    return null;
  }
}



UpLoadForm.java

 

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.*;
import org.apache.struts.upload.*;

/**
 * <p>Title:UpLoadForm</p>
 * <p>Description: QRRSMMS </p>
 * <p>Copyright: Copyright (c) 2004 jiahansoft</p>
 * <p>Company: jiahansoft</p>
 * @author wanghw
 * @version 1.0
 */

public class UpLoadForm extends ActionForm {
  public static final String ERROR_PROPERTY_MAX_LENGTH_EXCEEDED = "org.apache.struts.webapp.upload.MaxLengthExceeded";
  protected FormFile theFile;
  public FormFile getTheFile() {
      return theFile;
  }
  public void setTheFile(FormFile theFile) {
      this.theFile = theFile;
  }
  public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
  {
      ActionErrors errors = null;
      //has the maximum length been exceeded?
      Boolean maxLengthExceeded = (Boolean)
              request.getAttribute(MultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDED);
      if ((maxLengthExceeded != null) && (maxLengthExceeded.booleanValue()))
      {
          errors = new ActionErrors();
          errors.add(ERROR_PROPERTY_MAX_LENGTH_EXCEEDED, new ActionError("maxLengthExceeded"));
      }
      return errors;

  }
}
//这是相对应的form,还有其他属性可以设置,具体可以参考struts的上传例子。



struts-config.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" " http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
  <form-beans>
    <form-bean name="uploadsForm" type="UpLoadForm" />
  </form-beans>
  <action-mappings>
    <action name="uploadsForm" type="UpLoadAction" path="/uploadsAction">
      <forward name="display" path="/display.jsp" />
    </action>
  </action-mappings>
</struts-config>
 
Struts文件上传详解与实践 Struts是一个开源的MVC(Model-View-Controller)框架,它为创建Java Web应用程序提供了一种有效的方式。Struts框架的主要目的是促进应用程序的模块化设计,从而简化开发和维护工作。Struts框架已经成为Java EE应用程序开发的重要组成部分,被广泛应用于Web层的开发。Apache Commons FileUpload 是一个强大的文件上传组件,可以用于Java应用程序中,如基于Struts的Web应用程序。 阅读详情

相关推荐

Java文件上传实现与Struts框架应用

在Java Web开发的世界里,Struts框架无疑占据了重要的位置。本章将带您初识Struts框架,了解其核心功能和架构思想。Struts是一个开源的MVC(Model-View-Controller)框架,它将Web层的业务逻辑与展示层代码分离,让开发者可以专注于应用逻辑的编写,同时提供了一个丰富的标签库和易于扩展的插件体系。Struts 1.x系列诞生于2001年,为早期的Java EE开发提供了极大的便利。

weixin_42509888的博客 996

struts文件上传要点

用Struts1.1的org.apache.struts.upload.FormFile类。不再用jspsmartupload。关键语句:                 UpLoadForm theForm = (UpLoadForm ) form;                FormFile file = theForm.getTheFile();//取得上传的文件   关键是用了stru

samlover的专栏 773

R语言分布式滞后非线性模型DLNM实战:空气污染与健康数据的动态效应可视化与政策启示

本文详细介绍了R语言中分布式滞后非线性模型(DLNM)的应用,特别关注空气污染与健康数据的动态效应可视化。通过dlnm包实现PM2.5等污染物的滞后效应分析,提供从数据预处理、模型构建到结果可视化的完整流程,并探讨了其在公共卫生政策制定中的实际应用价值。

weixin_29079643的博客 514

struts实现文件上传

采用struts上传文件 *页面配置*ActionForm中使用FormFile来接收上传的文件,参加:UploadActionForm.java*在Action中调用FormFile取得上传文件数据,采用流输出,即完成上传,参见:UploadTestAction.java*采用标签配置上传参数,如: 示页面: 测试struts上传 标题:

好学若饥,谦卑若愚 3204

线性回归LinearRegression

对视频中线性回归算法的相关内容进行总结与记录 文章目录一、理论基础二、实例2.1 一元线性回归2.1.1 推导过程2.1.2 代码实现(基于numpy)2.1.3 代码实现(基于sklearn)2.2 多元线性回归2.2.1 代码实现(基于numpy)2.2.2 代码实现(基于sklearn) 一、理论基础 回归 通常是指利用某个函数,尽可能把数据样本点“串”在一起,用于描述输入变量和输出变量间的变化关系 线性回归 特点:用来把数据“串”起来的那个函数是线性的 (一元线性回归(一个自变量) &a.

邱邱邱的博客 1068

均匀分布产生高斯分布

均匀分布产生高斯分布 文章目录均匀分布产生高斯分布简介方法和证明代码效果引用 简介 方法和证明 代码 效果 引用

gy_Rick的博客 5317

如何用Struts实现动态(不定数量)多个文件上传?

Form部分:   public  class  MultiUploadForm  extends  ActionForm  {         private  List  myFiles;         public  MultiUploadForm(){                 myFiles  =  new  ArrayList();                 //为了能够

Fiesta的Blog 759

Python爬虫实战:使用最新技术抓取百度贴吧帖子内容

本文详细介绍了使用Python最新技术抓取百度贴吧帖子的完整流程。通过库,我们实现了高效的异步爬虫,具备JavaScript渲染、智能反爬应对、数据持久化等高级功能。这个爬虫框架具有良好的扩展性,可以根据具体需求进行功能增强。

2201_76125261的博客 779

struts2文件上传

一、文件上传页面四个要求: (1)变短必须是post提交 (2)提交类型必须是enctype="multipart/form-data",必须多段式 (3)文件使用文件上传控件<input type="file“ name="f"/> (4)name必填,不然不会上传 二、使用struts2接受文件 1、后台接受文件: 在action中写一个File对象的属性,属性名和前...

玉爷的博客 875

COSMO-RS理论:流体相热力学预测的核心模型与技术突破

摘要:COSMO-RS模型通过量子化学计算分子表面电荷分布,实现了从微观量子尺度到宏观化工过程的热力学预测。该模型基于介电连续介质理论,将分子表面片段化处理,通过σ-剖面描述电荷分布,并计算片段间的静电失配能和氢键能。其核心算法通过自洽化学势方程求解活度系数,克服了传统模型依赖实验参数的局限。随着技术进步,模型引入了高阶描述符和色散力修正,提升了预测精度。在药物研发、化工分离等领域广泛应用,但仍存在对长程有序结构预测不足等局限性。该模型为复杂体系的热力学性质预测提供了重要理论工具。

ASKCOS博客 974

C#串口通信从入门到精通(21)——一个串口多线程发送数据

本文详细介绍了串口通信中采用多线程发送串口数据的解决方案,由多年实战经验总结,绝对干货!

qq_34059233的博客 3691

Struts2的文件上传

Struts也提供了内置标签用于文件上传<s:file>,我们称为文件选择域 与html的标签<input tyle=”file”>是一样用的 文件上传的必要前提条件 Action接收到的File对象是一个临时文件,后面需要保存到另外一个路径去 表单必须是post方法 enctype类型必须为mul...

caiji 264

飞牛fnNAS同步微信微信聊天记录

微信聊天记录如何备份到NAS?本文介绍了利用NAS虚拟机和同步工具实现微信记录自动备份的方法。通过在NAS上搭建"云电脑"长期运行微信PC端,并配置微力同步将聊天记录文件夹自动同步到NAS存储,解决了传统电脑备份的安全性问题。操作步骤包括:1)在NAS上安装虚拟机系统;2)登录微信PC端并同步手机记录;3)配置同步工具将微信记录文件夹同步到NAS。该方法尤其适合不常使用PC微信的用户,可实现记录永久保存和远程查看,更换手机时也能快速恢复历史记录。

dgnankai的专栏 4308

struts1中的文件上传

在struts1和2中,分别对 commons-fileupload组件进行了包装,使文件上传操作更方便。 本文讲解如何使用struts1上传文件。 步骤: 1 编写jsp页面 2 给jsp中的form表单配置一个ActionForm 3 编写Action,处理文件上传功能 4 配置struts-config.xml文件 5 测试

zhanggnol的blog 2794

Python爬虫实战:模拟登录B站 – 处理Cookie和加密参数

由于B站在登录过程中采用了多种安全措施,包括加密的请求参数和cookie验证,模拟登录成为一项具有挑战性的任务。首先,我们需要获取B站的登录页面,并解析出其中的CSRF令牌和其他隐藏的字段。B站的登录接口通常会包含一些动态的加密参数,我们需要在登录前通过GET请求获取这些信息。本文详细介绍了如何使用Python模拟登录B站,解决加密参数的处理、图形验证码的识别以及登录后的数据抓取。库中的加密方法加密登录请求中的密码。一旦登录成功,我们可以通过维护会话状态,抓取登录后的数据,如个人主页、评论、观看记录等。

2201_76125261的博客 1309

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

浅谈Struts2文件上传

  目录 一、struts2文件上传大前提 二、Action实现 三、struts.xml配置【包含拦截器实现文件格式与文件大小的过滤】 常用struts2 配置上传文件格式  一、struts2文件上传大前提 必须将&lt;form&gt;表单中的method设置为”post” 必须将&lt;form&gt;表单中的enctype设置为”multipart/form-data” ...

nailnehc的博客 1038

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java struts 文件上传与文件下载

今天和大家继续分享java struts 文件控制上传和下载。 文件上传:指将本地文件上传到服务器指定目录下。在struts框架中,文件上传需要用到&lt;s:file&gt;标签,该标签是一个表单标签,要放在&lt;s:form&gt;标签中。现在看一个文件上传的实例,进而讲解各个标签的含义及其用法。 创建项目 把lib标签以及web.xml配置好,在之前的博客已经分享。 在src目录下...

yy_dream_one的博客 2253

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Struts2文件上传(基于表单的文件上传)

•Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目 •Commons-FileUpload组件特点 –使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件的上传功能 –能够全程控制上传内容 –能够对上传文件的大小、类型进行控制 •需要下载Common-FileUpla...

qq_42574855的博客 169

Struts——文件上传

回顾: Struts提交的文件上传组件来上传文件: 前台 提交方式POST 表单类型:multipart/form-date input type=“file” 后台 Apache提供的FileUpload组件 核心类: FileItemFactory //FileItem的核心工厂 ServletFileUpload //servlet中文件上传的核心类 ...

ljinshuo的博客 154

struts2 文件上传

在开发基于Web的应用的时候,经常会碰到需要实现文件上传、下载的功能,比如编辑某个商品,需要给它上传一个图片等等。  不使用Struts2的话,可以有很多种方式来实现文件上传,比如使用Apache的Common-FileUpload等。但是这些传统的方式,实现起来非常麻烦,需要写很多代码来进行控制。  现在使用Struts2来实现文件上传的功能,会更加简单和方便,事实上,Struts2

学习笔记 1990

struts2的文件上传

如何在Struts 2文件上传作品? Struts 2中使用的文件上传拦截器添加在Struts应用程序上传文件的支持服务。 基于Struts 2的文件上传拦截MultiPartRequestWrapper,这是自动应用的要求,如果它包含文件中的元素。然后,它增加了以下参数要求(假设上传的文件名 是文件MyFile)。 MyFile :文件-实际的文件MyFileContentType

ba5189tsl的专栏 894

struts文件上传和拦截器

目录前言(1)文件上传的讲解前台界面clzList.jspstruts-sy.xmlupload.jsp后台代码ClzzAction的preupload方法ClzzAction的upload方法文件上传的底层原理(2)拦截器的讲解创建拦截器OneInterceptor拦截器TwoInterceptor拦截器struts自带的拦截器拦截器的底层原理总结 前言 上面一篇已经说明了如何在使用struts...

旺旺的博客 645

Struts文件上传

UploadUitl.java /**  * 这是一个辅助类,辅助完成上传功能。  * 可以选择将文件保存在数据库里或保存在文件系统上  * 并对文

robin622的专栏 521
上一篇: jspSmartUpload上传组件
下一篇: 用Struts Validator检查你的表单
ning0123456
博客等级 码龄20年 12粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值