RE:redireccionar ( solucionado )
Ya lo tengo solucionado, olvidar los otros dos que puse, aunque sean verdad o no jeje
Yo tengo una pagina principal que se llama "entrada.jsp" desde hay saco un formulario con dos campos, NOMBRE, y PASS y un boton para autentificar, lo que se pretende es que si no estas logueado no te deje entrar en las paginas, si estas, pues si.
Yo cree una clase que se llama "filtro" donde compruebo si esta logueado o no, tiene tres metodos :
-init
-destroy
-doFilter
El doFilter es donde tenemos que hacerlo todo
Vamos paso por paso:
1) voy a mostrar lo que tengo puesto en el archivo "web.xml" ya que la explicacion tiene mucho que ver
lo unico que se necesita es estas dos cosas
// nombre del filtro y donde esta metido
<filter>
<filter-name>Filtro</filter-name>
<filter-class>hola.Filtro</filter-class>
</filter>
// aqui ponemos el o las paginas q pasaran por el filtro, nombre del filtro y la extension de las paginas afectadas
// en este caso .jsf
<filter-mapping>
<filter-name>Filtro</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
// de esta manera afecta a todas
// otra forma de ponerlo es especificando la pagina que quieres que pase poniendo en
// <url-pattern>/nombrePagina.jsf</url-parttern>
2)Si recordais , arriba puse que mi pagina principal era "entrada.jsp" entonces como tengo puesto en el filtro que coja todas las extensiones de jsf ,tambien cogera esta, por lo tanto, al arrancar la aplicacion entrara en un bucle infinito porque al intentar buscar un usuario logueado no lo va encontrar y claro, esta pagina es donde me logueo, no se si pillais la idea.
A la solucion que llegue, fijo que se podia hacer mejor, mas legible, etc ,pero asi a mi me funciona, siempre ahy tiempo para optimizar el codigo.
Es complicado de explicar ( para mi claro ), por lo visto el "getServletPath" nos devuelve la ruta donde nos encontramos en el momento que actua el filtro, lo que hice fue coger esa ruta, sacarle "/" ya que viene con ella y comparar, si es cierto, con el "chain.doFilter(req, res)" le decimos al servidor que siga ejecutando los filtros o algo asi, en terminos de andar por casa, que pases de esta pagina y sigas ejecutandote.
Bueno despues el "else", lo primero no se que significa ( soy un novato ), despues obtengo la sesion, el siguiente "if" lo que se hace es recoger de la sesion el usuario.
El "p.getUSR()" es una funcion que tengo para recoger el nombre del que le puse al usuario cuando lo meti en la sesion, ( ya cree el objeto antes para recuperarlo ) si el usuario existe pues lo mismo que antes, que siga su camino
y en ultimo caso aparece la redireccion que el pasara si el usuario no este en sesion
("index.jsp" es mi primera pagina la cual tengo un fondo de pantalla que a los 2 segundos se redirecciona ella sola a la pagina "entrada.jsp", mas q nada lo hice para darle mas vida al proyecto ;.P )
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException
{
HttpSession session;
PersonaBean p = new PersonaBean();
if (((HttpServletRequest)req).getServletPath().substring(1).equals("entrada.jsf"))
chain.doFilter(req, res);
else
{
if (req instanceof HttpServletRequest)
{
session = ((HttpServletRequest)req).getSession();
if (session.getAttribute(p.getUSR()) != null)
{
// en caso de que ya haya un usuario en la sesion, continuar con los
// filtros, en este caso no tengo ninguno
chain.doFilter(req, res);
}
else
{
// si no existe usuario en sesion, redireccionamos a la inicio
((HttpServletResponse)res).sendRedirect("index.jsp");
}
}
}
}
Bueno esto es muy largo pero estuve hoy casi 6 horas para buscar ejemplos, me ayudo un poco mi jefe que es un lince ( no me lo hizo, me ayudo ) .La verdad que en muchos lados aparece casi lo mismo pero siempre surgen alguna dudas tontas y errores, con esta aportacion, si alguien la lee ( aparte de aburrirse) espero ayudarle aunque sea dentro e 4,5,o 6 años ya que esto de los foros es para cuando lo necesites.
Si escribi algo mal, o explique algo mal, corregirlo ya que puse la idea que tengo ahora mismo
Un saludo