1。struts2ファイルをアップロードします
Struts2のファイルアップロード実装は非常に単純で、ほんのいくつかの簡単な手順で完了できます。
知らせ:
(1)ファイルアップロードのstruts2タグは次のとおりです。<s:ファイルname = "" label = "upload"/>
(2)ファイルアップロードの前提条件は、フォーム属性method = "post" enctype = "multipart/form-data"です。
(3)Webアプリケーションには、common-fileupload.jarとcommon-io.jarを含める必要があります。
(4)最大許可されたファイルサイズは、struts.xmlで構成できます:<constant name = "struts.multipart.maxsize" value = "......"/>、デフォルトは2m;
1。通常のファイルアップロード<br />実装ルール:
(1)jsp <s:file name = "upload" label = "upload"/>にフォームコントロールを設定します
(2)アクション中の属性を定義します。
プライベートファイルのアップロード。 //ファイルコンテンツが含まれています
プライベート文字列uploadFileName; //アップロードされたファイルの名前。
プライベート文字列uploadContentType; //アップロードファイルのMIMEタイプ。
これらの属性は、ファイルがアップロードされると自動的に割り当てられます。
(3)execute()でディスク書き込み関数を完了します。
コード例:
upload01action.java
パッケージorg.upload.action; java.io.fileをインポートします。 java.io.fileinputStreamをインポートします。 java.io.fileoutputStreamをインポートします。 Import org.apache.struts2.servletactionContext; com.opensymphony.xwork2.actionsupportをインポートします。 public class upload01Actions ActionSupport {private file upload;プライベート文字列uploadFileName;プライベート文字列uploadContentType;プライベート文字列名; public string execute()throws exception {string path = servletactioncontext.getServletContext()。getRealPath( "/web-inf/upload");文字列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();成功を返す; } 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ソフトウェア財団// dtd struts configuration 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtd" name = "struts.custom.i18n.resources" value = "message"> </constant> <package name = "default" namespace = "/" extends = "struts-default"> <action name = "upload0*"> <param name = "name"> 1.jpg </param> <result>/{1}。 1.JSP
<%@ page Language = "Java" Import = "Java.util。*" PageEncoding = "UTF-8"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> < '1.jsp'開始ページ</title> </head> <body> <s:form action = "upload01" method = "post" enctype = "multipart/form-data"> <s:file name = "upload" label = "upload"> </s:file> <s:submit value = "upload"> </s
2。インターセプターを使用してフィルタリングします
フィルタリングを手動で実装する方法は非常に単純です。これは、入力検証を使用してフィルタリングすることです。つまり、validate()でフィルタリングします。
ここで話したいインターセプター方法は良い方法です。構成ファイルで構成する必要があります。柔軟性が高く、ファイルの種類とファイルサイズを制限できます。アップロードされたファイルが要件を満たしていない場合、入力論理ビューを返します。
インターセプターを構成する手順:
(1)ファイルアップロードのインターセプターはfileuploadです。
(2)指定されたパラメーターを許可し、最大化する必要があります。
(3)fileuploadインターセプターの後、<interceptor-ref name = "defaultStack"/>を追加する必要があります。
コード例:
インターセプターを介してフィルタリングするにはstruts.xmlの構成のみが必要なため、struts.xmlの構成のみがここに記載されています。
<?xml version = "1.0" encoding = "utf-8"?> <!doctype struts public " - // apacheソフトウェア財団// dtd struts configuration 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtd" name = "struts.custom.i18n.resources" value = "message"> </constant> <パッケージname = "default" namespace = "/" extends = "struts-default"> <action name = "upload0*"> <interceptor-ref name = "fileupload"> <param "> aboldtypes"> jpeg/jpeg/gif name = "Maximumsize"> 1024*1024 </param> </interceptor-ref> <interceptor-ref name = "defaultStack"> </interceptor-ref> <param name = "name"> 1.jpg </param> </{1} .jsp </result> </packagまた、構成ファイルのアップロードが失敗した後にエラーメッセージが必要であり、グローバルな国際リソースファイルで構成する必要があります。
struts.messages.error.content.type.not.allowed =ファイルタイプはstruts.messages.error.file.too.large =ファイルが大きすぎます
2。Struts2ファイルをダウンロードします
サーブレットとHTTPプロトコルを学習すると、ファイルのダウンロード、つまりコンテンツディスポジションヘッダーの書き込みを既に実装できます。これはStruts2の実装原則ですが、より良いカプセル化を提供します。
Struts2のストリーム結果タイプは、ファイルのダウンロードを実装するために特別に使用されます。
(1)Struts.xmlでストリーム結果タイプを構成し、ContentType、ContentDisposition、およびBuffersizeパラメーターを構成します。テンプレート:
<action name "> <result type =" stream "name =" success "> <param name =" contentType "> </param> <param name =" contentdisposition "> attachment; filename =" "</param> <param name =" buffersize "> 4096 </param> </result> </action> </action>
(2)Public inputStream getInputStream()を作成します。方法、この方法は、ダウンロードされたファイルの入力ストリームを取得するために使用されます。
ダウンロードaction.java
パッケージorg.download.action; java.io.inputStreamをインポートします。 Import org.apache.struts2.servletactionContext; com.opensymphony.xwork2.actionsupportをインポートします。 public class downloadaction extends actionsupport {public inputstream getInputStream()スロー例外{return servletactioncontext.getServletContext()。 } public string execute()throws Exception {return success; }} struts.xml
<アクションname = "download"> <result type = "stream" name = "success"> <param name = "contentType"> image/jpeg </param name = "contentdisposition"> attachment; filename = "1.jpg" </param> <param name = "bufferize"> 4096 </param>
ダウンロードを完了できます。
これは、Javaでstruts2ファイルのアップロードとダウンロードの実装を導入するためのすべてです。読んでくれてありがとう。