日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

HTML的相关路径与绝对路径的问题---通过网络搜索整理

發(fā)布時間:2024/1/17 HTML 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTML的相关路径与绝对路径的问题---通过网络搜索整理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

問題描述:
 ?? 在webroot中有個index.jsp?在index.jsp中寫個表單。
  現(xiàn)在在webroot中有個sub文件夾,sub文件夾中有個submit.jsp想得到index.jsp表單的數(shù)據(jù)

  index.jsp
  < form?action="????這邊要怎么寫才才能指向submit.jsp"?method="post">

    數(shù)據(jù)

  < /form>

?

問題解決:

HTML的相關(guān)路徑與絕對路徑的問題。
先看一下下面的URL:
http://192.168.1.1:8080/hello/index.html
一個URL由
服務(wù)器地址:?http://192.168.1.1:8080
WEB應(yīng)用上下文:??/hello
網(wǎng)頁或請求:??/index.html
三個部分組成。
WEB應(yīng)用發(fā)布時,WEB應(yīng)用上下文可以自行指定,如放在ROOT/下的話,WEB應(yīng)用上下文就是空,如:
http://192.168.1.1:8080/index.html
它的WEB應(yīng)用上下文就是空。

HTML協(xié)議中要求,form的action屬性,以“/”開頭是絕對路徑,不以“/”開頭的是相對路徑。
絕對路徑是相對于服務(wù)器地址而言的,相對路徑是相對于當(dāng)前網(wǎng)頁或請求而言的。
舉一個例子,你的當(dāng)前網(wǎng)頁位置是:
http://192.168.1.1:8080/hello/page/index.html
其中/hello是WEB應(yīng)用上下文;/page/index.html是網(wǎng)頁。
在這個網(wǎng)頁上有一個請求需要指向
http://192.168.1.1:8080/hello/servlet/checkUser.cgi
index.html中的form應(yīng)該怎么寫呢?
可以寫成絕對路徑(相對于http:/192.168.1.1:8080)
< form?action="/hello/servlet/checkUser.cgi"?>
...
< /form>
也可以寫成相對路徑(相對于http://192.168.1.1:8080/hello/page)
< form?action="../servlet/checkUser.cgi"?>
...
< /form>

當(dāng)前如果你的WEB應(yīng)用是基于JSP的話,有許多第三方的標簽庫如JSTL或基于Struts的標簽庫都可以在form中自動為你加上WEB應(yīng)用上下文,如二樓東走西顧的例子。
如果你準備在JSP使用基本語句生成網(wǎng)頁的話,六樓honglei915提供了一個很好的例子,只不過“/”更規(guī)范一些,如:
< %!String?basePath=request.getContextPath();%>?
< form?action="<%=basePath%>/sub/submit.jsp"?method="post">?
< /form>?

?

在JSP中,腳本化語言如“<%=contextPath%>”可以從page,request,session及application中取值。
下面的代碼可以看到結(jié)果是因為contextPath被保存在page中:
< %?String?contextPath?=?request.getContextPath();?%>
< form?action="<%=contextPath%>/sub/submit.jsp"?method="post">?
< /form>?

EL表達式如“${contextPath}”只能從request,session及application中取值。
上述代碼修改一下就可以支持EL表達式:
< %?
??String?contextPath?=?request.getContextPath();?
??//?將contextPath保存到request中
??request.setAttribute("contextPath",?contextPath);
%>
< form?action="${contextPath}/sub/submit.jsp"?method="post">?
< /form>?

?

?

另外還有兩個方法:

方法一:
< %!String?basePath=request.getContextPath();%>
< form?action="<%=basePath%>\sub\submit.jsp"?method="post">?
< /form>

basePath?是你項目的根路徑,推薦這樣做,不管以后你的sub?文件夾怎么移動,都是可以成功提交的。

使用這個方法需要理解"<%=basePath%>是什么

關(guān)于"<%=basePath%>的理解請參考:http://www.cnblogs.com/fifiyong/p/JSP.html

方法二:

<form?action="${pageContext.request.contextPath}/sub/submit.jsp"?method="post">?
< /form>?

${pageContext.request.contextPath}等價于<%=request.getContextPath()%> 或者可以說是<%=request.getContextPath()%>的EL版 意思就是取出部署的應(yīng)用程序名或者是當(dāng)前的項目名稱

比如項目名稱是ajax01 在瀏覽器中輸入為http://localhost:8080/ajax01/login.jsp ${pageContext.request.contextPath}或<%=request.getContextPath()%>取出來的就是/ajax01,而"/"代表的含義就是http://localhost:8080

所以我們項目中應(yīng)該這樣寫${pageContext.request.contextPath}/login.jsp

?

轉(zhuǎn)載于:https://www.cnblogs.com/fifiyong/p/HTML.html

總結(jié)

以上是生活随笔為你收集整理的HTML的相关路径与绝对路径的问题---通过网络搜索整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。