欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringMVC学习笔记(七)绝对路径和相对路径

程序员文章站 2024-02-29 21:29:52
...

在jsp , html中使用的地址, 都是在前端页面中的地址,都是相对地址
地址分类:
1.绝对地址 , 带有协议名称的是绝对地址, http://www.baidu.com , ftp://202.122.23.1
2.相对地址, 没有协议开头的, 例如 user/some.do , /user/some.do
相对地址不能独立使用,必须有一个参考地址。 通过参考地址+相对地址本身才能指定资源。
(参考地址是指项目在执行过程中会有一个地址,我们会根据这个地址加上我们自定义部分的地址组成完整地址)比如找张三同学, 1班有张三, 2班也有张三,这时候1班和2班就是参考地址
3.参考地址
1) 在你的页面中的,访问地址不加 “/”
我们运行工程访问的是: http://localhost:8080/ch06_path/index.jsp
路径: http://localhost:8080/ch06_path/(因为带协议,绝对地址)
资源: index.jsp

<p><a href="user/some.do">发起some.do的get请求</a> </p>

在index.jsp发起 user/some.do请求,访问地址变为 http://localhost:8080/ch06_path_war/user/some.do

http://localhost:8080/ch06_path_war/user/some.do

SpringMVC学习笔记(七)绝对路径和相对路径
结论:
在index.jsp发起 user/some.do请求,访问地址变为 http://localhost:8080/ch06_path_war/user/some.do
当你的地址 没有斜杠开头,例如 user/some.do , 当你点击链接时, 访问地址是当前页面的地址(参考地址)加上链接的地址。 http://localhost:8080/ch06_path_war/ + user/some.do
当前页面地址:↓
SpringMVC学习笔记(七)绝对路径和相对路径

2)在你的页面中的,访问地址加 “/”
访问的是: http://localhost:8080/ch06_path_war/index.jsp
路径: http://localhost:8080/ch06_path_war/
SpringMVC学习笔记(七)绝对路径和相对路径
资源: index.jsp
点击 /user/some.do, 访问地址变为 http://localhost:8080/user/some.do
参考地址是 你的服务器地址, 也就是 http://localhost:8080

当把index.jsp中的访问地址修改

     <p><a href="/user/some.do">发起some.do的get请求</a> </p>

再访问
SpringMVC学习笔记(七)绝对路径和相对路径

当我们加了“/”,参考地址变成了服务器的IP到端口号

解决方法①把这的地址改成/ch06_path_war/user/some.do

 <p><a href="/ch06_path_war/user/some.do">发起some.do的get请求</a> </p>

其中ch06_path_war依据是你自己配置的服务器
SpringMVC学习笔记(七)绝对路径和相对路径解决方法②EL表达式
为了适应不同的工程,可以用EL表达式
如果你的资源不能访问: 加入${pageContext.request.contextPath}

<a href="${pageContext.request.contextPath}/user/some.do">发起user/some.do的get请求</a>

不加“/”时加base标签解决路径问题

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

getScheme():获取协议名称 :http
getServerName() :获取服务器名称:localost
getServerPort():获取端口号:8080
getContextPath():获取工程路径

<%@ 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>
     <p>第一个springmvc项目</p>
     <p><a href="user/some.do">发起user/some.do的get请求</a> </p>
     <br/>


</body>
</html>

我们访问的时候得到的地址就是base中的地址加上href

附件

链接:https://pan.baidu.com/s/1fQ0DFq33He5g4gNb8RTpBw
提取码:rz4r

相关标签: SpringMVC