HttpServletRequest對象表明客戶端的請求,當客戶端經過HTTP協議訪問服務器時,HTTP請求中的全部信息都封裝在這個對象中,開發人員經過這個對象的方法,能夠得到客戶這些信息。java
經過Request對象進行的經常使用操做web
獲取客戶機信息服務器
獲取請求頭信息jsp
獲取請求參數this
利用請求域傳遞對象url
1、request獲取客戶機信息spa
getRequestURL方法返回客戶端發出請求完整URL.net
getRequestURI方法返回請求行中的資源名部分code
getQueryString 方法返回請求行中的參數部分對象
getRemoteAddr方法返回發出請求的客戶機的IP地址
getMethod獲得客戶機請求方式
getContextPath 得到當前web應用虛擬目錄名稱
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.獲取客戶端請求的完整URL String url = request.getRequestURL().toString(); System.out.println(url); //2.獲取客戶端請求的資源部分的名稱 String uri = request.getRequestURI(); System.out.println(uri); //3.獲取請求行中參數部分 String qStr = request.getQueryString(); System.out.println(qStr); //4.獲取請求客戶端的ip地址 String ip = request.getRemoteAddr(); System.out.println(ip); //5.獲取客戶機的請求方式 String method = request.getMethod(); System.out.println(method); //6.獲取當前web應用的名稱 String name = request.getContextPath(); System.out.println(name); response.sendRedirect(request.getContextPath()+"/index.jsp"); }
2、request獲取請求頭信息
得到客戶機請求頭
getHeader(name)方法 --- String
getHeaders(String name)方法 --- Enumeration<String>
getHeaderNames方法 --- Enumeration<String>
得到具體類型客戶機請求頭
getIntHeader(name)方法 --- int
getDateHeader(name)方法 --- long(日期對應毫秒)
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String value = request.getHeader("Host"); System.out.println(value); Enumeration<String> enumeration = request.getHeaderNames(); while(enumeration.hasMoreElements()){ String name = enumeration.nextElement(); String value = request.getHeader(name); System.out.println(name+":"+value); } }
3、request獲取請求參數
getParameter(name) --- String 經過name得到值
getParameterValues --- String[ ] 經過name得到多值 checkbox
getParameterNames --- Enumeration<String> 得到全部name
getParameterMap --- Map<String,String[ ]> key :name value: 多值
處理中文亂碼-->點擊詳細解釋
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String value = (String) request.getAttribute("name"); }
4、request利用請求域傳遞對象
request對象同時也是一個域對象,開發人員經過request對象在實現轉發時,把數據經過request對象帶給其它web資源處理
setAttribute方法
getAttribute方法
removeAttribute方法
getAttributeNames方法
request做用域的做用範圍
在請求轉發時傳遞數據
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setAttribute("name", "zqwang121"); this.getServletContext().getRequestDispatcher("/servlet/Demo4").forward(request, response); String result = "zqwang121"; request.setAttribute("result", result); request.getRequestDispatcher("/show.jsp").forward(request, response); }
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String value = (String) request.getAttribute("name"); System.out.println(value); }
4、request實現請求轉發
request對象提供了一個getRequestDispatcher方法,該方法返回一個RequestDispatcher對象,調用這個對象的forward方法能夠實現請求轉發,從而共享請求中的數據
若是在調用forward方法以前向servlet程序中寫入的部份內容已經被真正的傳送到了客戶端,forward將不能進行,會拋出異常。
若是在調用forward以前向response緩衝區中寫入了內容,只要寫入到其中的內容尚未真的被輸出到客戶端,forward方法就能夠正常執行,但原來寫入到緩衝區中的數據將被清空,注意只是實體內容被清空,以前寫入的響應頭信息仍然存在。
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("/servlet/Demo6").forward(request, response); }