在用于映射的 servlet 中,我使用@WebServlet("/path")
这意味着,我可以编写表单的操作"/path"
,并且按钮单击将由我的 servlet 处理。在spring mvc中,我将控制器的方法映射为
@RequestMapping("/path")
这意味着,我必须在表单的操作中写入,"/webAppName/path"
并且按钮单击将由我的方法处理。但是如果我的war文件的名字会改变,我必须改变html/jsp上的映射。我认为它非常糟糕。你能帮助我吗?
在用于映射的 servlet 中,我使用@WebServlet("/path")
这意味着,我可以编写表单的操作"/path"
,并且按钮单击将由我的 servlet 处理。在spring mvc中,我将控制器的方法映射为
@RequestMapping("/path")
这意味着,我必须在表单的操作中写入,"/webAppName/path"
并且按钮单击将由我的方法处理。但是如果我的war文件的名字会改变,我必须改变html/jsp上的映射。我认为它非常糟糕。你能帮助我吗?
首先,你完全错了。其次,您提到的war文件名实际上是上下文路径,甚至与war名称没有关系。
服务器使用上下文路径来引用在其上运行的 webapp。您的服务器上可能部署了多个应用程序,因此,服务器可以确定哪个请求与需要哪个 Web 应用程序上下文路径相关。
Web 应用程序的上下文路径,它与每个请求 URI 的开头相匹配,以选择适当的 Web 应用程序进行处理。特定主机中的所有上下文路径都必须是唯一的。如果您指定空字符串 ("") 的上下文路径,则您正在为此主机定义默认 Web 应用程序,它将处理所有未分配给其他上下文的请求。
除非在 server.xml 中静态定义上下文,否则不得设置此字段的值,因为它将从用于 .xml 上下文文件或 docBase 的文件名中推断出来。
而且,它与应用程序的架构无关,它是 Spring MVC 或 Java 动态 Web 应用程序,同样适用。