<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    dream.in.java

    能以不變應(yīng)萬變是聰明人做事的準(zhǔn)則。萬事從小事做起,積累小成功,問鼎大成功,是成功者的秘訣。

    JSP和Servlet中的絕對路徑和相對路徑_轉(zhuǎn)

    JSP和Servlet中的絕對路徑和相對路徑問題困擾了我好幾天,經(jīng)過努力之后將其部分心得和大家共享。

      前提:假設(shè)你的Http地址為http://192.168.0.1/你的web應(yīng)用為webapp,那么你的web應(yīng)用URL為http://192.168.0.1/webapp/

      web應(yīng)用的目錄結(jié)構(gòu):

    webapp/
    web-inf/
    classes/
    lib/
    web.xml
    <servlet-mapping>
    <servlet-name>handleservlet</servlet-name>
    <url-pattern>/handleservlet</url-pattern>此映射是相對于當(dāng)前web應(yīng)用的
    </servlet-mapping>
    user/
    a.jsp
    b.jsp
    images/
    css/
    js/

      所有相對路徑都是由“/”開頭的。如:/image/a.gif,/user/main.jsp,大家知道在html中的相對路徑是這樣的:

      有個html文件:a.html,其中有<link href="one.css" rel="stylesheet" type="text/css">,其中href屬性表示引用的css文件的路徑。

      one.css:表示one.css和a.hmtl處于同一個目錄

      user/one.css:表示one.css處于a.html所在目錄的子目錄user中。

      ../one.css:表示one.css位于a.hmtl上一級目錄下,

      ../../one.css:表示one.css位于a.hmtl上一級目錄的上一級目錄下,

      ./:表示和a.hmtl同一目錄

      我們稱上述相對路徑為html相對路徑

      1、服務(wù)器端的地址

      服務(wù)器端的相對地址指的是相對于你的web應(yīng)用的地址,這個地址是在服務(wù)器端解析的(不同于html和javascript中的相對地址,他們是由客戶端瀏覽器解析的)也就是說這時候在jsp和servlet中的相對地址應(yīng)該是相對于你的web應(yīng)用,即相對于http://192.168.0.1/webapp/的。

      其用到的地方有:

      forwarder:servlet中的request.getRequestDispatcher(address);這個address是在服務(wù)器端解析的,所以,你要forwarder到a.jsp應(yīng)該這么寫:request.getRequestDispatcher(“/user/a.jsp”)這個/相對于當(dāng)前的web應(yīng)用webapp,其絕對地址就是:http://192.168.0.1/webapp/user/a.jsp

      sendRedirect:在jsp中<%response.sendRedirect("/rtccp/user/a.jsp");%>

      2、客戶端的地址

      所有的html中的相對地址都是相對于http://192.168.0.1/的,而不是http://192.168.0.1/webapp/的。

      Html中的form表單的action屬性的地址應(yīng)該是相對于http://192.168.0.1/的,所以,如果提交到a.jsp為:action=”/webapp/user/a.jsp”;提交到servlet為action=”/webapp/handleservlet”

      Javascript也是在客戶端解析的,所以其相對路徑和form表單一樣。

      3、站點(diǎn)根目錄和css路徑問題

      我們稱類似這樣的相對路徑/webapp/….為相對于站點(diǎn)根目錄的相對路徑。

      當(dāng)在jsp中引入css時,如果其相對路徑相對于當(dāng)前jsp文件的,而在一個和這個jsp的路徑不一樣的servlet中forwarder這個jsp時,就會發(fā)現(xiàn)這個css樣式根本沒有起作用。這是因?yàn)樵趕ervlet中轉(zhuǎn)發(fā)時css的路徑就是相對于這個servlet的相對路徑而非jsp的路徑了。所以這時候不能在jsp中用這樣的路徑:<link href="one.css" rel="stylesheet" type="text/css">或者<link href="../../one.css" rel="stylesheet" type="text/css">類似href="one.css"和../../one.css的html相對路徑是相對于引用這個css的文件的相對路徑。而在servlet中轉(zhuǎn)發(fā)時就是相對于這個servlet的相對路徑了,因?yàn)閖sp路徑和servlet路徑是不一樣的,所以這樣的引用肯定是出錯的。

      所以這個時候,要用站點(diǎn)根目錄,就是相對于http://192.168.0.1/的目錄,以“/”開頭。

      因此上述錯誤應(yīng)更正為href=”/webapp/one.css”類似的站點(diǎn)根目錄的相對目錄。這樣在servlet轉(zhuǎn)發(fā)后和jsp中都是相對于站點(diǎn)根目錄的相對路徑,就能正確使用所定義的css樣式了。

    posted on 2009-02-14 16:12 YXY 閱讀(144) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 最近免费视频中文字幕大全| 一个人免费观看日本www视频| 97视频免费观看2区| 亚洲av一综合av一区| 91福利免费网站在线观看| ZZIJZZIJ亚洲日本少妇JIZJIZ| 一个人看的www免费在线视频| 亚洲成av人在片观看| 一区二区三区在线免费观看视频 | 最近免费中文字幕mv电影| 亚洲午夜精品一区二区| 久久精品毛片免费观看| 亚洲国产精品成人精品小说| 麻豆国产精品免费视频| 亚洲一线产品二线产品| 国产成人无码a区在线观看视频免费 | 亚洲s码欧洲m码吹潮| 免费国产人做人视频在线观看| 一个人免费观看www视频| 亚洲国产精品特色大片观看完整版| 四虎影视在线影院在线观看免费视频| 337p欧洲亚洲大胆艺术| 无码人妻一区二区三区免费 | 手机看片国产免费永久| 亚洲伊人tv综合网色| 亚洲黄色免费网址| 亚洲一区二区三区不卡在线播放 | 亚洲精品无码成人片在线观看| 两个人看www免费视频| 亚洲精品国产手机| 国产又黄又爽又猛的免费视频播放 | 国产一级特黄高清免费大片| 国产性生大片免费观看性 | 亚洲色偷拍区另类无码专区| 国产偷伦视频免费观看| 成人国产mv免费视频| 国产做国产爱免费视频| 亚洲人成网站日本片| 亚洲国产香蕉人人爽成AV片久久 | 亚洲国产精品综合久久网各| 亚洲AV中文无码乱人伦|