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.

È stato utile?

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);
    }
}
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top