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