1.request獲取請求路徑方法介紹
request對象中包含的是請求信息,當(dāng)我們在瀏覽器地址欄上輸入:
http://localhost:8080/Example/AServlet?username=zhangsan,這段地址也會作為請求信息封裝在request對象中,request對象必然會提供相關(guān)的方法來獲取這些請求信息,這些信息其實(shí)就是請求路徑信息。
request對象通過以下方法來獲取請求路徑,如下所示:
- String getServerName():獲取服務(wù)器名,localhost;
- String getServerPort():獲取服務(wù)器端口號,8080;
- String getContextPath():獲取項(xiàng)目名,/Example;
- String getServletPath():獲取Servlet路徑,/AServlet;
- String getQueryString():獲取參數(shù)部分,即問號后面的部分:username=zhangsan
- String getRequestURI():獲取請求URI,等于項(xiàng)目名+Servlet路徑:/Example/AServlet
- String getRequestURL():獲取請求URL,等于不包含參數(shù)的整個(gè)請求路徑:http://localhost:8080/Example/AServlet 。
下面通過一張圖來了解request對象調(diào)用哪些方法獲取請求路徑,如圖1-1所示:
圖1-1 request對象獲取請求路徑
2.request獲取請求路徑練習(xí)
通過上面對request獲取請求路徑的方法介紹,為了更好的掌握這些方法,下面通過一個(gè)案例演示各個(gè)方法的執(zhí)行效果,如下所示:
(1)創(chuàng)建一個(gè)web應(yīng)用,Example07,在該應(yīng)用下創(chuàng)建一個(gè)Servlet類,PathServlet,主要代碼例1-1所示:
例1-1 PathServlet.java
public class PathServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* 通過request獲取請求路徑,并通過response對象,將獲得的路徑寫回瀏覽器端
* */
response.getWriter().print(request.getScheme()+"</BR>");//獲取協(xié)議
response.getWriter().print(request.getServerName()+"</BR>");//獲取服務(wù)器名稱
response.getWriter().print(request.getServerPort()+"</BR>");//獲取協(xié)議端口號
response.getWriter().print(request.getContextPath()+"</BR>");//獲取工程名稱
response.getWriter().print(request.getServletPath()+"</BR>");//獲取servlet路徑
response.getWriter().print(request.getQueryString()+"</BR>");//獲取參數(shù)
response.getWriter().print(request.getRequestURI()+"</BR>");//獲取請求URI
response.getWriter().print(request.getRequestURL()+"</BR>");//獲取請求URL
}
}
在例1-1中,使用response對象向?yàn)g覽器端響應(yīng)數(shù)據(jù),每寫一個(gè)路徑便換行一次,在瀏覽器端的頁面中換行需要使用html標(biāo)簽“</br>”。
(2)PathServlet在web.xml文件中,其訪問路徑的配置為:“/PathServlet”。
(3)將Example07發(fā)布到Tomcat服務(wù)器端,然后啟動(dòng)服務(wù)器,在瀏覽器地址欄上輸入:http://localhost:8080/Example07/PathServlet?username=zhangsan&password=123,瀏覽器的顯示結(jié)果如圖1-2所示:
圖1-2 瀏覽器顯示結(jié)果
在圖1-2中,我們依次獲取的是協(xié)議名稱、服務(wù)器名稱、端口號、工程名稱、Servlet訪問路徑、參數(shù)、URI及URL。在以后的開發(fā)中,我們要獲取訪問路徑,最常用方法是request.getRequestURL()。
另外,還需要注意的是:我們在頁面中使用的超鏈接、或者form表單,它們都有一個(gè)屬性是用來表示要訪問的路徑,通常都是項(xiàng)目名稱加上資源名稱,現(xiàn)在學(xué)習(xí)了request獲取請求路徑的方法,以后在超鏈接和form表單中,項(xiàng)目名稱都使用request.getContextPath()方法來代替。這樣做的好處是防止以后項(xiàng)目名被更改后,需要將所有的超鏈接和表單訪問路徑都進(jìn)行修改。
本文版權(quán)歸傳智播客Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客Java培訓(xùn)學(xué)院
首發(fā):http://xamj520.com/javaee