问题标签 [servlet-mapping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
14538 浏览

tomcat - java.lang.IllegalArgumentException:Servlet 映射指定了未知的 Servlet 名称

当我尝试运行我的项目时出现错误

我的web.xml

0 投票
1 回答
198 浏览

java - Spring xml-less 配置:没有找到带有 URI 的 HTTP 请求的映射

我们有一个带有控制器的 Spring MVC 应用程序:

@Controller("/app")

@Controller("/app/page1")

@Controller("/app/page2")

我们有 AppInitializer:

运行此应用程序时,我们可以访问

http://localhost:8080/app

http://localhost:8080/app/page1导致错误

警告:在名称为“DispatcherServlet1”的 DispatcherServlet 中找不到具有 URI [/app/page1] 的 HTTP 请求的映射

http://localhost:8080/app/page2导致错误

警告:在名称为“DispatcherServlet1”的 DispatcherServlet 中找不到具有 URI [/app/page2] 的 HTTP 请求的映射

我们可以通过像这样向 DispatcherServlet 添加严格映射来解决这个问题

并且所有页面都可以正常工作:

http://localhost:8080/app

http://localhost:8080/app/page1

http://localhost:8080/app/page2

但问题是我们每次添加新页面时都需要添加到 DispatcherServlet 的映射。例如要添加第 3 页,我们需要创建控制器

@Controller("/app/page3")

添加调度程序 servlet 映射 dispatcher.addMapping("/app", "/app/page1", "/app/page2", **"/app/page3"**);

我们真的很想避免这最后一步。

dispatcher.addMapping("/app/*");将是理想的,但正如我上面提到的它不起作用。

知道我们缺少什么吗?

0 投票
2 回答
570 浏览

tomcat - java.lang.IllegalArgumentException:名为 [foo] 和 [bar] 的 servlet 都映射到不允许的 url 模式 [/url]

0 投票
0 回答
149 浏览

java - tomcat中多次战争的相同初始上下文

我在 tomcat 中有 3 个单独的战争,每个战争都包含一些宁静的服务,现在战争中有不同的客户端正在调用这些服务,例如 war1 中的 servlet 映射是

访问 URL 将localhost:8080/projectName/services/someservice

同样在war2中

访问 URL 将是localhost:8080/differentProjectName/postprocessorservices/someotherservice

我只是想知道有没有办法提供一个通用的初始上下文,以便在不同的客户端使用相同的初始上下文

任何帮助将不胜感激。

0 投票
0 回答
1453 浏览

web-services - IBM WAS 上 web.xml 中的多个 servlet 映射

我的 Web 服务模块由具有不同客户端的多个客户访问,因此应该可以通过不同的 URI 访问,例如

(将 [serverAddress] 替换为 myorg.com 或 localhost...抱歉,但 StackOverflow 目前将我限制为两个链接(即使http://localhost也很重要))

所以,我想在我的 web.xml 中定义 2 个 servlet 映射。在 StackOverflow 上,我发现了以下提示: a) Servlet web.xml servlet-mapping b) web.xml 中的 Servlet url 映射如何使用?

我做了以下尝试:

尝试#1:

使用 SoapUI 的测试结果:

  1. [服务器地址]/MyHTTPRouter/PingService:好的
  2. [serverAddress]/MyHTTPRouter/cet/PingService:错误 404:java.io.FileNotFoundException:WSWS7147E:系统找不到 /cet/PingService 的端点。

尝试#2:

使用 SoapUI 的测试结果:

  1. [serverAddress]/MyHTTPRouter/PingService: 错误 500:javax.servlet.ServletException:com.ibm.ws.websvcs.exception.ConfigurationException:无法在 Axis servlet 中检索模块的配置上下文:MyHTTPRouter
  2. [serverAddress]/MyHTTPRouter/cet/PingService :同上(错误 500)

我们谈论的是在 IBM Websphere Application Server 8.5 上运行的 EJB 3.1 应用程序。有什么想法为什么 #1 和 #2 都不起作用以及我需要做哪些更改才能使用 /cet/PingService 和 /PingService 访问 Web 服务?

0 投票
2 回答
9107 浏览

tomcat - java.lang.IllegalArgumentException:无效servlet 映射中的 SolrServlet1

我已经创建了一个 JSP 页面,我将从这个页面调用一个 servlet 并处理一些东西并重定向回同一个 JSP。

但是当我只部署 JSP 时,一切都很好。但是,当我将我的 servlet 包含在项目中时,tomcat 8 无法启动并抛出错误。

我以下列方式定义了我的 web.xml

请帮我解决这个问题

0 投票
1 回答
724 浏览

web-services - Jersey Servlet 在 url-pattern 为 /* 时找到资源,但在 url-pattern 为 / 时找不到资源

我正在编写一个 Web 服务,使用 Jersey 2.17 和 Tomcat 8。

在 web.xml 中,当我将 url 模式更改为 /* 时,我可以访问 web 服务并获得响应。但是,当我将 url 模式更改为 / 时,我总是会收到 404 错误(找不到资源)。

不工作

工作完美

我的 web.xml 不包含除此之外的其他 Servlet 或过滤器映射。

是否需要任何其他配置才能完成这项工作?我不能使用 /* 作为 servlet 映射,因为我需要在执行此 servlet 之前运行某些过滤器。如果过滤器失败,则不应继续调用 servlet。

所以基本上我不想覆盖任何已经存在的映射。

0 投票
2 回答
990 浏览

jsf - JSF 将模板渲染为文本/纯文本

我有一个(工作的)JSF 应用程序。现在我想要使用 JSF 表达式语言扩展一个不是页面资源的文档(假设是纯文本文档)(因为我需要来自我的 bean 的状态,这看起来很“自然”)。但似乎我没有完全了解机制......

为了在 web.xml 中有“*.txt”文件

我添加了一个“plain.txt”资源

请求

使用 myfaces 2.1.10 在服务器上无限循环失败。将资源重命名为“plain.xhtml”并请求它工作正常。

更新到 myfaces 2.1.17(与 2.2.9 相同)后,提供“plain.txt”也有效!

问题是:以这种方式使用模板是“最佳实践”还是“意外副作用”(并且不应该真正起作用)?有没有更好的方法来实现这样的模板任务?

编辑

经过更多尝试,它似乎更加奇怪。提供扩展内容似乎随机失败(2.1.17 和 2.2.9)。重新启动后,我在服务器端获得了一个资源“res1.txt”的“循环”,但不是资源“res2.txt”的精确副本。还发生了“res1.txt”成功呈现。也许服务器跟踪可以给出一些提示:

首先,有一个很长的“递归”

此跟踪重复并每次变短,直到最终达到此目的:

浏览器页面只是白色的..

编辑二

还有另一个信息:失败并不是真正的不确定性(这会稍微损害我的信仰......)但仍然很奇怪。对于我有同名资源但结尾为“.xhtml”的所有资源,渲染成功。

服务器似乎在内部重定向到“.xhtml”版本,呈现这个内容并以“.txt”版本的名称返回它(忽略后者的内容)。这里发生了什么?

0 投票
1 回答
823 浏览

servlets - 使用简单的正则表达式映射java servlet的任何方式?

我需要映射/Test到一个 servlet Test.java 和/anything/Test同一个 servlet。我读到这/*/Test在 web.xml 中不起作用,因为它不接受正则表达式。

有没有使用过滤器的替代方法?由于某些阻塞问题,我无法使用 Tuckey URL 过滤器。另外,我的 servlet 中也需要那个“任何东西”。如果我能够映射,我计划为此处理 url 字符串。

例如

/ProjectName/Test 应该打开 Test servlet

并且还/ProjectName/xyz/Test 应该打开Test servlet

现在 xyz 可以是任何东西。而且我还想在我的测试 servlet 中获取 xyz。我计划通过获取 xyzrequest.getRequestURI()并从 url 获取它。

0 投票
0 回答
120 浏览

spring - Spring DispatcherServlet 复杂映射

我正在尝试使用 Spring Boot 创建具有以下内容的应用程序:

第 3 方 HttpServlet 需要映射到“/data/*”以匹配以下内容:

  • “/Patient”作为“/data/Patient”给出
  • “/_services/*”作为“/data/_services/something”给出

然后我需要添加一个新的服务选项。我想使用使用“/data/_services/smart/”请求映射的 RestController 来执行此操作。

此外,我希望其他端点,如“/health”、“/management”,由调度程序 servlet 提供服务。如果我使用映射到“/”的默认调度程序 servlet,则“/health”、“/management”工作正常。

如果我为第 3 方 servlet 添加 ServletRegistrationBean,则“/data/Patient”等请求可以正常工作。@Bean public ServletRegistrationBean data() { HapiFhirServlet servlet = new HapiFhirServlet(myAppCtx, metadataRepository); ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(servlet, "/data/*"); 返回 servletRegistrationBean;}

但我无法将 RestController 映射到“/data/_services/smart”。我在尝试:

一旦我添加了这个 ServletRegistrationBean,路径“/data/_services/smart/ ”就起作用了,第 3 方 servlet 的路径起作用了,但是其他调度程序请求(“/health”、“/management”)失败了。看来我只能在“/”或“/data/_services/smart/ ”中使用调度程序,但不能同时使用。

有人可以建议吗?

这是我的应用程序类: