在開發中我們不可避免的要碰到許多需要寫URL地址的情況,這常常讓我們感到頭疼。下面筆者推薦一種簡單的做法。URL地址分為絕對路徑和相對路徑兩種。相對路徑又分為相對資源路徑和相對根路徑。顯然絕對路徑在開發中是要禁用的。至於相對資源路徑和相對根路徑用哪個的問題,筆者推薦用相對根路徑,相對資源路徑容易引起混亂。筆者建議在web開發中通通使用相對根路徑,即通通以"/"開頭寫URL地址。因為這樣我們只需弄清楚"/"代表誰即可。可以簡單的理解為"/"是給誰用的,就代表誰。給服務器用,代表web工程;給瀏覽器用就代表webapps。
package com.yyz.response; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //web工程中URL地址的寫法 public class ResponseDemo extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //servletContext,給服務器用,"/"代表web工程 this.getServletContext().getRealPath("/download/1.gif"); //forward,給服務器用,"/"代表web工程。 this.getServletContext().getRequestDispatcher("/register.html"); //sendRedirct,給瀏覽器用,"/"代表webapps。 response.sendRedirect("/test/register.html"); /** * 在register.html中要訪問ResponseDemo.java,超鏈接的寫法,給瀏覽器用,"/"代表webapps * <a href="/test/servlet/ResponseDemo"></a> */ } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
為了便於大家理解,下面附上Myeclipse下Package Explorer的結構圖:
另外還有一個容易疑惑的地方,究竟使用"/"還是用"\\"。讀取硬盤上的資源用"\\",處理URL資源用"/"。而服務器中的所有資源都是web資源,通通用"/"。但當我們讀取硬盤上的一個文件時用"\\",如
FileInputStream in = new FileINputStream("c:\\ag\\sd")