HttpServletResponse對象服務器的響應。這個對象中封裝了向客戶端發送數據、發送響應頭,發送響應狀態碼的方法。
字符編碼格式:html
方法一: // 設置response使用的碼錶,控制response向瀏覽器寫出數據的碼錶 response.setCharacterEncoding("UTF-8"); // 指定瀏覽器打開客戶端發送數據的碼錶 response.setHeader("content-type", "text/html;charset=UTF-8"); 方法二: response.setContentType("text/html;charset=UTF-8");
用refresh控制瀏覽器定時刷新web
response.setHeader("refresh","3;url='/項目名/網頁名'");//3表明3s之後刷新
用expires頭控制瀏覽器緩存編程
response.setDateHeader("expires",System.currentTimeMillis()+1000*3600);
請求重定向瀏覽器
response.sendRedirect("地址");
response細節
getOutputStream和getWriter方法分別用於獲得輸出二進制數據、輸出文本數據的ServletOuputStream、Printwriter對象。
getOutputStream和getWriter這兩個方法互相排斥,調用了其中的任何一個方法後,就不能再調用另外一方法。
Servlet程序向ServletOutputStream或PrintWriter對象中寫入的數據將被Servlet引擎從response裏面獲取,Servlet引擎將這些數據看成響應消息的正文,而後再與響應狀態行和各響應頭組合後輸出到客戶端。
Serlvet的service方法結束後,Servlet引擎將檢查getWriter或getOutputStream方法返回的輸出流對象是否已經調用過close方法,若是沒有,Servlet引擎將調用close方法關閉該輸出流對象。緩存
HttpServletRequest對象表明客戶端的請求,當客戶端經過HTTP協議訪問服務器時,HTTP請求頭中的全部信息都封裝在這個對象中,開發人員經過這個對象的方法,能夠得到客戶這些信息。
得到客戶機信息:服務器
getRequestURL() //返回客戶端發出請求時的完整URL getRequestURI() //返回請求行中的資源名部分 getQueryString() //方法返回請求行中的參數部分 getPathInfo() //返回請求URL中的額外路徑信息。額外路徑信息是請求URL中的位於Servlet的路徑以後和查詢參數以前的內容,它以「/」開頭 getRemoteAddr() //返回發出請求的客戶機的IP地址 getRemoteHost() //返回發出請求的客戶機的完整主機名 getRemotePort() //返回客戶機所使用的網絡端口號 getLocalAddr() //返回WEB服務器的IP地址 getLocalName() //返回WEB服務器的主機名
得到客戶機請求頭網絡
getHeader(String name) getHeaders() getHeaderNames()
得到客戶機請求參數(客戶端提交的數據)ide
getParameter(String name) getParameterValues(String name) getParameterNames() getParameterMap()
request亂碼post
// post提交亂碼 request.setCharacterEncoding("UTF-8"); // get提交亂碼 String username = request.getParameter("username"); username = new String(username.getBytes("iso8859-1"), "UTF-8");
request頁面轉發編碼
request.getRequestDispatcher("地址").forward(request,response);
request對象同時也是一個域對象,開發人員經過request對象在實現轉發時,把數據經過request對象帶給其它web資源處理。
setAttribute(String name,Object obj) getAttribute(String name) removeAttribute(String name) getAttributeNames()
注意
forward方法用於將請求轉發到RequestDispatcher對象封裝的資源。
若是在調用forward方法以前,在Servlet程序中寫入的部份內容已經被真正地傳送到了客戶端,forward方法將拋出IllegalStateException異常。
若是在調用forward方法以前向Servlet引擎的緩衝區中寫入了內容,只要寫入到緩衝區中的內容尚未被真正輸出到客戶端,forward方法就能夠被正常執行,原來寫入到輸出緩衝區中的內容將被清空,可是,已寫入到HttpServletResponse對象中的響應頭字段信息保持有效。
include方法
request.getRequestDispatcher("地址").include(request,response);
RequestDispatcher.include方法用於將RequestDispatcher對象封裝的資源內容做爲當前響應內容的一部分包含進來,從而實現可編程的服務器端包含功能。
被包含的Servlet程序不能改變響應消息的狀態碼和響應頭,若是它裏面存在這樣的語句,這些語句的執行結果將被忽略
RequestDispatcher.forward方法只能將請求轉發給同一個WEB應用中的組件;而HttpServletResponse.sendRedirect 方法還能夠重定向到同一個站點上的其餘應用程序中的資源,甚至是使用絕對URL重定向到其餘站點的資源。
若是傳遞給HttpServletResponse.sendRedirect 方法的相對URL以「/」開頭,它是相對於整個WEB站點的根目錄;若是建立RequestDispatcher對象時指定的相對URL以「/」開頭,它是相對於當前WEB應用程序的根目錄。
RequestDispatcher.forward方法的調用者與被調用者之間共享相同的request對象和response對象,它們屬於同一個訪問請求和響應過程;而HttpServletResponse.sendRedirect方法調用者與被調用者使用各自的request對象和response對象,它們屬於兩個獨立的訪問請求和響應過程。