session scopeについて
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[Cart問題]]
* session scopeについて [#m1eed57f]
長くなったので、ページを分けました。
** session scopeの確認 [#w1b0d28a]
cartはセッションの中で管理しなければなりません。そのため...
まずは、session scopeの使い方を確認します。
最初に以下のような簡単なクラスを定義します。
#pre{{
package example.cart.service;
public class CartService {
private Integer id;
public CartService() {
id = new Integer(1);
}
}
}}
session scopeオブジェクトは、サーブレットではなく、applic...
そこで、session-def.xmlにsession scopeをまとめて定義しま...
#pre{{
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan...
xmlns:aop="http://www.springframework.org/schema/a...
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.sp...
http://www.springframework.org/schema/aop http://www.spri...
<!-- a HTTP Session-scoped bean exposed as a proxy -->
<bean id="cartService" class="example.cart.service.CartS...
</beans>
}}
本当は、<aop:scoped-proxy />を使って自動的にsession scope...
次にこのsession scopeオブジェクトを使用するメソッド(ここ...
#pre{{
ApplicationContext co = WebApplicationContextUtils.g...
Object obj = co.getBean("cartService");
}}
としてアプリケーション・コンテキストからcartServiceを取得...
次に、デバッガでCartServiceのコンストラクタにブレークポイ...
ブラウザーからlistのページにアクセスするとcartServiceオブ...
ブラウザーを起動し直すと再度cartServiceオブジェクトのコン...
オブジェクトが生成されることが確認できます。
** テストケース [#w1ffaed7]
先の修正でsession scopeのオブジェクトは、取得できるように...
試行錯誤の結果、以下のような対処をTestCaseにしました。
- getApplicationContextメソッドで返されるContextをGeneric...
- StaticWebApplicationContextのようにscopeの処理を登録
- requestの前後にRequestContextFilterの処理を追加
上記の処理を追加したTestCaseをAbstractTransactionalSpring...
に登録しました。
使い方は、
#pre{{
public void testmemberOpsController_List() {
dbUnitHelperDao.restore("src/test/resources/dump.xml");
MockHttpServletRequest req = new MockHttpServletRequest...
MemberOpsController memberOpsController = (MemberOpsCon...
ModelAndView mv = null;
try {
beginRequest(req);
mv = memberOpsController.handleRequest(req,new MockHtt...
endRequest(req);
} catch (Exception err) {
err.printStackTrace();
}
Member expectedMember = (Member)getApplicationContext()...
assertNull(mv.getViewName());
Member[] members = (Member[])mv.getModel().get("memberL...
assertEquals(memberManager.print(expectedMember), membe...
HttpSession session = req.getSession();
req = new MockHttpServletRequest("POST","memberops/list...
// sessionを持ち回るとsession内の要求として扱われる
req.setSession(session);
memberOpsController = (MemberOpsController)getApplicati...
mv = null;
try {
beginRequest(req);
mv = memberOpsController.handleRequest(req,new MockHtt...
endRequest(req);
} catch (Exception err) {
err.printStackTrace();
}
expectedMember = (Member)getApplicationContext().getBea...
assertNull(mv.getViewName());
members = (Member[])mv.getModel().get("memberList");
assertEquals(memberManager.print(expectedMember), membe...
}
}}
handleRequestの前後にbeginRequest, endRequestを入れ、最初...
** コメント [#u5f8459f]
この記事は、
#vote(おもしろかった[0],そうでもない[1],わかりずらい[1])
#comment_kcaptcha
終了行:
[[Cart問題]]
* session scopeについて [#m1eed57f]
長くなったので、ページを分けました。
** session scopeの確認 [#w1b0d28a]
cartはセッションの中で管理しなければなりません。そのため...
まずは、session scopeの使い方を確認します。
最初に以下のような簡単なクラスを定義します。
#pre{{
package example.cart.service;
public class CartService {
private Integer id;
public CartService() {
id = new Integer(1);
}
}
}}
session scopeオブジェクトは、サーブレットではなく、applic...
そこで、session-def.xmlにsession scopeをまとめて定義しま...
#pre{{
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan...
xmlns:aop="http://www.springframework.org/schema/a...
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.sp...
http://www.springframework.org/schema/aop http://www.spri...
<!-- a HTTP Session-scoped bean exposed as a proxy -->
<bean id="cartService" class="example.cart.service.CartS...
</beans>
}}
本当は、<aop:scoped-proxy />を使って自動的にsession scope...
次にこのsession scopeオブジェクトを使用するメソッド(ここ...
#pre{{
ApplicationContext co = WebApplicationContextUtils.g...
Object obj = co.getBean("cartService");
}}
としてアプリケーション・コンテキストからcartServiceを取得...
次に、デバッガでCartServiceのコンストラクタにブレークポイ...
ブラウザーからlistのページにアクセスするとcartServiceオブ...
ブラウザーを起動し直すと再度cartServiceオブジェクトのコン...
オブジェクトが生成されることが確認できます。
** テストケース [#w1ffaed7]
先の修正でsession scopeのオブジェクトは、取得できるように...
試行錯誤の結果、以下のような対処をTestCaseにしました。
- getApplicationContextメソッドで返されるContextをGeneric...
- StaticWebApplicationContextのようにscopeの処理を登録
- requestの前後にRequestContextFilterの処理を追加
上記の処理を追加したTestCaseをAbstractTransactionalSpring...
に登録しました。
使い方は、
#pre{{
public void testmemberOpsController_List() {
dbUnitHelperDao.restore("src/test/resources/dump.xml");
MockHttpServletRequest req = new MockHttpServletRequest...
MemberOpsController memberOpsController = (MemberOpsCon...
ModelAndView mv = null;
try {
beginRequest(req);
mv = memberOpsController.handleRequest(req,new MockHtt...
endRequest(req);
} catch (Exception err) {
err.printStackTrace();
}
Member expectedMember = (Member)getApplicationContext()...
assertNull(mv.getViewName());
Member[] members = (Member[])mv.getModel().get("memberL...
assertEquals(memberManager.print(expectedMember), membe...
HttpSession session = req.getSession();
req = new MockHttpServletRequest("POST","memberops/list...
// sessionを持ち回るとsession内の要求として扱われる
req.setSession(session);
memberOpsController = (MemberOpsController)getApplicati...
mv = null;
try {
beginRequest(req);
mv = memberOpsController.handleRequest(req,new MockHtt...
endRequest(req);
} catch (Exception err) {
err.printStackTrace();
}
expectedMember = (Member)getApplicationContext().getBea...
assertNull(mv.getViewName());
members = (Member[])mv.getModel().get("memberList");
assertEquals(memberManager.print(expectedMember), membe...
}
}}
handleRequestの前後にbeginRequest, endRequestを入れ、最初...
** コメント [#u5f8459f]
この記事は、
#vote(おもしろかった[0],そうでもない[1],わかりずらい[1])
#comment_kcaptcha
ページ名:
SmartDoc