サーブレット3.0仕様HTTPSERVLETREQUESTは、ファイルのアップロードを処理する方法を提供しましたが、このようなアップロードはサーブレットで実行する必要があります。 Struts2はよりシンプルなパッケージを提供します。
Struts2は、デフォルトでJakartaのCommon-Fileuploadファイルアップロードフレームワークを使用します。したがって、Struts2のファイルアップロード関数を使用すると、2つのJARパッケージ、つまりCommons-IO-2.2.JARとCommons-Fileupload-1.3.1.jarを追加する必要があります。
struts2シンプルなファイルアップロード例:
1. [ファイルアップロード]ページ
ファイルをアップロードするには、フォームのメソッドを投稿するように設定する必要があり、enctypeはMultiPart/Form-Dataに設定されています。 EnctypeがMultiPart/Form-Dataに設定されると、ブラウザはバイナリストリームを使用してフォームデータを処理します。
<%@ taglib prefix = "s" uri = "/struts-tags"%> <% - Intellij Ideaによって作成されました。ユーザー:管理者日付:2018/1/16時間:14:06このテンプレートを変更するファイルを使用します|設定|ファイルテンプレート。--%> <%@ページcontentType = "text/html; charset = utf-8"言語= "java"%> <html> <title> struts2 simple file upload </title> </head> <body> <s:form action = "file_upload" method "post" enctipe = "< label = "ファイルを選択"/> <s:value = "upload"/> </s:form> </body> </html>を送信します
2。アップロード要求アクションを処理します
/** *説明:Struts2 Simple File Upload *著者:evel *日付:2018/1/24 10:39 */public class FileActions extends ActionSupport {//ファイルプライベートファイルアップロードをアップロードします。 //アップロードファイルタイププライベート文字列uploadContentType; //ファイル名プライベート文字列uploadFileName; //ファイルアップロードapporttypesをアップロードします。 private string Alladytypesは、struts.xmlのパラマグタグを使用してstruts.xmlで動的に設定されます。 public string page(){return "page"; } public void upload(){// upload:// 1。ファイルの内容を読む// 2。ファイルコンテンツを指定されたファイルに書き込むtry {system.out.println( "ファイルアップロード許可タイプ="+AlldolyTypes); string realpath = servletactionContext.getServletContext()。getRealPath( "/upload"); System.out.println( "プロジェクトの絶対パス="+RealPath); //ファイルを作成しますディレクトリを保存newファイル(RealPath).mkdir();ファイルfile = new File(RealPath+"/"+uploadFileName); // if(!file.exists()){file.createNewfile(); } fileoutputStream out = new fileoutputStream(file); fileInputStream in = new FileInputStream(upload); byte [] buffer = new byte [1024]; int len = 0; // 1kbを読み書きしながら1kbを書きます。 } system.out.println( "ファイルアップロードに正常に..."); } catch(Exception e){e.printstacktrace(); }} public file getupload(){return upload; } public void setupload(file upload){this.upload = upload; } public string getuploadContentType(){return uploadContentType; } public void setuploadContentType(String uploadContentType){this.uploadContentType = uploadContentType; } public string getuploadfileName(){return uploadFileName; } public void setuploadfileName(String uploadFileName){this.uploadfileName = uploadFileName; } public string getAllowTypes(){return amolltypes; } public void setAllowTypes(String AlldyTypes){this.AllowTypes = AlladyTypes; }}フォームにname属性xxxを持つファイルフィールドが含まれている場合、対応するアクションは、ファイルフィールドの情報をカプセル化するために3つのメンバー変数を使用する必要があります。
タイプファイルのXXXメンバー変数は、ファイルフィールドに対応するファイルコンテンツをカプセル化します。
型文字列のXXXFILENAMEメンバー変数は、ファイルフィールドに対応するファイルのファイル名をカプセル化します。
型文字列のxxxContentTypeメンバー変数は、ファイルフィールドに対応するファイルのファイルタイプをカプセル化します。
3。struts.xmlを構成します
<?xml version = "1.0" encoding = "utf-8"?> <!doctype struts public " - // apacheソフトウェア財団// dtd struts構成2.3 // en" "http://struts.apache.org/dtds/struts-2.3.dtd" value = "false"/> <constant name = "struts.devmode" value = "true"/> <package name = "default" namespace = "/" extends = "struts-default"> <! - file upload = "file_*" method = "{1}"> <result name = "ページプロパティ。ファイルのアップロードを許可するタイプを設定する例を以下に示しますが、アクションプログラムはそれほど処理しません - > <param name = "Alldytypes"> image/png、image/gif、image/jpeg </param> </action> </stuts> </struts>インターセプターはファイルフィルタリングを実装します
Struts2は、ファイルアップロードfileupload用のインターセプターを提供します。このインターセプターが機能するためには、インターセプター参照をアクションで構成する必要があります。
Fileuploadインターセプターを構成する場合、2つのパラメーターを指定できます。
AlldyTypes:ファイルタイプをアップロードすることを許可され、英語のコンマで複数のファイルタイプで区切られています
最大化:ファイルサイズをバイト単位でアップロードできます。
ファイルフィルタリングが失敗すると、システムは自動的に入力論理ビューに転送されるため、このアクションのために[入力]という名前の論理ビューを構成する必要があります。さらに、DefaultStackのインターセプター参照は、表示されているようにこのアクションに対して構成する必要があります。
struts.xml構成ファイルは次のとおりです。
<?xml version = "1.0" encoding = "utf-8"?> <!doctype struts public " - // apacheソフトウェア財団// dtd struts構成2.3 // en" "http://struts.apache.org/dtds/struts-2.3.dtd" value = "false" /> <corstant name = "struts.devmode" value = "true" /> <fackage name = "default" namespace = " /" extends = "struts-default"> <! - file upload-> <action name = "file_*" method = "{1}"> < name = "fileupload"> <! - 許可されたファイルタイプ - > <param name = "adpoldtypes"> image/png、image/gif、image/jpeg </jpeg </jpeg </param> <! - 許可ファイルサイズ - > <param name = "maximumsize"> 2000 </param> </interceptor-ref> <ページ - > <結果名= "入力">/web-inf/jsp/input.jsp </result> <result name = "page">/web-inf/jsp/fileupload.jsp </result> </action> </package> </struts>上記で構成されたファイルアップロードインターセプターでは、ファイルのアップロードタイプが画像ファイルのみであり、ファイルサイズは2000バイトを超えることはできません。アップロードされたファイルが大きすぎるか、タイプが一致しない場合、入力論理ビューにジャンプします。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。