1. 程式人生 > >spring mvc redirect 重定向 跳轉並傳遞引數 && mvc:view-controller直接轉發頁面

spring mvc redirect 重定向 跳轉並傳遞引數 && mvc:view-controller直接轉發頁面

在專案中做form表單功能提交時,防止使用者客戶端後退或者重新整理時重複提交問題,需要在服務端進行重定向跳轉,具體跳轉方式有以下幾種方式:

公用程式碼:

Java程式碼  收藏程式碼
  1. @RequestMapping(value="/index",method = { RequestMethod.POST, RequestMethod.GET })  
  2. public  ModelAndView index(HttpServletResponse response){  
  3.     ModelAndView model = new ModelAndView("/home/index");  
  4.     return model;  
  5. }  

一、使用HttpServletResponse 進行重定向跳轉

Java程式碼  收藏程式碼
  1. @RequestMapping(value="/toIndex",method = { RequestMethod.POST, RequestMethod.GET })  
  2. ublic  ModelAndView toIndex(HttpServletResponse response){  
  3. try {  
  4.     response.sendRedirect("/index");  
  5. catch (IOException e1) {  
  6. }  
  7. returnnull;  

二、依賴spring mvc的 ViewResolver直接跳轉

Java程式碼  收藏程式碼
  1. @RequestMapping(value="/toIndex",method = { RequestMethod.POST, RequestMethod.GET })  
  2. public  String toIndex(HttpServletResponse response){  
  3.     return"redirect:/index";  
  4. }  

注:當需要傳遞簡單引數時可以使用以上兩種方式通過get方式將引數拼接到url路勁後面。

三、依賴Spring mvc的RedirectAttributes 

Java程式碼  收藏程式碼
  1. @RequestMapping(value=
    "/toIndex",method = { RequestMethod.POST, RequestMethod.GET })  
  2. public  String toIndex(HttpServletResponse response,RedirectAttributes model){  
  3.     model.addFlashAttribute("userName"'TimerBin');  
  4.     model.addFlashAttribute("userPass"'ApeVm23U3wxEGocX');  
  5.     return"redirect:/index";  
  6. }  

 在/home/index 可以直接使用${userName},${userPass}來獲取重定向跳轉的引數資訊,這種方式可以處理複雜的引數傳值問題,還可以使用此種方式來隱藏或縮短原有請求URL資訊。

在controller中獲取放在RedirectAttributes中的userName資訊的方式:

Java程式碼  收藏程式碼
  1. @RequestMapping(value="/index",method = { RequestMethod.POST, RequestMethod.GET })  
  2. public  ModelAndView index(@ModelAttribute("userName") String userName){  
  3.         ModelAndView  model = new ModelAndView("/main/index");   
  4.     model.addObject("userName", userName);  
  5.     return model;  
  6. }  

 注:在專案中使用RedirectAttributes,因為該物件就是把引數資訊放到專案中的session中,再多臺伺服器中使用該物件儲存引數時已經要保證sesion設定是粘性的,不然在叢集伺服器中不支援該物件的使用!

在springMVC中,通過@RequestMapping傳送請求地址,轉發到目標頁面,但是,有時候想直接訪問頁面,

不想通過xxx.jsp直接訪問頁面,可以通過springmvc.xml配置檔案中的mvc:view-controller標籤做到頁面的直接訪問。

在上面的例項中修改spirngmvc.xml配置檔案如下:

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.        xmlns:mvc="http://www.springframework.org/schema/mvc"
  5.        xmlns:p="http://www.springframework.org/schema/p"
  6.        xmlns:context="http://www.springframework.org/schema/context"
  7.        xmlns:aop="http://www.springframework.org/schema/aop"
  8.        xmlns:tx="http://www.springframework.org/schema/tx"
  9.        xsi:schemaLocation="http://www.springframework.org/schema/beans  
  10.             http://www.springframework.org/schema/beans/spring-beans-4.1.xsd  
  11.             http://www.springframework.org/schema/context   
  12.             http://www.springframework.org/schema/context/spring-context-4.1.xsd  
  13.             http://www.springframework.org/schema/aop   
  14.             http://www.springframework.org/schema/aop/spring-aop-4.1.xsd  
  15.             http://www.springframework.org/schema/tx   
  16.             http://www.springframework.org/schema/tx/spring-tx-4.1.xsd  
  17.             http://www.springframework.org/schema/mvc   
  18.             http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd  
  19.             http://www.springframework.org/schema/context   
  20.             http://www.springframework.org/schema/context/spring-context-4.1.xsd">
  21.     <!--  配置自動掃描的包  -->
  22.     <context:component-scanbase-package="com.lanhuigu.springmvc"/>
  23.     <!-- 檢視解析器 -->
  24.     <beanid="viewResolver"
  25.           class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  26.           <!-- 配置字首 -->
  27.           <propertyname="prefix"value="/WEB-INF/views/"/>
  28.           <!-- 配置字尾 -->
  29.           <propertyname="suffix"value=".jsp"/>
  30.     </bean>
  31.     <!-- 配置直接轉發的頁面 -->
  32.     <mvc:view-controllerpath="/success"view-name="success"/>
  33.     <!-- 解決mvc:view-controller配置後RequestMapping對映地址報404的問題 -->
  34.     <mvc:annotation-driven></mvc:annotation-driven>
  35. </beans>

這個時候,我們可以在瀏覽器直接訪問success.jsp頁面:

http://localhost:9000/SpringMVC/success

不用通過訪問某個RequestMapping地址,返回到success頁面,也不需要通過success.jsp的絕對路徑訪問。

通過這樣直接轉發頁面的配置,不影響RequestMapping對映地址請求轉發頁面。

相關推薦

spring mvc redirect 定向 傳遞引數 && mvc:view-controller直接轉發頁面

在專案中做form表單功能提交時,防止使用者客戶端後退或者重新整理時重複提交問題,需要在服務端進行重定向跳轉,具體跳轉方式有以下幾種方式: 公用程式碼: Java程式碼   @RequestMapping(value="/index",method = { Reque

MVC——redirect定向傳值

數拼接url形式跳轉,帶引數不拼接引數跳轉,頁面也能顯示。      首先先來介紹一下不帶引數的重定向:      我在後臺一個controller跳轉到另一個controller,為什麼有這種需求呢,是這樣的。我有一個

SpringMVC——redirect定向傳值

spring MVC框架controller間跳轉,需重定向。有幾種情況:不帶引數跳轉,帶引數拼接url形式跳轉,帶引數不拼接引數跳轉,頁面也能顯示。      首先先來介紹一下不帶引數的重定向:      我在後臺一個controller跳轉到另一個controller,

ASP.NET MVC進行頁面傳遞引數

第一種方法: return Content(string.Format("<script>alert('上傳成功');parent.window.location='/控制器名稱/Action方法名?引數={0}';</script>", 傳遞的引數)

MUI預載入頁面傳遞引數的問題,Uncaught Error: webview[某個頁面的id] does not exist

最近剛剛入門mui,學習慕課上仿豆瓣app,但是在預載入和跳轉頁面中出現了以下問題。  Uncaught Error: webview[某個頁面的id] does not exist 具體程式碼如下: //預載入電影詳

SpringMVC使用mvc:view-controller直接轉發頁面

配置直接轉發的頁面(如首頁) <mvc:view-controller/>此標籤用以在springMVC配置檔案中實現路徑的轉發和資源的請求。 使用場景:一般springmvc都是經過Controller,但是當我們不想經過Controller,而是直接訪問檢

Apache mod_rewrite實現HTTP和HTTPS定向

告訴 ace mod iter bing space tac lai contain 當你的站點使用了HTTPS之後,你可能會想把所有的HTTP請求(即端口80的請求),全部都重定向至HTTPS(即端口443)。這時候你可以用以下的方式來做到:(Apache mod_rew

常用nginx rewrite定向-實例:

request 判斷 rewrite html clas 鏈接 admin ces 需要 1,將www.myweb.com/connect 跳轉到connect.myweb.com rewrite ^/connect$ http://connect.myweb.com

網站建設之網站301定向及對介紹

行業 display get 404頁 新網 調整 內容 暫時 class 在之前我們介紹了網站404頁面的制作及作用,今天我們來聊聊網站建設優化中必可可少的網址301重定向跳轉。 一. 為什麽要做網頁301重定向操作? 在網站長期打理運營過

nginx 定向和不兩種需求

匹配 rman ebs url 日常 oca baidu perm 正則 背景:在日常運維中經常會碰到需要從一個鏈接跳轉到另一個鏈接的情況,此類需求分為兩種情況,一種是瀏覽器url變,一種是瀏覽器url不變。 一、Url變,使用nginx rewirte模塊 rewrite

httpd定向和更詳細的日誌記錄

swd chrom ide docs hba format lease bcd img httpd的頁面登錄認證在httpd的虛擬主機配置文件中添加用戶認證的密碼的相關配置 <VirtualHost *:80> ? DocumentRoot "/usr/lo

URL定向/漏洞

0x00 相關背景介紹 由於應用越來越多的需要和其他的第三方應用互動,以及在自身應用內部根據不同的邏輯將使用者引向到不同的頁面,譬如一個典型的登入介面就經常需要在認證成功之後將使用者引導到登入之前的頁面,整個過程中如果實現不好就可能導致一些安全問題,特定條件下可能引起嚴重的安全漏洞。 0x0

常用nginx rewrite定向-例項

常用nginx rewrite重定向-跳轉例項: 1,將www.myweb.com/connect 跳轉到connect.myweb.com rewrite ^/connect$ http://connect.myweb.com permanent; rewrite ^/connect/(

定向——javascript

重定向的概念及目的 當點選一個URL來訪問一個網頁x,但在內部你背定向到另一頁Y,僅僅是因為頁面重定向。這一概念是從不用於JavaScript頁面重新整理,可能有各種原因,為什麼想從原來的頁面重定向,原因如下: 1)如果不喜歡現有的域名,可以重定向到一個新的。同時,要引導

微信公眾平臺網頁登入授權多次定向,導致code使用多次問題

背景:微信網站開發   昨天我負責的一個專案忽然出現了一個十分詭異的bug,進行微信授權登入的時候請求code的時候安卓手機會多次重定向調轉我的介面接收code的介面(redirect_uri 微信請求調轉接收code的的介面,加了utl.encode()),也就是我這邊預設請求了多次這個介面,然而蘋果手機

Haproxy 的定向設置 - 運維小結

strong 末尾 服務 傳統 現在 set 計劃 客戶端訪問 user 前面已經詳細介紹了Haproxy基礎知識 , 今天這裏再贅述下Haproxy的重定向跳轉的設置. haproxy利用acl來實現haproxy動靜分離,然而在許多運維應用環境中,可能需要將訪問的站

【完】微信公眾平臺網頁授權兩次定向問題

在做微信公眾平臺網頁授權時,發現每次請求授權連結 https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxx&redirect_uri=xxx&response_type=code&

安卓版微信url定向

微信url重定向跳轉 iso可以正常跳轉 安卓顯示空白頁無法跳轉 以前程式碼如下: $redirect_uri = urlencode('http://bfzf.jyh.com/wxPay/pa

用ISAPI Rewrite實現IIS 301轉向(定向)

實現301轉向的方式有很多,比如apache伺服器通過修改.htaccess檔案,asp,php程式通過新增301轉向程式碼等等,具體請看301轉向(重定向跳轉)的實現。 有時候為了seo優化的需要,要儘量減少搜尋引擎索引網站重複頁面,其中有一項重要工作就是在帶www和不帶

Linux寶塔控制面板如何實現多個二級域名301定向

寶塔Linux面板中,有著自帶的301重定向功能(市面上很多面板都有這個功能),然而這時實現繫結域名(主域)301跳轉的,如果你要將主域下的好幾個二級域名301重定向,就無法直接進行301了,這個時候,就需要使用”配置檔案”這個功能了,使用步驟如下: