1. 程式人生 > >Java中的絕對路徑與相對路徑

Java中的絕對路徑與相對路徑

#Java中的絕對路徑與相對路徑
  近些天對Java中的絕對路徑與相對路徑比較模糊,本著一個學到手都是自己的原則,下面我們來好好區分下絕對路徑與相對路徑。

  • 1.絕對路徑: 聽著名字就大概可以瞭解到這個東西是絕對的,我們查一下百度百科"絕對":指沒有任何條件限制,不受任何限制而言。這個就比較官方一點了,咱們用咱們計算機的事物去分析,舉個例子: 比如說你要讀取某個檔案,如果說這個檔案在你的硬碟中(D:\Java\天線寶寶傳奇.txt),那麼就可以說他是絕對的,因為他相對於你當前的程式他是絕對的,不管你用Eclipse開啟還是用IDEA開啟,還是說 你把專案從C盤移動到D盤

    ,天線寶寶傳奇這本書他都是不變的。

  • 2.相對路徑:從名字上我們就可以知道,絕對與相對是相比較而言的,如果說絕對路徑是相對於磁碟來說(也可以是伺服器)不變的,那麼相對路徑就可以說是相對於專案來說不變的

下面來說說關於訪問時候所出現的問題

在我們訪問的時候不外乎以下幾種情況

  • 1./
  • 2.不加/
  • 3.localhost:8080/(加不加專案名稱這個需要你自己去設定在application.properties裡面Springboot專案),他們之間的關係
  • 4.webpp目錄

以上幾點是我們需要重點區分的,下面我們來一一進行區分
先分享以下部落格,WebContent與webapp的區別和聯絡:

https://www.jianshu.com/p/49d106cee189 侵刪

一般情況下我們都是將Jsp/Css/Image檔案放置到webapp目錄下面一般情況下我們需要進行如下的配置:

spring.mvc.view.prefix=/WEB-INF/jsp/

spring.mvc.view.suffix=.jsp

意味著,我們從後端對映的請求回去webapp下面的/WEB-INF/jsp/去尋找檔案字尾為jsp的檔案

程式碼結構如下

@Controller
public class TestPathController {
     
     @RequestMapping(value = "/index" ,method = RequestMethod.GET)
     public ModelAndView init() {
         ModelAndView modelAndView = new ModelAndView();
         modelAndView.setViewName("index");
        return modelAndView;
     }

 }

前端的程式碼結構

展示頁面情況

訪問地址http://localhost:8080/aoc/index

那麼下面就到了我們所討論的第一個問題,那麼我們一般情況下所說的相對路徑指的到底是哪裡?

我們先做出一個大膽的推測:

  • 1.指的我們所說的src目錄

  • 2.指的我們所說的webapp目錄

    我個人更加傾向於第一種吧,因為想到了所有的目錄都可能是相對而言的,不單單是前端頁面,後端請求servlet同樣也是這樣子的或者說包括我們的Mybatis裡面的.sql檔案 這些都是需要相對路徑去訪問的,下面再次提出一個問題。

咱們所指的classPath:這個路徑指的是哪裡

  • 1.src目錄?
  • 2.還是有其他所指?

參考部落格:https://blog.csdn.net/qq_33393542/article/details/80322141 侵刪

那麼下面就回到了我們最初的問題,還是探究相對路徑指的是哪裡?

    1. 中的路徑

      “/”代表的是 web 站點的根路徑.。

    也就是我們平時所說的:http://localhost:8080/

  • 2.三.web.xml中的路徑

    Servlet 對映 /xx 中的 “/” 代表當 前 web 應用的根路徑。
    web應用程式的的根目錄:http://localhost:8080/abosulutelyOrRelatively/
    -3 .四.轉發和重定向中的路徑問題

     1. 如果沒有“/”,如request.getRequestDispatcher("hello.jsp ").forward(request,
     	  response) 和response.sendRedirect(" hello.jsp ") 就表示在同級目錄
     	中尋找login.jsp檔案。
    
    1. 如果路徑中包含“/”(注意,這裡的“/”是指路徑中的第一個“/”)

    a, 轉發

    如request.getRequestDispatcher("/hello.jsp").forward(request, response) :代表到http://localhost:8080/test/ 下目錄尋找hello.jsp檔案。

    b,重定向

    如response.sendRedirect("/hello.jsp"):代表到http://localhost:8080/ 目錄下尋找hello.jsp檔案

    參考部落格:https://blog.csdn.net/u014507083/article/details/53768511

    收穫還是蠻大的,知識還是記錄下來的好