請求和響應過程:一、tomcat服務器會根據請求url中的資源路徑,建立對應的Servlet實現類對象程序員
二、tomcat服務器會自動建立request和response對象,request對象中封裝請求消息數據數組
三、tomcat將request和response兩個對象傳遞給service方法,而且調用service方法瀏覽器
四、程序員能夠勇敢request對象獲取請求消息數據,經過response對象設置響應消息數據tomcat
五、服務器在給瀏覽器做出響應以前,會從response對象中拿程序員設置的響應消息數據服務器
Request對象的繼承體系結構:jsp
ServletRequest->HttpServletRequest->RequestFacade編碼
request的功能url
一、獲取請求消息spa
獲取請求行數據對象
例如:GET /Web_servlet/demo?name = user HTTP/1.1
方法:一、String getMethod()獲取請求方式,GET
二、String getContextPath() 獲取虛擬目錄,/Web_ servlet
三、String getServeltPath()獲取servlet路徑,/demo
四、String getQueryString()獲取get請求參數,name=user
五、String getRequestURI()獲取請求URI,/Web_servlet/demo
六、String getRequesrURL()獲取請求URL,http://localhost/Web_servlet/demo
七、String getProtocol()獲取協議及版本,HTTP/1.1
八、String getRemoteAddr()獲取客戶端IP地址
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*request.getRequestDispatcher("/hello.jsp").forward(request,response);*/ String method = request.getMethod(); System.out.println(method); String contextPath = request.getContextPath(); System.out.println(contextPath); String servletPath = request.getServletPath(); System.out.println(servletPath); String queryString = request.getQueryString(); System.out.println(queryString); String requestURI = request.getRequestURI(); System.out.println(requestURI); StringBuffer requestURL = request.getRequestURL(); System.out.println(requestURL); String protocol = request.getProtocol(); System.out.println(protocol); String remoteAddr = request.getRemoteAddr(); System.out.println(remoteAddr); }
獲取請求頭數據
方法:一、String getHeader(String name):經過請求頭的名稱獲取請求頭的值
二、Enumeration<String> getHeaderNames():獲取全部的請求頭名稱
獲取請求體數據
經過POST請求方式,纔有請求體,在請求體中封裝了POST請求的請求參數
步驟:一、獲取流對象
BufferedReader getReader():獲取字符輸入流,只能操做字符數據
ServletInputStream getInputStream():獲取字節輸入流,能夠操做全部類型的數據
二、再從流對象中拿數據
二、其餘功能
獲取請求參數通用方法:一、String getParameter(String name)根據參數名稱獲取參數值
二、String[] getParameterValues(String name):根據參數名稱獲取參數值的數組
三、Enumeration<String[]> getParameterNames():獲取全部請求的參數名稱
四、Map<String ,String[] >getParameterMap():獲取全部參數的map集合
注意:中文亂碼問題:POST方式發送中文請求會產生亂碼,解決方法:設置流的編碼,request.setCharacterEncoding("UTF-8");
請求轉發:一種在服務器內部的資源跳轉方式
步驟:一、經過request對象獲取請求轉發器對象:requsetDispatcher getRequsetDispatcher(String path)
二、使用RequsetDispatcher對象來進行轉發:forward(ServletRequset requset,ServletResponse response)
特色:一、瀏覽器地址欄路徑不發送變化
二、只能轉發到當前服務器內部資源中
三、轉發是一次請求
共享數據:
域對象:一個有做用範圍的對象,能夠在範圍內共享數據
request:表明一次請求的範圍,通常用於請求轉發的多個資源中共享數據
方法:一、setAttribute(String name ,Object obj):存儲數據
二、getAttribute(String name):經過鍵獲取值
三、removeAttribute(String name):經過鍵移除數據
獲取servletContext:
方法:getServletContext();