<ruby id="d3hdn"><mark id="d3hdn"></mark></ruby>

    <noframes id="d3hdn">
    <address id="d3hdn"></address>
    <span id="d3hdn"></span>

    <sub id="d3hdn"><listing id="d3hdn"><listing id="d3hdn"></listing></listing></sub>

              <form id="d3hdn"></form> <address id="d3hdn"></address>

              <form id="d3hdn"><nobr id="d3hdn"><progress id="d3hdn"></progress></nobr></form><address id="d3hdn"><address id="d3hdn"><listing id="d3hdn"></listing></address></address>

              HttpServletResponse中sendError與setStatus的區別

              2021-09-09來源:徐州房產網正文:HttpServletResponse中sendError與setStatus的區別

              最近在研發項目時,由于前端代碼調用后末端模塊,必須使用響應狀體碼告訴前端登錄異常(401)和權限檢驗不通過(403)。前端獲得對應的狀態碼會做出適當的處理。

              上述的登錄檢驗和權限檢驗,后端采用Spring攔截器技術構建。為了返回登錄的狀態碼,用于了HttpServletResponse中的setStatus方法。一切都正常運營,沒問題!但突然我有了個想法,如果指定檢驗不通過,必須跳轉到專門負責顯示401友好提示信息的頁面,如何做到?有人會說用于sendRedirect方法,可以。還有嗎?

              我的做法是必要根據號召狀態碼,倚賴web.xml中的error-page配備實現報錯頁面的跳轉。相信下面代碼的配置,搞JavaWeb研發的人應當都會熟知:

               401 /WEB-INF/view/401.jsp
              
              

              但在真正運行時發現,setStatus確實可以設置response的狀態碼,卻無法像設想的那樣,顯示出401.jsp頁面中的內容。經過一番搜尋查證,找到用于sendError代替setStatus,可以超過希望的效果??墒?,為什么?sendError和setStatus有何區別?下面是直譯官方API文檔的內容:

              sendError(int sc):使用登錄的狀態字節并清空緩沖器,發送到一個錯誤號召至客戶端。如果響應已經被提交,這個方法會拋出IllegalStateException。用于這個方法后,響應則應該被認為已被提交,且不應該再被進行寫出操作者了。

              sendError(int sc, String msg):用于指定的狀態碼發送到一個錯誤號召至客戶端。服務器默認不會創立一個HTML格式的服務錯誤頁面作為響應結果,其中包括參數msg指定的文本信息,這個HTML頁面的內容類型為“text/html”,保留cookies和其他未修改的響應頭信息。如果一個對應于起源于的錯誤碼的錯誤頁面已經在web.xml中聲明,那么這個聲明的錯誤頁面將不會優先于建議的msg參數服務于客戶端。(ps:相比較上面的方法,我更傾向于前者。用于上面的方法,可以通過自定義有所不同狀態的號召結果顯示于客戶端,我們應該想讓客戶端看見服務器創建出的非常簡單粗暴的頁面吧?)

              setStatus(int sc):設置號召的狀態碼。這個方法被用于當號召結果正常時(例如,狀態字節為SC_OK或SC_MOVED_TEMPORARTLY)設置響應狀態碼。如果再次發生錯誤,而且來訪者期望調用在web應用于中定義的錯誤頁面作為表明,那么應當用于sendError方法替換之。用于setStatus方法之后,容器不會清空緩沖器并設置Location號召頭,保有cookies和其他號召頭信息。

              從譯為的結果不難找到哈,sendError適用于報錯且不存在對應的報錯頁面配置作為輸出表明的情況,而setStatus適用于正常響應的情況,僅僅可以轉變號召狀態碼而已。


              福晟集團 福晟集團 福晟集團 福晟集團 福晟集團 福晟集團

              上一頁:徐州泉山區樓盤

              精品H动漫无遮挡在线看中文