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

SpringBoot中處理的轉(zhuǎn)發(fā)與重定向方式

 更新時間:2022年11月02日 14:43:13   作者:yubin1285570923  
這篇文章主要介紹了SpringBoot中處理的轉(zhuǎn)發(fā)與重定向方式,分別就轉(zhuǎn)發(fā)和重定向做了概念解說,結(jié)合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

轉(zhuǎn)發(fā):一次請求,服務器內(nèi)部調(diào)用另外的組件處理,request和response可以共用,有限制性,只能轉(zhuǎn)發(fā)到本應用中的某些資源,頁面或者controller請求可以訪問WEB-INF目錄下面的頁面

重定向:兩次請求,地址會改變,request和response不能共用,不能直接訪問WEB-INF下面的資源,

根據(jù)所要跳轉(zhuǎn)的資源,可以分為跳轉(zhuǎn)到頁面或者跳轉(zhuǎn)到其他controller

一、返回ModelAndView時的請求轉(zhuǎn)發(fā)

當controller中的方法返回ModelAndView的時候,默認是使用的轉(zhuǎn)發(fā)。當然,我們也可以顯式的指出要使用轉(zhuǎn)發(fā),此時,需在 setViewName()指定的視圖前添加forward:,此時springmvc.xml文件中配置的視圖解析器將會失效,即需要在setViewName中寫上jsp相對于項目根的路徑。

1:轉(zhuǎn)發(fā)到頁面

/**
 * 轉(zhuǎn)發(fā)返回ModelAndView對象
 * @return
 * @throws Exception
 */
@RequestMapping("/forwardMAV.do")
public ModelAndView forwardMAV()throws Exception{
 
    ModelAndView mv = new ModelAndView();
    mv.addObject("type", "轉(zhuǎn)發(fā)返回ModelAndView");
    //默認情況下使用轉(zhuǎn)發(fā)
    //mv.setViewName("/result");
 
    //手動顯式指定使用轉(zhuǎn)發(fā),此時springmvc.xml配置文件中的視圖解析器將會失效
    mv.setViewName("forward:/jsp/result.jsp");
    return mv;
}

需要在webapp目錄下添加jsp/result.jsp文件:

2:轉(zhuǎn)發(fā)到controller

使用轉(zhuǎn)發(fā)跳轉(zhuǎn)到其他controller中

@RequestMapping("/forwardMAV.do")
public ModelAndView forwardMAV()throws Exception{
 
    ModelAndView mv = new ModelAndView();
 
    //手動顯式指定使用轉(zhuǎn)發(fā),此時springmvc.xml配置文件中的視圖解析器將會失效
    mv.setViewName("forward:other.do");
    return mv;
}

創(chuàng)建OtherController:

/**
 * 被跳轉(zhuǎn)的controller
 */
@Controller
public class OtherController {
 
    /**
     * 被跳轉(zhuǎn)的controller返回result.jsp
     * @return
     * @throws Exception
     */
    @RequestMapping("/other.do")
    public ModelAndView other()throws Exception{
 
        ModelAndView mv = new ModelAndView();
        mv.addObject("type", "被跳轉(zhuǎn)的controller");
 
        mv.setViewName("result");
        return mv;
    }
}

二、返回ModelAndView時的重定向:發(fā)送的get請求,參數(shù)在url后面

如果要實現(xiàn)重定向,則需在setViewName()指定的視圖前添加redirect:,此時springmvc.xml文件中配置的視圖解析器將會失效,即需要在setViewName中寫上jsp相對于項目根的路徑。重定向的方式在request域中的數(shù)據(jù)會失效,此時可以通過ModelAndView來傳遞數(shù)據(jù),但是只能傳遞基本數(shù)據(jù)類型和String類型,因為spring mvc會將傳遞的數(shù)據(jù)以請求參數(shù)的方式放到url的后面,此時任何數(shù)據(jù)類型都會被轉(zhuǎn)換為普通的字符串。另外,我們在jsp中取值的時候需要使用 EL 表達式中的請求參數(shù)param讀取。

除此之外,你還可以將數(shù)據(jù)放到HttpSession域中,這里就不演示了。

1.重定向到頁面

/**
 * 重定向返回ModelAndView對象
 * @return
 * @throws Exception
 */
@RequestMapping("/redirectMAV.do")
public ModelAndView redirectMAV(School school,String name)throws Exception{
 
    ModelAndView mv = new ModelAndView();
 
    //在重定向中可以使用ModelAndView傳遞數(shù)據(jù),但是只能傳遞基本數(shù)據(jù)類型和String類型
    mv.addObject("school",school);
    mv.addObject("name", name);
 
    //使用重定向,此時springmvc.xml配置文件中的視圖解析器將會失效
    mv.setViewName("redirect:/jsp/result.jsp");
    return mv;

result.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
 
${school.schoolName}<br>
${param.school.address}<br>
${param.name}
</body>
</html>

2,重定向到controller

在重定向到其他controller中的方法的時候,只要保證兩者的參數(shù)名一致即可實現(xiàn)數(shù)據(jù)的傳遞。

@RequestMapping("/redirectMAV.do")
public ModelAndView redirectMAV(School school,String name)throws Exception{
 
    ModelAndView mv = new ModelAndView();
 
    mv.addObject("name", name);
    mv.addObject("schoolName", school.getSchoolName());
    mv.addObject("address", school.getAddress());
 
    System.out.println(school.getAddress());
    //使用重定向,此時springmvc.xml配置文件中的視圖解析器將會失效
    mv.setViewName("redirect:other.do");
    return mv;
}
RequestMapping("/other.do")
public ModelAndView other(String name, School school)throws Exception{
 
    ModelAndView mv = new ModelAndView();
 
    //單個接收
    mv.addObject("name", name);
 
    //通過javabean對象接收
    mv.addObject("school", school);
 
    System.out.println(school.getAddress());
    mv.setViewName("result");
 
    return mv;
}

返回String類型的轉(zhuǎn)發(fā)

這個整體上跟之前ModelAndView差不多,只不過在controller中的方法參數(shù)會被自動的放到request域中。

@RequestMapping("/forwardStr.do")
public String forwardStr(School school)throws Exception{
 
    //默認會使用轉(zhuǎn)發(fā)
    //return "result";
    //顯式的使用轉(zhuǎn)發(fā)
    return "forward:/jsp/result.jsp";
}

result.jsp中直接通過request域獲取數(shù)據(jù),以下兩種方式均可。

${requestScope.school.schoolName}

${school.schoolName}

返回String類型的重定向

這里要想傳遞數(shù)據(jù)的話,需要使用之前介紹過的Model實現(xiàn),這里的數(shù)據(jù)同樣會放在url中,所以只能傳遞基本數(shù)據(jù)類型和String類型。

@RequestMapping("/redirectStr.do")
public String redirectStr(School school, Model model)throws Exception{
 
    //這里的數(shù)據(jù)同樣會放在url中,所以只能傳遞基本數(shù)據(jù)類型和String類型
    model.addAttribute("schoolName", school.getSchoolName());
    model.addAttribute("address", school.getAddress());
 
    return "redirect:/jsp/result.jsp";
}

result.jsp中需要通過param來獲取數(shù)據(jù):

${param.schoolName}

${param.address}

這里轉(zhuǎn)發(fā)和重定向跟之前返回ModelAndView的時候一樣,所以就不演示了。

返回void的重定向和轉(zhuǎn)發(fā)

當方法沒有返回值即返回void的時候,重定向和轉(zhuǎn)發(fā)操作都是使用的servlet的api,就是:
轉(zhuǎn)發(fā):

request.getRequestDispatcher("/jsp/result.jsp").forward(request, response);

重定向:

response.sendRedirect(request.getContextPath()+"/jsp/result.jsp");

***************************************

@RequestMapping(value="/aa",method=RequestMethod.GET)

public ModelAndView aaa (HttpServletRequest request) {
String user? =? request.getParameter("username");

ModelAndView? mv = new?ModelAndView ("xyxyh/declaration/delcleView");

mv.addObject("pas","bb"):

return mv

}
@RequestMapping(value="/aa",method=RequestMethod.GET)
 
public ModelAndView aaa (HttpServletRequest request,ModelMap model) {
 
String user  =  request.getParameter("username");
 
ModelAndView  mv = new ModelAndView ("xyxyh/declaration/delcleView");
 
mv.addObject("pas","bb"):
 
model.addAttribute("typeFlag","aaaaa");
return mv
 
}

到此這篇關于SpringBoot中處理的轉(zhuǎn)發(fā)與重定向方式的文章就介紹到這了,更多相關SpringBoot 轉(zhuǎn)發(fā)與重定向內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論