欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springmvc請求轉(zhuǎn)發(fā)和重定向問題(攜帶參數(shù)和不攜帶參數(shù))

 更新時間:2022年10月26日 10:23:48   作者:lxcoding  
這篇文章主要介紹了springmvc請求轉(zhuǎn)發(fā)和重定向問題(攜帶參數(shù)和不攜帶參數(shù)),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

請求轉(zhuǎn)發(fā)的三種方式

SpringMVC請求轉(zhuǎn)發(fā)區(qū)別于重定向,請求轉(zhuǎn)發(fā)地址欄不會發(fā)生改變、只發(fā)送一次請求、能攜帶原有的參數(shù),但只可以在同一個服務(wù)器中進行轉(zhuǎn)發(fā)。

1、傳統(tǒng)的請求轉(zhuǎn)發(fā)

@RequestMapping("/forwardCommon")
public ?forwardCommon(HttpServletRequest request,HttpServletResponse response){
? request.getServletDispatcher("/WEBINF/pages/success.jsp").forward(request,response);
}

2、SpringMVC中不經(jīng)過視圖解析器的請求轉(zhuǎn)發(fā)

@RequestMapping("/forwardView")
public String forwardView(){
?? ?return "forward:/WEB_INF/pages/success.jsp";
}
@RequestMapping("/forwardView")
public String forwardView(){
?? ?ModelAndView mv=new ModelAndView();
? ? mv.setViewName("forward:/WEB_INF/pages/success.jsp");
}

3、請求轉(zhuǎn)發(fā)經(jīng)過視圖解析器

其實很多人并不知道經(jīng)過視圖解析器的路由轉(zhuǎn)發(fā)也是請求轉(zhuǎn)發(fā)

@RequestMapping("/shopmanagement")
private String shopManagement(Model model) {
?? ?return "shop/shopmanagement";
}
@RequestMapping("/shopmanagement")
private ModelAndView shopManagement(Model model) {
?? ?ModelAndView mv=new ModelAndView();
? ? mv.setViewName("shop/shopmanagement");//也是請求轉(zhuǎn)發(fā),會經(jīng)過視圖解析器
? ? return mv;
}

上面的請求轉(zhuǎn)發(fā)只要在瀏覽器地址欄中輸入localhost:8080/o2o/shopadmin/shopmanagement?shopId=53,就可以訪問shopmanagement.html這個頁面,并且我們可以嘗試在該頁面中引入一個js文件,試圖查看請求轉(zhuǎn)發(fā)后的地址。

$(function(){
?? ?var shopId=getQueryString("shopId");//獲取url中的參數(shù)
?? ?var url=window.location.href;//獲得請求url
})
function getQueryString(name){
?? ?var reg=new RegExp("(^|&)"+name+"=([^&]*)(&|$)");
?? ?var r=window.location.search.substr(1).match(reg);
?? ?if(r!=null){
?? ??? ?return decodeURIComponent(r[2]);
?? ?}
?? ?return null;
}

在這里插入圖片描述

我們可以發(fā)現(xiàn)請求轉(zhuǎn)發(fā)后的地址和第一次請求的地址一樣, 連地址后面攜帶的參數(shù)都一樣。所以請求轉(zhuǎn)發(fā)不僅可以在請求體中攜帶參數(shù)(POST請求),也可以在地址欄中攜帶參數(shù)(GET請求),最后都可以在轉(zhuǎn)發(fā)后的頁面中獲得該參數(shù)的值。

重定向

傳統(tǒng)的重定向請求地址會改變(兩次請求)、不能傳遞參數(shù),但是利用SpringMVC的重定向可以攜帶和傳遞參數(shù)。

重定向相比于請求轉(zhuǎn)發(fā)可以跨服,但是不能直接重定向訪問WEB-INF下的資源(可重定向后再進行一次請求轉(zhuǎn)發(fā))。

1、傳統(tǒng)的重定向

@RequestMapping(value="/testredirect",method = { RequestMethod.POST, RequestMethod.GET })  
public void testredirect(HttpServletResponse response){  
    response.sendRedirect("/index");
}

2、SpringMVC中不帶參數(shù)的重定向

@RequestMapping(value="/testredirect",method = { RequestMethod.POST, RequestMethod.GET })  
public String testredirect(){  
    return "redirect:/index";
}
@RequestMapping(value="/testredirect",method = { RequestMethod.POST, RequestMethod.GET })  
public ModelAndView testredirect(){  
    ModelAndView mv=new ModelAndView();
    mv.setViewName("redirect:/index");
    return mv;
}

3、SpringMVC中帶參數(shù)的重定向

redirectAttributes.addAttributie("prama",value); 

這種方法相當于在重定向鏈接地址上追加傳遞的參數(shù)

@RequestMapping("/test")
private String shopList(RedirectAttributes ra) {
?? ?ra.addAttribute("param", 1);
?? ?return "redirect:/shopadmin/shoplist";
}

//相當于請求 http://localhost:8080/o2o/shopadmin/shoplist?param=1
redirectAttributes.addFlashAttributie("prama",value); 

這種方法是隱藏了參數(shù),鏈接地址上不直接暴露,用(@ModelAttribute(value = "prama")String prama)的方式獲取參數(shù)。

@RequestMapping("/test")
private String shopList(RedirectAttributes ra) {
?? ?ra.addFlashAttribute("param", 1);
?? ?return "redirect:/shopadmin/shoplist";
}

接收參數(shù)

@RequestMapping("/shoplist")
private String shopList(@ModelAttribute("param") String param) {
?? ?System.out.println(param);//輸出1
?? ?return "shop/shoplist";
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Netty分布式高性能工具類同線程下回收對象解析

    Netty分布式高性能工具類同線程下回收對象解析

    這篇文章主要為大家介紹了Netty分布式高性能工具類同線程下回收對象解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • SpringBoot整合Elasticsearch游標查詢的示例代碼(scroll)

    SpringBoot整合Elasticsearch游標查詢的示例代碼(scroll)

    這篇文章主要介紹了SpringBoot整合Elasticsearch游標查詢(scroll),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • MybatisPlus自動填充創(chuàng)建(更新)時間問題

    MybatisPlus自動填充創(chuàng)建(更新)時間問題

    在開發(fā)數(shù)據(jù)庫相關(guān)應(yīng)用時,手動設(shè)置創(chuàng)建和更新時間會導(dǎo)致代碼冗余,MybatisPlus提供了自動填充功能,通過實現(xiàn)MetaObjectHandler接口并重寫insertFill、updateFill方法,可以自動維護創(chuàng)建時間、更新時間等字段,極大簡化了代碼,這不僅提高了開發(fā)效率,也保證了數(shù)據(jù)的可追溯性
    2024-09-09
  • Spring?Boot?中starter的原理詳析

    Spring?Boot?中starter的原理詳析

    這篇文章主要介紹了Spring?Boot?中starter原理詳析,文章圍繞主題展開springboot的插件機制和starter原理相關(guān)資料,需要的小伙伴可以參考一下
    2022-06-06
  • Java基于注解實現(xiàn)的鎖實例解析

    Java基于注解實現(xiàn)的鎖實例解析

    這篇文章主要介紹了Java基于注解實現(xiàn)的鎖實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Spring如何在xml文件中配置Bean

    Spring如何在xml文件中配置Bean

    這篇文章主要介紹了Spring如何在xml文件中配置Bean的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 詳解如何給Sprintboot應(yīng)用添加插件機制

    詳解如何給Sprintboot應(yīng)用添加插件機制

    這篇文章主要為大家介紹了如何給 Sprintboot 應(yīng)用添加插件機制,文中有詳細的解決方案及示例代碼,具有一定的參考價值,需要的朋友可以參考下
    2023-08-08
  • Maven配置文件修改及導(dǎo)入第三方j(luò)ar包的實現(xiàn)

    Maven配置文件修改及導(dǎo)入第三方j(luò)ar包的實現(xiàn)

    本文主要介紹了Maven配置文件修改及導(dǎo)入第三方j(luò)ar包的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • 使用Spring Expression Language (SpEL)全面解析表達式

    使用Spring Expression Language (SpEL)全面解析表達式

    這篇文章主要介紹了使用Spring Expression Language (SpEL)全面解析表達式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Spring Java-based容器配置詳解

    Spring Java-based容器配置詳解

    這篇文章主要介紹了Spring Java-based容器配置詳解,涉及注解和@Configuration類以及@Beans的相關(guān)知識,具有一定參考價值,需要的朋友可以了解。
    2017-10-10

最新評論