J'essaie d'ajouter un filtre entre certaines servlets et jsp pour l'utilisateur connecté avant d'afficher le jsp. Le problème est que j'essaye de récupérer l'URL du navigateur qui a été transféré à la page de connexion, mais je ne peux pas trouver comment. J'ai essayé d'obtenir l'URI au filtre et de l'envoyer en tant qu'attribut d'une requête au Connexion servlet mais cela ne fonctionne pas.obtenir l'URL du navigateur
mon doFilter()
package com.forum.filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class RestrictionFilter implements Filter {
public static final String CONNEXION = "/WEB-INF/connexion.jsp";
public static final String ATT_USER = "utilisateur";
public static final String CHEMIN = "chemin";
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String chemin = request.getRequestURI().substring(
request.getContextPath().length());
HttpSession session = request.getSession();
if (session.getAttribute(ATT_USER) == null) {
request.setAttribute(CHEMIN, chemin);
request.getRequestDispatcher(CONNEXION).forward(request, response);
} else {
chain.doFilter(request, response);
}
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
mon servlet de Connexion
package com.forum.servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.forum.beans.Utilisateur;
import com.forum.form.ConnexionForm;
public class Connexion extends HttpServlet {
public static final String ATT_USER = "utilisateur";
public static final String ATT_FORM = "form";
public static final String VUE = "/WEB-INF/connexion.jsp";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.getServletContext().getRequestDispatcher(VUE)
.forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ConnexionForm form = new ConnexionForm();
String chemin = (String) request.getAttribute("chemin");
Utilisateur utilisateur = form.connecterUtilisateur(request);
HttpSession session = request.getSession();
if (form.getErreurs().isEmpty()) {
session.setAttribute(ATT_USER, utilisateur);
if (chemin == null || chemin.startsWith("/connexion"))
response.sendRedirect("/projetForum/forum");
else
response.sendRedirect("/projetForum" + chemin);
} else {
request.setAttribute(ATT_USER, null);
request.setAttribute(ATT_FORM, form);
this.getServletContext().getRequestDispatcher(VUE)
.forward(request, response);
}
}
}
quelques balises de web.xml
<servlet>
<servlet-name>Connexion</servlet-name>
<servlet-class>com.forum.servlets.Connexion</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Connexion</servlet-name>
<url-pattern>/connexion</url-pattern>
</servlet-mapping>
<filter>
<filter-name>RestrictionFilter</filter-name>
<filter-class>com.forum.filters.RestrictionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RestrictionFilter</filter-name>
<servlet-name>Nouveau</servlet-name>
<servlet-name>Profil</servlet-name>
<servlet-name>Editer</servlet-name>
<servlet-name>Repondre</servlet-name>
</filter-mapping>
Je ne pouvais pas comprendre votre question: _Je essaie de récupérer l'URL du navigateur avec lequel il a été envoyé à la page de connexion, mais je reçois partout d'un peu now_ – gerrytan
Oh désolé, J'ai mis à jour mon message. J'espère que c'est plus compréhensible. –