Como pegar o nome da página em um servlet filter

3 respostas
balthazar
Boa tarde! <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/s.pnglight_smile.png?v=6" title=":slight_smile:" class="emoji" alt=":slight_smile:">

Bom, meu problema é, acho eu, bem simples.

Em um Filtro Servlet eu preciso verificar se um determinado arquivo existe ou nao;

- caso positivo, o fluxo da execução continuara normalmente;

- caso negativo, o fluxo devera mudar para uma outra pagina que sera a de configuracao desse arquivo;
public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		
		if(!isApplicationConfigured()) {
			HttpServletResponse response = (HttpServletResponse) arg1;			
			response.sendRedirect("properties.jsf");
			return;
		} else {
			if(HibernateUtil.isEmpty()) {
				HibernateConfigure.configure();
			}
			arg2.doFilter(arg0, arg1);
		}
	}

O codigo acima serviria justamente para realizar essa verificação mas o problema é que por ele ta filtrando uma pagina .jsf e ele tambem ta redirecionando para uma pagina .jsf, ta caindo em um loop eterno logo, eu gostaria de saber como posso verificar se a pagina da requisição é ou não a mesma para configuração, ou seja, como posso pegar o nome da página dentro de um servlet :?:
Isso é algo que dentro de um PhaseListener é tranquilo tipo:

FacesContext facesContext = event.getFacesContext();
String viewRootId = facesContext.getViewRoot().getViewId();

so que o filtro executa antes do clico JSF por isso, com servlet, ta meio complicado… :shock:

alguém sabe pegar esse mardito nome? :?

3 Respostas

Foxlol

Cara não estou me lembrando agora, mas tenta isso:

HttpServletRequest req = (HttpServletRequest) arg0;
String pagina = req.getServletPath();

ou

String pagina = req.getContextPath();

Um desses dois se não me engano deve te devolver a página.

Posta ai se deu certo.

Flw

balthazar

pow, beleza cara o metodo getServletPath retorna direitinho o nome da pagina bem como preciso… valeu mesmo!!!

balthazar
Olá novamente!

Bom, agora preciso saber so mais uma coisa. Digamos que eu tenha 3 filtros, existiria uma forma poder mudar a ordem de execução entre os filtros programaticamente, tipo: um filtro que teste se a pagina for de processaXML.jsf entao manda para um filtro que nao abra sessao no hibernate;

senão, se a pagina nao for processamentoXML.jsf entao manda para o filtro que abre sessao no hibernate;

Existe alguma maneira de mudar essa ordem de excecução dos filtros:?:

Criado 7 de junho de 2008
Ultima resposta 9 de jun. de 2008
Respostas 3
Participantes 2