JavaWeb:response,request對象

HttpServletResponse:

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

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對象,它們屬於兩個獨立的訪問請求和響應過程。

相關文章
相關標籤/搜索