Spring MVC 拦截器映射问题

2023-11-30

我有这段 XML:

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/statics/**" />
        <bean class="com.company.website.servlet.StaticsHandlerInterceptor" />
    </mvc:interceptor>
    <mvc:interceptor>
        <mvc:mapping path="/data/**" />
        <bean class="com.company.website.servlet.AJAXHandlerInterceptor" />
    </mvc:interceptor>
    <mvc:interceptor>
        <mvc:mapping path="/**" />
        <bean class="com.company.website.servlet.PageHandlerInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

我有三个不同的拦截器是有原因的,尽管StaticsHandlerInterceptor只是preHandle方法返回true(对于我所有的静态内容(js、css 等))。第二个用于 AJAX 请求。第三个是针对实际页面的。我看到发生的是静态和 AJAX 拦截器在它们应该被调用的时候被调用;然而,对于它们,页面拦截器总是被调用。我只想为页面调用页面拦截器。我怎样才能做到这一点?


假设您为页面使用一致的命名方案,请使用 - 例如如果您的外部可见页面 URL 结尾为.html, 指定:

<mvc:mapping path="/**/*.html" />

不过,拥有这样的“扩展”并不是很 RESTful - 您可能更喜欢使用如下方案:

  • GET of /user/{id}= 返回用户 {id} 的用户对象,JSON 格式
  • POST to /user/{id}= 更新 User 对象JSON 对象
  • GET to /user/page/{id}= 返回HTML 页面对于用户 {id}
  • 等等等等

然后你可以使用一个可读性好的语义映射,例如:

<mvc:mapping path="/**/page/**" />

这适用于任何“深度”的 URL 结构。

Edit:好的,看来使用MVC:拦截器bean 声明的风格不会给你需要指定的表现力排除通过模式而不是包容性。

从我能看出的这个博客,使用更详细的HandlerMapping方法将使您能够invert匹配逻辑 - 你可以指定什么not匹配以获得您需要的东西:

<bean id="nonStaticNonDataMapper" class="org.springplugins.web.IgnoreSelectedAnnotationHandlerMapping">
<property name="order">
    <value>0</value>
</property>
<property name="urls">
    <list>
        <value>/statics/**</value>
        <value>/data/**</value>
    </list>
</property>
<property name="interceptors">
    <list>
        <bean class="com.company.website.servlet.PageHandlerInterceptor" />
    </list>
</property>

(对上述代码片段的格式表示歉意,Markdown 认为/**是一条评论:-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring MVC 拦截器映射问题 的相关文章

  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • 将不同类型的参数传递给 jdbctemplate 查询

    我正在尝试使用带有少量不同类型参数的 where 子句从数据库中检索记录 这是我编写的简单方法 我将breedId和性别作为参数传递 public List
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • setAttribute 和 htmlElement.attribute='value' 之间的区别

    两者之间有什么区别 b1 setAttribute id b1 and b1 id b1 其中一个比另一个更有效率吗 他们两个都会做完全相同的任务吗 在某些情况下它们会有所不同吗 setAttribute 和 htmlElement att
  • 在 XHTML 1.0 Strict 中,属性值是否需要用引号引起来?

    在 XHTML 1 0 Strict 中 属性值是否需要用引号引起来 例子
  • [显示(提示MVC3

    我正在尝试设置我的模型 以便我可以使用 Html EditorFor e gt e publicationTitle 并让它显示带有提示的水印 目前我正在做 Html LabelFor e gt e PublicationTitle Htm
  • Google BigQuery:滚动计数不同

    我有一个表 其中只是日期和用户 ID 的列表 未聚合 我们定义一个称为活跃用户对于给定日期 通过计算过去 45 天内出现的不同 ID 数量 我正在尝试在 BigQuery 中运行一个查询 该查询每天都会返回该天加上当天的活跃用户数 计算从
  • 如何扩展ZF2骨架应用程序-具有外键的实体

    我的 ZF2 骨架应用程序按照 Zend 用户指南运行良好 但现在我正在兜圈子 试图扩展应用程序 以便专辑的艺术家不再是字符串 而是我的数据库中艺术家表的外键 我已经创建了所有必要的模型 控制器 视图来创建 编辑和查看艺术家 这也工作得很好
  • Instagram API:我想根据标签获取最近的图像,但我只收到我自己的

    我想用Instagram API根据特定标签获取最新图像 当我使用时 https api instagram com v1 tags tag name media recent access token ACCESS TOKEN 我只收到用
  • python print 语句中出现意外 None

    我正在尝试打印连接到其他节点的节点列表 以便我可以查看它们以调试一些围绕图形的 python 代码 我这样做是为了练习 所以我自己设置节点 边 组 我尝试使用 for every type 循环打印出与 myNode 类内部的函数的连接 但
  • Webpack 对 Gatsby 网站上内置模块的重大更改

    我尝试将我的 Gatsby 站点部署到 Netlify 但每当我尝试部署时 我总是收到各种节点模块的这些错误 我尝试制作一个 webpack config js 文件并包含两个建议的解决方案 但均无济于事 我还尝试使用别名而不是后备 将浏览
  • 如何在Windows命令行中运行这个java类?

    package com test01 public class test01 public static void main String args System out println hi 我认为java应用程序启动器非常愚蠢 我已经指
  • 使用 FDM 的 Matlab 2D 波动方程

    以下是我使用 FDM 模拟以高斯源为中心的二维波动方程的 Matlab 代码 我使用 imagesc 函数来输出波 波浪似乎从中心向外扩散 但速度非常缓慢 好像我在某个地方搞砸了 并且输出非常像素化 我究竟做错了什么 clc close a
  • 如何在 flutter 中使用自定义 Clipper 制作弯曲的应用程序栏

    嗨 我是颤振新手 I am trying to make this app bar this is my final goal 我尝试按照一些教程制作弯曲的应用程序栏 但我无法得到与我想要的相同的结果 after some googling
  • INVALID_ARGUMENT:应用程序凭据标头无效。请修复客户端以传递有效的应用程序凭据标头

    当尝试运行简单的 Android Instant App 时 我在控制台中收到此错误 并且应用程序无法打开 此错误是什么意思以及如何传递有效的凭据标头 有一个已知问题 即不允许模拟器与即时应用程序后端通信 从而导致此错误 如果您尝试使用模拟
  • 使用字符串变量作为变量名[重复]

    这个问题在这里已经有答案了 我有一个分配有字符串的变量 我想根据该字符串定义一个新变量 foo bar foo something else What I actually want is bar something else 您可以使用e
  • Plotly:如何检查和更改绘图图形?

    相关问题已经被问过 例如 如何搜索绘图图形特定属性的选项 Plotly 如何检查基本图形结构 版本 4 但这些问题的答案受到以下事实的限制 并非所有参数都可以通过 Python 获得 这意味着真正的答案隐藏在 JavaScript 中的某个
  • 如何合并两个priority_queue?

    我有两个priority queue with float像这样 std priority queue
  • 无法将 Null 值分配给可为 Null 的 Int32?通过绑定

    无法通过 TextBox 绑定将 null 值分配给 Int32 如果 TextBox 为空 则不会调用 Int32Null Set TexBox 周围有红色边框 表示验证异常 这作为 Int32 没有意义 可以为空 如果用户从 TextB
  • AngularJS:绑定到服务属性的正确方法

    我正在寻找如何绑定到 AngularJS 中的服务属性的最佳实践 我已经通过多个示例来了解如何绑定到使用 AngularJS 创建的服务中的属性 下面我有两个示例说明如何绑定到服务中的属性 他们都工作 第一个示例使用基本绑定 第二个示例使用
  • 如何让exe文件只在一台电脑上运行

    我使用 C 编写了一个程序 并使用高级安装程序制作了 exe 文件 它工作得很好 但我想让这个 exe 文件在一台计算机上工作 因为有些 clints 获取 exe 并将此 exe 交给另一个 我想将其保密并保护我的作品 在您想要 exe
  • OpenCV VideoWriter 帧率问题

    我正在尝试将 1080p 网络摄像头的视频录制到文件中 我在视频中设置了一个计时器 在每次试验中 视频播放器 我使用的是 VLC 报告的时间戳与视频中的时间不同步 它总是会关闭几秒钟 通常视频内计时器比玩家报告的时间快 如下所示 我将 C
  • Spring MVC 拦截器映射问题

    我有这段 XML