我需要在某些页面上添加一个过滤器,用于检查是否设置了某些Session属性。
我想要实现的是:用户尝试直接导航到某个页面。在该页面上,有3个需要SessionVariables的Portlet。这些是由上一页设置的。因此,如果这些变量不可用,则必须重定向到上一页。
所以我想添加一个过滤器钩子,所以该类实现了Filter
public class SampleFilter implements Filter {
@Override
public void destroy() {
/* Destroy method*/
}
@Override
public void doFilter(
ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) {
/* I need to access the PortletSession here! */
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void init(FilterConfig filterConfig) {
/*Method to init filter..*/
}
}
是否可以检查我使用doFilter()
设置的session.setAttribute("name", value, PortletSession.APPLICATION_SCOPE);
方法中的变量?
答案 0 :(得分:1)
好的,我发现了这个:
因为会话属性的范围是" APPLICATION_SCOPE",可以通过HttpSession访问它们:示例
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
HttpSession session = httpServletRequest.getSession();
log.debug(session.getAttribute("applicationScopedName"));
filterChain.doFilter(servletRequest, servletResponse);
}
这就是全部!