我正在研究映射所有請求的代理servlet。 我指定下列方式web.xml中:Spring MVC - 靜態資源的HTTP GET請求由自定義servlet處理
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/admin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/home</url-pattern>
</servlet-mapping>
<servlet>
<description>Servlet to proxy all requests.</description>
<display-name>ProxyServlet</display-name>
<servlet-name>ProxyServlet</servlet-name>
<servlet-class>com.epam.alpha.servlets.ProxyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>home</welcome-file>
</welcome-file-list>
這樣,所有的請求都被我的代理servlet處理,除/ home和/管理/ *保留用於主頁和後臺管理頁面。這很好!
現在,我想在我的jsp頁面中使用javascript和css文件。他們被放置在資源文件夾下,所以這些都在正確的地方。
在servlet的context.xml的下面給出:
<resources mapping="/resources/**" location="/resources/" />
的問題是,我的servlet捕獲所有的GET請求靜態資源。如果我註釋掉ProxyServlet的servlet映射,則會找到並使用這些資源,當然代理servlet在這種情況下不起作用。另一方面,如果我沒有從jsp引用JavaScript文件,則代理servlet將工作(不會請求靜態資源)。幫幫我!
我不明白你的問題。你想用代理servlet做什麼?它實際上做了什麼? –
有些映射到URL的別名,目標是訪問這些頁面,因爲它將在本地主機上運行。示例: - 別名「google」映射到http://www.google.com。 當我輸入http:// localhost:8080/ProxyServlet/google時,會看到google.com。這是目標。代理servlet處理上述請求並讀取響應並在瀏覽器中顯示結果。幾乎所有的請求都應該由這個代理servlet來處理(我們創建的),除了一些保留的別名,比如home或者admin,它們將用於維護目的。 – cslacika
如果您的js和css文件應該由Spring的資源機制提供服務,那麼應該將/ resources路徑映射到Spring調度程序servlet,不是嗎?因此,將/ resources/*映射添加到appServlet應該可以解決所有問題。 –