溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用struts2如何實(shí)現(xiàn)文件下載功能

發(fā)布時(shí)間:2021-05-22 16:45:55 來源:億速云 閱讀:138 作者:Leah 欄目:編程語言

本篇文章為大家展示了使用struts2如何實(shí)現(xiàn)文件下載功能,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

1. 項(xiàng)目結(jié)構(gòu)

使用struts2如何實(shí)現(xiàn)文件下載功能

2. web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" 
 xmlns="http://java.sun.com/xml/ns/javaee" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
 
 <!-- 設(shè)置struts 2過濾器 --> 
 <filter> 
  <filter-name>struts 2</filter-name> 
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
 </filter> 
 <filter-mapping> 
  <filter-name>struts 2</filter-name> 
  <url-pattern>/*</url-pattern> 
 </filter-mapping> 
 
 
 <!-- 設(shè)置歡迎頁面 --> 
 <welcome-file-list> 
  <welcome-file>index.jsp</welcome-file> 
 </welcome-file-list> 
 
 <!-- session超時(shí)定義,單位為分鐘 --> 
 <session-config> 
  <session-timeout>30</session-timeout> 
 </session-config> 
 
</web-app>

3.DownloadAction.java

package com.action; 
 
import java.io.InputStream; 
import org.apache.struts2.ServletActionContext; 
import com.opensymphony.xwork2.ActionSupport; 
 
public class DownloadAction extends ActionSupport{ 
 private static final long serialVersionUID = 1L; 
 //文件路徑 
 private String path; 
  
 //path屬性的getter方法 
 public String getPath(){ 
  return path; 
 } 
 //path屬性的setter方法 
 public void setPath(String path){ 
  this.path = path; 
 } 
 //返回inputstream,文件下載關(guān)鍵方法 
 public java.io.InputStream getDownloadFile() throws Exception{ 
  InputStream in = ServletActionContext.getServletContext().getResourceAsStream(getPath()); 
  return in; 
 } 
 public String execute() throws Exception{ 
  return SUCCESS; 
 } 
}

4.struts.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> 
<struts> 
  <!-- 配置 Struts 2 應(yīng)用中的常量 --> 
  <constant name="struts.i18n.encoding" value="UTF-8" /> 
   <!-- 配置上傳文件的最大容量,struts2默認(rèn)為2M。單位是1B, 1KB=1024B,1M=1024KB,1M=1024*1024B--> 
   <constant name="struts.multipart.maxSize" value="1048576" /> 
  
  
  <!-- 配置本應(yīng)用中的包,繼承 struts-default 包 --> 
  <package name="FileDownload" namespace="/" extends="struts-default"> 
   <action name="download" class="com.action.DownloadAction"> 
    <!-- 設(shè)置文件路徑的參數(shù),傳到action類文件中去 --> 
    <!-- <param name="path">\download\a.jpg</param> --> 
    <!-- 下載文件類型定義,即定義為“stream” --> 
    <result name="success" type="stream"> 
     <!-- image/jpeg代表JPG圖片 --> 
     <param name="contentType">image/jpeg</param> 
     <!-- 下載文件處理方法 --> 
     <param name="contentDisposition"> 
      <!-- attachment表示附件方式,即下載時(shí)打開保存對話窗,filename表示下載時(shí)顯示的保存時(shí)的文件名 --> 
       <!-- 如果不寫attachment;或者是寫的是inline; 則表示內(nèi)聯(lián),即會在瀏覽器中嘗試打開下載的文件,而不是下載--> 
      attachment;filename="a.jpg"   
     </param> 
     <!-- 下載文件輸出流定義 --> 
      <!-- 這里的inputName元素所對應(yīng)的value值downloadFile,在action中一定要有對應(yīng)的getDownloadFile()方法 --> 
     <param name="inputName">downloadFile</param> 
     <!-- 下載緩沖區(qū)的大小 --> 
     <param name="bufferSize">1024</param> 
    </result> 
   </action> 
  </package> 
</struts>

5.index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
 <base href="<%=basePath%>" rel="external nofollow" > 
 <title>首頁</title> 
 </head> 
 <body> 
 <center> 
  歡迎來到首頁,點(diǎn)下面鏈接去下載一個文件<br /> 
  <a href="download.action?path=<%=" rel="external nofollow" ./download/a.jpg" %>">下載</a>  
 </center> 
 </body> 
</html>

上述內(nèi)容就是使用struts2如何實(shí)現(xiàn)文件下載功能,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI