0

ファイル ダウンロード サーブレットを作成し、以下のように web.xml に登録しました。

<servlet>
    <servlet-name>downloadFile</servlet-name>
    <servlet-class>com.hibu.HibuProspector.FileDwonloadServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>downloadFile</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

FileDownloadServlet.java

public class FileDownloadServlet extends HttpServlet{

  private static final int BYTES_DOWNLOAD = 1024;

  public void doGet(HttpServletRequest request, 
   HttpServletResponse response) throws IOException{
    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    response.setHeader("Content-Disposition",
                     "attachment;filename=SampleFile.xlsx");
    ServletContext ctx = getServletContext();
    InputStream is = ctx.getResourceAsStream("/SampleFile.xlsx");

    int read=0;
    byte[] bytes = new byte[BYTES_DOWNLOAD];
    OutputStream os = response.getOutputStream();

    while((read = is.read(bytes))!= -1){
        os.write(bytes, 0, read);
    }
    os.flush();
    os.close(); 
   }
}

以下のようにhtmlページにリンクがあります。リンクをクリックすると、ファイルをダウンロードする必要があります。

<a class="button right" target="_blank">Download</a>

ダウンロード サーブレットをアンカーにリンクするにはどうすればよいでしょうか。
助言がありますか?

4

4 に答える 4

1

特定の操作を実行するために Web アプリケーションのルート マッピングを指定することはお勧めできません。したがって、次のように適切なサーブレット マッピングで web.xml を更新します。

  <servlet-mapping>
      <servlet-name>fileDownload</servlet-name>
      <url-pattern>/fileDownload</url-pattern>
 </servlet-mapping>

次に、以下のように新しいマッピングでアンカー タグを更新します。(アンカータグの href 属性内に url-pattern を記載する必要があります。)

<a class="button right" target="_blank" href="/fileDownload">Download</a>

これはうまくいくはずです!!!

于 2013-07-02T11:11:24.997 に答える
0

マッピングを特定のものに変更します。

<servlet-mapping>
   <servlet-name>downloadFile</servlet-name>
   <url-pattern>/download</url-pattern>
</servlet-mapping>

そしてtagのhref属性を指定します:a

<a class="button right" target="_blank" href="/download">Download</a>

anchor#hrefタグの仕様を読むことができます:

この属性は、Web リソースの場所を指定し、現在の要素 (ソース アンカー) とこの属性によって定義される宛先アンカーとの間のリンクを定義します。

于 2013-07-02T11:03:34.420 に答える
0

web.xml で適切なマッピングを与える

  <servlet-mapping>

                <servlet-name>downloadFile</servlet-name>

                <url-pattern>/downloadFile</url-pattern>

        </servlet-mapping>

アンカーを介してサーブレットを呼び出すだけです

<a href="/downloadFile"  class="button right" target="_blank">Download</a>
于 2013-07-02T11:03:20.587 に答える