java에서struts2 간단한 파일 업로드 및 다운로드 실현

1. Struts2 파일 업로드
Struts2의 파일 업로드 구현은 매우 간단하여 몇 걸음이면 완성할 수 있다.
참고:
(1) 파일에 업로드된struts2 태그는:
(2) 파일이 업로드되는 전제는 폼 속성 method='post'enctype='multipart/form-data'입니다.
(3) 웹 응용 프로그램에는common-fileupload가 포함되어야 한다.jar와common-io.jar,struts2 기본 업로드 해상도는 jakarta를 사용하기 때문입니다.
(4)struts에서 가능.xml에서 업로드할 수 있는 최대 파일 크기를 설정합니다. ,기본값은 2M입니다.
1. 일반 파일 업로드
구현 규칙:
(1) JSP에서 양식 컨트롤 설정
(2) Action에서 속성을 정의합니다.
private File upload;//파일 내용 포함
private String uploadFileName;//파일 이름 업로드하기;
private String uploadContentType;//업로드 파일의 MIME 유형;
이 속성들은 파일의 업로드에 따라 자동으로 값을 부여합니다.
(3) execute () 에서 디스크 쓰기 기능을 완성합니다.
코드 예:
 Upload01Action.java

package org.upload.action; 
 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
 
import org.apache.struts2.ServletActionContext; 
 
import com.opensymphony.xwork2.ActionSupport; 
 
public class Upload01Action extends ActionSupport { 
  private File upload; 
  private String uploadFileName; 
  private String uploadContentType; 
  private String name; 
  public String execute()throws Exception{ 
    String path = ServletActionContext.getServletContext().getRealPath("/WEB-INF/upload"); 
    String filename = path+File.separator+name; 
    FileInputStream in = new FileInputStream(upload); 
    FileOutputStream out = new FileOutputStream(filename); 
    byte[]b = new byte[1024]; 
    int len = 0; 
    while((len=in.read(b))>0){ 
      out.write(b,0,len); 
    } 
    out.close(); 
    return SUCCESS; 
  } 
 
  public File getUpload() { 
    return upload; 
  } 
 
  public void setUpload(File upload) { 
    this.upload = upload; 
  } 
 
  public String getUploadFileName() { 
    return uploadFileName; 
  } 
 
  public void setUploadFileName(String uploadFileName) { 
    this.uploadFileName = uploadFileName; 
  } 
 
  public String getUploadContentType() { 
    return uploadContentType; 
  } 
 
  public void setUploadContentType(String uploadContentType) { 
    this.uploadContentType = uploadContentType; 
  } 
 
  public String getName() { 
    return name; 
  } 
 
  public void setName(String name) { 
    this.name = name; 
  } 
   
   
} 
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" /> 
  <constant name="struts.custom.i18n.resources" value="message"></constant> 
  <package name="default" namespace="/" extends="struts-default"> 
    <action name="upload0*" class="org.upload.action.Upload0{1}Action"> 
      <param name="name">1.jpg</param> 
      <result>/{1}.jsp</result> 
    </action> 
  </package> 
</struts> 
1.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@taglib prefix="s" uri="/struts-tags" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head>   
  <title>My JSP '1.jsp' starting page</title> 
 </head> 
  
 <body>  
  <s:form action="upload01" method="post" enctype="multipart/form-data"> 
    <s:file name="upload" label=" "></s:file> 
    <s:submit value=" "></s:submit> 
  </s:form> 
 </body> 
</html> 
 2.차단기를 이용하여 여과하다
수동으로 필터를 실현하는 방식은 매우 간단하다. 입력 검사 방식을 이용하여 필터를 하는 것이다. 즉validate()에서 필터를 하는 것이다.
여기서 말하고자 하는 차단기 방식은 좋은 방식이다. 설정 파일에서만 설정하면 유연성이 좋고 파일의 유형, 파일의 크기를 제한할 수 있다.업로드된 파일이 요구에 부합되지 않으면 input 논리 보기로 돌아갑니다. 
차단기 구성 단계:
(1) 파일 업로드 차단기는 fileUpload입니다.
(2) 주어진 매개 변수 allowedTypes, maximumSize가 필요합니다.
(3) fileUpload 차단기를 설치한 후
코드 예:
차단기를 통해 필터를 하려면 struts만 설정해야 하기 때문입니다.xml, 그래서 여기는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" /> 
  <constant name="struts.custom.i18n.resources" value="message"></constant> 
  <package name="default" namespace="/" extends="struts-default"> 
    <action name="upload0*" class="org.upload.action.Upload0{1}Action"> 
      <interceptor-ref name="fileUpload"> 
        <param name="allowedTypes">image/jpeg,image/gif</param> 
        <param name="maximumSize">1024*1024</param> 
      </interceptor-ref> 
      <interceptor-ref name="defaultStack"></interceptor-ref> 
      <param name="name">1.jpg</param> 
      <result>/{1}.jsp</result> 
      <result name="input">/{1}.jsp</result> 
    </action> 
  </package> 
</struts> 
또한 파일 업로드에 실패한 후 오류 알림 정보를 구성하고 글로벌 글로벌 글로벌 리소스 파일에서 구성해야 합니다.

struts.messages.error.content.type.not.allowed=  
 
struts.messages.error.file.too.large=  
2. Struts2 파일 다운로드
우리는 Servlet과 HTTP 프로토콜을 배울 때 파일 다운로드, 즉 콘텐츠-disposition 헤더를 쓰면 되고struts2의 실현 원리도 이것이지만 더욱 좋은 봉인성을 제공한다.
struts2의stream 결과 유형은 파일 다운로드를 실현하는 데 사용됩니다.
(1)struts.xml에서 stream 결과 유형을 설정하고 contentType, contentDisposition, bufferSize 매개 변수를 설정하면 됩니다. 템플릿:

<action name="download" class=""> 
  <result type="stream" name="success"> 
    <param name="contentType"></param> 
    <param name="contentDisposition">attachment;filename=""</param> 
    <param name="bufferSize">4096</param> 
  </result> 
</action> 
(2) Action에서 public InputStream get InputStream ()throws Exception 만들기;방법, 이 방법은 다운로드 파일의 입력 흐름을 얻는 데 사용됩니다.
DownloadAction.java

package org.download.action; 
 
import java.io.InputStream; 
 
import org.apache.struts2.ServletActionContext; 
 
import com.opensymphony.xwork2.ActionSupport; 
 
public class DownloadAction extends ActionSupport { 
  public InputStream getInputStream()throws Exception{ 
     
    return ServletActionContext.getServletContext().getResourceAsStream("/WEB-INF/upload/1.jpg"); 
     
  } 
  public String execute()throws Exception{ 
    return SUCCESS; 
  } 
} 
struts.xml

<action name="download" class="org.download.action.DownloadAction"> 
      <result type="stream" name="success"> 
        <param name="contentType">image/jpeg</param> 
        <param name="contentDisposition">attachment;filename="1.jpg"</param> 
        <param name="bufferSize">4096</param> 
      </result> 
    </action> 
다운로드를 완료할 수 있습니다.
자바에서 struts2 파일을 업로드하고 다운로드하는 실현은 여기까지 소개해 드리겠습니다. 읽어 주셔서 감사합니다.

좋은 웹페이지 즐겨찾기