zoukankan      html  css  js  c++  java
  • Struts2 文件下载

    1.  Struts 2文件下载目录结构

    2.  下载Action类

    package com.zhanggaosong.action;

    import java.io.FileInputStream;
    import java.io.InputStream;

    import org.apache.struts2.ServletActionContext;

    import com.opensymphony.xwork2.ActionSupport;

    public class DownloadAction extends ActionSupport {

    // 1.下载的目标资源 2.下载的文件类型 3.下载的文件名

    private String res;// 下载的资源
    private String resType; // 下载的文件类型
    private String resName;// 下载的文件名

    public String getRes() {
    return res;
    }

    public void setRes(String res) throws Exception {
    this.res = new String(res.getBytes("ISO-8859-1"),"UTF-8");
    }

    public String getResType() {
    return resType;
    }

    public void setResType(String resType) {
    this.resType = resType;
    }

    public String getResName() {
    return resName;
    }

    public void setResName(String resName) {
    this.resName = resName;
    }

    /**
    * 该方法代表了文件下载的入口,它就是我们要让客户下载的文件的输入流
    */
    public InputStream getTarget() throws Exception {

    // 返回res资源所对应的输入流
    return new FileInputStream(ServletActionContext.getServletContext()
    .getRealPath("/") + res);
    }
    }

    3. struts.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

    <struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />

    <package name="default" namespace="/" extends="struts-default">

    <action name="downloadAction" class="com.zhanggaosong.action.DownloadAction">
    <result type="stream">
    <!--该参数指定二进制流的类型 -->
    <param name="contentType">${resType}</param>
    <!-- 指定返回InputStream的方法 -->
    <param name="inputName">target</param>

    <param name="contentDisposition">filename=${resName}</param>
    <!--控制文件下载时缓冲的大小 -->
    <param name="bufferSize">4096</param>
    </result>
    </action>
    </package>

    <include file="example.xml"/>

    <!-- Add packages here -->

    </struts>

    4.web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    </web-app>

    5.  下载页面 

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>下载页面</title>
    </head>
    <body>
    <a href="${pageContext.request.contextPath}/downloadAction?res=第三章 流程控制语句和数组.ppt&resType=application/vnd.ms-powerpoint&resName=stru.ppt">下载Struts PPT</a>
    </body>
    </html>

  • 相关阅读:
    怎样跟踪来访用户?
    五个瓶颈影响你的Asp.Net程序(网站)性能
    if判断与比较操作符gt、lt、eq等的使用
    裸机LCD驱动配置
    汇编指令-位置无关码(BL)与绝对位置码(LDR)(2)
    汇编指令-MRS(读)和MSR(写)指令操作CPSR寄存器和SPSR寄存器使用(1)
    Nand Flash驱动(实现初始化以及读操作)
    makefile使用.lds链接脚本以及 $@ ,$^, $,< 解析
    makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解
    Liunx-常用命令杂烩(5)
  • 原文地址:https://www.cnblogs.com/zhanggaosong/p/2955601.html
Copyright © 2011-2022 走看看