Soring boot で、HttpSession の管理
最初のコントローラーで、HttpSession を開始し、
HTMLからの画面遷移時と、そのページ内のAJAX での
セッションの継続処理と、セッションタイムアウトでのリダイレクトを行いたい。
Controller
JAVA
1public class IndexController { 2 3 ItemsMapper itemsMapper; 4 @Autowired 5 HttpSession session; 6 7 //①動作 8 @RequestMapping(value="/", method=RequestMethod.GET) 9 public String index(Model model) { 10 11 //セッションタイムアウト値 12 String sto = String.valueOf(session.getMaxInactiveInterval()); 13 model.addAttribute("sto", sto); 14 15 //セッソンID保管 16 String id = session.getId(); 17 session.setAttribute("sessionId","id="+id); 18 19 List<Items> itemList = itemsMapper .selectAll(); 20 model.addAttribute("itemsList", itemList); 21 22 // セッションへ保存 23 session.setAttribute("itemsListSessions", itemList); 24 25 return "index"; 26 } 27 28 //index.html内のJQuery AJAXから呼ばれる ②③動作 29 @ResponseBody 30 @RequestMapping(value="/getItemList", method=RequestMethod.POST) 31 public List<Items> getItemList(HttpServletResponse response) { 32 33 List<Items> itemList = new ArrayList<>(); 34 35 if(session.getAttribute("sessionId")==null){ 36 37 session.invalidate(); //破棄 38 response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); //戻ってからリダイレクト 39 return itemList; 40 41 } 42 43 System.out.println("------ AJAX ------");; 44 45 itemList = (List<Items>)session.getAttribute("itemsListSessions"); 46 47 return itemList; 48 } 49 50 51 52 53 54 55 56} 57 58
セッションの継続ができない。
セッションタイムアウト値を3分に設定し、3分後の動作でセッションの値を
拾えないのでセッションタイムアウトという判断はそれで大丈夫かと思うのですが、
セッションタイムする前に、動作を行い、その時点から再度3分間のセッションを保持できない。
上記ソースにて、
①セッション開始?
②2分後にAJAX処理
③①の開始から、4分後に再度AJAX処理
この時点でセッションが拾えない。
タイムアウト値 3分
0分スタート
2分にタッチ
4分にタッチ ←この時点でセッションに保管したデータが拾えない。
なにもしなければ、3分後にセッションタイムアウトだと思うんですが、
2分にアクションしているので、そこからまた3分は大丈夫かと思うんですが、
4分にタッチすると、セッションタイムアウトになる。
良く分かってなくてすみません。
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
STS4 JDK11
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。