SpringBoot中處理的轉(zhuǎn)發(fā)與重定向方式_第1頁
SpringBoot中處理的轉(zhuǎn)發(fā)與重定向方式_第2頁
SpringBoot中處理的轉(zhuǎn)發(fā)與重定向方式_第3頁
SpringBoot中處理的轉(zhuǎn)發(fā)與重定向方式_第4頁
SpringBoot中處理的轉(zhuǎn)發(fā)與重定向方式_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第SpringBoot中處理的轉(zhuǎn)發(fā)與重定向方式目錄一、返回ModelAndView時(shí)的請求轉(zhuǎn)發(fā)1:轉(zhuǎn)發(fā)到頁面2:轉(zhuǎn)發(fā)到controller二、返回ModelAndView時(shí)的重定向:發(fā)送的get請求,參數(shù)在url后面1.重定向到頁面2,重定向到controller返回String類型的轉(zhuǎn)發(fā)返回String類型的重定向返回void的重定向和轉(zhuǎn)發(fā)轉(zhuǎn)發(fā):一次請求,服務(wù)器內(nèi)部調(diào)用另外的組件處理,request和response可以共用,有限制性,只能轉(zhuǎn)發(fā)到本應(yīng)用中的某些資源,頁面或者controller請求可以訪問WEB-INF目錄下面的頁面

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

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

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

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

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

/**

*轉(zhuǎn)發(fā)返回ModelAndView對象

*@return

*@throwsException

@RequestMapping("/forwardMAV.do")

publicModelAndViewforwardMAV()throwsException{

ModelAndViewmv=newModelAndView();

mv.addObject("type","轉(zhuǎn)發(fā)返回ModelAndView");

//默認(rèn)情況下使用轉(zhuǎn)發(fā)

//mv.setViewName("/result");

//手動顯式指定使用轉(zhuǎn)發(fā),此時(shí)springmvc.xml配置文件中的視圖解析器將會失效

mv.setViewName("forward:/jsp/result.jsp");

returnmv;

}

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

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

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

@RequestMapping("/forwardMAV.do")

publicModelAndViewforwardMAV()throwsException{

ModelAndViewmv=newModelAndView();

//手動顯式指定使用轉(zhuǎn)發(fā),此時(shí)springmvc.xml配置文件中的視圖解析器將會失效

mv.setViewName("forward:other.do");

returnmv;

}

創(chuàng)建OtherController:

/**

*被跳轉(zhuǎn)的controller

@Controller

publicclassOtherController{

*被跳轉(zhuǎn)的controller返回result.jsp

*@return

*@throwsException

@RequestMapping("/other.do")

publicModelAndViewother()throwsException{

ModelAndViewmv=newModelAndView();

mv.addObject("type","被跳轉(zhuǎn)的controller");

mv.setViewName("result");

returnmv;

}

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

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

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

1.重定向到頁面

/**

*重定向返回ModelAndView對象

*@return

*@throwsException

@RequestMapping("/redirectMAV.do")

publicModelAndViewredirectMAV(Schoolschool,Stringname)throwsException{

ModelAndViewmv=newModelAndView();

//在重定向中可以使用ModelAndView傳遞數(shù)據(jù),但是只能傳遞基本數(shù)據(jù)類型和String類型

mv.addObject("school",school);

mv.addObject("name",name);

//使用重定向,此時(shí)springmvc.xml配置文件中的視圖解析器將會失效

mv.setViewName("redirect:/jsp/result.jsp");

returnmv;

result.jsp

%@pagecontentType="text/html;charset=UTF-8"language="java"%

html

head

titleTitle/title

/head

body

${school.schoolName}br

${param.school.address}br

${}

/body

/html

2,重定向到controller

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

@RequestMapping("/redirectMAV.do")

publicModelAndViewredirectMAV(Schoolschool,Stringname)throwsException{

ModelAndViewmv=newModelAndView();

mv.addObject("name",name);

mv.addObject("schoolName",school.getSchoolName());

mv.addObject("address",school.getAddress());

System.out.println(school.getAddress());

//使用重定向,此時(shí)springmvc.xml配置文件中的視圖解析器將會失效

mv.setViewName("redirect:other.do");

returnmv;

}

RequestMapping("/other.do")

publicModelAndViewother(Stringname,Schoolschool)throwsException{

ModelAndViewmv=newModelAndView();

//單個(gè)接收

mv.addObject("name",name);

//通過javabean對象接收

mv.addObject("school",school);

System.out.println(school.getAddress());

mv.setViewName("result");

returnmv;

}

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

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

@RequestMapping("/forwardStr.do")

publicStringforwardStr(Schoolschool)throwsException{

//默認(rèn)會使用轉(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實(shí)現(xiàn),這里的數(shù)據(jù)同樣會放在url中,所以只能傳遞基本數(shù)據(jù)類型和String類型。

@RequestMapping("/redirectStr.do")

publicStringredirectStr(Schoolschool,Modelmodel)throwsException{

//這里的數(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的時(shí)候一樣,所以就不演示了。

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

當(dāng)方法沒有返回值即返回void的時(shí)候,重定向和轉(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)

publicModelAndViewaaa(HttpServletRequestrequest){

Stringuser

=

request.getParameter("username");

ModelAndView

mv=new

ModelAndView("xyxyh/declaration/delcleView");

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

returnmv

}

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

pub

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論