zoukankan      html  css  js  c++  java
  • 路径知识

    在用servlet+jsp開發中,不管是服務器端跳轉、客戶端跳轉還是表單請求路徑,在servlet和jsp中路徑的表達是不同的。

    聲明: 

    1、項目名为zzzz,端口號改为默認(80)

    2  <servlet-mapping>
        <servlet-name>X</servlet-name>
        <url-pattern>/servlet/X</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>n</servlet-name>
        <url-pattern>/servlet/n</url-pattern>
      </servlet-mapping>

    3、jsp頁面全部在WebRoot(根)目錄下

    4、絕對路徑指的是和當前頁(jsp或者servlet)相對位置,例如下列表單請求A:中的相對路徑表示index1.jsp和index.jsp在同一個(物理)位置

    一、在jsp中

    1、表單請求

    A:在index.jsp請求index1.jsp

          用相對路徑:<form action="index1.jsp">

          用絕對路徑:<form action="/zzzz/index1.jsp">

    B:在index.jsp請求servlet

          用相對路徑:<form action="servlet/n">

          用絕對路徑:<form action="/zzzz/servlet/n">

    2、客戶端跳轉

    A:超鏈接

          相對路徑:<a href="index1.jsp">跳轉</a>或者<a href="servlet/n">跳轉</a>

          絕對路徑:<a href="/zzzz/index1.jsp">跳轉</a>或者<a href="/zzzz/servlet/n">跳轉</a>

    B:sendRedirect方法

          相對路徑:response.sendRedirect("index1.jsp")或者response.sendRedirect("servlet/n");

          絕對路徑:response.sendRedirect("/zzzz/index1.jsp")或者response.sendRedirect("/zzzz/servlet/n");

    3、服務器端跳轉

         相對路徑:request.getRequestDispatcher("index1.jsp").forward(request,response);

                           request.getRequestDispatcher("servlet/n").forward(request,response);

         絕對路徑:request.getRequestDispatcher("/index1.jsp").forward(request,response)注意:不是request.getRequestDispatcher("/zzzz/index1.jsp").forward(request,response);

                           request.getRequestDispatcher("/servlet/n").forward(request,response);   

                           this.getServletContext().getRequestDispatcher("/index1.jsp").forward(request,response);

    總結:除了服務器端跳轉外,相對路徑比絕對路徑多了/zzzz

    二、在servlet中

    1、客戶端跳轉

    A:超鏈接

          相對路徑:PrintWriter out=response.getWriter();
                            out.println("<a href='../index.jsp'>跳轉</a>");

                             或者

                            PrintWriter out=response.getWriter();
                            out.println("<a href='X'>跳轉</a>");

          絕對路徑:PrintWriter out=response.getWriter();
                            out.println("<a href='/zzzz/index.jsp'>跳轉</a>");

                             或者

                           PrintWriter out=response.getWriter();
                           out.println("<a href='/zzzz/servlet/X'>跳轉</a>");

    B:sendRedirect方法

          相對路徑:response.sendRedirect("../index1.jsp")或者response.sendRedirect("X");

          絕對路徑:response.sendRedirect("/zzzz/index1.jsp")或者response.sendRedirect("/zzzz/servlet/X");

    2、服務器端跳轉

         相對路徑:request.getRequestDispatcher("../index.jsp").forward(request,response);

                           request.getRequestDispatcher("X").forward(request,response);

                           request.getRequestDispatcher("./X").forward(request,response);

         絕對路徑:request.getRequestDispatcher("/index.jsp").forward(request,response)注意:(不是request.getRequestDispatcher("/zzzz/index.jsp").forward(request,response);)

                           request.getRequestDispatcher("/servlet/X").forward(request,response);

                          this.getServletContext().getRequestDispatcher("/index.jsp").forward(request,response);

    總結:

      1、 絕對路徑

                  無論是在jsp亦或在servlet中,除了服務器端跳轉的絕對路徑不用寫上/zzzz(項目名)外都是正常的絕對路徑

      2、相對路徑

                  無論是jsp還是servlet中,都是正常的相對路徑

    3、有意思的是,在jsp中的服務器端跳轉時,路徑index1.jsp,./index1.jsp,/index1.jsp的效果是一样,前兩個是相對路徑,第三個是絕對路徑

    4、注意,這裏所說的服務器端跳轉不僅僅是用request.getRequestDispatcher().forward()方法,也可以是<jsp:forward  page=""></jsp:forward>

  • 相关阅读:
    PHP中curl_init和file_get_contents配合使用
    在PHP语言中使用JSON
    网页中获取IFrame内容
    Golden Gate
    windows 7某些中文程序乱码
    Oracle的同义词(synonyms)总结
    VERITAS容灾技术方案
    VERITAS 备份及容灾方案建议书
    1 FAST ESP 简介
    Linux文件查找命令find,xargs详述
  • 原文地址:https://www.cnblogs.com/jianming-chan/p/3537622.html
Copyright © 2011-2022 走看看