[Resolvido]Struts + javax.servlet.Filter ignora css

5 respostas
D
Estou fazendo uma aplicação web usando struts 1.3.10, e tenho uma pasta includes dentro de WebContent. Nessa pasta ficam as pasta para arquivos css e imagens. Dentro de WEB-INF fica a pasta jsp. Antes de eu criar o filtro de autenticação estava tudo bem, mas desde que habilitei o filtro, a aplicação web ignora os arquivos css e as imagens, como se não as encontrasse. Já tentei várias coisas, como usar
${pageContext.request.contextPath}/includes/css/estilo.css
,
./includes/css/estilo.css
,
../includes/css/estilo.css
e já movi o arquivo css para dentro da pasta da jsp,, mas nada funcionou. Alguma sugestão? A classe AuthenticationFilter é bem básica:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		
		HttpServletRequest httpRequest = (HttpServletRequest) request;
		HttpServletResponse httpResponse = (HttpServletResponse) response;
		HttpSession session  = httpRequest.getSession();
		
		UsuarioVO usuario = (UsuarioVO)session.getAttribute(Constants.USUARIO);
		
       if(!httpRequest.getRequestURI().endsWith("login.do") && (usuario == null))
               httpResponse.sendRedirect("/Domain/login.do");
       else
               chain.doFilter(request, response);
	}

5 Respostas

D

Heeeelp!!!

J-Chist

Coloca aí seu mapeamento do filtro, no web.xml. Pode ser a forma como você declarou a url-pattern.

D
J-Chist, o mapeamento eu fiz assim:
<filter-mapping>  
		<filter-name>AuthenticationFilter</filter-name>  
		<url-pattern>/*</url-pattern> 

	</filter-mapping>
J-Chist

Quando você faz <url-pattern>/</url-pattern> , está dizendo que todos o acesso a qualquer recurso dentro do seu contexto deve ser filtrado. Dessa forma, quando alguma imagem é acessada na pasta /Contexto/includes, também é filtrada (porque o / abrange o /includes), e nesse momento sua aplicação pode estar se perdendo . Se você quiser manter essa url-pattern, pode colocar um teste no if do seu filtro:

if(!httpRequest.getRequestURI().contains("includes") && !httpRequest.getRequestURI().endsWith("login.do") && (usuario == null))

Ou também pode mudar essa url-pattern, para só pegar as actions (/.do) ou jsp’s (/.jsp).

D

Era isso mesmo!!!
Obrigada, salvou minha pele!

Criado 12 de fevereiro de 2010
Ultima resposta 24 de fev. de 2010
Respostas 5
Participantes 2