SpringMVC相对路径和绝对路径

1.相对地址与绝对地址定义

复制代码
在jsp,html中使用的地址,都是在前端页面中的地址,都是相对地址
地址分类:
	(1),绝对地址,带有协议名称的是绝对地址,http://www.baidu.com
	(2),相对地址,没有协议开头的,例如user/some.do,/user/some.do。相对地址不能独立使用,必须有一个参考地	址。通过参考地址+相对地址本身
	才可以指定资源。

2.访问地址前面加不加 /

2.1 案例展示

复制代码
web.xml文件代码
xml 复制代码
	<servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
复制代码
index.jsp页面代码
java 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<a href="web/some.do">发起一个get请求</a>
</body>
</html>
复制代码
MyController类代码
java 复制代码
@Controller
public class MyController {

    @RequestMapping(value={"/web/some.do"})
    public String ReturnModelAndView(){
        return "view.jsp";
    }
}
复制代码
view.jsp页面代码
java 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>view</title>
</head>
<body>
<h1>我是结果页</h1>
</body>
</html>
复制代码
view.jsp文件的位置

点击index.jsp页面请求前,地址栏网址为

复制代码
	点击后
复制代码
结论
当你的访问地址没有以 / 开头,例如web/some.do,当你点击链接之后,访问的地址是当前页面的地址加上链接地址。
http://localhost:8080/springmvc_005_path/  +  web/some.do

3. 访问地址前面加 /

复制代码
修改index.jsp代码
java 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<a href="/web/some.do">发起一个get请求</a>
</body>
</html>
复制代码
再次启动服务器
复制代码
点击请求
复制代码
修改index.jsp
java 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/web/some.do">发起一个get请求</a>
</body>
</html>
复制代码
再次发起请求
复制代码
结论:
不添加 / 时,访问地址参考的地址是  http://localhost:8080 ,然后加上你的访问地址 /web/some.do ,缺少项目名,因此我们
可以添加	${pageContext.request.contextPath}来补全。

4. 使用base标签简化操作同时解决不加 / 可能引起的问题

复制代码
base标签说明
<base> 标签为页面上的所有的相对链接规定默认 URL 或默认目标。
在一个文档中,最多能使用一个 <base> 元素。<base> 标签必须位于 <head> 元素内部。

代码展示

java 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + request.getContextPath() + "/";
%>
<html>
<head>
    <title>Title</title>
    <base href="<%=basePath%>"/>
</head>
<body>
<%--<a href="${pageContext.request.contextPath}/web/some.do">发起一个get请求</a>--%>
<a href="web/some.do">发起一个get请求</a>
</body>
</html>
复制代码
结果略,可以正常访问
相关推荐
鱼鳞_6 分钟前
苍穹外卖-Day01(开发环境搭建)
java·spring boot·spring·maven
用户3983461612027 分钟前
Go-Spring 实战第 4 课 —— 配置校验:使用 expr 标签拦截非法配置
spring·go
小小工匠44 分钟前
Spring AI RAG - 08 JWT 认证与用户体系设计
spring·jwt
摇滚侠1 小时前
Spring 面试题 真正的 offer 偏方 Java 基础 Java 高级
java·后端·spring
用户398346161201 小时前
Go-Spring 实战第 2 课 —— 配置绑定:Properties 映射到 Go 类型
spring·go
用户398346161201 小时前
Go-Spring 实战第 3 课 —— 复杂类型的配置绑定:Duration、Time、Slice、Map
spring·go
身如柳絮随风扬3 小时前
MVC 三层结构深度解析:概念、作用与实战经验
mvc
Jul1en_3 小时前
【Spring Cloud】Spring Cloud Config详解
后端·spring·spring cloud
霸道流氓气质11 小时前
基于 Milvus Lite 的 Spring AI RAG 向量库实践方案与示例
人工智能·spring·milvus
Ting-yu12 小时前
SpringCloud快速入门(7)---- 数据隔离
spring boot·spring·spring cloud