[英]Tomcat 6.x web.xml default and custom servlet routing
我在web.xml文件中定義了兩個servlet,分別是default2和myservlet。 default2 servlet用於映射靜態文件,例如javascript和css。 myservlet用於獲取動態內容。
<servlet>
<servlet-name>default2</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:my-servlet.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
servlet映射定義如下
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default2</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
當我嘗試訪問/ resources下的任何文件時,我得到404。為什么此配置不起作用或更改此配置以使其起作用的任何想法。
Tomcat在6.0.30之前的默認servlet實際上提供了由HttpServletRequest.getPathInfo()
標識的靜態資源,因此當請求/resources/style.css
時將返回/style.css
。
從6.0.30版本開始,Tomcat的行為已更改。 因此,問題的原始配置可在較新版本的Tomcat中使用。 請參閱changelog中的 “ 50026 :添加對將默認servlet映射到/.(timw)以外的URL的支持”。
Jetty的默認servlet使用完整路徑。
它應該工作正常。 在現實這些文件也位於/resources
文件夾?
您的web.xml看起來正確(除了我會更改您的<load-on-startup>
常量)。 確保您的/resources
存在並且在項目路徑中是公開可見的文件夾,而不是在/ WEB-INF文件夾下。
根據@BalusC注釋,刪除了錯誤的答案部分。
在servlet中設置一個斷點並執行調試會話。 查找您的servlet提取這些文件的路徑。 確保它們與位置匹配
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.