HttpServletRequest對象表明客戶端的請求,當客戶端經過HTTP協議訪問服務器時,HTTP請求頭中的全部信息都封裝在這個對象中,開發人員經過這個對象的方法,能夠得到客戶的這些信息。html
HttpServletRequest經常使用方法數組
1.request:獲取請求方式:String method=request.getMethod();
2.獲取請求地址(URI):String path=request.getRequestURI(); 獲取請求地址(URL):String path=request.getRequestURL();
3.獲取WEB的名稱:String name=request.getContextPath();
4.獲取若是是get請求的請求方式:String query=request.getQueryString();
5.String ip=request.getRemotoAddr();
6.form(input)標籤的命名方式:<form action="/WEB0916/HeadServlet" method="get"> 輸入框:<input type="text" name="username"> 提交:<input type="submit" value="登陸">
7.判斷訪問的地址是否合法//獲取請求頭中的referer;referer表明當前請求來自哪裏,可用於內容的防盜:String referer=request.getHeader("Referer");.getHeader()裏面寫上頭 名就能夠獲取響應的頭解決亂碼問題: response.setContextType("text/html;charset=utf-8"); if(referer.startsWith("https://locationhost"){response.getWriter().write("吳亦凡 女友否定戀情");}else{response.getwrite().write("你是小偷,不給你看") };這裏是判斷是不是本地訪問過來的(是不是以hettp:\\locationhosr)拉下來的
8.獲取請求體單個值:String username=request.getParamenter("username");
9.獲取請求體多個值:String[] hobbys=request.getParamenterValues("hobby");
遍歷獲得的多個值:for(String s:hobbys){system,out.println(s)}
10.獲取全部值的Map集合:Map<String,String[]) map=request.getParamenterMap();將全部的key值放入set集合:Set<String> set=map.setkey();
11./由於這裏獲得的是全部key所在set集合全部須要加強for遍歷全部的key而後再.get(key)獲取值:for(String key:set){String[] value=map.getkey();system.out.prin("key") for(String s:value){system.out.println(s)}
12.重定向:response;(302+location(誰有寫誰的地址)):1.URL地址欄會變化.2.請求服務器兩次
13.請求轉發:request:1.地址欄不變化,2.訪問服務器一次
14.post請求方式解決中文亂碼(由於post方式經過請求體傳過去因此須要在建立request對象以前就要解決zw亂碼):request.setCharacterEncoding("UTF-8");
15.get請求方式解決中文亂碼(由於get是經過地址欄傳過去的,因此在request建立以後建立就行):String username=request.getParameter("username");
這裏須要給username從新賦值:username=new String(username.getbytes("ISO-8859-1"),"UTF-8");
這裏先把ISO-8859-1的字符串轉成字節數組,再用new String(轉後的字節數組,"UTF-8")的方式轉成String字符串在頁面輸出
16.向request域中存值:request.setAttribute("name","張三");經過鍵和值的方式向request域中存值
17.請求轉發:request.getRequestDispatcher("setvlet03(這裏寫要跳轉的servlet)").forward(request,response);
由於請求轉發只請求一次服務器因此直接寫Servlet03就能夠,重定向是請求服務器兩次因此Servlet03前面要加上WEB名
這裏後面必需要加上.forward(request, response)否則不會跳轉;由於這裏給Servlet03傳遞了(request, response),因此Servlet03能夠獲取Servlet02的值
這裏是訪問的Servlet02但打印的是Servlet03的內容
18.獲取request域中的值:String name=(String)request.getAttribute("name");由於這裏的request.getAttribute("name")是經過鍵(name)的到值(小明)
可是返回的是Object類的值,須要強轉(String)才能獲得字符串。服務器
代碼post