2013-06-20 78 views
0

我想將所有請求映射到特定的servlet,但Tomcat不會讓我映射/ WEB-INF /目錄。Tomcat 7/WEB-INF /目錄映射

我的web.xml文件。

<servlet> 
    <servlet-name>TestServlet</servlet-name> 
    <servlet-class>mypackage.TestServlet</servlet-name> 
</servlet> 
<servlet-mapping> 
    <servlet-name>TestServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

這工作正常,直到您請求/ WEB-INF /目錄中的頁面(給出404)。有什麼方法可以映射所有東西,包括/ WEB-INF /目錄到一個servlet嗎?

我也嘗試使用/ WEB-INF/*映射servlet,但它沒有效果。

+0

可能複製http://stackoverflow.com/questions/14093446/why-request-which的-start-with-web-inf-can-be-mapped-to-servlet-filter – fmodos

回答

1

不可以。您無法直接從外部訪問WEB-INF中的文件。

您將必須有一個htmljsp文件,該文件會將請求重定向到WEB-INF文件夾中的文件。

+0

我不想訪問/ WEB-INF /目錄中的任何內容。我只想攔截來自目錄的請求,並用我自己的servlet處理它,而不是自動生成404. – nikdeapen

+1

它被硬連線到容器中。容器甚至沒有那麼遠。這基本上是一種安全預防措施。 –

0

根據tomcat標準,您需要將所有* .html,* .jsp等放在應用程序根目錄中。/WEB-INF目錄主要用來包含你的web.xml,classes和libs而不是jsp/htmls。您不能直接導航到放置在WEB-INF目錄下的任何文件/工件(對META-INF也有效)。

這是servlet引擎的安全特性: 下的內容WEB-INF受到保護,無法通過URL從「外部」進行訪問。否則,只要組裝適當的URL,任何人都可以閱讀應用程序/數據庫 配置等敏感細節。

您需要按照有關打包你的web應用程序的指導方針,在這裏閱讀更多:

http://tomcat.apache.org/tomcat-6.0-doc/appdev/deployment.html