繁体   English   中英

验证Java EE项目中的会话

[英]validate session in java ee project

我需要制作一个控制器,该控制器首先验证会话,如果无效,它将发送我回到登录页面。 如果有效,我需要停留在当前页面上; 我总是得到太多重定向。 有没有办法从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";

}

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

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

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM