好幾年之前的專案,最近閒著無聊又拿起來研究一下,先做一下專案介紹,專案採用傳統的ssh框架,mysql資料庫,不同於spring mvc,springmvc有乙個modelandview可以把頁面url(view)和頁面需要的資料(model)放到值棧中,struts使用actioncontext.getcontext.put()方法把頁面需要的資料(model)放在值棧中,通過struts.xml配置檔案中的result找到對應的頁面,如下:
下面分析一下以上步驟:
第一步,在瀏覽器中輸入role_lsit,根據這個配置檔案struts會找到這個xml節點。
第二步,找到了這幾節點後會進入這個類com.yilaiwen.cn.action.roleaction,並且定位到這個類的list方法。
第三步,第二步中類的方法會把呼叫actioncontext.getcontext.put()方法把頁面需要的資料以key-value的形式放入值棧,並且方法返回乙個「list」的字串,這個字串就是第 三步中描述的「list」。
第四部:然後頁面定位到此頁面,在前端頁面中使用表示式把需要展示的資訊展示出來。
以上就是struts頁面跳轉的簡單步驟。
下面進入正題。。。
下圖是role_list uri對應的頁面,然後我點選崗位名稱為專案經理那一行的刪除,我預想的是只是刪除專案經理這個角色,但是結果卻是全部刪除了,我重新整理頁面又和我預想的一樣。
想了好久加查詢資料才知道當 struts 接收到乙個 請求後,會先建立 action 類的物件例項,每乙個請求都對應乙個action的例項。看以下分析:
role_list對應乙個例項
role_deled對應乙個例項,但是在delete的方法中我只是做了刪除操作,並沒有把role重新查一遍放入值棧中,所以頁面為空,給人一種全部刪除的假象。
當然你重新整理時又執行了role_list重新查一遍放入值棧中所以頁面顯示正常。
解決方案:
1:刪除後重定向到role_list。
2:使用全域性快取,role_list查到物件放入快取中,role_delete把快取中對應的物件刪除後放入值棧中。
struts關於頁面跳轉
sealoginaction類中使用 在struts config.xml檔案中進行相應的配置 1.contextrelative 設為true時表示當前path屬性以 開頭時,給出的是相對於當前上下文的url。預設為false 如果當前路徑為http localhost modulea 執行以上f...
頁面跳轉問題
常用http 請求狀態碼 今天遇到乙個頁面跳轉問題。a標籤跳轉時不能正常訪問,但當頁面回車重新整理或者https時訪問正常,檢視request header請求發現前者多了referer資訊。頁面做了referer驗證,只有指定網域名稱才能訪問。跳轉方案 1 php方式 header locatio...
struts2 action 頁面跳轉
標籤 action struts2 redirect 舉報 1 type dispatcher 為預設,用於jsp頁面跳轉 index.jsp 完整的寫法為 index.jsp 2 type redirect 重定向到jsp action 外部 index.jsp login.do 重定向時帶引數處...