日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struts2-20-下载文件及授权控制

發(fā)布時(shí)間:2025/6/17 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts2-20-下载文件及授权控制 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

下載文件:用<result-type>stream 而非攔截器

? ? ? ? ? ? ?根目錄=WebContent?

一:下載文件主頁面 ?downLoad.jsp

? ? ??

1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>下載文件頁面</title> 8 </head> 9 <body> 10 <a href="d:/zd.jpg">超鏈接下載圖片文件</a><br> 11 <a href="d:/zd.doc">超鏈接下載非圖片文件</a><br> 12 <!-- 超鏈接無法下載WEB-INF下文件,因?yàn)槲募A下的文件被保護(hù) --> 13 <a href="WEB-INF">下載WEB-INF下文件(超鏈接會出錯(cuò)404)</a><br> 14 <!-- 下載到的文件必須加/ 否則 --> 15 <a href="downloadD?inputPath=d:/zd.jpg&contentType=image/jpeg&downFileName=ZD">非校驗(yàn)使用struts2下載D盤圖片文件</a><br> 16 <a href="ZddownloadD?inputPath=d:/zd.jpg&contentType=image/jpeg&downFileName=ZD">校驗(yàn)使用struts2下載D盤圖片文件</a><br> 17 <a href="downloadSC?inputPath=/zd.jpg&contentType=image/jpeg&downFileName=ZD">使用struts2下載 (ServletContext)當(dāng)前的應(yīng)用上下文中圖片文件</a><br> 18 </body> 19 </html>

?

二:配置struts.xml

1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 6 <struts> 7 <constant name="struts.devMode" value="true" /> 8 <package name="default" namespace="/" extends="struts-default"> 9 10 <!-- 非權(quán)限下載D盤文件 --> 11 <action name="downloadD" class="nuc.sw.zd.action.FileDownloadAction"> 12 <result name="success" type="stream"> 13 <!-- 指定下載文件的文件類型 --> 14 <param name="contentType">${contentType}</param> 15 <!-- 指定由getTargetFile方法返回被下載文件的 InputStream --> 16 <param name="inputName">targetFileD</param> 17 <!-- 指定下載文件的文件名 --> 18 <param name="contentDisposition">filename="${downFileName}"</param> 19 <!-- 指定文件的緩沖大小 --> 20 <param name="bufferSize">4096</param> 21 </result> 22 </action> 23 <!-- 權(quán)限下載D盤文件 --> 24 <action name="ZddownloadD" class="nuc.sw.zd.action.ZdDownAction"> 25 <!-- 定義一個(gè)名為login的結(jié)果 --> 26 <result name="login">/login.jsp</result> 27 <result name="success" type="stream"> 28 <!-- 指定下載文件的文件類型 --> 29 <param name="contentType">${contentType}</param> 30 <!-- 指定由getTargetFile方法返回被下載文件的 InputStream --> 31 <param name="inputName">targetFileD</param> 32 <!-- 指定下載文件的文件名 --> 33 <param name="contentDisposition">filename="${downFileName}"</param> 34 <!-- 指定文件的緩沖大小 --> 35 <param name="bufferSize">4096</param> 36 </result> 37 </action> 38 39 <!-- 非權(quán)限下載應(yīng)用上下文根目錄下文件 --> 40 <action name="loginAction" class="nuc.sw.zd.action.loginAction"> 41 <result name="success">/downLoad.jsp</result> 42 <result name="input">/login.jsp</result> 43 </action> 44 <action name="downloadSC" class="nuc.sw.zd.action.FileDownloadAction"> 45 <result name="success" type="stream"> 46 <!-- 指定下載文件的文件類型 --> 47 <param name="contentType">${contentType}</param> 48 <!-- 指定由getTargetFile方法返回被下載文件的 InputStream --> 49 <param name="inputName">targetFileSC</param> 50 <!-- 指定下載文件的文件名 --> 51 <param name="contentDisposition">filename="${downFileName}"</param> 52 <!-- 指定文件的緩沖大小 --> 53 <param name="bufferSize">4096</param> 54 </result> 55 </action> 56 </package> 57 </struts>

?

三:寫對應(yīng)的調(diào)用方法 ?nuc.sw.zd.action

? (1)非權(quán)限下載文件(D盤 ?應(yīng)用上下文根目錄下文件)FileDownloadAction.java

? ??

package nuc.sw.zd.action;import java.io.File; import java.io.FileInputStream; import java.io.InputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class FileDownloadAction extends ActionSupport {private String inputPath;private String contentType;private String downFileName; public String getInputPath() {return inputPath; } public void setInputPath(String inputPath) {this.inputPath=inputPath;//this.inputPath=new String(inputPath.getBytes("ISO-8859-1"),"utf-8"); } public String getContentType() {return contentType; } public void setContentType(String contentType) {this.contentType = contentType; } public String getDownFileName() {return downFileName; } public void setDownFileName(String downFileName) {this.downFileName = downFileName; }/*使用struts下載文件時(shí),需要type=stream; 使用stream時(shí)指定inputName參數(shù),即指定一個(gè)輸入流。定義一個(gè)返回InputStream方法,作為被下載文件的入口。*/ public InputStream getTargetFileD() throws Exception{File file = new File("D:\\zd.jpg"); InputStream is = new FileInputStream(file); return is;} public InputStream getTargetFileSC() throws Exception{InputStream in=ServletActionContext.getServletContext().getResourceAsStream(inputPath);System.out.println(in);return ServletActionContext.getServletContext().getResourceAsStream(inputPath);} @Overridepublic String execute() throws Exception {return SUCCESS;} }

  

?(2)權(quán)限下載文件(D盤 ?應(yīng)用上下文根目錄下文件)ZdDownAction.java

?

1 package nuc.sw.zd.action; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.InputStream; 6 7 import com.opensymphony.xwork2.Action; 8 import com.opensymphony.xwork2.ActionContext; 9 import com.opensymphony.xwork2.ActionSupport; 10 11 public class ZdDownAction extends ActionSupport { 12 private String inputPath; 13 private String contentType; 14 private String downFileName; 15 public String getInputPath() { 16 return inputPath; 17 } 18 public void setInputPath(String inputPath) { 19 this.inputPath=inputPath; 20 //this.inputPath=new String(inputPath.getBytes("ISO-8859-1"),"utf-8"); 21 } 22 public String getContentType() { 23 return contentType; 24 } 25 public void setContentType(String contentType) { 26 this.contentType = contentType; 27 } 28 public String getDownFileName() { 29 return downFileName; 30 } 31 public void setDownFileName(String downFileName) { 32 this.downFileName = downFileName; 33 } 34 public InputStream getTargetFileD() throws Exception{ 35 File file = new File("D:\\zd.jpg"); 36 InputStream is = new FileInputStream(file); 37 return is; 38 } 39 @Override 40 public String execute(){ 41 ActionContext ctx=ActionContext.getContext(); 42 String user=(String)ctx.getSession().get("user"); 43 if(user!=null && user.equals("zd")){ 44 System.out.print("用戶名是:"+user); 45 return SUCCESS; 46 } 47 else{ 48 this.addFieldError("error", "您還沒有登錄,請登錄;"); 49 ctx.put("error","您還沒有登錄;"); 50 return Action.LOGIN; 51 } 52 } 53 54 }

?

(3)用戶登錄邏輯 ?loginAction.java

?

四:項(xiàng)目結(jié)構(gòu)

?

?五:運(yùn)行結(jié)果

? ?主頁面:

?

? 可以圖片另存為超鏈接下載圖片:? ? ?可以圖片另存為

? 超鏈接下載非圖片文件:?可以圖片另存為

?

? 超鏈接下載WEB-INF下的安全文件:

? 有權(quán)限下載文件(未登錄):

?

? ?無權(quán)限下載=登陸下載=

?

轉(zhuǎn)載于:https://www.cnblogs.com/Z-D-/p/6053663.html

總結(jié)

以上是生活随笔為你收集整理的struts2-20-下载文件及授权控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。