【问题标题】:how Filters handle Session过滤器如何处理会话
【发布时间】:2013-12-15 17:48:50
【问题描述】:

你们中的一些人建议我使用过滤器处理会话。我根据互联网上的一些指南对过滤器进行了一些研究,并写了一个过滤器引用这个guide

我看到我的页面的每个组件(css、图像等)都调用了过滤器;有没有办法在加载 jsp 或 servlet 时调用它?我需要一种可以了解是否加载了 jsp 或 servlet 的方法,以便在我的过滤器中制作一些东西。

【问题讨论】:

    标签: java jsp servlets servlet-filters


    【解决方案1】:

    是的,你可以这样做。只需更改您的会话过滤器的url-pattern

    如果您正在使用带有一个调度 servlet 的某些 Web 框架(spring mvc,...),您可以使用 servlet-name 将您的过滤器仅映射到此 servlet,并且不会拦截对其他资源(js、css)的请求通过这个过滤器。

    【讨论】:

    • 这意味着如果我有一百万个 servlet 我应该有一百万个 servlet-name 标记对吗?
    • 没有必要。将过滤器映射到 servlet 时有两种选择:可以指定 url-pattern 或 servlet-name。但是您希望将过滤器映射到除静态资源 URL 之外的所有 URL。因此,如果您只有一个 servlet,则 servlet-name 可能是一种更简单的方法。如果你有多个 servlet,url-pattern 可能会更容易。
    • 如果您有一个简单的 Web 应用程序,其中所有 servlet 都在处理或生成 html,并且这些资源的所有 URL 都类似于 .htm,那么您可以简单地使用一个 url 映射您的会话过滤器-pattern=".htm"
    【解决方案2】:

    首先,请不要被您指定的链接中教程的目的所误导。会话处理总是通过 cookie、URL 重写(或更高级的 SSL)来完成。他只是使用过滤器来增强应用程序安全性,通过确保用户在直接进入“avoid-url”时被重定向到登录页面。

    想想一个过滤器,一个物理过滤器。无论是 Excel 过滤器还是物理砾石过滤器。它介于一件事和另一件事之间:

    Java 网络过滤器可以做同样的事情:

    就像您可以选择过滤哪个水瓶一样,您也可以决定要过滤哪些请求。您可以使用 web.xml 中的 filter-mapping 元素来执行此操作。您可以指定单个 servlet 名称或 url 模式。

    【讨论】:

      猜你喜欢
      • 2013-10-20
      • 2014-08-24
      • 1970-01-01
      • 2013-06-22
      • 2012-04-10
      • 2019-08-20
      • 2013-10-06
      • 1970-01-01
      • 2016-05-23
      相关资源
      最近更新 更多