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

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        做了個jsp&servlet路徑狀態的測試,花了偶幾個小時,把結果貼出共享

        做了個jsp&servlet路徑狀態的測試,花了偶幾個小時,把結果貼出共享

        更新時間:2022-04-26 文章作者:未知 信息來源:網絡 閱讀次數:

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




        路徑狀態測試

        目的
        測試jsp之間互相跳轉,servlet跳轉jsp環境下絕對路徑和相對路徑的狀態
        尋找出一種通用的解決辦法


        資源

        打成的WAR包
        MyWAR

        組成文件
        JSP
        a.jsp

        b/
        b.jsp
        ccc.jsp


        Servlet

        TestServlet.java mapping: /layer1/layer2/TestServlet


        流程描述
        1. 由a.jsp直接跳轉到b.jsp
         或
         由a.jsp提交到TestServlet,TestServlet根據a的提交選擇相應跳轉方式(forward/sendRedirect)
         然后跳轉到b.jsp
        2. b.jsp包含一系列超鏈,來顯示不同方式的跳轉后超鏈的情況
         /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



        測試結果


        短語替換

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





        跳轉方式直接跳轉<a ..>servlet/forward servlet/sendRedirect
         requestDispatcher.forward response.sendRedirect
        ---------------------+---------------------+----------------------------------+------------------------
        servlet中跳轉的路徑x/b/b.jsp/war/b/b.jsp
        ---------------------+---------------------+----------------------------------+------------------------
        跳轉后瀏覽器的地址欄 ip/war/b/b.jsp ip/war/layer1/layer2/TestServletip/war/b/b.jsp
        ---------------------+---------------------+----------------------------------+------------------------
        b.jsp中的鏈接列表 瀏覽器狀態條出現的鏈接地址
        <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
        ---------------------+---------------------+----------------------------------+------------------------




        總結

        由上面的列表看出,只有最下面一行是有實際意義而且無論以任何方式跳轉鏈接地址都是正確無誤的
        1. 在jsp中的“/”表示的根為“ip”,不包含WAR路徑
        2. 在servlet中以forward方式使用的“/”表示的根為“ip/war/”,包含了WAR路徑
        3. 在servlet中以sendRedirect方式使用的“/”表示的根為ip,不包含WAR路徑
        4. 在servlet中以forward方式跳轉,則瀏覽器的地址欄仍然為此servlet,不會改變
        5. 在servlet中以sendRedirect方式跳轉,則瀏覽器的地址欄改變為目的路徑
        6. 相對路徑的確定是以瀏覽器的地址欄顯示的路徑為基準的,而非具體的目錄結構,所以
         跳轉到同目錄下的某個頁面使用<a href="文件名">link</a>這種方式不是永久成立的
         (做asp的人不要驚訝,這里說的jsp和servlet :))
        7. 為了避免jsp跳jsp,servlet跳jsp,forward方式跳轉,sendRedirect跳轉產生的路徑問題,
         對于jsp和使用sendRedirect跳轉的servlet,采用直接使用帶
         容器路徑[String request.getContextPath()]的絕對路徑就可以徹底解決,即:
        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);
        ......

         對于使用forward跳轉的servlet,則不要加容器路徑,否則就重復出現 容器路徑,原因參見 2

        8. 如果使用的“../”過多也不會出現嚴重問題,“../”最多使鏈接到達“ip/”
        9. 另外,在使用
         <jsp:include page = "url" flush="true"/>
         <%@ include file="url" %>
         <%@ page errorPage = "url" %>時,
         這里url使用的“/”表示的根為“ip/war/”,包含了WAR路徑

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 久久亚洲色WWW成人欧美| 久久久亚洲AV波多野结衣 | 免费人成视频在线观看网站 | 亚洲AV无码国产精品永久一区| 69免费视频大片| 亚洲国产美女视频| 精品国产无限资源免费观看| 亚洲电影唐人社一区二区| 男女超爽刺激视频免费播放| 亚洲日本成本人观看| 午夜视频免费观看| 精品一区二区三区无码免费直播| 四虎永久在线精品免费影视 | 免费一级毛片在线播放视频免费观看永久 | 猫咪免费人成网站在线观看入口| 国产在线观看免费视频播放器 | 亚洲黄色片免费看| 美女被免费喷白浆视频| 中文字幕亚洲情99在线| 日韩亚洲国产综合久久久| 久久国产一片免费观看| 久久久久亚洲精品无码系列| 57pao一国产成视频永久免费| 国产亚洲sss在线播放| 午夜国产羞羞视频免费网站| jzzjzz免费观看大片免费| 亚洲AV无码乱码在线观看富二代| 免费A级毛片无码A∨中文字幕下载| 亚洲国产精品综合久久久| 国内一级一级毛片a免费| 一级白嫩美女毛片免费| 亚洲AV无一区二区三区久久| av无码久久久久不卡免费网站| 亚洲乱码av中文一区二区| 亚洲精品色婷婷在线影院| 一级毛片免费观看不卡的| 亚洲精品女同中文字幕| 日韩亚洲一区二区三区| 无码视频免费一区二三区| 国产在线观看免费av站| 久久久久亚洲国产|