Rediriger toutes les pages de la page d'accueil
Question
J'ai une application Web qui comprend quelques pages jsp.Et ma page d'accueil est bienvenue.jsp Et l'URL de l'application ressemble à www.test.com
Ainsi, chaque fois qu'un utilisateur accède à l'URL (www.test.com), il est redirigé vers www.test.com/welcome.jsp.
maintenant, je veux que si un utilisateur souhaite accéder directement à une autre page comme www.test.com/*.jsp, il doit toujours rediriger vers ma page d'accueil qui est www.test.com/welcome.jsp
Veuillez donner toute suggestion sur la façon de le faire.
La solution
Vous pouvez ajouter le mappage suivant à votre web.xml :
<servlet>
<servlet-name>welcome</servlet-name>
<jsp-file>welcome.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>welcome</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
Cela mappera toutes les demandes de fichier .jsp vers Welcome.jsp.
Modifier:
Si vous souhaitez rediriger uniquement les utilisateurs s'ils ne sont pas déjà allés sur la jsp de bienvenue, n'utilisez pas le code ci-dessus dans votre fichier web.xml.Au lieu de cela, dans votre jsp, définissez un indicateur sur la session de l'utilisateur dans Welcome.jsp :
<c:set scope="session" var="sessionStarted" value="true"/>
Ajoutez ensuite créer un filtre pour les rediriger comme celui-ci RedirectFilter.java
:
@WebFilter("*.jsp")
public class RedirectFilter implements Filter {
public void destroy() {}
public void init(FilterConfig fConfig) throws ServletException {}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
Object sessionStarted = ((HttpServletRequest)request).getSession(true).getAttribute("sessionStarted");
if(sessionStarted==null){
request.getServletContext().getRequestDispatcher("welcome.jsp").forward(request, response);
}else{
chain.doFilter(request, response);
}
}
}