gpt4 book ai didi

java - 如何让OpenSessionInViewFilter排除静态资源

转载 作者:行者123 更新时间:2023-11-29 09:14:37 24 4
gpt4 key购买 nike

我已经为我的 MVC web 应用程序实现了 OpenSessionInViewFilter,它几乎可以完美运行。唯一的问题是它还会为从网络服务器请求的每个图像、js、css 等创建一个 session 。这是我不想要的。

我正在使用 struts2、spring 和 hibernate,这是我的 web.xml

<filter>
<filter-name>lazyLoadingFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>lazyLoadingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

所以因为我正在映射 url-pattern/* 它也需要所有图像等。我尝试将其设置为 *.jsp 和 *.action,但随后我再次收到延迟加载异常...我应该怎么做?我已经寻找答案 5 个小时了,我的脑子里有点发疯。

我需要做的就是让这个过滤器忽略所有静态资源。就是这样!对于其他一切,它都可以运行。这听起来很简单,但我真的很烦,我不知道怎么做。

如有任何帮助,我们将不胜感激。

我是否需要扩展过滤器来编写自己的过滤器并在其中排除?如果是这样。怎么办?

编辑:似乎我可以在过滤器链的顶部为我的静态文件设置过滤器映射。然后将它们发送到“ByPassFilter”,从而绕过这些静态资源的过滤器链。这是要走的路吗??

谢谢大家!

最佳答案

这种情况下的一般做法是将 Apache Web 服务器与应用程序服务器 (Tomcat/JBoss) 结合使用 mod_jk module.

Here is link描述如何使用这个组合。 ( Another link )

使用这个配置的主要优点是

  1. 静态内容可以由 Apache 网络服务器提供。
  2. 动态内容请求(如 *.jsp、*.action 等)委托(delegate)给 tomcat。
  3. 可能还有其他有用的模块,如 c ontent compression对于静态内容,从而改善响应时间。
  4. 它比应用服务器为一切服务的场景更安全。

我知道这可能不是您正在寻找的解决方案,我建议这样做是因为这是一般做法。

关于java - 如何让OpenSessionInViewFilter排除静态资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10331230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com