2014-06-05 74 views
0

我有一個包含幾個jsp頁面的web應用程序。我的主頁是welcome.jsp和應用程序的url就像www.test.com重定向主頁中的所有頁面

所以,無論何時用戶擊中網址(www.test.com)它重定向到www.test.com/welcome.jsp

現在我想如果用戶希望直接訪問任何其他頁面一樣www.test.com/*.jsp應該總是重定向到我的主頁是www.test.com/welcome.jsp

請給出關於如何去做的建議。

+0

你知道了javax.servlet.Filter的? –

回答

1

您可以添加以下映射到你的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> 

這將映射爲一個.jsp文件到的welcome.jsp所有請求。

編輯:

如果你想只重定向用戶,如果他們還沒有去過的歡迎JSP,在web.xml文件中不使用上面的代碼。相反,在你的JSP設置用戶的會話標誌的welcome.jsp:

<c:set scope="session" var="sessionStarted" value="true"/> 

然後加入創建過濾器,以將其重定向這樣一個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); 
    } 
} 
} 
+0

即使我在歡迎頁面,它也不允許我切換到任何頁面。我的目的就像是如果用戶試圖通過url直接訪問任何其他jsp頁面,那麼只有他們應該恢復到歡迎頁面。流程必須從歡迎頁面開始。 – Shibankar

+0

好的。我現在明白了。我會用更好的解決方案更新我的答案! –

+0

非常感謝。等待你的答覆。 – Shibankar

相關問題