簡體   English   中英

處理jsp中的瀏覽器“后退”按鈕

[英]Handling the browser 'Back' button in jsp

我有一個jsp搜索頁面(Search.jsp)和一個結果頁面(Result.jsp),兩者都可以選擇搜索條件。 然后將參數傳遞給Java控制器文件(Controller.java)以構建查詢字符串並執行查詢搜索。 查詢字符串和搜索結果將傳遞到Result.jsp進行顯示。

當前,我使用ServletContext來記住已處理的查詢字符串,如果用戶使用Result.jsp選擇搜索條件,Controller.java會將這些條件附加到現有查詢字符串中。 如果我使用Result.jsp進行了一些搜索。 例如,查詢字符串將在Result.jsp頁面上顯示((Query1) AND Query2) AND Query3 然后使用瀏覽器的“后退”按鈕返回上一個顯示頁面。 對於同一示例,查詢字符串顯示(Query1) AND Query2 然后,如果我再次搜索。 查詢字符串(((Query1) AND Query2) AND Query3) AND Query4將被使用。 我知道這在我當前的實現中是可以預期的,因為Result.jsp不會對已處理的查詢字符串進行任何修改。

但是,我想當用戶使用瀏覽器的后退按鈕時,例如查詢字符串在頁面上顯示為(Query1) AND Query2 ,並執行搜索,查詢字符串應為((Query1) AND Query2) AND Query4 ,其中查詢字符串是基於Result.jsp頁面上當前顯示的查詢字符串以及當前選擇內容構建的。 我怎樣才能做到這一點? 聽起來很簡單,但是我嘗試了幾種使用Result.jsp中的方法更新查詢字符串的方法,但是仍然無法正確執行。 因此,我想知道我使用<c:set>是否錯誤。 我想聽聽你的建議。 提前致謝。

目前,我使用ServletContext來記住已處理的查詢字符串

您是否意識到ServletContext在訪問您的Web應用程序的所有用戶/會話之間共享? 訪問者X對其進行修改后,更改將反映給所有其他訪問者 您是否不想將其存儲在HttpSession以保持特定於數據訪問者的數據?

也可以看看:


出於某些原因想要使用后退按鈕

我真的很難理解您的功能要求( 某些原因 )。 但是至少,由於您希望后退按鈕可以正常工作,因此您希望在此處使用冪等請求。 因此,在適用的情況下,將POST替換為GET。

每當您想在服務器上重新啟動真實的HTTP請求而不是從瀏覽器的緩存中加載頁面時,都想通過向響應添加以下標頭來指示瀏覽器不要緩存頁面:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.

您可以在控制器中執行此操作,也可以在涵蓋目標url-pattern的某些Filter此操作。

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM