使用的含义<;url模式>;在Spring应用程序中
有人对我的web.xml文件中标记使用的含义<;url模式>;在Spring应用程序中,spring,spring-mvc,Spring,Spring Mvc,有人对我的web.xml文件中标记的值在Spring应用程序中的效果有一个简单的解释吗?我曾经使用*.html没有问题,但是如果我将/更改为更大的范围,我就无法从我的应用程序访问任何页面 如果我选择/,那么我的映射值应该如何在我的控制器中,以及我应该如何链接到JSP文件中的视图?首先,您需要了解映射是什么。在第12章的Servlet规范中对它们进行了描述 在Web应用程序部署描述符中,使用以下语法 用于定义映射: 路径映射使用以“/”字符开头,以“/*”后缀结尾的字符串 以“*”前缀开头的字符
的值在Spring应用程序中的效果有一个简单的解释吗?我曾经使用*.html
没有问题,但是如果我将/
更改为更大的范围,我就无法从我的应用程序访问任何页面
如果我选择
/
,那么我的映射值应该如何在我的控制器中,以及我应该如何链接到JSP文件中的视图?首先,您需要了解
映射是什么。在第12章的Servlet规范中对它们进行了描述
在Web应用程序部署描述符中,使用以下语法
用于定义映射:
- 路径映射使用以“/”字符开头,以“/*”后缀结尾的字符串
- 以“*”前缀开头的字符串用作扩展映射
- 空字符串(“”)是一种特殊的URL模式,它精确地映射到应用程序的上下文根,即表单的请求
。在这种情况下,路径信息是“/”和 servlet路径和上下文路径为空字符串(“”)http://host:port//
- 仅包含“/”字符的字符串表示应用程序的“默认”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")