SpringMVC使用作用域对象传递数据

SpringMVC在从后台往前台回传数据时,可以用传统的HttpServletRequest、HttpSession和ApplicationContext作用域对象进行传值,此外,也可使用SpringMVC自己提供的Model来进行值传递,具体实现如下:

HttpServletRequest

@RequestMapping("testForRequest")

public String testForRequest(String uname,Integer pwd, HttpServletRequest request){

// 业务处理
System.out.println("testForRequest接收到的数据:uname:"+uname+",pwd:"+pwd);

request.setAttribute("str","我在测试request作用域");

return "forward:requestTest.jsp";

}

HttpSession

@RequestMapping("testForSession")

public String testForSession(String uname, Integer pwd, HttpSession session){

// 业务处理
System.out.println("testForSession接收到的数据:uname:"+uname+",pwd:"+pwd);

session.setAttribute("str","我在测试session作用域");

return "redirect:sessionTest.jsp";

}

ApplicationContext

此方式注意,DispatcherServlet无法将ApplicationContext对象的实参向单元方法进行传递,故需要使用HttpServletRequest进行获取,如下:

@RequestMapping("testForApplication")

public String testForApplication(String uname, Integer pwd, HttpServletRequest request){

// 业务处理
System.out.println("testForApplication接收到的数据:uname:"+uname+",pwd:"+pwd);

request.getServletContext().setAttribute("str","我在测试applicationcontext作用域");

return "redirect:applicationContextTest.jsp";

}

Model


@RequestMapping("testForModel")

public String testForModel(String uname, Integer pwd,Model model){

// 业务处理
System.out.println("testForModel接收到的数据:uname:"+uname+",pwd:"+pwd);

// 响应回传
model.addAttribute("str","我在测试SpringMVC的Model传递数据");

// 转发:
// return "forward:requestTest.jsp";

// 重定向:
return "redirect:model.jsp";
}

如果返回的是redirect方式,则model会将参数拼成键=值对的方式拼接在链接末尾进行重定向,例如:

image.png

你可能感兴趣的:(java,spring)