java web中servlet、jsp、html 互相訪問的路徑問題。

來源:互聯網
上載者:User

標籤:style   http   color   java   使用   os   io   for   

在java web種經常出現 404找不到網頁的錯誤,究其原因,一般是訪問的路徑不對。

java web中的路徑使用按我的分法可以分兩種情況,當然啦兩者使用相對路徑是一致,本文只說絕對路徑。

情況一、指向外部的web組件和本身關係不大的,這一類的有:html中使用路徑的標籤,比如<a>標籤中的href;servlet和jsp中的重新導向sendRedirect(path);

情況二、指向內部的web組件和本身有關係的,這一類我暫時看到的有:servlet或者jsp的轉寄

假設在myapp項目下有個login.html,index.jsp,還寫了兩個servletA和servletB.

在web.xml中的地址配置:

<url-pattern>/servlet/servletA</url-pattern>

<url-pattern>/servlet/servletB</url-pattern>

在情況一中:若在路徑中以/開頭,則這一/相當於http://localhost:8080/

1、login.html有個form表單有提交給servletA,那麼action要填的路徑:

絕對路徑方式:action="/myapp/servlet/servletA"       ------http://localhost:8080/myapp/servlet/servletA

相對路徑方式:action="servlet/servletA"                   ------http://localhost:8080/myapp/servlet/servletA

2、login.html有個<a>連結到index.jsp 那麼

絕對路徑方式:href="/myapp/index.jsp"                      ------http://localhost:8080/myapp/index.jsp

相對路徑方式:action="index.jsp"                            ------http://localhost:8080/myapp/index.jsp

3、index.jsp中重新導向到servletA

絕對路徑方式:sendRedirect("/myapp/servlet/servletA");      ------http://localhost:8080/myapp/servlet/servletA

相對路徑方式:sendRedirect("servlet/servletA");     ---http://localhost:8080/myapp/servlet/servletA

在情況二中:若在路徑中以/開頭,則這一/相當於http://localhost:8080/myapp/

1.servletA轉寄到servletB

絕對路徑方式:request.getRequestDispatcher("/servlet/servletB").forward(request, response);

       --------http://localhost:8080/myapp/servlet/servletB

相對路徑方式:request.getRequestDispatcher("servlet/servletB").forward(request, response);

       --------http://localhost:8080/myapp/servlet/servletB

注意:

建議使用絕對路徑,相對路徑是相對於當前瀏覽器地址欄的路徑(源地址)。

可能會出現:你在某個頁面寫了一個相對路徑(目標路徑),因為轉寄是不改變地址的,那麼要是別人是通過轉寄到達你的這個頁面的,那麼地址欄的源地址就是不確定的,既然不確定你使用相對路徑相對於這個不確定的路徑就極有可能出錯,所以建議使用絕對路徑,這樣可避免這種問題。

獲得項目路徑和絕對路徑:

項目路徑:String path=request.getContextPath();           ----                /myapp

String p=this.getServletContext().getRealPath("/");     -----   G:\environment\tomcat\webapps\myapp\


總結:

這裡主要弄明白是指向外部的還內部的,外部時"/"就是代表主機路徑,內部時"/"就是代表當前項目路徑.



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.