1. 程式人生 > >SpringMVC 學習 十一 springMVC控制器向jsp或者別的控制器傳遞引數的四種方法

SpringMVC 學習 十一 springMVC控制器向jsp或者別的控制器傳遞引數的四種方法

以後的開發,大部分是傳送ajax,因此這四種傳遞引數的方法,並不太常用。作為了解吧

第一種:使用原生 Servlet

在控制器的響應的方法中新增Servlet中的一些作用域:HttpRequestServlet,或者HttpSession。

【注意】在方法中,ServletContext的物件是不能作為函式引數傳遞的

  @RequestMapping("/demo01")
    public String demo01(HttpServletRequest req,HttpSession sessionParam) {
        //request 作用域
        req.setAttribute("req", "req的值");
        
//session作用域 sessionParam.setAttribute("sessionParam", "sessionParam的值"); HttpSession session = req.getSession(); session.setAttribute("session", "session 的值"); //application作用域 ServletContext application =req.getServletContext(); application.setAttribute(
"application","application 的值"); return "/index.jsp"; }

 

那麼在index.jsp頁面中就可以通過上面的application域,session域,request域訪問上面HandlerMethod返回的引數。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> request:${requestScope.req }<br/> session:${sessionScope.session }<br/> sessionParam:${sessionScope.sessionParam }<br/> application:${applicationScope.application }<br/> </body> </html>

 

【注意】SpringMVC的HandlerMehtod方法中是不可以直接通過getServletContext方法來獲取ServletContext物件的,應為這個方法是Servlet物件中的方法,但是可以通過request物件呼叫request物件中的getServletContext()方法來獲取getServletContext物件

第二種:使用 Map 集合

2.1 把 map 中內容放在 request 作用域中

2.2 spring 會對 map 集合介面進行實現,實現類其實是 BindingAwareModelMap 

@RequestMapping("demo2")
public String demo2(Map<String,Object> map){
  System.out.println(map.getClass());
  map.put("map","map 的值");
  return "/index.jsp";
}
map:${map }<br/>
map:${requestScope.map}

 

第三種:使用 SpringMVC 中 Model 介面,本質也是通過request域,把內容最終放入到 request 作用域中.

    @RequestMapping("/demo03")
    public String  demo03(Model model) {
        model.addAttribute("model", "model 的值");
        return "/index.jsp";
    }

 

model:${model }<br/>
model:${requestScope.model }<br/>

第四種:使用 SpringMVC 中 ModelAndView 類

    @RequestMapping("/demo4")
    public ModelAndView demo4(){
        //引數,跳轉檢視
        ModelAndView mav = new ModelAndView("/index.jsp");
        mav.addObject("mav", "mav 的值");
        mav.addObject("mavKey", "mav的值");
        return mav;
    }

 

    mav:${mav }<br/>
    mav:${mavKey }<br/>