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>
复制代码
结果略,可以正常访问
相关推荐
云烟成雨TD13 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
Java成神之路-13 小时前
SpringMVC 响应实战指南:页面、文本、JSON 返回全流程(Spring系列13)
java·spring·json
砍材农夫14 小时前
spring-ai 第六模型介绍-聊天模型
java·人工智能·spring
云烟成雨TD14 小时前
Spring AI Alibaba 1.x 系列【5】ReactAgent 构建器深度源码解析
java·人工智能·spring
Flittly15 小时前
【SpringAIAlibaba新手村系列】(15)MCP Client 调用本地服务
java·笔记·spring·ai·springboot
Flittly16 小时前
【SpringAIAlibaba新手村系列】(14)MCP 本地服务与工具集成
java·spring boot·笔记·spring·ai
mfxcyh16 小时前
基于xml、注解、JavaConfig实现spring的ioc
xml·java·spring
Flittly16 小时前
【SpringAIAlibaba新手村系列】(13)Tool Calling 函数工具调用技术
java·spring boot·spring·ai
xdscode16 小时前
Spring 依赖注入方式全景解析
java·后端·spring