今天改bug時,學習到了關於url有效性的問題的正確的認識。以前認爲jsp通過url跳轉時,跳到action中後url就失效了。其實這個認識是錯誤的,url還是有效的,jsp頁面還是可以取到url後面跟的參數。
過程如下:
page.jsp頁面點擊第二頁就會跳轉到http://localhost:8080/hep/do/learningDesign?action=page&plan_mark=navigation&planId=1&pager.offset=4這個url
經過action處理後跳到page.jsp頁面,在page.jsp頁面中還是可以通過request.getParameter("planId")取到url中的planId這個參數。
今天又遇到了這個問題,翻了一下書,系統的瞭解一下其中的奧祕。原來web組件中有三種關聯關係。
1.轉發
Servlet類使用javax.servlet.RequestDispather.forward()方法來轉發所收到的Http請求。
目標組件和源組件共用一個HttpServletRequest對象,共享一個request範圍內的共享數據。
2.重定向
response.sendRedirect();
目標組件和源組件不共用一個HttpServletRequest對象,所以不共享一個request範圍內的數據。
3.包含
include
目標組件和源組件共享一個HttpServletRequest對象,共享一個request範圍內的數據。
因爲開頭的那個例子屬於轉發關係,所以共享request範圍內的數據。