Java Spring MVC导航路径

Java Spring MVC导航路径,java,spring,spring-mvc,Java,Spring,Spring Mvc,在SpringMVC中尝试进行一些简单的导航时,我遇到了一个问题。我有一个导航控制器: @Controller @RequestMapping("/secure") public class NavigationController { @RequestMapping("/operation") public String processOperationPage() { //Some logic goes here return "corpus

在SpringMVC中尝试进行一些简单的导航时,我遇到了一个问题。我有一个导航控制器:

@Controller
@RequestMapping("/secure")
public class NavigationController {

    @RequestMapping("/operation")
    public String processOperationPage() {
        //Some logic goes here
        return "corpus/operation";
    }

    @RequestMapping("/configuration")
    public String processConfigurationPage() {
        //Some logic goes here
        return "corpus/configuration";
    }

}
<a href="secure/operation.htm">Operation</a>
<a href="secure/configuration.htm">Configuration</a>
这是我联系该控制器的链接:

@Controller
@RequestMapping("/secure")
public class NavigationController {

    @RequestMapping("/operation")
    public String processOperationPage() {
        //Some logic goes here
        return "corpus/operation";
    }

    @RequestMapping("/configuration")
    public String processConfigurationPage() {
        //Some logic goes here
        return "corpus/configuration";
    }

}
<a href="secure/operation.htm">Operation</a>
<a href="secure/configuration.htm">Configuration</a>
第一次单击链接时,一切正常。在浏览器中,我看到了预期的正常路径。例如:http://localhost/obia/secure/configuration.htm. 但是,如果我在该页面,并且在单击操作链接时,我希望从该页面访问operation.htm,则路径如下所示:http://localhost/obia/secure/secure/operation.htm.


保险箱出现两次。如何解决此问题?

您的链接是相对的。在它们前面加一条斜线可以解决这个问题

根据当前页面,更改相对URL或计算相对URL。例如,您可以将URL更改为基于主机: <a href="/obia/secure/operation.htm">Operation</a> <a href="/obia/secure/configuration.htm">Configuration</a>
如果您使用的是JSP,请改用JSTL:

<c:url value="/secure/operation.htm" />
请记住在JSP文件中包含标记库:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
通过使用JSTL,您可以避免在将应用程序部署到不同的上下文(例如http://host/ 和http://host/myapp


第一个将生成http://host/secure/operation.htm 第二个将生成http://host/myapp/secure/operation.htm 对于您。

上面的响应者在使用c:url生成绝对url时有一个正确答案。但是,在某些情况下,由于防火墙配置,JSTL无法正确地知道URL库。在这种情况下,您可以使用相对URL,但它必须知道您从何处开始。i、 e.在obia/secure/operation.htm页面上,url应为../secure/configuration.htm,或仅为configuration.htm。圆点表示向上移动一层。

谢谢大家的回答。所有答案都是对的。不幸的是,我只能接受一个。我已经这样做了:${pageContext.servletContext.contextPath}/secure/configuration.htm,现在它可以工作了。再次感谢。