struts2 다운로드 파일 원리 및 간단한 다운로드 코드
<?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="lee" extends="struts-default">
<action name="downPro" class="com.zjlolife.downAction.DownLoadAction">
<param name="inputPath">\images\ .jpg</param>
<result name="success" type="stream">
<param name="contentType">image/jpg</param>
<param name="inputName">targetFile</param>
<param name="contentDisposition">attachment;filename="wjc_logo.jpg"</param>
<param name="bufferSize">4096</param>
</result>
</action>
<action name="*">
<result>/WEB-INF/content/download.jsp</result>
</action>
</package>
</struts>
DownloadAction.java
package com.zjlolife.downAction;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
public class DownLoadAction {
private String inputPath;
public String getInputPath() {
return inputPath;
}
public void setInputPath(String inputPath) {
this.inputPath = inputPath;
}
public InputStream getTargetFile() {
System.out.println(" targetFile"); //execute() , 。
return ServletActionContext.getServletContext().getResourceAsStream(inputPath);
}
public String execute() {
System.out.println(" execute"); //
return "success";
}
}
파일을 다운로드하는 대략적인 절차를 분석해 봅시다.
struts2의 Filter는 사용자의 요청을 차단하고 사용자가 필요로 하는 action을 받은 다음에 설정 파일을 통해 대응하는 action의 기본 차단기를 찾고 이 설정에 대응하는 차단기 클래스의 대상을 생성하며 ActionInvocation 클래스를 실현한 대상을 생성하고 ActionInvocation을 통해 action을 제어합니다. 즉 ActionInvocation을 호출합니다.voke () 방법, 그리고 차단기를 호출합니다. 차단하는 과정에서 아무런 문제가 없으면 action의execute () 방법을 실행합니다.그리고 Filter는 이 액션에 대응하는 반환 형식 type이stream이고 기본값은dispacher라는 것을 발견했습니다.Filter는streamResult류의 대상을 만들어stream 유형을 처리하고result의 관련 매개 변수인 inputName,contentDisposition,contentType 등,action의 getTargetFile () 방법을 호출하여 파일을 다운로드하는 데 필요한 흐름을 되돌려줍니다. 어쩔 수 없습니다. 이것이streamResult의 메커니즘입니다.
각resultType은 서로 다른 처리 클래스와 파라미터가 필요합니다.dispacher 형식의 클래스는 인자 location이 필요합니다. (기본적으로 쓰지 않으면 location입니다.)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.