1. 程式人生 > >javaweb各種路徑的總結

javaweb各種路徑的總結

/開始表示相對於當前應用下的絕對路徑。

加不加應用名?給瀏覽器用的 要加 :給 tomcat內部用的 不加。

1.1  表單:

1.1.1 表單地址的寫法

Form action:

1. 全地址:

寫法1

http://localhost/Day11ServletRequest/servlet/RegisterServlet

2. 寫相對路徑

寫法2:相對於當前的頁面的相對位置去寫

/jsp/xxx/login.jsp

/jps/pages/login.html

當相對位置發生變化的時候,會有問題。

寫法3:以/+當前的專案名為開始,寫相對於當前專案的根路徑的位置

缺點:應用名被寫死。

使用哪種寫法比較好?寫法3.

改進寫法:

<form action="${pageContext.request.contextPath }

/pages/login.html " method=”get”>

   增加寫法4: 該頁面有設定basepath的情況。

相對於這個路徑寫

跟當前頁面的路徑沒關係。

A   href

Link  

瀏覽器發出的請求 /開始加應用名。

1.1.2  表單思考題

/servlet/serletA

servlet考慮如下url的寫法:

上面這個如果去掉反斜槓

變成相對路徑,則相當於在當前的servlet路徑的基礎上增加,最後變成如下:

當然是不對的。

還可以這麼寫

自帶表示跟的 /

The path starts with a "/" character but does not end with a "/" character

1.2 轉發跟包含

//'/'開頭,表示 以當前的WebRoot為起點。

//不以/開頭,直接寫路徑 表示相對當前的路徑

1.2.0.1 相對路徑

1.2.0.2 /開始的絕對路徑

RequestDispatcher dispater=  request.getRequestDispatcher("/servlet/ServletB");

Tomcat容器的web應用內部。不用寫應用名。當前就在應用內部。

所以不寫應用名

1.2.0.3 轉發包含標籤

同轉發給包含的程式碼里路徑

根目錄01.jsp

<jsp:forward page="/servletB"></jsp:forward>

 根目錄/servletB

1.3 Refresh的url

給瀏覽器用的,/開始,需要寫應用名。

ServletA頁面。

response.setHeader("refresh","2;url='/Day12_ServletResponse/01.html'");

response.setHeader("refresh","2;url=01.html");

http://localhost/app/ServletA

http://localhost/app/servlet/01.html

這個路徑:

給瀏覽器看 寫相對於專案的絕對路徑。

也可以寫相對路徑。但要知道相對於誰。

//response.setHeader("refresh", "2;url='/Day12_ServletResponse/01.html'");

寫完整路徑也可以。

1.4 重定向

也可以寫相對路徑,但是需要知道相對於誰。

1.5 Context  getRealpath

Context.getRealpath(/mm/jpg)

已經定義到當前的WEB-ROOT下,所以 該路徑寫相對於WEB-ROOT的相對路徑

String realPath = getServletContext().getRealPath("WEB-INF/mm.jpg");

注意:前面加斜槓也可以。

getServletContext().getRealPath("/WEB-INF/mm.jpg");

這裡如果不知道,不確定打印出來即可!!!