使用的含义<;url模式>;在Spring应用程序中

使用的含义<;url模式>;在Spring应用程序中,spring,spring-mvc,Spring,Spring Mvc,有人对我的web.xml文件中标记的值在Spring应用程序中的效果有一个简单的解释吗?我曾经使用*.html没有问题,但是如果我将/更改为更大的范围,我就无法从我的应用程序访问任何页面 如果我选择/,那么我的映射值应该如何在我的控制器中,以及我应该如何链接到JSP文件中的视图?首先,您需要了解映射是什么。在第12章的Servlet规范中对它们进行了描述 在Web应用程序部署描述符中,使用以下语法 用于定义映射: 路径映射使用以“/”字符开头,以“/*”后缀结尾的字符串 以“*”前缀开头的字符

有人对我的web.xml文件中标记
的值在Spring应用程序中的效果有一个简单的解释吗?我曾经使用
*.html
没有问题,但是如果我将
/
更改为更大的范围,我就无法从我的应用程序访问任何页面


如果我选择
/
,那么我的映射值应该如何在我的控制器中,以及我应该如何链接到JSP文件中的视图?

首先,您需要了解
映射是什么。在第12章的Servlet规范中对它们进行了描述

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

  • 路径映射使用以“/”字符开头,以“/*”后缀结尾的字符串
  • 以“*”前缀开头的字符串用作扩展映射
  • 空字符串(“”)是一种特殊的URL模式,它精确地映射到应用程序的上下文根,即表单的请求
    http://host:port//
    。在这种情况下,路径信息是“/”和 servlet路径和上下文路径为空字符串(“”)
  • 仅包含“/”字符的字符串表示应用程序的“默认”servlet 请求URI减去上下文路径,路径信息为空
  • 所有其他字符串仅用于精确匹配
因此,
[/…]/*
是路径映射,任何前缀为
*。
的都是扩展映射,
/
是默认匹配

Servlet规范还解释了检查顺序

当请求到达时,Servlet容器遍历所有
url模式
元素以找到匹配项,然后调用相应
Servlet
服务(..)
方法。在我们的例子中,这是
DispatcherServlet

然后,
DispatcherServlet
通常使用
RequestMappingHandlerMapping
bean来确定哪个处理程序方法是处理请求的最佳匹配方法。基本上,它确定分派到哪个
@Controller
@RequestMapping
方法。具有一个名为(默认情况下为
true

将模式匹配到时是否使用后缀模式匹配(“.”) 请求。如果启用,则映射到“/users”的方法也匹配到 “/users。”

因此,如果您的servlet映射到

<url-pattern>*.html</url-pattern>
然后,该方法将处理对
/context/test.html
的请求

如果选择
/
,控制器中的映射值应该是多少,以及 我应该如何链接到JSP文件中的视图


这个问题有一百万个答案。这要视情况而定。只需记下上面的所有信息,然后自己决定。

谢谢你出色的回答,我可以说我想要什么。如果可以的话,再问一个问题:你说当使用/时,映射值有一百万种方法;我想要一个没有html文件的方案显示在项目的url中,并且在多个级别上有多个控制器。我是否可以使用类似于您的示例(@RequestMapping(value=“/test”))要完成/test/one、/test/two等,其中teste、one、two都是控制器?@KleberMota您可以。将您的servlet映射到默认映射
/
。然后可以将所有
@RequestMapping
值视为与之相关。只要您不显式映射任何带有
html
扩展名的内容,您就可以使用请在浏览器中查看
html
@RequestMapping(value = "/test")