spring学習の@Session Attributes実例解析
3006 ワード
本研究の主な内容はspring学習の@Session Attributesです。具体的には以下の通りです。
一、@ModelAttribute
デフォルトでは、ModelMapの属性作用領域はrequestレベルであり、つまり、今回の要求が終了すると、ModelMapのプロパティは破棄されます。複数の要求の中でModelMapの属性を共有したいなら、その属性をsessionに保存しなければならない。このようにModelMapの属性は、またぎの要求によってアクセスできる。
springは、次の要求が対応するModelMapの属性リストにアクセスできるように、ModelMapのどの属性を選択的に指定するかをsessionに保存する必要があります。この機能は、クラス定義に
モデルオブジェクトの特定の属性をSession範囲の作用領域とする。
ここでは一つのModelMapの属性だけをSessionに入れます。実は
二、@ModelAttribute
Session属性にアクセスする必要があるcontrollerに
以上がspring学習の@Session Attributesの実例解析のすべての内容であり、皆さんの役に立つことを願っています。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。
一、@ModelAttribute
デフォルトでは、ModelMapの属性作用領域はrequestレベルであり、つまり、今回の要求が終了すると、ModelMapのプロパティは破棄されます。複数の要求の中でModelMapの属性を共有したいなら、その属性をsessionに保存しなければならない。このようにModelMapの属性は、またぎの要求によってアクセスできる。
springは、次の要求が対応するModelMapの属性リストにアクセスできるように、ModelMapのどの属性を選択的に指定するかをsessionに保存する必要があります。この機能は、クラス定義に
@SessionAttributes
の注釈を付すことによって達成される。モデルオブジェクトの特定の属性をSession範囲の作用領域とする。
package com.baobaotao.web;
…
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.SessionAttributes;
@Controller
@RequestMapping("/bbtForum.do")
@SessionAttributes("currUser")
//① ModelMap currUser , Session ,
public class BbtForumController {
…
@RequestMapping(params = "method=listBoardTopic")
public String listBoardTopic(@RequestParam("id")int topicId, User user,
ModelMap model) {
bbtForumService.getBoardTopics(topicId);
System.out.println("topicId:" + topicId);
System.out.println("user:" + user);
model.addAttribute("currUser",user);
//② ModelMap
return "listTopic";
}
}
私たちは②にModelMap属性を追加しました。その属性はcurrUserといい、①において@SessionAttributes
の注釈でModelMapの中のcurrUserという属性をSessionに置くので、listBoardTopic()要求に対応するJSPビューページで request.getAttribute(“currUser”)
とsession.getAttribute(“currUser”)
を介してオブジェクトuserを取得することができます。この属性は、次の要求に対応するJSPビューページにおいてsession.getAttribute(“currUser”)
またはModelMap#get(“currUser”)
を介してアクセスされてもよい。ここでは一つのModelMapの属性だけをSessionに入れます。実は
@SessionAttributes
に複数の属性を指定することができます。文字列配列で@SessionAttributes({“attr1”,”attr2”})
などの複数の属性を指定できます。また、,@SessionAttributes
は、@SessionAttributes(types = User.class)
などの属性タイプによって、session化されるModelMap属性を指定することもできます。もちろん、@SessionAttributes(types = {User.class,Dept.class})
などの複数のクラスを指定することもできます。属性名と属性タイプ指定を併用することもできます。二、@ModelAttribute
Session属性にアクセスする必要があるcontrollerに
@SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”})
を加えて、actionに必要なUserパラメータに@SessionAttributes
を加えて、両者の属性名が一致することを保証することができる。SpringMVCは、自動的に@ModelAttribute
で定義された属性をModelMapオブジェクトに注入し、setup actionのパラメータリストでModelMapにこのようなオブジェクトを取ってパラメータリストに追加します。Session Stortsの@SessionAttributes
方法を呼び出さない限り、このオブジェクトは常にSessionに保持され、Session情報の共有を実現します。
@Controller
@SessionAttributes("currentUser")</span>
public class GreetingController{
@RequestMapping
public void hello(@ModelAttribute("currentUser")User user){
//user.sayHello()
}
}
締め括りをつける以上がspring学習の@Session Attributesの実例解析のすべての内容であり、皆さんの役に立つことを願っています。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。