Spring Framework第11話-静的ファイル処理とファイルアップロード
19303 ワード
学習内容
学習目標
せいてきしげんしょり
Static Webリソースの処理
これまで、動的リソースのみを学習し、実践してきました.リクエストが発行されると、サーバ側に到着し、さまざまなメソッドを呼び出して戻ります.
ただし、サーバを処理する必要がなく、クライアントに直接応答するリクエストもあります.例えば、CSSファイルなど.これらのリクエストは静的リソースと呼ばれます.
< mvc:resources mapping="/resources/**" location="/WEB-INF/resources" />
応答:/WEB-INF/resources/scripts/jQuery.js
上のラベルはservlet-contextです.xmlで作成すればいいです.
このタグには2つのプロパティがあります.
1)マッピング属性:URLパスを表します.
すなわち,URLに/resourcesを追加すると,「これは静的リソース要求である」と考える.
2)locationプロパティ:静的リソースへのディレクトリパス.
ファイルのアップロード
ファイルアップロード時のHTMLファイル
<form method="post" enctype="multipart/form-data">
...
</form>
ファイルアップロード機能は、通常、HTMLのformタグを使用し、enctype値を「multipart/form-data」に格納します.
複数部分サポート機能を使用するには、複数部分Resolverをスプリング設定として登録します。
<form method="post" enctype="multipart/form-data">
...
</form>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="104857600" /> <!-- 100MB -->
<property name="defaultEncoding" value="UTF-8"/>
</bean>
ファイルをアップロードするには、DispatcherServicelet xmlファイルにbeanとして登録する必要があります.
また、多くのプロパティを設定することもできます.
依存項目の追加
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<form method="post" enctype="multipart/form-data" action="/bbs/upload">
<input type="text" name="name"/>
<input type="file" name="file" />
<input type="submit" value="전송" />
</form>
依存項目も追加する必要があります.HTMLを記入する場合は、入力タグタイプの値を「file」と書くだけです.
Controller File Upload Logicの追加
@RequestMapping("/upload")
public String doUpload(@RequestParam("name") String name, @RequestParam("file") MultipartFile file, Model model){
if(!file.isEmpty()){
File.tmpFile = new File("c:\\", file.getOriginalFilename());
file.transferTo(tmpFile);
}
Model.addAttribute("fileNamek", name);
return "upload_ok";
}
Webからファイルを受信する場合、JavaはMultipartFileというファイルデータを受信することができます.その後、transferTo()を使用してファイルシステムにファイルを保存します.
これにより、実際にファイルのアップロードが実現されます.
マルチセクションファイルの主な方法
Commandオブジェクトとして受信
public class UploadCommand{
private String name;
private MultipartFile file;
//
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public MultipartFile getFile(){
return this.file;
}
public void setFile(MultipartFile file){
this.file = file;
}
}
HTMLからデータを受信する場合、ファイルデータはCommandオブジェクトとして受信することもできます.まずドメインオブジェクト(VO)を定義します.@ReqeustMapping("/doUpload")
public ModelAndView doUpload(UploadCommand command) throws IllegalStateException, IOExption{
MultipartFile uploadedFile = command.getFile();
if(!uploadedFile.isEmpty()){
File file = new File("c:\\", uploadedFile.getOriginalFilename());
uploadedFile.transferTo(); //실제 저장
}
ModelAndView view = new ModelAndView();
view.setViewName("test/fileUpload");
return view;
}
ファイル保存時のセキュリティ
String fileRandomName = UUID.randomUUID().toString();
実習
1.静的リソースの処理
/bbsリクエスト時、index.jspファイルを静的リソースとして配布する実践.
↑URLリクエスト着信時index.jspをパブリッシュできる方法を作成します.
↑ index.jspを作成し、画像ファイルとcssファイルを追加します.
↑HTMLページが表示されますが、写真やCSSファイルは適用されていないようです.
静的リソースが登録されていないため
↑ servlet-context.xmlにタグを追加します.
このオプションを有効にすると、要求が受信されると、DispatcherServicelet(=frontcontroller)はコントローラを検索しません.要求は静的リソース要求なので、すぐに検索してパスに戻ります.
↑xmlを変更して再度リクエストを送信した場合の結果.
写真の出力が正しい.CSSファイルは見えないが、padding設定がいくつか見られるはずだ.
2.ファイルのアップロード
↑ Servlet-context.DispatcherServiceletプロファイル(xml)にBEANを登録します.
class属性値「CMR」を打ってCTRL+space barを押すと出てきます~
↑ pom.xml(Mavenプロジェクト設定ファイル)からcommons-fileuploadライブラリを追加します.
ファイルの場所はプロジェクトのルートディレクトリにあります~
↑コントローラをもう1つ作成してコードを書きます.
↑お願いします.
↑OKアップロードに成功しました.jspが表示されます.
↑Controllerで作成したファイル格納パス(「C:upload」)に入ると、ファイルは実際に保存されます.
Reference
この問題について(Spring Framework第11話-静的ファイル処理とファイルアップロード), 我々は、より多くの情報をここで見つけました
https://velog.io/@se_bb/Spring-Framework-11강-static-file-처리와-File-Upload
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(Spring Framework第11話-静的ファイル処理とファイルアップロード), 我々は、より多くの情報をここで見つけました https://velog.io/@se_bb/Spring-Framework-11강-static-file-처리와-File-Uploadテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol