将控件从被调用者servlet发送回调用者jsp

时间:2015-01-26 08:32:14

标签: java jsp servlets redirect forward

我有一个要求就像用户尝试访问应用程序中的任何URL而不登录应用程序

loggedin=false;
if(!loggedin)
{
forward request to login jsp page
}
else
{
execute the jsp
}

现在登录jsp将获取并将登录凭据发送到控制器servlet,如果登录凭证是正确的,则控制器servlet必须将请求发送回用户访问的URL。    我试图使用重定向/前进,但那些并不是满满的。

我能否有一些建议来实现这个目标

1 个答案:

答案 0 :(得分:1)

在Spring Security甚至Java EE Declarative Security中都有开箱即用的解决方案。

无论如何,如果你想实现这种行为,就像在Cookie中存储原始URL的值一样简单。然后,当用户正确登录时,您可以重定向到该已保存的URL

    boolean loggedin=false;
    if(!loggedin){
        Cookie c = new Cookie("URC", request.getPathInfo());
        c.setHttpOnly(true);
        c.setPath(request.getContextPath());
        c.setMaxAge(-1);
        response.addCookie(c);
        //forward request to login jsp page
    }else{
        Cookie cookie = getUrlRedirectCookie(request);
        if(cookie!=null){
            //redirect to cookie.getValue()
        }else{
            //execute the jsp
        }
    }
}

private Cookie getUrlRedirectCookie(HttpServletRequest request){
    Cookie[] cookies = request.getCookies();
    if(cookies!=null && cookies.length>0){
        for (int i = 0; i < cookies.length; i++) {
            Cookie cookie = cookies[i];
            if(cookie.getName().equals("URC")){
                return cookie;
            }
        }
    }
    return null;
}