使用ajax的会话超时问题

时间:2016-03-23 04:07:23

标签: javascript spring session timeout

我在struts中有两个应用程序,另一个在spring中。从struts应用程序我有一个链接,它将通过ajax调用调用spring应用程序控制器,返回模型

在struts应用程序中,我有20分钟的会话超时,并且在执行struts应用程序中呈现的spring应用程序的任何事务时,struts应用程序中的会话超时保持不变,并且在20分钟后它将退出。

struts应用程序jsp页面。

    <body>
<div id="content"></div>
</body>
<script type="text/javascript">

     $(document).ready(function() {
         var sessionId = '<%= sessionId %>'

         $.ajax({
         type: "GET",
         url: '/springapp/index.app?id='+sessionId,
         data: "" ,
        success: function(response){
            $('#content').html(response);
        },
        error: function(e){
        alert('Error: ' + e);
        console.log(e)
        }
    });


    });
</script>

Spring应用程序控制器。

@RequestMapping(value = "/*.app", method = {RequestMethod.GET, RequestMethod.POST})
    public String jspController(ServletRequest req, ServletResponse res) throws exception {
        LOGGER.debug("inside jspController() start");
        HttpServletRequest request = (HttpServletRequest) req;
        String model = request.getRequestURI();
        if (model.endsWith("index.app")) {
            String sessionKey = request.getParameter("employeeId");
            SpringStrutsHandshake springStrutsHandshake = securityDelegate.getUserId(sessionKey);
            User user = userDelegate.getUserByEmployeeId(springStrutsHandshake.getUserId());
            user.setSessionKey(sessionKey);
            request.setAttribute("USER", user);
            model = "candidateList";
        } else {
            model = model.substring(model.lastIndexOf("/") + 1, model.lastIndexOf("."));
        }
        return model;
    }

如果渲染的spring应用程序页面中有任何事务,你能帮我解决一下如何修复超时问题吗?

1 个答案:

答案 0 :(得分:0)

如果您不希望struts应用程序中的会话超时,为什么不继续定期(可能每15分钟)向struts应用程序发送请求,它只会阻止会话空闲,直到春天应用程序回电。

或者你可以像这样添加一个动态设置会话超时时间的方法

request.getSession.setMaxInactiveInterval(60*60); //in seconds