一:請求的方式
1.地址欄輸入
在瀏覽器地址欄直接輸入要訪問的地址即可,此種方式可以看做是訪問服務器的起始操作。
http://ip:port/path
2、超鏈接
使用超鏈接也可以向服務器發出請求
<a href="http://www.shy.com">shy</a>
3、Form表單
當需要向服務器發送請求,並且傳輸一些用戶輸入的數據時,我們優先選擇form表單的方式發起請求。
4、ajax
通過ajax發起的請求,屬於異步請求,能實現局部刷新的效果,是一種比較常用的請求方式。
通過jQuery中的ajax(),get(),post(),getJSON()等方法都能發生請求
5、請求轉發
6、重定向
二、HttpServletRequest
1)常用方法
getRequestURL() 獲取客戶端發出請求時的完整URL
getRequestURI() 獲取請求行中的資源名稱部分(項目名稱開始)
getQueryString() 獲取請求行中的參數部分
getMethod() 獲取客戶端請求方式
getProtocol() 獲取HTTP版本號
getContextPath() 獲取webapp名字
2)獲取請求頭
getHeader(String) 獲取單個請求頭內容
Enumeration<String> getHeaderNames() 獲取所有的請求頭名稱集合
3)獲取客戶端請求參數
getParameter(name) 獲取指定名稱的參數
getParameterValues(String name) 獲取指定名稱參數的所有值
getParameterNames() 獲取一個包含請求消息中的所有參數名的Enumeration對象
getParameterMap() 返回一個保存了請求消息中的所有參數名稱和值Map對象
三、請求亂碼解決
方式一:request.setCharacterEncoding("UTF-8");
這種方式只針對 POST 有效(必須在接收所有的數據之前設定)
方式二:new String(request.getParameter(name).getBytes("ISO-8859-1"));
藉助了 String 對象的方法,該種方式對任何請求有效,是通用的。
Tomcat8 起,以後的 GET 方式請求是不會出現亂碼的。
Tomcat8及以上版本 Tomcat7及以下版本
POST請求 亂碼 亂碼
request.setCharacterEncoding("UTF-8"); request.setCharacterEncoding("UTF-8");
new String(request.getParameter(name).getBytes("ISO-8859-1"),"UTF-8")
GET請求 不亂碼,不處理 亂碼
new String(request.getParameter(name).getBytes("ISO-8859-1"),"UTF-8")
四、請求轉發
是一種服務器的行爲,從始至終只有一個請求發出
request.getRequestDispatcher().forward();
五、request域對象
通過該對象可以在以一個請求中傳遞數據,作用範圍:在一次請求中有效,即服務器跳轉有效。
request.setAttribute():設置域對象內容;
request.getAttribute(String name):獲取域對象內容;
request.removeAttribute(String name): 刪除域對象內容。