Buenas,
Mi pregunta es sobre sessiones, tengo un filtro hecho para controlar si existe una variable de sesion y sino enviar a una pagina de error, el caso es que entro la primera vez a la pagina filtrada y me funciona, me envia a la de error, tras esto ejecuto un action y creo la session y voy a la pagina filtrada y todo correcto, hasta aqui normal, el problema es el siguiente. Desde esta pagina filtrada ejecuto un action y destruyo la session y entonces al volver a la misma pagina no me ejecuta el filtro y se me carga sin problema cuando no deberia ser asi.
EL FILTRO
=======
public void doFilter (ServletRequest request,
ServletResponse response,
FilterChain chain)
{
HttpSession session;
if (request instanceof HttpServletRequest){
session = ((HttpServletRequest)request).getSession();
try{
if (session.getAttribute("Usuario") != null){
chain.doFilter(request, response);
}else{
((HttpServletResponse)response).sendRedirect(((Htt pServletRequest)request).getContextPath() + "/Welcome.do");
}
}catch (IOException io){
System.out.println("IOException raised");
}
catch (ServletException se){
System.out.println("ServletException raised");
}
}
}
Struts-config
=========
<global-forwards>
<forward name="welcome" path="/Welcome.do"/>
</global-forwards>
<action-mappings>
<action path="/Welcome" forward="/welcomeStruts.jsp"/>
<action path="/abrir" type="com.jash.Login" scope="session">
<forward name="index" path="/index.jsp"/>
</action>
<action path="/cerrar" type="com.jash.LoginOut">
<forward name="index" path="/index.jsp"/>
</action>
</action-mappings>
action login
=======
public ActionForward execute (ActionMapping mappings, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession(true);
session.setAttribute("Usuario","jacinto");
return mappings.findForward("index");
}//Fin
action login out
===========
public ActionForward execute (ActionMapping mappings, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession(true);
session.removeAttribute("Usuario");
session.invalidate();
return mappings.findForward("index");
}//Fin
web.xml
=====
<filter>
<filter-name>prueba</filter-name>
<filter-class>com.jash.filters.FilterPrueba</filter-class>
</filter>
<filter-mapping>
<filter-name>prueba</filter-name>
<url-pattern>/index.jsp</url-pattern>
</filter-mapping>
Creo que eso es todo, si me podeis hechar una mano o enviar un ejemplo, manual en castellano, idea, cualquier cosa, para leer y tirar para adelante.
Otro problema o algo que no entiendo es que al crear el struts-config.xml, configuro unos action con unos forward, y cuando ejecuto el action en vez de irse a la pagina que le pongo en el forward, lo que hace es como un include... no se si es normal o no.
Gracias de antemano por tu ayuda, un saludo!
Jash.