我有一个Vaadin Web应用程序,集成了Spring Security进行身份验证。Vaadin Servlet的配置非常简单:
<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
由于所有这些请求都映射到Vaadin servlet,因此既不加载图像也不加载CSS。我该如何定义一些静态资源目录,使其不被Vaadin servlet服务?我已经尝试了spring mvc:resources,但没有成功。感谢您的帮助。
再见, Filip 我已经解决了这个问题。虽然这是一个变通方法。我将Vaadin应用程序servlet映射到类似于/app/*而不是/*(请记住,在这种情况下,您还必须将相同的servlet映射到/VAADIN/*)。通过这种配置,我可以从我的Web应用程序中访问jsp目录,一切正常。我已删除了整个Spring Resources配置,因为它根本无法工作。
因此,再次强调,我对这个解决方案仍然不太满意,而更愿意以其他方式配置我的RESOURCES目录,但客户很满意 : )。如果有人有正确的解决方案,我会很感激阅读它。
SpringApplicationServlet
继承自哪个类? - Paul Grime