2014-02-15 70 views
1

Java Web中是否有任何方式使得每當請求到達時調用特定的JSP頁面?在PHP中,我使用.htaccess文件將所有請求重定向到同一頁面。以下是我的代碼在.htaccess中使用PHP應用程序:Java將所有頁面請求重定向到相同的JSP文件

RewriteEngine on 
RewriteRule ^(.*)$ bootstrap.php [L] 

是否.htaccess文件也適用於Java的?在java中這樣做的正確方法是什麼?

+0

我認爲你是在JSP – SpringLearner

+0

尋找response.sendRedirect是()其實我不想發送位置頭球客戶端。只需要爲任何請求URL調用相同的JSP頁面。 –

+2

requestdispatcher.forward(...)不會更改URL – SpringLearner

回答

1

使任何請求由servlet處理或filter.You可以做你的web.xml下面您應該配置一個servlet或URL模式作爲通配符過濾

<filter> 
     <filter-name>sessionFilter</filter-name> 
     <filter-class>com.app.ActionFilter</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>sessionFilter</filter-name> 
     <url-pattern>*</url-pattern> 
    </filter-mapping> 

在您的ActionFilter類實現了javax.servlet.Filter,並且在您的doFilter方法中,只需將響應重定向到您的jsp。

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 

    RequestDispatcher requestDispatcher = req.getRequestDispatcher("myJsp.jsp"); 

    try { 
     requestDispatcher.forward(req, res); 
    } 
    catch (ServletException e) { 
     logger.error("Exception occurred:", e); 
    } 
    catch (IOException e) { 
     logger.error("Exception occurred:", e); 
    } 
} 

您可以根據修改該法的親語法處理您的項目需要

+0

但是這種方法會再次創建另一個請求。引用@ asim-shaq說:「其實我不想將位置標題發送給客戶端。」 –

+0

如果是這樣,您必須起訴請求調度員。我正在修改代碼 –

+0

請求調度員對相同的請求工作,而位置標頭不會發送到客戶端 –

0

.htaccess文件僅適用於Apache HTTP Server。對於JSP,您需要在動態Web項目的web.xml中配置url模式(即<url-pattern>/*</url-pattern>)。

+0

我正在使用eclipse kepler「動態Web應用程序項目」。你能確切地告訴我應該在哪裏配置?項目中沒有看到任何web.xml文件。 –

+1

WEB-INF/web.xml。確保在創建項目之前檢查創建部署描述符複選框。如果你沒有檢查它,xml文件將不會出現在那裏。 –

相關問題