摘要:使用的的時候,碰到內(nèi)方法的跳轉(zhuǎn)的問題,記錄下問題以及自己測試的過程。第三種選擇使用的的方法來設置值,原理是在跳轉(zhuǎn)前將值放入中,跳轉(zhuǎn)之后就將值清除掉。
使用springmvc的controller的時候,碰到controller內(nèi)方法的跳轉(zhuǎn)的問題,記錄下問題以及自己測試的過程。
場景:
業(yè)務執(zhí)行更新操作之后返回列表頁面,列表頁面需默認展示查詢的列表數(shù)據(jù),涉及到兩個controller的跳轉(zhuǎn)。
問題
是使用forward還是redirect跳轉(zhuǎn)
解決問題
其實使用forward或者redirect都能達到目的,但是有些問題在下面說明。
1、使用forward
a、例如:return "forward:/rest/queryData",實際的效果是在瀏覽器中的url地址還是原地址,存在重復提交的問題,所以forward就不推薦使用了。
b、如果是需要攜帶參數(shù),直接拼接傳遞的參數(shù),例如:return "forward:/rest/queryShopAlisName?phone=xxxxxxx"; 在跳轉(zhuǎn)的controller中使用參數(shù)【@RequestParam("phone") String phone】獲得傳遞的參數(shù)值,顯然這樣的方式也是不推薦的。
2、使用redirect
在controller方法的參數(shù)中使用RedirectAttributes來
a、不帶參數(shù):
直接使用 return "redirect:/rest/queryShopAlisName";瀏覽器的地址變成跳轉(zhuǎn)的新地址,避免了重復提交的問題。
b、帶參數(shù)的時候:
第一種選擇:直接在url后面拼接參數(shù),使用@RequestParam來取值,不推薦使用
第二種選擇:在controller方法的參數(shù)中使用RedirectAttributes來傳遞參數(shù)
@RequestMapping(value = "/checkMember") public String checkMember(HttpServletRequest request, RedirectAttributes attr) { Member member = null; try { String phone = request.getParameter("phone"); ***attr.addAttribute("phone", "xxxx");*** member = cashierService.checkIsMember(phone); } catch (Exception e) { logger.error("query member is error happen : " + e); } return "redirect:/rest/queryShopAlisName"; }
使用attr.addAttribute來設置值,然后在跳轉(zhuǎn)的controller中同樣使用@RequestParam來取值,在瀏覽器中同樣是拼接參數(shù)的形式,例如:http://localhost:8080/xxxx/xx...,同樣不建議這么使用。
第三種選擇:使用RedirectAttributes的addFlashAttribute的方法來設置值,原理是在跳轉(zhuǎn)前將值放入session中,跳轉(zhuǎn)之后就將值清除掉。瀏覽器的地址不顯示參數(shù)的值,推薦使用這種方法來傳值。
attr.addFlashAttribute("phone", "xxxxxxx");
在跳轉(zhuǎn)的controller的參數(shù)中增加@ModelAttribute來取得參數(shù)值
@RequestMapping(value = "/queryShopAlisName") public String queryShopAlisName(@ModelAttribute("phone")String phone) { ...... return ""; }
第一次寫博客來記錄,還請看官多多包涵咯。就這樣結(jié)束吧
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/67789.html
摘要:此解析器與差不多,更改下配置文件中的類全路徑即可。總結(jié)本章介紹了以及三個視圖解析器。這部分內(nèi)容有點兒多,我會盡快結(jié)束。 概述 通過上幾篇的學習,我們分析了并試驗了ViewResolverComposite、BeanNameViewResolver和ContentNegotiatingViewResolver,這三個類都直接實現(xiàn)ViewResolver接口。Spring MVC提供了很多...
摘要:是使用攔截器來自動幫我們完成中文亂碼的問題的。這是我的首頁當然了,基于注解和基于來開發(fā),都是通過映射器適配器和視圖解析器的。能夠控制請求路徑和請求方式一個控制器寫多個業(yè)務方法到目前為止,我們都是一個控制器寫一個業(yè)務方法,這肯定是不合理的。 前言 本文主要是講解在Controller中的開發(fā),主要的知識點有如下: 編碼過濾器 使用注解開發(fā) 注解@RequestMapping詳解 業(yè)務方...
摘要:是目前最流行的一種互聯(lián)網(wǎng)軟件架構(gòu)。協(xié)議,是一個無狀態(tài)協(xié)議,即所有的狀態(tài)都保存在服務器端。而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是表現(xiàn)層狀態(tài)轉(zhuǎn)化。具體說,就是協(xié)議里面,四個表示操作方式的動詞。 一、SpringMVC概述 Spring為展現(xiàn)層提供的基于MVC設計理念的優(yōu)秀的Web框架,是目前最主流的MVC框架之一 Spring3.0之后全面超越Struts2,成為最優(yōu)秀的MVC框架 S...
摘要:那我們就不用在每一個方法通過將數(shù)據(jù)傳到頁面。還能夠配置該參數(shù)是否是必須的。方法的返回值有種重定向轉(zhuǎn)發(fā)內(nèi)部就是將數(shù)據(jù)綁定到域?qū)ο笾械摹W⒔饽軌驅(qū)?shù)據(jù)綁定到中也就是中,如果經(jīng)常需要綁定到中的數(shù)據(jù),抽取成方法來使用這個注解還是不錯的。 前言 本文主要講解的知識點如下: 參數(shù)綁定 數(shù)據(jù)回顯 文件上傳 參數(shù)綁定 我們在Controller使用方法參數(shù)接收值,就是把web端的值給接收到Cont...
摘要:只要有一個攔截器不放行,不能執(zhí)行完成號不放行和號不放行測試結(jié)果總結(jié)只有前邊的攔截器方法放行,下邊的攔截器的才執(zhí)行。至于他們的攔截器鏈的調(diào)用順序,和的是沒有差別的。 前言 本博文主要講解的知識點如下: 校驗器 統(tǒng)一處理異常 RESTful 攔截器 Validation 在我們的Struts2中,我們是繼承ActionSupport來實現(xiàn)校驗的...它有兩種方式來實現(xiàn)校驗的功能 手寫...
閱讀 2473·2021-11-24 09:39
閱讀 3406·2021-11-15 11:37
閱讀 2251·2021-10-08 10:04
閱讀 3965·2021-09-09 11:54
閱讀 1883·2021-08-18 10:24
閱讀 1034·2019-08-30 11:02
閱讀 1793·2019-08-29 18:45
閱讀 1651·2019-08-29 16:33