それをダウンロードする –

Struts2-Download-File-Example.zip

ユーザーがファイルをダウンロードできるようにカスタム結果タイプを使用する方法を示すStruts 2の例。

1.アクション

Actionクラスで、InputStreamデータ型とそのゲッターメソッドを宣言しました。

package com.mkyong.common.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import com.opensymphony.xwork2.ActionSupport;

public class DownloadAction extends ActionSupport{

    private InputStream fileInputStream;

    public InputStream getFileInputStream() {
        return fileInputStream;
    }

    public String execute() throws Exception {
        fileInputStream = new FileInputStream(new File("C:\\downloadfile.txt"));
        return SUCCESS;
    }
}

2.表示ページ

通常のページで、ファイルをダウンロードするためのダウンロードリンクがあります。

  • downloadPage.jsp **

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>

<body>
<h1>Struts 2 download file example</h1>

<s:url id="fileDownload" namespace="/" action="download" ></s:url>

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-2836379775501347"
     data-ad-slot="8821506761"
     data-ad-format="auto"
     data-ad-region="mkyongregion"></ins>
<script>
(adsbygoogle = window.adsbygoogle ||[]).push({});
</script><h2>Download file - <s:a href="%{fileDownload}">fileABC.txt</s:a>
</h2>

</body>
</html>

3. struts.xml

ダウンロードファイルの詳細を、自明のものとして定義します。

<param name = “inputName”>

valueは、ActionのInputStreamプロパティの名前です。

詳細は、http://struts.apache.org/2.x/docs/stream-result.html[Struts 2 Stream Result documentation]を参照してください。

  • struts.xml **

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

<struts>

<constant name="struts.devMode" value="true"/>

<package name="default" namespace="/" extends="struts-default">
   <action name="">
    <result name="success">pages/downloadPage.jsp</result>
   </action>

   <action name="download" class="com.mkyong.common.action.DownloadAction">
    <result name="success" type="stream">
      <param name="contentType">application/octet-stream</param>
      <param name="inputName">fileInputStream</param>
      <param name="contentDisposition">attachment;filename="fileABC.txt"</param>
      <param name="bufferSize">1024</param>
    </result>
   </action>
</package>

</struts>