あなたが言ったアイデアは、セッションスコープの Bean を操作する 1 つの方法です。セッション スコープの POJO を定義できます。
@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class YourSessionBean{
...
}
そして、それを Controller クラスに挿入できます。
@Controller
public class YourController {
@Autowired
private YourSessionBean yourSessionBean;
...
}
@SessionAttributesを使用して POJO をセッションに保存することもできます。
public class YourObject {
...
}
@SessionAttributes
コントローラーで注釈を使用して、のインスタンスYourObject
をセッションに入れることができます。
@Controller
@SessionAttributes("yourObj")
public class YourController {
...
@RequestMapping(value="/url")
public ModelAndView process(...) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("yourObj", new YourObject()); // this will put YourObj into session
return modelAndView;
}
}
ただし、を使用している間@SessionAttributes
は、以下のステートメント ブロックを考慮する必要があります ( @SessionAttributes Docからコピー)。
注: この注釈を使用して示されるセッション属性は、特定のハンドラーのモデル属性に対応し、会話型セッションに透過的に格納されます。これらの属性は、ハンドラーが会話セッションの完了を示すと削除されます。したがって、この機能は、特定のハンドラーの会話の過程で一時的にセッションに格納されることになっている会話属性に使用してください。
ユーザー認証オブジェクトなどの永続的なセッション属性については、代わりに従来の session.setAttribute メソッドを使用してください。
HttpSession
ハンドラー メソッドのメソッド引数として使用して@RequestMapping
、POJO クラスをセッションに追加することもできます。
@Controller
public class YourController {
...
@RequestMapping(value="/url")
public ModelAndView process(HttpSession session,...) {
ModelAndView modelAndView = new ModelAndView();
session.setAttribute("yourObj", yourObj);
...
return modelAndView;
}
}