• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

        做了個(gè)jsp&servlet路徑狀態(tài)的測(cè)試,花了偶幾個(gè)小時(shí),把結(jié)果貼出共享

        做了個(gè)jsp&servlet路徑狀態(tài)的測(cè)試,花了偶幾個(gè)小時(shí),把結(jié)果貼出共享

        更新時(shí)間:2022-04-26 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

        PS:這里怎么貼html阿,害得我還得格式化文本!




        路徑狀態(tài)測(cè)試

        目的
        測(cè)試jsp之間互相跳轉(zhuǎn),servlet跳轉(zhuǎn)jsp環(huán)境下絕對(duì)路徑和相對(duì)路徑的狀態(tài)
        尋找出一種通用的解決辦法


        資源

        打成的WAR包
        MyWAR

        組成文件
        JSP
        a.jsp

        b/
        b.jsp
        ccc.jsp


        Servlet

        TestServlet.java mapping: /layer1/layer2/TestServlet


        流程描述
        1. 由a.jsp直接跳轉(zhuǎn)到b.jsp
         或
         由a.jsp提交到TestServlet,TestServlet根據(jù)a的提交選擇相應(yīng)跳轉(zhuǎn)方式(forward/sendRedirect)
         然后跳轉(zhuǎn)到b.jsp
        2. b.jsp包含一系列超鏈,來(lái)顯示不同方式的跳轉(zhuǎn)后超鏈的情況
         /a.jsp
         ../a.jsp
         ../../a.jsp
         ../../../a.jsp

         ccc.jsp
         /b/ccc.jsp
         ../ccc.jsp
         ../b/ccc.jsp
         ../../ccc.jsp
         ../../b/ccc.jsp
         ../../../ccc.jso
         ../../../b/ccc.jsp

         [contextPath]/b/b.jsp



        測(cè)試結(jié)果


        短語(yǔ)替換

        http://localhost:8080/ =>ip/
        /MyWAR/=>war/
        http://localhost:8080/MyWAR/ =>ip/war/
        /MyWAR =>[contextPath](request.getContextPath())





        跳轉(zhuǎn)方式直接跳轉(zhuǎn)<a ..>servlet/forward servlet/sendRedirect
         requestDispatcher.forward response.sendRedirect
        ---------------------+---------------------+----------------------------------+------------------------
        servlet中跳轉(zhuǎn)的路徑x/b/b.jsp/war/b/b.jsp
        ---------------------+---------------------+----------------------------------+------------------------
        跳轉(zhuǎn)后瀏覽器的地址欄 ip/war/b/b.jsp ip/war/layer1/layer2/TestServletip/war/b/b.jsp
        ---------------------+---------------------+----------------------------------+------------------------
        b.jsp中的鏈接列表 瀏覽器狀態(tài)條出現(xiàn)的鏈接地址
        <a href="這里的描述"
        ---------------------+---------------------+----------------------------------+------------------------
        /a.jsp ip/a.jspip/a.jspip/a.jsp
        ../a.jsp ip/war/a.jspip/war/layer1/a.jsp ip/war/a.jsp
        ../../a.jspip/a.jspip/war/a.jspip/a.jsp
        ../../../a.jsp ip/a.jspip/a.jspip/a.jsp

        ccc.jspip/war/b/ccc.jspip/war/layer1/layer2/ccc.jspip/war/b/ccc.jsp
        /b/ccc.jsp ip/b/ccc.jspip/b/ccc.jspip/b/ccc.jsp
        ../ccc.jsp ip/war/ccc.jspip/war/layer1/ccc.jsp ip/war/ccc.jsp
        ../b/ccc.jsp ip/war/b/ccc.jspip/war/layer1/b/ccc.jsp ip/war/b/ccc.jsp
        ../../ccc.jspip/ccc.jspip/war/ccc.jspip/ccc.jsp
        ../../b/ccc.jspip/b/ccc.jspip/war/b/ccc.jspip/b/ccc.jsp
        ../../../ccc.jsp ip/ccc.jspip/ccc.jspip/ccc.jsp
        ../../../b/ccc.jsp ip/b/ccc.jspip/b/ccc.jspip/b/ccc.jsp


        [contextPath]/b/b.jspip/war/b/b.jspip/war/b/b.jspip/war/b/b.jsp
        ---------------------+---------------------+----------------------------------+------------------------




        總結(jié)

        由上面的列表看出,只有最下面一行是有實(shí)際意義而且無(wú)論以任何方式跳轉(zhuǎn)鏈接地址都是正確無(wú)誤的
        1. 在jsp中的“/”表示的根為“ip”,不包含WAR路徑
        2. 在servlet中以forward方式使用的“/”表示的根為“ip/war/”,包含了WAR路徑
        3. 在servlet中以sendRedirect方式使用的“/”表示的根為ip,不包含WAR路徑
        4. 在servlet中以forward方式跳轉(zhuǎn),則瀏覽器的地址欄仍然為此servlet,不會(huì)改變
        5. 在servlet中以sendRedirect方式跳轉(zhuǎn),則瀏覽器的地址欄改變?yōu)槟康穆窂?br>6. 相對(duì)路徑的確定是以瀏覽器的地址欄顯示的路徑為基準(zhǔn)的,而非具體的目錄結(jié)構(gòu),所以
         跳轉(zhuǎn)到同目錄下的某個(gè)頁(yè)面使用<a href="文件名">link</a>這種方式不是永久成立的
         (做asp的人不要驚訝,這里說(shuō)的jsp和servlet :))
        7. 為了避免jsp跳jsp,servlet跳jsp,forward方式跳轉(zhuǎn),sendRedirect跳轉(zhuǎn)產(chǎn)生的路徑問(wèn)題,
         對(duì)于jsp和使用sendRedirect跳轉(zhuǎn)的servlet,采用直接使用帶
         容器路徑[String request.getContextPath()]的絕對(duì)路徑就可以徹底解決,即:
        1)<%
        String contextPath = request.getContextPath();
        String url = contextPath + "/user/login.jsp";
         %>
         
         <a href="<%=url%>"> login</a>
         2) ....
        String contextPath = request.getContextPath();
        String targetPath = contextPath + "/user/login.jsp";
        RequestDispatcher rd = request.getRequestDispatcher(targetPath);
        rd.forward(request, response);
        ......

         對(duì)于使用forward跳轉(zhuǎn)的servlet,則不要加容器路徑,否則就重復(fù)出現(xiàn) 容器路徑,原因參見(jiàn) 2

        8. 如果使用的“../”過(guò)多也不會(huì)出現(xiàn)嚴(yán)重問(wèn)題,“../”最多使鏈接到達(dá)“ip/”
        9. 另外,在使用
         <jsp:include page = "url" flush="true"/>
         <%@ include file="url" %>
         <%@ page errorPage = "url" %>時(shí),
         這里url使用的“/”表示的根為“ip/war/”,包含了WAR路徑

        溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 亚洲卡一卡二卡乱码新区| 曰批全过程免费视频观看免费软件| 三年片免费高清版| 久久免费观看国产99精品| 亚洲日产韩国一二三四区| 成人A毛片免费观看网站| 亚洲精品无码mv在线观看网站| 中文字字幕在线高清免费电影| 亚洲日韩精品一区二区三区 | 中文毛片无遮挡高潮免费| 亚洲一区免费观看| 亚洲国产成人精品无码区二本 | 日韩av无码成人无码免费| 亚洲日本一区二区三区在线| 中文字幕久无码免费久久| 亚洲av无码一区二区三区乱子伦 | 成全影视免费观看大全二| 亚洲人成网站18禁止| 免费国产小视频在线观看| 人与动性xxxxx免费| 亚洲av永久无码精品网站| 色播精品免费小视频| 亚洲GV天堂GV无码男同| 精品国产亚洲一区二区在线观看| 日韩精品免费在线视频| 亚洲一区二区三区四区视频| 免费国产高清视频| 成人性生交大片免费看中文| 亚洲人成色77777在线观看大| 久久久高清日本道免费观看| 性xxxx黑人与亚洲| 亚洲精品老司机在线观看| 日本免费久久久久久久网站| 欧洲 亚洲 国产图片综合| 亚洲日韩精品无码专区网站| 毛片无码免费无码播放| 国产亚洲欧美日韩亚洲中文色| 无码日韩人妻av一区免费| 亚洲阿v天堂在线2017免费| 亚洲成在人线电影天堂色| 亚洲精品动漫人成3d在线|