我有Vaadin Web應用程序與春季安全集成進行身份驗證。 Vaadin servlet的配置非常簡單:如何從Vaadin/Spring應用程序提供靜態資源?
<servlet>
<servlet-name>Vaadin Application Servlet</servlet-name>
<servlet-class>com.example.SpringApplicationServlet</servlet-class>
<init-param>
<param-name>applicationBean</param-name>
<param-value>mainApplication</param-value>
</init-param>
<init-param>
<param-name>widgetset</param-name>
<param-value>com.example.widgetset.CustomWidgetSet</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Vaadin Application Servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
servlet初始化Spring上下文並返回Vaadin應用程序。我也配置了安全性而擁有這樣來配置定製登錄表單:
<servlet>
<servlet-name>login</servlet-name>
<jsp-file>/jsp/login.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>login_error</servlet-name>
<jsp-file>/jsp/loginError.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>login_error</servlet-name>
<url-pattern>/login_error</url-pattern>
</servlet-mapping>
登錄表單樣式與外部CSS和也有一些圖像。基本上,圖像位於/ jsp/img中,而樣式表位於/jsp/login.css中。所以WAR結構如下:
- /JSP
- /META-INF
- /VAADIN
- /WEB-INF
無論是圖像還是CSS被加載,因爲顯然所有這些請求都映射到vaadin servlet。我如何定義一些靜態資源目錄,這些目錄不會由Vaadin servlet提供?我已經嘗試過春季mvc:資源,但沒有奏效。感謝您的幫助。
再見, 菲利普
我已經想通了這一點。雖然這是一種解決方法。我已將Vaadin應用程序Servlet映射到/ app/*而不是/ *(請記住,在這種情況下,您還必須將相同的servlet映射到/ VAADIN/*)。有了這個配置,我可以從我的web應用程序訪問jsp目錄,一切正常。我已經刪除了整個Spring資源配置,因爲這只是不起作用。
那麼一次,我還是漂亮不漂亮這個解決方案舒適,寧願讓我的資源目錄配置其他辦法,但客戶端是快樂:)。如果任何人有正確的解決方案,我將不勝感激地閱讀它。
「SpringApplicationServlet」擴展了哪些類? – 2012-02-15 11:35:46
它擴展了com.vaadin.terminal.gwt.server.AbstractApplicationServlet – 2012-02-15 13:18:25
嘗試使用URL映射([Servlet mapping/vs /*](http://stackoverflow.com/a/4140659/267197))或靜態映射資源([Servlet for serving static content](http://stackoverflow.com/a/3582215/267197))。 – 2012-02-18 23:22:55