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