[解決済み] Spring-mvcでSession属性を使用する方法
質問
このコードのspring mvc形式のアナログを書くのを手伝ってくれませんか?
session.setAttribute("name","value");
でアノテーションされた要素をどのように追加するか。
@ModelAttribute
アノテーションで指定された要素をセッションに追加し、それにアクセスする方法は?
どのように解決するのですか?
レスポンスごとにオブジェクトを削除したい場合は、セッションは必要ありません。
ユーザーセッションの間、オブジェクトを保持したい場合。 いくつかの方法があります。
-
セッションに直接属性を追加する。
@RequestMapping(method = RequestMethod.GET) public String testMestod(HttpServletRequest request){ ShoppingCart cart = (ShoppingCart)request.getSession().setAttribute("cart",value); return "testJsp"; }
で、コントローラからこのように取得できます。
ShoppingCart cart = (ShoppingCart)session.getAttribute("cart");
-
コントローラのセッションをスコープ付きにする
@Controller @Scope("session")
-
オブジェクトのスコープを設定します。例えば、userオブジェクトがあり、そのオブジェクトは常にセッションに存在しなければなりません。
@Component @Scope("session") public class User { String user; /* setter getter*/ }
で、各コントローラに必要なクラスを注入します。
@Autowired private User user
は、クラスをセッションに保持するためのものです。
-
AOPのプロキシ注入. in spring -xml:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd"> <bean id="user" class="com.User" scope="session"> <aop:scoped-proxy/> </bean> </beans>
で、各コントローラに必要なクラスを注入します。
@Autowired private User user
5.HttpSessionをメソッドに渡します。
String index(HttpSession session) {
session.setAttribute("mySessionAttribute", "someValue");
return "index";
}
6.セッションでModelAttributeを作る @SessionAttributes("ShoppingCart")で、ModelAttributeを作ります。
public String index (@ModelAttribute("ShoppingCart") ShoppingCart shoppingCart, SessionStatus sessionStatus) {
//Spring V4
//you can modify session status by sessionStatus.setComplete();
}
のように、コントローラクラス全体にモデルを追加することもできます。
@Controller
@SessionAttributes("ShoppingCart")
@RequestMapping("/req")
public class MYController {
@ModelAttribute("ShoppingCart")
public Visitor getShopCart (....) {
return new ShoppingCart(....); //get From DB Or Session
}
}
それぞれメリット・デメリットがあります。
セッションを全ノードにコピーするため、クラウドシステムではより多くのメモリを消費する可能性があります。また、直接法(1、5)はアプローチが雑で、ユニットテストには向いていません。
セッションにアクセスするためのjsp
<%=session.getAttribute("ShoppingCart.prop")%>
Jstlで。
<c:out value="${sessionScope.ShoppingCart.prop}"/>
をThymeleafで表示します。
<p th:text="${session.ShoppingCart.prop}" th:unless="${session == null}"> . </p>
関連
-
[解決済み] Spring 3 リクエスト処理に失敗しました。ネストされた例外は java.lang.NullPointerException です。
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] PHPのセッションを30分後に失効させるにはどうしたらいいですか?
-
[解決済み] JSP/Servletを使用してサーバーにファイルをアップロードするにはどうすればよいですか?
-
[解決済み】PostmanでファイルやJSONデータをアップロードする方法は?
-
[解決済み】Spring MVCで静的コンテンツを処理する方法は?
-
[解決済み] Spring MVC RESTコントローラでHTTPヘッダ情報にアクセスする方法は?
-
[解決済み] Spring mvc @PathVariable
-
[解決済み] Spring MVCかSpring Bootか【終了しました
-
[解決済み] SwaggerのURLに認証なしでアクセスできるようにSpring Securityを設定する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】BindingResultもBean名のプレーンターゲットオブジェクトもリクエスト属性として利用できない [重複].
-
[解決済み] Spring 3 リクエスト処理に失敗しました。ネストされた例外は java.lang.NullPointerException です。
-
[解決済み] Spring SecurityのantMatcher()はいつ使うのか?
-
[解決済み] Spring MVCの@ModelAttributeとは何ですか?
-
[解決済み] JAX-RSとSpring Restの違いについて
-
[解決済み] Spring mvc @PathVariable
-
[解決済み] Spring Controller のマッピングで url のパラメータを受け取るには?
-
[解決済み] Spring MVCかSpring Bootか【終了しました
-
[解決済み] SwaggerのURLに認証なしでアクセスできるようにSpring Securityを設定する方法
-
[解決済み] Spring3コントローラで "ModelAndView "と "String "を返すのはどっちがいい?