J2EEfilter:登录页面无法加载css或任何图像
我已经访问了Java FilterImplementation以进行会话检查链接,其中提到了Spring安全性。 我没有得到我需要的帮助。
应用filter后,login.jsp无法加载CSS和图像。
我正在尝试在web.xml中提供filter并在login.jsp以外的页面上应用filter的简单示例。 Web.xml文件是:
struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* AuthenticationFilter2 filter.AuthorizationFilter2 avoid-urls login.jsp `
filter类是:
private ArrayList urlList; public void destroy() { // TODO Auto-generated method stub System.out.println("authorization filter2 destroy method...."); } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { System.out.println("authorization filter2 doFilter method...."); HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; String url = request.getServletPath(); System.out.println("ppp:"+request.getRequestURL()); System.out.println("url is :"+url); boolean allowedRequest = false; System.out.println("url list is :"+urlList); if(urlList.contains(url.substring(1))) { allowedRequest = true; } System.out.println("request allowed....."+allowedRequest); if (!allowedRequest) { Map session = ActionContext.getContext().getSession(); /*HttpSession session = request.getSession(false);*/ /* if (null == session) { response.sendRedirect("login.jsp"); }*/ System.out.println("session contains login :"+session.containsKey("login")); if(!session.containsKey("login")){ response.sendRedirect("login.jsp"); } } chain.doFilter(req, res); } public void init(FilterConfig config) throws ServletException { System.out.println("authorization filter2 init method...."); String urls = config.getInitParameter("avoid-urls"); StringTokenizer token = new StringTokenizer(urls, ","); urlList = new ArrayList(); while (token.hasMoreTokens()) { urlList.add(token.nextToken()); } }
登录页面根据要求包含css
和images
。
请帮帮我。 谢谢。
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String uri = ((HttpServletRequest)request).getRequestURI(); @SuppressWarnings("rawtypes") Map session = ActionContext.getContext().getSession(); if ( uri.indexOf("/css") > 0){ chain.doFilter(request, response); } else if( uri.indexOf("/images") > 0){ chain.doFilter(request, response); } else if( uri.indexOf("/js") > 0){ chain.doFilter(request, response); } else if (session.containsKey("login")) { chain.doFilter(request, response); } else { ((HttpServletResponse)response).sendRedirect(((HttpServletRequest)request).getContextPath() + "/login?authentication=failed"); } }
把这段代码放在你的动作类中,它可以工作。 谢谢你们。
您必须从filter中排除在logjn.jsp页面上使用的CSS文件和图像