我们正在尝试将遗留项目转换为更现代的项目。它是一个基于servlet的应用程序,使用jsp,我们正在向Spring迈进。我们为jsp-s提供服务,它们包含许多静态资源。 我们使用Redis作为会话存储,并将其映射为过滤器:
<filter>
<filter-name>springSessionRepositoryFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSessionRepositoryFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = SpringSessionConfig.MAX_INACTIVE_INTERVAL_IN_SECONDS)
@PropertySource(value = "classpath:redis.properties")
public class SpringSessionConfig { ... }
静态资源分布在许多不同的目录中,问题在于,此过滤器针对每个资源运行,这是完全可以理解的。
是否有一种从这种网址模式中排除资源的智能方法?或者这个RepositoryFilter的一些配置?
我提出的唯一解决方案是做一个大的重构,并为静态资源创建适当的命名空间,但是现在,这太费劲了。
我还为Spring配置添加了资源处理程序,但这里忽略了它。
答案 0 :(得分:0)
我认为您可以扩展springSessionRepositoryFilter
以实现自己的过滤器,然后在doFilterInternal
方法中执行排除资源,并配置springSessionRepositoryFilter
bean手册而不是{{1注释,然后将过滤器bean名称配置到web.xml。