我有一個包含幾個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
請給出關於如何去做的建議。
我有一個包含幾個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
請給出關於如何去做的建議。
您可以添加以下映射到你的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);
}
}
}
你知道了javax.servlet.Filter的? –