Reindirizzare tutte le pagine nella home page
Domanda
Ho un'applicazione Web che include poche pagine JSP.E la mia home page è benvenuta.jsp e l'URL dell'applicazione è come www.test.com
Allora, ogni volta che un utente ha premuto l'URL (www.test.com) Reindirizza su www.test.com/welcome.jsp
Ora voglio se un utente vuole accedere direttamente a nessun'altra pagina come www.test.com/*.jsp dovrebbe sempre reindirizzare alla mia home page www.test.com/welcome.jsp
Si prega di dare alcun suggerimento su come farlo.
Soluzione
È possibile aggiungere la seguente mappatura al tuo 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>
.
Questo mapperà tutte le richieste di un file .jsp a Benvenuti.jsp.
Modifica:
Se si desidera reindirizzare gli utenti solo se non sono già stati al Benvenuto JSP, non utilizzare il codice sopra nel tuo file web.xml.Invece nel tuo JSP imposta un flag sulla sessione dell'utente in Benvenuti.jsp:
<c:set scope="session" var="sessionStarted" value="true"/>
.
Quindi aggiungi Crea filtro per reindirizzarli come questo 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);
}
}
}
.