Spring MVCの4つの提出方法
8818 ワード
Spring MVCはRESTスタイルの要求方法をサポートしています。GET、POST、PUT、DELETEの四つの要求方法はそれぞれデータベースの中のselect、insert、udate、deleteに対応しています。ブロガーは自分でSpringTestの練習項目を書いています。この四つの要求方式の応用が参考になります。コードアドレス:https://github.com/yueqi1125/SpringTest
1.RESTスタイル
REST:Representational State Transfer。(資源)は層状態転換を表す。今一番人気のあるインターネットソフトアーキテクチャです。それは構造がはっきりしていて、標準に合っています。分かりやすくて、広がりやすいです。資源:Resource。ネットワーク上のエンティティ、またはネットワーク上の具体的な情報です。テキスト、一枚の写真、一曲の歌、サービス、つまり具体的な存在です。1つのURI(統一リソースロケータ)でそれを指すことができ、各リソースは特定のURIに対応する。このリソースを取得するには、URIにアクセスすればいいので、URIは各リソースのユニークな識別子です。表現層:Representation。資源を具体的に表す形式を、その表現層といいます。例えば、テキストはtxt形式で表現できます。HTML形式、XML形式、JSON形式で表現できます。状態変換:State Transfer。一つの要求を出すたびに、クライアントとサーバの相互作用のプロセスを表します。HTTPプロトコルは、すべての状態がサーバ端に保存されている無状態プロトコルである。したがって、クライアントがサーバを操作するには、サーバー側に何らかの手段で「状態変換」を行わなければならない。このような転化は表現層の上に成り立っているので、「表現層状態転化」です。具体的には、HTTPプロトコルでは、操作方式を表す動詞が四つあります。GET、POST、PUT、DELETEです。これらはそれぞれ4つの基本的な動作に対応しています。GETはリソースを取得するために使用されます。POSTは新しいリソースを作成するために使用されます。PUTはリソースを更新するために使用されます。DELETEはリソースを削除するために使用されます。
2.プロファイル
ブラウザはPOSTとGET方法しかサポートしていないので、_を使う必要があります。method隠しフィールド通知SpringこれはPUT/DELETE要求です。このため、Spring 3.0は、これらの要求を、GET、POST、PUT、DELETE要求をサポートするように、標準的なhttp方法に変換するフィルタを追加している。このフィルタをweb.xmlファイルに配置する必要があります。
配置が完了したら、対応ページで私たちの4つの提出方式を使って前楽屋データのインタラクションができます。フロント提出データ:
1.RESTスタイル
REST:Representational State Transfer。(資源)は層状態転換を表す。今一番人気のあるインターネットソフトアーキテクチャです。それは構造がはっきりしていて、標準に合っています。分かりやすくて、広がりやすいです。資源:Resource。ネットワーク上のエンティティ、またはネットワーク上の具体的な情報です。テキスト、一枚の写真、一曲の歌、サービス、つまり具体的な存在です。1つのURI(統一リソースロケータ)でそれを指すことができ、各リソースは特定のURIに対応する。このリソースを取得するには、URIにアクセスすればいいので、URIは各リソースのユニークな識別子です。表現層:Representation。資源を具体的に表す形式を、その表現層といいます。例えば、テキストはtxt形式で表現できます。HTML形式、XML形式、JSON形式で表現できます。状態変換:State Transfer。一つの要求を出すたびに、クライアントとサーバの相互作用のプロセスを表します。HTTPプロトコルは、すべての状態がサーバ端に保存されている無状態プロトコルである。したがって、クライアントがサーバを操作するには、サーバー側に何らかの手段で「状態変換」を行わなければならない。このような転化は表現層の上に成り立っているので、「表現層状態転化」です。具体的には、HTTPプロトコルでは、操作方式を表す動詞が四つあります。GET、POST、PUT、DELETEです。これらはそれぞれ4つの基本的な動作に対応しています。GETはリソースを取得するために使用されます。POSTは新しいリソースを作成するために使用されます。PUTはリソースを更新するために使用されます。DELETEはリソースを削除するために使用されます。
2.プロファイル
ブラウザはPOSTとGET方法しかサポートしていないので、_を使う必要があります。method隠しフィールド通知SpringこれはPUT/DELETE要求です。このため、Spring 3.0は、これらの要求を、GET、POST、PUT、DELETE要求をサポートするように、標準的なhttp方法に変換するフィルタを追加している。このフィルタをweb.xmlファイルに配置する必要があります。
<filter>
<filter-name>hiddenHttpMethodFilterfilter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilterfilter-class>
filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilterfilter-name>
<servlet-name>DispatcherServletservlet-name>
filter-mapping>
3.フロントバックグラウンドコード配置が完了したら、対応ページで私たちの4つの提出方式を使って前楽屋データのインタラクションができます。フロント提出データ:
<form action="stuManager/${stu.stuNo }.action" method="get">
<input type="submit" value=" ">
form>
<form action="${ctxPath}/stuManager.action" method="post">
<input type="submit" value=" ">
form>
<form action="${ctxPath}/stuManager.action" method="post">
<input type="hidden" name="_method" value="put"/>
<input type="submit" value=" ">
form>
<form action="stuManager/${stu.stuNo }.action" method="post">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value=" ">
form>
バックグラウンド受信データ:/**
* GET
* stuNo
*/
@RequestMapping(value="/stuManager/{stuNo}", method=RequestMethod.GET)
public String getStuInfo(@PathVariable("stuNo") String stuNo, Map map){
map.put("stu", us.getStuInfo(stuNo));
// Service , map
return "queStu";
}
/**
* POST
*
*/
@RequestMapping(value="/stuManager", method=RequestMethod.POST)
public String addStu(Student stu, Map map){
us.addStu(stu);
// Service
map.put("msg", " ");
return "addStu";
}
/**
* PUT
*
*/
@RequestMapping(value="/stuManager", method=RequestMethod.PUT)
public String updateStu(Student stu){
us.updateStu(stu);
// Service
return "redirect:/stuList";
}
/**
* DELETE
* stuNo
*/
@RequestMapping(value="/stuManager/{stuNo}", method=RequestMethod.DELETE)
public String delStu(@PathVariable("stuNo") String stuNo){
us.delStu(stuNo);
// Service
return "redirect:/stuList";
}
この中でgetとpostの方法は、htmlに持参したものですが、PUTとDELETEの方法はサポートされていませんので、POST方式でこの2つの方法をシミュレートする必要があります。フォームに隠し領域を追加する必要があります。名前は「u」です。method、値はPUTまたはDELETEです。以下のコードです
<input type="hidden" name="_method" value="PUT/DELETE">