Redirecionar p/ JSP Struts 2

Ola pessoal.

Estou desenvolvendo um sistema web com struts 2. E Fiz um login, aquele esquema de interceptar acton e se o usuario nao estiver logado, ele redireciona para a tela de login.

Até ai beleze, a questão é que ele intercepta somente ACTIONS, agora, se o usuario digitar um endereco de uma JSP que nao tenha alguma action, a pagina abre.

Como eu faria para interceptar qualquer chamada, nao somente actions?

Valew.
Felipe.

Brother eu tive o mesmo problema,

Para resolve-lo eu criei um filtro no web.xml pra funcionar o interceptor. Eu tenho um exemplo no trabalho, amanhã vou verificar como fiz e posto. Acredito que deve haver uma solução mais elegante para isso, porém usando filtros foi a unica forma que consegui fazer funfar. Espero que alguem poste uma solução melhor :cool:

[quote=paulo.junior]Brother eu tive o mesmo problema,

Para resolve-lo eu criei um filtro no web.xml pra funcionar o interceptor. Eu tenho um exemplo no trabalho, amanhã vou verificar como fiz e posto. Acredito que deve haver uma solução mais elegante para isso, porém usando filtros foi a unica forma que consegui fazer funfar. Espero que alguem poste uma solução melhor :cool: [/quote]

Otimo… se voce conseguir o código ficaria muito grato…

Paulo, tenho curiosidade de saber como você fez isso com filters. Se puder postar :wink:

Brother,

To meio inrolado hj no trabalho, mas deu uma folginha aki… foi assim q funfou:

No web.xml adicione:



<filter>
        <filter-name>JSPAuthFilter</filter-name>
        <filter-class>filter.JSPAuthFilter</filter-class>
    </filter>


<filter-mapping>
        <filter-name>JSPAuthFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

A classe JSPAuthFilter fica dessa forma:


public class JSPAuthFilter implements Filter {


    private FilterConfig filterConfig = null;

    public JSPAuthFilter() {
    } 

    private void doBeforeProcessing(ServletRequest request, ServletResponse response)
	throws IOException, ServletException {
	if (debug) log("JSPAuthFilter:DoBeforeProcessing");

	
    } 

    private void doAfterProcessing(ServletRequest request, ServletResponse response)
	throws IOException, ServletException {
	if (debug) log("JSPAuthFilter:DoAfterProcessing");
	
    }

    
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain)
	throws IOException, ServletException {

	  chain.doFilter(request, response);
      
        
        if (request instanceof HttpServletRequest) {
            String url = ((HttpServletRequest)request).getRequestURI();
            if (url.contains(".jsp")) {
                HttpServletRequest r = ((HttpServletRequest)request);
                        
                Object o = request.getAttribute("authenticationWeb");
                if (o != null) {
                    
                    ((HttpServletResponse)response).sendRedirect("Login.jsp");
                
                    
                }
                                               
            }
        }


    }

    
   
    public FilterConfig getFilterConfig() {
	return (this.filterConfig);
    }


    
    public void setFilterConfig(FilterConfig filterConfig) {

	this.filterConfig = filterConfig;
    }

   
    public void destroy() { 
    }


    
    public void init(FilterConfig filterConfig) { 

	this.filterConfig = filterConfig;
	if (filterConfig != null) {
	    if (debug) { 
		log("JSPAuthFilter:Initializing filter");
	    }
	}
    }

   
    public String toString() {

	if (filterConfig == null) return ("JSPAuthFilter()");
	StringBuffer sb = new StringBuffer("JSPAuthFilter(");
	sb.append(filterConfig);
	sb.append(")");
	return (sb.toString());

    }



    public void log(String msg) {
	filterConfig.getServletContext().log(msg); 
    }

    private static final boolean debug = true;
}

Essa foi uma solução q bolamos aki na empresa, porém gostaria que alguem posta-se uma solução melhor, integrada ao struts 2 mesmo. Será que é possivel? Não acredito que o framework não tem nada pra tratar isso.

Fica no ar a pergunta, o struts 2 tem tal funcionabilidade? Interceptar jsp’s? 8O

Muito obrigado cara… Valew mesmo

Opa… cara… tentei implementar a sua solução… mas nao funcionou muito bem… Quer dizer, houve uma incopatibilidade com o Struts2.

Quando ele chama o filtro que não é via o do Struts, ele nao carrega nenhuma pagina que contenha tags do struts… procurei no google e o pessoal diz que nao tem como fazer diferente disso…

estou postando o meu arquivo web.xml para dar uma olhada…

[code]<?xml version=“1.0” encoding=“UTF-8”?>
<web-app id=“WebApp_ID” version=“2.4” xmlns=“http://java.sun.com/xml/ns/j2ee” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=“http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd”>
<display-name>
Help Desk</display-name>

&lt;!-- Tag do Struts 2 --&gt;
&lt;filter&gt;
	&lt;filter-name&gt;struts2&lt;/filter-name&gt;
	&lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher&lt;/filter-class&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
	&lt;filter-name&gt;struts2&lt;/filter-name&gt;
	&lt;url-pattern&gt;/*&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;

&lt;filter&gt;   
    &lt;filter-name&gt;JSPAuthFilter&lt;/filter-name&gt;   
    &lt;filter-class&gt;br.com.mercur.sistema.JSPAuthFilter&lt;/filter-class&gt;
       
&lt;/filter&gt; 
&lt;filter-mapping&gt;   
    &lt;filter-name&gt;JSPAuthFilter&lt;/filter-name&gt;   
    &lt;url-pattern&gt;/recurso/*&lt;/url-pattern&gt;        
    &lt;url-pattern&gt;/agenda/*&lt;/url-pattern&gt;
&lt;/filter-mapping&gt; 

&lt;welcome-file-list&gt;
	&lt;welcome-file&gt;login.jsp&lt;/welcome-file&gt;
&lt;/welcome-file-list&gt;

</web-app>
[/code]

Alguma idéia?

amigo vc pode explicar melhor, eu não entendi muito bem.

valew

Opa… ja consegui resolver… Parece que quando uma chamadanao passa pelo Dispatcher do Struts da algum problema, algo como se ele não colocasse no Stack!! Sei la.

Mas enfim, consegui resolver ja.

Valew pela ajuda.

posta ai como vc resolveu :grin: