0、前端页面的请求路径

学习资源:动力节点的2020最新SpringMVC教程【IDEA版】-springmvc从入门到精通


1、相对地址

1.1、不使用 /

页面的请求地址中不加 / ,相对地址的参考地址是:当前页面的地址

<a href="user/register">发起注册请求</a>

点击上面的超链接后,新的页面的地址会变为:http://ip:端口号:工程名/user(register 被作为资源名)。这时如果在这个页面发起不带 / 的请求:

<a href="user/second">发起第二个请求</a>

会出现 http://ip:端口号/工程名/user/user/second The requested resource is not available 的问题。

解决方式:

  • 使用以 "/" 开头的地址
  • 使用html 的 base 标签,它表示当前页面的基地址,页面中所有没有以 "/" 开头的地址,都是以 base 标签中的地址为参考地址,使用 base 地址 + user/second 组成完整的访问地址
<head>
    <base href="http://ip:端口号/工程名/" />
</head>
<body>
    <a href="user/second">发起第二个请求</a>
</body>

项目中的使用方式:

<%
    String basePath = request.getScheme() + "://" +
            request.getServerName() + ":" + request.getServerPort() +
            request.getContextPath() + "/";
%>
<html>
	<head>
        <base href="<%=basePath%>">
    </head>
</html>

1.2、使用 /

页面的请求地址中加 / ,参考地址是:http:ip:端口号/。直接访问是会略过工程地址的,会造成 HTTP ERROR 404

<a href="/user/register">发起注册请求</a>

为了解决这个问题,可以在页面的请求地址中,附上 "/工程名" 的前缀

<a href="/工程名/user/register">发起注册请求</a>

但是这样的话,又会导致两个问题:

  1. 请求地址显得冗余不够清晰
  2. 工程名一旦修改的话,势必要修改每一个页面的请求前缀

解决方式:使用 ${pageContext.request.contextPath} 作为工程名:

<a href="${pageContext.request.contextPath}/user/register">发起注册请求</a>

2、绝对地址

<a href="http://ip:端口号/工程名/自定义请求地址">发起注册请求</a>
原文地址:https://www.cnblogs.com/sout-ch233/p/13622393.html