Java Web专题(一)
生活随笔
收集整理的這篇文章主要介紹了
Java Web专题(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.GET請求和POST請求 2.RESTFUL API 3.Session VS Cookie 4.Forward VS Redirect GET請求和POST請求 可以簡單的認為HHTP中的POST GET PUT DELETE對應著CRUD 區別: 1)從語義上講GET更偏向于查詢操作,即GET請求不會對后臺數據產生影響;而POST則不同 2)一般來講GET請求是冪等的 Ps看到一個關于冪等很好的定義 abs(a) = abs(abs(a)) 3)GET將數據放在url上,而POST將數據放在HTTP body中;POST相對安全 4)如果使用POST就無法保存書簽
RESTFUL API 參考鏈接:https://juejin.im/entry/59e460c951882542f578f2f0 1)URL表示資源;兩種方式 /employees & /employees/56 2)名詞+方法替換動詞url /createEmployee -> POST + /employees /updateEmployee -> PUT /employees/56 3)條件篩選時,使用?添加條件 GET /employees?state=internal&maturity=senior 4)非資源請求使用動詞url GET /calculate?para2=23¶2=432
Session & Cookie HTTP是一個無狀態協議,如何維持同一個用戶的會話? 對于客戶的第一個請求,容器會生成一個唯一的sessionId給到客戶端,客戶再以后的每一個請求中發回這個sessionId,這樣容器就知道客戶的身份了 客戶端和容器如何交換SessionId? 最常用的方法是通過cookie,在服務端給到客戶端的response中,header中有一個叫Set-Cookie的屬性,用于存放JSESSIONID;在客戶端到服務端的request中,header中有一個叫Cookie的屬性,用于存放JSESSIONID 如果禁用cookie這套機制怎么玩的轉? 用戶禁用cookie后,會忽視response的header中的Set-Cookie;此時需要換一種辦法來交換sessionId 1)URL重寫 origin url + ;jsessionid=1231231 注意這里是服務端返回給客戶端的,在響應發回的html中(比如href) 2)表單隱藏 分布式環境如何實現session共享? 參考鏈接:https://blog.csdn.net/u010028869/article/details/50773174?ref=myread 1)nginx對特定的sessionId進行映射,即一個用戶的請求只會交給一個固定的機器處理 優點:無須對session做任何處理只要存在本機即可 缺點:如果某臺機器掛掉,那么這臺機器保存session的用戶都要重新登錄 2)session復制,即所有的服務器共享session,任何一個服務器上session發生改變,都同步到其他服務器 優點:容錯性較好,即使機器掛掉也ok 缺點:容易造成網絡堵塞 3)session第三方共享,redis(集群) or db(集群) Forward VS Redirect 二者都可以稱為請求轉發,前者稱為直接請求轉發,后者稱為間接請求轉發 Redirect:客戶端發送一個http請求,服務端Servlet1處理,之后執行response.sendRedirect("target url"),之后客戶端再次向target url發送http請求 Forward:客戶端發送一個http請求,服務端Servlet1處理,之后調用requestDispatcher.forward(request,response),進行請求轉發,直接轉發到Servlet2處理,最后處理完成后將response返回到客戶端 舉個例子:Servlet將模型傳遞到jsp就是通過forward RequestDispatcher view = request.getRequestDispatcher("result.jsp"); view.forward(request,response);
RESTFUL API 參考鏈接:https://juejin.im/entry/59e460c951882542f578f2f0 1)URL表示資源;兩種方式 /employees & /employees/56 2)名詞+方法替換動詞url /createEmployee -> POST + /employees /updateEmployee -> PUT /employees/56 3)條件篩選時,使用?添加條件 GET /employees?state=internal&maturity=senior 4)非資源請求使用動詞url GET /calculate?para2=23¶2=432
| ? | POST(創建) | GET(讀取) | ?PUT(更新) | DELETE(刪除) |
| /employees | 創建一個新員工 | 列出所有員工 | 批量更新員工信息 | 刪除所有員工 |
| /employees/56 | (錯誤) | 獲取56號員工的信息 | 更新56號員工的信息 | 刪除56號員工 |
Session & Cookie HTTP是一個無狀態協議,如何維持同一個用戶的會話? 對于客戶的第一個請求,容器會生成一個唯一的sessionId給到客戶端,客戶再以后的每一個請求中發回這個sessionId,這樣容器就知道客戶的身份了 客戶端和容器如何交換SessionId? 最常用的方法是通過cookie,在服務端給到客戶端的response中,header中有一個叫Set-Cookie的屬性,用于存放JSESSIONID;在客戶端到服務端的request中,header中有一個叫Cookie的屬性,用于存放JSESSIONID 如果禁用cookie這套機制怎么玩的轉? 用戶禁用cookie后,會忽視response的header中的Set-Cookie;此時需要換一種辦法來交換sessionId 1)URL重寫 origin url + ;jsessionid=1231231 注意這里是服務端返回給客戶端的,在響應發回的html中(比如href) 2)表單隱藏 分布式環境如何實現session共享? 參考鏈接:https://blog.csdn.net/u010028869/article/details/50773174?ref=myread 1)nginx對特定的sessionId進行映射,即一個用戶的請求只會交給一個固定的機器處理 優點:無須對session做任何處理只要存在本機即可 缺點:如果某臺機器掛掉,那么這臺機器保存session的用戶都要重新登錄 2)session復制,即所有的服務器共享session,任何一個服務器上session發生改變,都同步到其他服務器 優點:容錯性較好,即使機器掛掉也ok 缺點:容易造成網絡堵塞 3)session第三方共享,redis(集群) or db(集群) Forward VS Redirect 二者都可以稱為請求轉發,前者稱為直接請求轉發,后者稱為間接請求轉發 Redirect:客戶端發送一個http請求,服務端Servlet1處理,之后執行response.sendRedirect("target url"),之后客戶端再次向target url發送http請求 Forward:客戶端發送一個http請求,服務端Servlet1處理,之后調用requestDispatcher.forward(request,response),進行請求轉發,直接轉發到Servlet2處理,最后處理完成后將response返回到客戶端 舉個例子:Servlet將模型傳遞到jsp就是通過forward RequestDispatcher view = request.getRequestDispatcher("result.jsp"); view.forward(request,response);
轉載于:https://www.cnblogs.com/luyu1993/p/9245152.html
總結
以上是生活随笔為你收集整理的Java Web专题(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生存分析与R--转载
- 下一篇: java美元兑换,(Java实现) 美元