<s:a href="/register.jsp">註冊</s:a> 是不可以的,
<s:a href="register.jsp">註冊</s:a>才能找到連接路徑。
還有在做文件io的時候也要注意:
File file = new File("/src/com/dom4j/students.xml");是不可以的,
File file = new File("src/com/dom4j/students.xml");才能找到。
用Java開發Web應用時,無論是Jsp頁面、Servlet或是web.xml配置文件中都涉及到路徑的問題,而這又是初學者較容易混淆的地方,往往不知道如何寫路徑。其實服務器端和客戶端在處理路徑的方式上不一致,因此需要根據不同的情況寫出正確的路徑。下面通過例子來說明。
假設Web應用road中,應用的根路徑下有一個dir1文件夾和dir2文件夾。c.jsp在dir1中,a.jsp和b.jsp在dir2中。
+ root
-dir1
c.jsp
-dir2
a.jsp
b.jsp
JSP頁面中正確的路徑表示 假設在a.jsp頁面中有兩個鏈接,分別鏈接到b.jsp和c.jsp頁面。
直接寫路徑表示和頁面在同一個文件夾下面,如<a href=“b.jsp">b.jsp</a>
“../”表示當前文件夾的上一級文件夾(相對路徑),如:
<a href=“。。/dir2/b.jsp”>b.jsp</a>,<a href=“。。/dir1/c.jsp”>c.jsp</a>
“/”表示 http://機器IP:8080(絕對路徑),如: <a href=“/road/dir2/b.jsp”>b.jsp</a>
<a href=“/road/dir1/c.jsp”>c.jsp</a>
Servlet中正確的路徑表示
轉發請求時:“/”表示“http://服務器IP:8080/Web應用名”,例如: String forward = “/dir1/c.jsp”;
RequestDispatcher rd = request.getQRequestDispatcher(forward);
重定向時:“/” 表示“http://機器IP:8080”,而通過request.getContextPath()得到的是:“http://機器IP:8080/Web應用名”,例如:
String str = request.getContextPath();
response.sendRedirect(str + “/dir1/c.jsp”);
配置文件web.xml中 url-mapping中,“/”表示“http://IP地址:8080/Web應用名”
---------------總結-----------------
在瀏覽器端:“/”表示的是一臺WEB服務器,“http://機器IP:8080”
在服務器端(請求轉發):“/”表示的是一個WEB服務器端的應用,“http://機器IP:8080/Web應用”
在服務器端(重定向):“/”表示的是一個WEB服務器,“http://機器IP:8080”