今日のトレーニングコンテンツだけでなく、かなりの下でよりまとめ、複雑な一日のために不快な鼻、寒さより難しく、残念ながら今日、虚偽または教師を超える例体は、現時点では、可能な限りのペースに追いつくために、咳、鼻水のプラス首の痛みは、私は可能な限り詳細に、今日の訓練のすべての内容を記録することを決定し、ブログの本来の目的は続くと定量化し、各プロセスの進捗状況を、だけでなく、将来を与えるためにルールまで、将来を見てみましょう、それを学習するプロセスを記録することです彼らの休暇良いの思い出。
SpringMVC第5のデータ提出:
フィフス:提出する動的データプレースホルダー
要約昨日4つの一般的なデータ提出にSpringMVCを、教師は、第五今日の話:ノート@PathVariableをが提供するフレームワーク使用してパラメータとしてリクエストのURLの値をコレクションの制限は、データ提出のこの方法は、ハイパーリンクに限定されていることです。
<a href="${pageContext.request.contextPath}/admin/five/中国/66.action">
第五种:动态占位符提交数据</a>
@RequestMapping("/five/{name}/{age}")
public String five(@PathVariable(value = "name") String name,@PathVariable(value = "age") int age){
System.out.println(name+"-----"+age);
return "main";
}
このように、データは、データがURL要求されたアクションに渡されることを提出、違いは、データが要求アクションとなっていることをデータや要求の代わりに、疑問符、手段から分離スラッシュ/の直接の使用があるということです不可欠な部分。@PathVariableは、各@RequestMapping( "/ 5 / {名} / {年齢}")プレースホルダを解析するために使用されます。このプロセスは、多くの場合、分散開発に使用される、アドレスバーに提出されたデータは表示されません。
SpringMVCのページには、4つの主要な方法をジャンプ:
実際には、ページジャンプの方法は、多くの場合、2つの種類に分けられ、一つはリダイレクトを転送しています。
要求プロセスは、このされているプロセス:クライアント最初の(私たちのコントローラーである)サーバに要求を送信が受信され、サーバの要求に応じて、要求の処理方法に対応する処理方法を見つける完全に最終的に私のページを決めています要求は、ページに転送され、または要求がアクションに転送、またはページにリダイレクト、またはアクションにリダイレクトされます。
クライアントの要求は、サーバは、転送されるように、完全に自分のサーバーを扱うことができるようフォワーディングを理解することができる
:フォワーディングとのリダイレクトの違い
1)----->はフォワードが変化しないブラウザのアドレスへのアクセス、ALTERリダイレクト
2)送信された要求の数を---->前進1要求、2リダイレクト
ポータブルリクエスト()パラメータ----->を繰り越すことができるかどうか)3を持っていないリダイレクト
ウェブ-INFリソースにアクセスするための4)---- >前方缶のアクセスではなく、アクセスリダイレクション
SpringMVCのアップロードファイル:
1.インポートしたjarパッケージ
コモンズ・ファイルアップロード-1.2.2.jarが-IO-1.3.2.jarとコモンズ
2. Springmvc.xml設定ファイルで:
<bean id = "multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
3.ファイルのアップロードの方法を使用してフォームのフォームデータを送信修正ENCTYPEマルチパート/フォームデータ点に留意すべき値、ストリーミングファイルに鍵を送信するためのデフォルトモードを示しています
<form action="${pageContext.request.contextPath}/admin/up.action"
method="post" enctype="multipart/form-data">
<p>图片:</p>
<input type ="file" name = "myfile">
<input type ="submit" value="上传">
</form>
4.次に、書き込みコントローラ。ファイルのアップロードには、コントローラクラスは、次の3つのタスクを完了するために:
- ビルドファイル名、UUIDネーミングを使用し、元のファイルの接尾辞を使用
- サーバーに格納されている指定されたパス
- ファイル転送用メモリ
使用UUIDは、ファイルの名前の一意性を確保するために、命名します。ダッシュ自体で生成されたUUID - 私たちは除去する必要がある:. Uuid.toStringは、()(「 - 」、「」)を交換した後、我々は元のファイル名の接尾辞を抽出する必要があります。たとえば、元のファイルの完全な名前がdog1.jpg呼び出された後、我々は気にしない、元のファイル名DOG1のために、私たちは彼の名前サフィックス(ある、彼のタイプ)を取得したい、このタイプで、我々は削除するために使用することができますUUID接尾辞をステッチのダッシュは、それは変更されませんので、ファイル名とファイル・タイプの一意性を保証していないだけというように、新しいファイル名を取得します。ここでは、クラスの先生が提供するツールは、私たちは、上記の機能を実現するための良い方法を定義する助けています。
package com.sxau.demo.utils;
import java.util.UUID;
public class FileNameUtil {
//根据UUID生成文件名
public static String getUUIDFileName() {
UUID uuid = UUID.randomUUID();
return uuid.toString().replace("-", "");
}
//从请求头中提取文件名和以及文件的后缀
public static String getRealFileName(String context) {
// Content-Disposition: form-data; name="myfile"; filename="a_left.jpg"
int index = context.lastIndexOf("=");
String filename = context.substring(index + 2, context.length() - 1);
return filename;
}
//根据给定的文件名截取后缀
public static String getFileType(String fileName){
//9527s.jpg
int index = fileName.lastIndexOf(".");
return fileName.substring(index);
//8b7cb153974c4947ad6934a3213dd1f4.jpg
}
}
その後、我々は、最大動作するように良い方法クラスで定義されたツールを呼び出すことができます。