SpringMVC传递数据给页面前端的方式

SpringMVC传递数据给页面前端的常见方式有如下几种:

  1. 传统方式:三大作用域.setAttribute,在转发到页面,在页面中就可以取出数据,但是这种只支持同步请求
    /**
	 * 传统方式
	 * @param req
	 * @param resp
	 * @throws ServletException
	 * @throws IOException
	 */
	@RequestMapping("/test.do")
	public void test(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException {
		//传递普通参数
		req.setAttribute("msg","hahahahahah");
		//传递对象
		User user = new User();
		user.setUserName("张三");
		user.setPwd("123456");
		user.setAge(55);
		req.setAttribute("user",user);
		req.getRequestDispatcher("../index.jsp").forward(req, resp);
	}
  1. 使用Model
    /**
	 * 使用Model传递数据
	 * 	数据一定是保存到请求作用域中
	 * Model只能包含数据,不能实现页面跳转,而ModelAndView既可以包含数据,也可以实现页面跳转
	 * @param model
	 * @return
	 */
	@RequestMapping("/test.do")
	public String test(Model model) {
		//传递普通参数
		model.addAttribute("msg","hahahahahah");
		//传递对象
		User user = new User();
		user.setUserName("张三");
		user.setPwd("123456");
		user.setAge(29);
		model.addAttribute("user",user);
		return "index";
	}
  1. 使用ModelMap
    /**
	 * 使用ModelMap
	 * @param map
	 * @return
	 */
	@RequestMapping("/test.do")
	public String test(ModelMap map) {
		//传递普通参数
		map.addAttribute("msg","hahahahahah");
		//传递对象
		User user = new User();
		user.setUserName(张三");
		user.setPwd("123456");
		user.setAge(33);
		map.addAttribute("user",user);
		return "index";
	}
  1. 使用ModelAndView
    /**
	 * 使用ModelAndView传递数据
	 * 	数据一定是保存到请求作用域中
	 * @return
	 */
	@RequestMapping("/test.do")
	public ModelAndView test() {
		ModelAndView mav = new ModelAndView("index");
		//传递普通参数
		mav.addObject("msg","hahahahahah");
		//传递对象
		User user = new User();
		user.setUserName("张三");
		user.setPwd("123456");
		user.setAge(20);
		mav.addObject("user",user);
		return mav;
	}
  1. @ResponseBody注解将返回的值【对象、数组、集合、Map集合】自动转化为JSON格式字符串,再利用响应对象中的输出流,这种方式是今后用得最多的,支持异步请求。
    /**
	 * 直接返回一个对象
	 * 	会默认创建一个ModelAndView
	 * 	然后会自动将当前对象添加到ModelAndView中进行传递
	 * @return
	 */
	@RequestMapping("/test.do")
	public User test(){
		//传递对象
		User user = new User();
		user.setUserName("张三");
		user.setPwd("123456");
		user.setAge(55);
		return user;
	}

你可能感兴趣的:(java技术文章)