`

struts2动态生成zip文件并下载

 
阅读更多
功能:zip文件下载
简述:
1.根据画面上的复选框进行文件打包下载
2.待下载文件保存在服务器的硬盘上,打包过程中不生成临时文件
3.打包过程中需要动态创建一个txt文件一并打进zip包中
4.页面上没有文件被选择的场合,按下【下载】按钮后,什么都不做(不刷新页面)

部分内容参考自互联网,如果错误,欢迎指正。
Struts配置文件
<!-- 数据下载Action -->
<action name="downZip" class="DownloadAction">
    <result name="nodata" type="httpheader">
        <param name="status">sky7034</param>
    </result>
</action>
Action代码
    private OutputStream res;
    private ZipOutputStream zos;

    // action的主方法
    public String execute() throws Exception {
       
        if (有数据可下载) {;
            // 预处理
            preProcess();

        } else {
            // 没有文件可下载的场合,返回nodata,设定参照struts配置文件
            return "nodata";
        }

        // 在这里编辑好需要下载的数据风之境地
        // 文件可以是硬盘上的
        // 文件也可以是自己写得数据流,如果是自己写得数据流,请参看outputZipFile方法中的【2.】
        File file = new File();
        file = ...
        outputZipFile(file);
       
        // 后处理
        afterProcess();
       
        return null;

    }

    // 预处理
    public void preProcess() throws Exception {
       
        HttpServletResponse response = ServletActionContext.getResponse();
       
        res = response.getOutputStream();

        //清空输出流
        response.reset();  

        //设定输出文件头
        response.setHeader("Content-disposition ","attachment; filename=a.zip ");  
        response.setContentType("application/zip");
        zos = new ZipOutputStream(res);
       
    }

    // 后处理
    public void afterProcess() throws Exception {
        zos.close();
        res.close();
    }

    // 写文件到客户端
    private void outputZipFile(File file) throws IOException, FileNotFoundException {
        ZipEntry ze = null;
        byte[] buf = new byte[1024];
       
        int readLen = 0;
       
        // 1.动态压缩一个File到zip中
        // 创建一个ZipEntry,并设置Name和其它的一些属性
        // 压缩包中的路径和文件名称
        ze = new ZipEntry("1\\1\\" + file.getName());
        ze.setSize(file.length());
        ze.setTime(file.lastModified());

        // 将ZipEntry加到zos中,再写入实际的文件内容
        zos.putNextEntry(ze);
        InputStream is = new BufferedInputStream(new FileInputStream(file));

        // 把数据写入到客户端
        while ((readLen = is.read(buf, 0, 1024)) != -1) {
            zos.write(buf, 0, readLen);
        }
        is.close();
       
        // 2.动态压缩一个String到zip中
        String customFile = "This is a text file.";

        // 压缩包中的路径和文件名称
        ZipEntry cze = new ZipEntry(“1\\1\\” + "Test.txt");
        zos.putNextEntry(cze);

        // 利用ByteArrayInputStream把流数据写入到客户端
        is = new ByteArrayInputStream(customFile.getBytes());
        while ((readLen = is.read(buf, 0, 1024)) != -1) {
            zos.write(buf, 0, readLen);
        }
       
    }
分享到:
评论

相关推荐

    Struts2漏洞检查工具2018版.zip

    Struts 2.5 to 2.5.16 此漏洞影响范围非常小,要求配置条件比较苛刻,同时,一些特定版本没有看到有沙盒绕过,说以,目前exp只是基于S2-045改写的,所以exp并不是所有版本都能用,正常情况下Struts 2.3.5-2.3.31,...

    基于jsp的Struts文章系统.zip

    用户可以使用富文本编辑器来创建和编辑文章,并上传和插入媒体文件。 系统还提供了一个强大的搜索功能,允许用户按关键字搜索文章。用户还可以按日期、作者和分类等条件筛选文章。 在开发这个系统时,我们使用了...

    struts+hibernate实现的网络购物系统下载.zip

    不过不是用的tomcat服务器,所以目录结构和tomcat的不一样,我已经在myEclipse开发环境下重新组织了结构,另外没有数据库的表结构生成的sql,当然也没有数据,不过hibernate可以通过orm映射文件生成数据表ddl语句的,...

    基于Spring+Struts+Mybatis的B2C电子商务网站系统源码+项目说明.zip

    基于Spring+Struts+Mybatis的B2C电子商务网站系统源码+项目说明.zip 可以通过在后台登录之后的界面添加相应的商品类别来扩展为任意的B2C网站。 Resource 所有的代码文件都在src目录下,主要包括的就是java、...

    java大作业基于SSH框架的学生成绩管理系统源码.zip

    5、 生成Hibernate所需的POJO类和映射文件 6、 开发DAO层 ​ (1) 新建DAO层接口。 ​ (2) 新建DAO层实现类(该类要实现DAO层接口,继承HibernateDaoSupport类)。 ​ (3) 在Spring配置文件中增加该DAO层...

    基于JAVA毕业设计-JAVA struts+hibernate实现的网络购物系统.zip

    基于JAVA毕业设计-JAVA struts+hibernate实现的网络购物系统.zip 这个程序时学习struts+hibernate的比较好的例子,这个系统是我在网上找到的。不过不是用的tomcat服务器,所以目录结构和tomcat的不一样,我已经在...

    struts+hibernate实现的网络购物系统.zip

    不过hibernate可以通过orm映射文件生成数据表ddl语句的,也已经给大家生成好了, 在数据库目录下的sql_dump.txt,里面包括插入了几条测试的数据,大家在mysql数据 库上生成数据库就是了,数据库名称是sh_shopping。 ...

    web项目常用jar包及说明.zip

    Struts 2需要的jar包: 1.commons-fileupload.jar(commons项目中的关于文件上传的包, struts2.1.6版本后必须加入此文件) 2.commons-io.jar(commons项目(commons项目就是java中一些常用的公共的组件)的io子项目...

    xdoclet-bin-1.2.1.zip

     XDoclet可以通过你在java源代码中的一些特殊的注释信息,自动为你生成配置文件、源代码等等,例如web、ejb的部署描述文件、为你生成struts的struts-config.xml配置文件、javascript校验等。  正如《XDoclet in ...

    双鱼林java代码生成器 v2.1.zip

    他是基于SSH框架的struts2 hibernate框架,目前能实现整个项目一次性生成,直接导入myEclipse可以用的,主要包括了struts2和hibernate配置文件自动生成,以及javabean领域层,控制层,业务逻辑层和界面层代码的自动...

    Struts原理、开发及项目实施

    首先请到http://jakarta.apache.org/Struts下载Struts,建议使用release版,现在最高版本为1.0.2,下载后得到的是一个ZIP文件。 将ZIP包解开,可以看到这个目录:lib和webapps,webapps下有一些WAR文件。...

    网上书城系统(Struts+Hibernate+Mysql).zip.tar.gz

    Servlet具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。 JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为...

    Java代码生成工具(傻瓜式操作无需教程的代码生成工具) v2.0.zip

    支持struts1、struts2、springmvc、spring、hibernate3框架。  支持自增主键,复合主键,外键关联。  生成hibernate pojo类,dao类,service类,action类。  生成保存,删除,修改,批量保存,批量修改,批量...

    S2SH投票管理系统源码.zip

    S2SH投票管理系统源码通过Struts2+Hibernate3+Spring+mysql实现,mysql导入sql文件,修改applicationContext.xml文件配置数据源。 部署后访问http://localhost:8080/Votesystem/,投票地址...

    ssh登录实例 只有登录功能(struts1.2 +spring +hibernate)

    ssh登录实例只有登录功能 数据库mysql 数据库建表语句是在gwdb.sql文件中,只要复制在mysql中运行就可以创建本应用程序数据库...由于文件大,我把lib下的.jar文件分了俩部份(lib.zip,lib2.zip 这俩个下载不要积分。)

    车辆管理系统(struts+hibernate+spring+oracle).zip.tar.gz

    Servlet具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。 JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为...

    好用的代码生成源码

    rapid-framework是一个以spring为核心的项目脚手架(或者称为胶水框架),框架将各个零散的框架(struts,strust2,springmvc,hibernate,ibatis,spring_jdbc,flex)搭建好,并内置一个代码生成器,辅助项目开发,可以生成...

    JAVA上百实例源码以及开源项目

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    struts2.0+spring2.5+hibernate3.2整合用户登录验证小例子,并生成相应的excel

    ssh(struts2.0 spring2.5 hibernate3.2)整合作的一个用户登录验证以及用户数据生成excel mytest.users.sql 这个是整个例子的数据库脚本 直接在myeclipse里面导入sshShop.zip 就行了,由于csdn只能上传15MB的的文件,...

Global site tag (gtag.js) - Google Analytics