【问题标题】:How to do Url patterns in servlets web.xml [duplicate]如何在servlets web.xml中执行Url模式[重复]
【发布时间】:2020-03-16 21:21:21
【问题描述】:

我有一个问题,是否可以这样做。我有一个配置文件 servlet,它有 2 个 url 模式, /profile 和 /profile/* 。所以在我的项目中,我有一个用户使用 GET /profile 来获取 JSON 中的所有配置文件。每个配置文件都有一个最喜欢的团队字符串。另外,我使用 /profile/* 来获取特定的配置文件,例如 /profile/2 。然后我有 profileFavTeam servlet,我想获取配置文件收藏团队的所有数据。所以我需要获取配置文件 ID,因此我希望 url 为 /profile/"ID"/favteam,这将返回团队统计信息。

例如,如果个人资料 ID 为 2,有一个最喜欢的球队叫利物浦,我输入 /profile/2/favteam,它将显示利物浦的统计数据

那么我在 web.xml 中 profileFavTeam 的 url 是否会像这样,因为我希望用户在 ID /profile/*/favteam 中输入一个数字?

但是,如果我的配置文件 servlet 中有 /profile/* url 模式,这会起作用吗?

【问题讨论】:

  • 这是用于新项目还是用于重新配置旧项目?

标签: servlets url-pattern path-parameter


【解决方案1】:

这行不通。您基本上有路径映射(以 /* 结尾)或扩展映射(以 *. 开头)。请参阅 Servlet 规范的第 12.2 节

在 Web 应用程序部署描述符中,使用以下语法来定义映射:

■ 以“/”字符开头并以“/*”后缀结尾的字符串用于路径映射。

■ 以“*.”前缀开头的字符串用作扩展映射。

■ 空字符串 ("") 是一种特殊的 URL 模式,它精确映射到应用程序的上下文根,即 http://host:port// 形式的请求。在这种情况下,路径信息是“/”,servlet 路径和上下文路径是空字符串(“”)。

■ 仅包含“/”字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet 路径是请求 URI 减去上下文路径,并且路径信息为空。

■ 所有其他字符串仅用于完全匹配。

如果有效的 web.xml(在合并来自片段和注释的信息之后)包含映射到多个 servlet 的任何 url 模式,那么部署一定会失败。

您应该实现 Front Controller 模式,单个 Servlet 接收所有请求,并根据该模式将它们委托给处理对象。

【讨论】:

    猜你喜欢
    • 2016-06-21
    • 2017-11-19
    • 2016-03-25
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多