JAVAWEB——絕對路徑和相對路徑,到底加不加“/“,以及解決方案

上帝的胳肢窩i發表於2020-12-15

一、地址分類

  • 絕對地址

帶有協議名稱的是絕對地址, http://www.baidu.com , ftp://202.122.23.1

  • 相對地址

沒有協議開頭的, 例如 user/some.do , /user/some.do
相對地址不能獨立使用,必須有一個參考地址。 通過參考地址+相對地址本身才能指定資源

二、表單中的action加“/”區別

1. 不加“/”

<form action="some.do" method="post">
    姓名:<input type="text" name="name"><br/>
    年齡:<input type="text" name="age"><br/>
    <input type="submit" value="提交引數">
</form>

注意此時的action是不以斜槓“/”開頭的。此時我們點選表單訪問的地址是
“http://localhost:8080/SpringMVC_05/” + “some.do”

在這裡插入圖片描述
2.加"/"

<form action="/some.do" method="post">
    姓名:<input type="text" name="name"><br/>
    年齡:<input type="text" name="age"><br/>
    <input type="submit" value="提交引數">
</form>

注意此時的action是以斜槓“/”開頭的。此時我們點選表單訪問的地址是http://localhost:8080/some.do
在這裡插入圖片描述

三、解決加"/"這個問題

方式一:我們只需要在/前面加上我們的專案名即可

<form action="/SpringMVC_05/some.do" method="post">
    姓名:<input type="text" name="name"><br/>
    年齡:<input type="text" name="age"><br/>
    <input type="submit" value="提交引數">
</form>

注意此時的表單名稱前面加入了我們的專案名

該方式不夠靈活,我們一般都是使用EL表示式

方式二:使用EL表示式

在jsp中我們一般使用EL表示式進行處理

<form action="${pageContext.request.contextPath}/some.do" method="post">
    姓名:<input type="text" name="name"><br/>
    年齡:<input type="text" name="age"><br/>
    <input type="submit" value="提交引數">
</form>

方式三:使用base標籤

  • 加入一個base標籤, 是html語言中的標籤。

  • 表示當前頁面中訪問地址的基地址。
    你的頁面中所有 沒有“/”開頭的地址,都是以base標籤中的地址為參考地址
    使用base中的地址 + some.do 組成訪問地址

<head>
    <title>靜態資源測試</title>
    <base href="http://localhost:8080/SpringMVC_05/">
</head>
<body>
<form action="some.do" method="post">
    姓名:<input type="text" name="name"><br/>
    年齡:<input type="text" name="age"><br/>
    <input type="submit" value="提交引數">
</form>
</body>
</html>

這樣獲取的好處,就是我們可以不用每次都使用EL表示式,但我們也不可能每次去手動輸入http://localhost/…這樣的表示式,所以我們一般動態獲取絕對路徑

<%
    String basePath = request.getScheme() + "://" +
            request.getServerName() + ":" + request.getServerPort() +
            request.getContextPath() + "/";
%>
<html>
<head>
    <title>動態獲取絕對路徑</title>
    <base href="<%=basePath%>" />
</head>
<body>
     
<form action="some.do" method="post">
    姓名:<input type="text" name="name"><br/>
    年齡:<input type="text" name="age"><br/>
    <input type="submit" value="提交引數">
</form>
</body>
</html>

相關文章