gpt4 book ai didi

java - 如何在 Struts 2 中使用没有后缀(例如 .action)的 URL?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:39:45 28 4
gpt4 key购买 nike

事情是这样的,我不仅需要为 java 提供服务,还需要使用我的 .war 提供一些 javascript 文件。所以,例如。如果有人访问 URL:

example.com/js/foo.jar

然后我需要将它正确地用作 javascript 文件。同时,如果有人去:

example.com/bar

我需要 Struts2 将其作为可能的 Controller 提供服务。

我在网上找到的从 url 中删除后缀的方法会导致两个 URls 都由 struts 2 提供服务(因此对第一个 foo.js 文件给出错误,即使它存在)。有没有一种方法(例如拦截器)在给出错误之前首先检查给定的 .js 文件是否存在?

最佳答案

DarkHorse 的回答并不完全准确。有两个非常相似但工作方式却截然不同的值:

<constant name="struts.action.extension" value=","/>
<constant name="struts.action.extension" value=""/>

您几乎肯定想要第一个选项,其中包含一个逗号。这告诉 Struts Action 扩展是空的。这也意味着 Struts 不会尝试匹配任何确实具有扩展名的请求,例如 *.css、*.js 等。

第二个选项告诉 Struts 不应该有 Action 扩展,但它也表示您希望 Struts 匹配每个请求。我能想到的唯一可能的好处是,如果您想在操作映射中包含文件扩展名,例如:

<action name="robots.txt" class="...">
...
</action>

另外,从 Struts 过滤器中排除请求是使用 struts.action.excludePattern 属性,如 here 所述.不要为此依赖拦截器,因为拦截器仅在框架找到要映射到的合适操作后运行。

关于java - 如何在 Struts 2 中使用没有后缀(例如 .action)的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19068102/

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