java web開發路徑問題總結

<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”
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章