2014-09-25 20 views
6

Tôi đang cố gắng tìm hiểu thêm về cách thức đường dẫn được diễn giải bằng JSP.Giảm URL tương đối khi sử dụng thẻ cơ sở

Khi sử dụng thẻ cơ sở HTML kết hợp với URL tương đối, có khá tiêu chuẩn để kết thúc href cơ bản với dấu gạch chéo không? Lý do tôi yêu cầu là vì tôi thường cần thể hiện mọi thứ theo ngữ cảnh gốc trong một JSP (ví dụ như một mẫu hành động), để biểu mẫu được định tuyến tới servlet thích hợp như tôi đã ánh xạ nó trong web.xml.

Hầu hết thời gian tôi chỉ sử dụng ${pageContext.request.contextPath} mỗi lần, cho đến khi tôi tìm hiểu về thẻ cơ sở.

Tuy nhiên, tôi đoán rằng vì trong một JSP dấu gạch chéo được giải thích bởi các máy chủ như thư mục gốc của ứng dụng web, tôi không thể có cơ sở của tôi được, ví dụ:

<base href="/foo"/> 

và sau đó theo hình thức có:

<form action="/extension"> 
... 
</form> 

Vì đây sẽ gây ra các hình thức để trình mydomain.com/extension thay vì mydomain.com/foo/extension. Tôi có hiểu điều này một cách chính xác không, bởi vì dấu gạch chéo có ý nghĩa đặc biệt, bạn thường cần phải kết thúc HREF cơ sở bằng dấu gạch chéo ngược để có được hiệu ứng mong muốn?

Cảm ơn

Trả lời

7

Không thực sự.

Trình duyệt không chỉ đơn giản là nối các thuộc tính cơ sở của bạn href và URL tương đối. Thay vào đó, thẻ <base> đặt URL cơ sở tài liệu sau đó được sử dụng để tạo động một đường dẫn mới.

Bạn có thể thấy một ví dụ thú vị trong đặc tả HTML WHATWG:

<base href="http://www.example.com/news/index.html"> 
<p>Visit the <a href="archives.html">archives</a>.</p> 

Lưu ý rằng thuộc tính href thậm chí kết thúc bằng một tên tập tin.

Điều này có nghĩa là nếu bạn không đặt dấu gạch chéo vào thuộc tính cơ sở href, foo sẽ được coi là phần cuối cùng, dễ bay hơi của đường đi và về cơ bản sẽ bị xóa. Bằng cách ví dụ:

<base href="http://www.example.com/news/index.html" /> 
<img src="ball.png" /> <!-- GET http://www.example.com/news/ball.png --> 

<base href="http://www.example.com/news/" /> 
<img src="ball.png" /> <!-- GET http://www.example.com/news/ball.png --> 

<base href="http://www.example.com/news" /> 
<img src="ball.png" /> <!-- GET http://www.example.com/ball.png --> 

<base href="http://www.example.com/" /> 
<img src="ball.png" /> <!-- GET http://www.example.com/ball.png --> 

<!-- If served from http://www.example.com: --> 
<base href="/" /> 
<img src="ball.png" /> <!-- GET http://www.example.com/ball.png --> 
+0

nhưng sẽ không ví dụ đưa bạn đến http: // www. thí dụ. com/news/index.html/archives.html? – user1154644

+0

Đó là điểm, nó sẽ không. Nó sẽ đưa bạn đến 'example.com/news/archives.html'. – Denis

+0

Tôi hiểu. Vì vậy, những gì sẽ là lợi thế hoặc truyền thông về ý định sử dụng: thay vì Có vẻ như sau này rõ ràng hơn là – user1154644

Các vấn đề liên quan