2015-05-07 4 views
0

Мне нужно создать контроллер, который сначала проверяет сеанс, и если он недействителен, он отправляет меня обратно на страницу входа. Если это действительно, мне нужно остаться на текущей странице; Я всегда получаю слишком много перенаправлений; Есть ли способ перенаправления из метода void? Это метод от контроллера:проверить сеанс в проекте java ee

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"; 

} 
+0

я забыл упомянуть ..everything остальное нормально и Myang отправляется, когда Логин производится. У меня также есть страница выхода, которая отменяет сеансы. – hallelujah

+0

Используйте некоторую библиотеку, например [spring-security] (http://docs.spring.io/autorepo/docs/spring-security/3.2.x/guides/hellomvc.html) или [shiro] (http: // shiro. apache.org/spring.html). – user1516873

+0

я видел что-то подобное, но я не совсем понял, как это сделать, и я бы не хотел разрушать мою конфигурацию xmls. есть ли другой способ сделать это? просто с контроллера? возможно, функцию, которая может перенаправляться без возврата с контроллера? – hallelujah

ответ

0

Есть ли способ, чтобы перенаправить из метода ничтожной?

На самом деле, вы можете реализовать метод Filter «s 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> 
Смежные вопросы