Spring Controller URL映射问题


问题内容

我在控制器中有以下URL映射

@RequestMapping(value = "/additem.htm", method = RequestMethod.GET)
@RequestMapping(value = "/additem/fileupload.htm", method = RequestMethod.POST)

我单击与的页面, href="additem.htm"然后转到value="/additem.htm"上面的控制器。我在其中填写表格并提交表格。

表单被发布到action="additem/fileupload.htm",并通过传递到控制器value="/additem/fileupload.htm"。完成此文件上传控制器并返回jsp后,浏览器的网址将变为"http://localhost:8080/Dream/additem/fileupload.htm"

问题是,当我再次单击的第一个链接时href="additem.htm",它正在尝试搜索具有映射的控制器"additem/additem.htm"

即使当我将鼠标悬停在链接上时,浏览器也将URL显示为http://localhost:8080/Dream/additem/additem.htm,并引发错误。我该如何解决此URL问题?


问题答案:

在jsp中定义链接时,请使用c:url标记生成相对于应用程序上下文路径的url:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<a href="<c:url value="/additem.htm" />">Click here</a>

它将您的应用程序的上下文路径放在href之前。它应该生成:

<a href="/Dream/additem.htm">Click here</a>