暑假项目总结(四)--struts

Struts上传和下载

一、文件单个上传fileupload.jar

1.upload.jsp,注意enctype="multipart/form-data",type="file"

1 <form action="upload.action" method="post" enctype="multipart/form-data">
2                             上传文件:
3                             <input type="file" name="file" />
4                             <input type="submit" value="上传" />
5                         </form>

2.UploadAction

public class UploadAction {
    private File file;

    private String fileFileName;// 前台界面 name名 + FileName ,才能获取文件名

    public String getFileFileName() {
        return fileFileName;
    }

    public void setFileFileName(String fileFileName) {
        this.fileFileName = fileFileName;
    }

    public File getFile() {
        return file;
    }

    public void setFile(File file) {
        this.file = file;
    }

    public String execute() throws Exception{
        InputStream is = new FileInputStream(file);
        String uploadPath = ServletActionContext.getServletContext().getRealPath("/upload");
        File toFile = new File(uploadPath, this.getFileFileName());
        OutputStream os = new FileOutputStream(toFile);
        byte[] buffer = new byte[1024*5];
        int length = 0;
        while ((length = is.read(buffer)) > 0) {
            os.write(buffer, 0, length);
        }
        is.close();
        os.close(); 

     return "success";
    }
}    

二、多文件批量上传、使用swfupload

1.IType上有一篇博客,讲解的很好,链接如下:

http://hanxin0311.iteye.com/blog/1915611

三、文件的下载

Struts2提供了stream结果类型,该结果类型专门用于支持文件下载的功能。当指定stream结果类型时,需要配置一个inputName参数,该参数指定了一个输入流,这个输入流是被下载文件的入口(即通过该入口才能实现文件以流的方式实现下载)。

实现文件下载的Action

public class DownloadSongAction {

        //获取下载文件名
    public String getDownloadFileName() {

            return downloadFileName;
    }

        //实现下载的Action类应该提供一个返回InputStream实例的方法
    public InputStream getInputStream() throws UnsupportedEncodingException{

    }

        //处理用户请求
    public String execute(){

    }

}

对应的struts.xml

<action name="downloadsong" class="cn.edu.cqu.cqzy.action.DownloadSongAction">
            <result name="success" type="stream">
                <param name="contentType">application/octet-stream;charset=UTF-8</param>
                <param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
                <param name="inputName">inputStream</param>
                 <param name="bufferSize">4096</param>
            </result>
            <result name="fail">/jsp/login.jsp</result>
            <result name="authorityfail">/jsp/yxk.jsp</result>
        </action>
时间: 2024-08-23 15:52:06

暑假项目总结(四)--struts的相关文章

044医疗项目-模块四:采购单模块—采购单保存(Dao,Service,Action三层)

我们上上一篇文章(042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中)做的工作是把数据插入到了数据库,我们这篇文章做的是042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中这里没有写采购量,我们这篇文章做的就是把采购量写进入,也就是Updata之前的那个记录.这样采购单里面的记录就完整了. 如下: Dao层:用的是逆向工程生成的:yycgdmxMapper.updateByPrimaryKeySelective(yycgdmx_updat

EF6.0+APS.NET MVC5.0项目初探四(填充各个程序集)

第一步:每次生成数据库是都需要修改的地方 在Domain.DbContext中添加 在Infrastructure.Ioc.DALFactory中添加 第二步:DataAccess.DAL说明: 我们先在此添加一个基类 1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Data.Entity; 5 using System.Data.Entity.Infrastructu

Android开源项目第四篇——开发及测试工具篇

本文为那些不错的Android开源项目第四篇——开发工具篇,主要介绍Android开发工具和测试工具相关的开源项目. Android开源项目系列汇总已完成,包括: Android开源项目第一篇——个性化控件(View)篇 Android开源项目第二篇——工具库篇 Android开源项目第三篇——优秀项目篇 Android开源项目第四篇——开发及测试工具篇 Android开源项目第五篇——优秀个人和团体篇 1.Buck facebook开源的Android编译工具,效率是ant的两倍.主要优点在于

《deetom》项目开发历程&lt;四&gt;

今天对session 信息重新做了定位; 我准备session只管匹配某个信息有或是没有,而不做为信息展示. 这样做的原因是因为,举个简单的例子,比如我要修改用户信息,那我们在修改后还需要对session进行维护,按照某位高手的话来讲,这样就造成逆向调用了. 把session当成数据库缓存来用,是可以的,只是可能不会是很好的一种做法. 当用户量达到某个客观值后,session的开销会对内存造成很大影响.当然目前我还不知道怎么对数据库进行缓存. <deetom>项目开发历程<四>

项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!

前言 系列文章:[传送门] 洗了个澡,准备写篇博客.然后看书了.时间 3 7 分.我慢慢规律生活,向目标靠近.  很喜欢珍惜时间像叮当猫一样 正文 慢慢地,二维码实现签到将要落幕了.下篇文章出二维码实现签到 这次 我们实现 javaweb http json 交互 in action 题目很长,但我想让你们看下,给我点意见. 开始吧 实战 本次以经典的登录作为案例.登录做的好也是经典. 服务端 和 app端,服务端简略,app端详细介绍... 服务端 资料: <spring> @Respons

React 实践项目 (四)

React在Github上已经有接近70000的 star 数了,是目前最热门的前端框架.而我学习React也有一段时间了,现在就开始用 React+Redux 进行实战! 上回说到使用Redux-saga 管理 Redux 应用异步操作,应用还是只有一个首页.现在开始构建一个新的投稿页面并使用 React-Router 进行路由管理. React 实践项目 (一)React 实践项目 (二)React 实践项目 (三)React 实践项目 (四) - 首先我们来构建投稿页面 创建 src/co

暑假项目总结(二)

搭建SSH+JAP+MYSQL开发环境 一.严格的三层包结构,加入相应包 2.引入struts.xml,名字一定要写对否则报错. 3.引入ssh.xml,配置数据源及事务处理,将注解的实体一一添上. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="ht

项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!

前言 系列文章:[传送门] 洗了个澡,准备写篇博客.然后看书了.时间 3 7 分.我慢慢规律生活,向目标靠近.  很喜欢珍惜时间像叮当猫一样 正文 慢慢地,二维码实现签到将要落幕了.下篇文章出二维码实现签到 这次 我们实现 javaweb http json 交互 in action 题目很长,但我想让你们看下,给我点意见. 开始吧 实战 本次以经典的登录作为案例.登录做的好也是经典. 服务端 和 app端,服务端简略,app端详细介绍... 服务端 资料: <spring> @Respons

暑期项目经验(十)--struts + poi

struts + poi 一.poi知识讲解 可以下载 孔浩老师 的poi视频,其中封装的四个工具类,很好用,能方便应用到项目中. 二.poi实例 1.引入jar包 2. 引入四个工具类 1 package com.pl.util; 2 3 import java.lang.annotation.Retention; 4 import java.lang.annotation.RetentionPolicy; 5 6 @Retention(RetentionPolicy.RUNTIME) 7 p