验证java ee项目中的会话

时间:2015-05-07 14:00:26

标签: java spring redirect model-view-controller

我需要创建一个首先验证会话的控制器,如果它无效,它会将我发送回登录页面。如果它有效,我需要留在当前页面;我总是得到太多的重定向;有没有办法从void方法重定向?这是来自控制器的方法:

public String onLoad(HttpSession session){
    AngajatiBean ab=(AngajatiBean) session.getAttribute("myAng");
    session.setAttribute("forms",pas.getForms(ab));
    if(ab!=null)
        return "redirect:hello.htm";
    else
        return "redirect:here.htm";

}

1 个答案:

答案 0 :(得分:0)

  

有没有办法从void方法重定向?

实际上,您可以实施Filter方法doFilter,以便在会话过期时将用户重定向到登录页面。

public class RedirectFilter implements Filter{

    public void init(FilterConfig filterConfig) throws ServletException {       
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req=(HttpServletRequest)request;
        req.getSession().setAttribute("forms",pas.getForms(ab));
        if(req.getSession().getAttribute("myAng")==null){
            req.getRequestDispatcher("/here.htm").forward(request, response);
        }else{
        chain.doFilter(request, response);
        }
    }    
    public void destroy() {}  
}

然后将其添加到web.xml以配置过滤器

<filter>
        <filter-name>FilterExample</filter-name>
        <filter-class>com.stackoverflow.answer.RedirectFilter</filter-class>
</filter>
<filter-mapping>
       <filter-name>FilterExample</filter-name>
       <url-pattern>/here.htm</url-pattern>
</filter-mapping>