java - 过滤器-忽略欢迎文件之外的其他请求

原文 标签 java jsp filter web.xml

我写了一个过滤器来决定用户登录页面是否到达我的欢迎文件。欢迎文件的编写方式使它可以接收来自过滤器的输入并将用户导航到特定页面。

我的欢迎文件标签是...

<welcome-file-list>
   <welcome-file>index.jsp</welcome-file>
</welcome-file-list>


我的过滤器配置是

<filter>
    <filter-name>LandingPageFilter</filter-name>
    <filter-class>com.mypack.test.filters.LandingPageFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>LandingPageFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>


当每个请求都通过此过滤器时,上述格式效果很好,我想避免这种情况。当我点击http://localhost:8000/landing时,它应该仅是第一次到达过滤器,以后即使访问http://localhost:8000/landing/edit,它实际上应该绕过过滤器执行相关的servlet。

我也尝试过<url-pattern>/*/index.jsp</url-pattern>,但没有用。我之所以使用它,是因为上下文可能有所不同,但应用程序将相同。

最佳答案

采用

<url-pattern>/index.jsp</url-pattern>

代替

<url-pattern>/*/index.jsp</url-pattern>

所以您的过滤器映射部分将变成这样

<filter-mapping>
    <filter-name>LandingPageFilter</filter-name>
    <url-pattern>/index.jsp</url-pattern>
</filter-mapping>


无论上下文如何,这都是可行的,因为/表示上下文路径之后的路径。

例如,如果您有两个上下文路径,例如a和b,并且服务器中有两个相同应用程序的部署,并且您正在使用URL访问它们

http://localhost:8000/a/



http://localhost:8000/b/

然后/中的url-pattern在上下文根/a之后表示b。因此,您的过滤器将仅针对index.jsp执行。

关于java - 过滤器-忽略欢迎文件之外的其他请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18484108/

相关文章:

CSS 过滤器 : blur(0px) still blurs the text

java - 如何让JLabel显示在JButton之上?

java - Spring Integration消息轮询

java - 在Java中使用分隔符分割字符串

java - 如何在更新jsp页面中的列表时将两个不同的模型属性映射到jsp中的一个表?

java - 尽管我的jboss使用jdk 1.6,但是JSP编译由于使用jdk1.4而失败

java - Spring MVC 和 POST 上的重定向在 URL 上发送目标文件

reporting-services - 在 SSRS 上的 MDX 查询中对度量使用过滤器

jquery - 与 JQuery 的共享点 - 单击列过滤器时停止工作

java - 私有(private)静态类 Spring bean 注释 @Service 可以 Autowiring 吗?