Springmvc如何实现向前台传递数据
1)在springmvc方法的形参中定义Map,Model,ModelMap,并在方法中通过这三个对象进行值的传递;
①其中Map和ModelMap使用方式是一致的;
@RequestMapping("/detail") publicStringdetail(Integerid, //ModelMapmodelMap MapmodelMap ){ HashMapconditions=newHashMap<>(); conditions.put("sal","88888888"); conditions.put("age","35"); //todo去数据库查询用户信息 System.out.println("查询id为"+id+"的用户记录"); Useruser=newUser(id,"詹姆斯",18,"男","美国克利夫兰", newRole("小前锋",23), conditions, Arrays.asList("打篮球","打游戏")); //通过modelMap或map向前台传值==>request.setAttribute(key,value) modelMap.put("user",user); return"detail.jsp"; }
②Model只是通过addAttribute进行传值;
@RequestMapping("/detail") publicStringdetail(Integerid, Modelmodel){ HashMapconditions=newHashMap<>(); conditions.put("sal","88888888"); conditions.put("age","35"); //todo去数据库查询用户信息 System.out.println("查询id为"+id+"的用户记录"); Useruser=newUser(id,"詹姆斯",18,"男","美国克利夫兰", newRole("小前锋",23), conditions, Arrays.asList("打篮球","打游戏")); //通过Model对象传递数据 model.addAttribute("user",user); return"detail.jsp"; }
2)定义方法的返回值类型为ModelAndView,在方法中创建ModelAndView并指定跳转的页面和传递的数据,最后返回ModelAndView对象;
3)通过注解的方式@ModelAttribute;
4)在方法参数中定义Request或session对象,通过其对应的API;
下面2),3),4)的情况都在下面的代码内;
//演示通过ModelAndView向页面传值 //@ModelAttribute:注解将对象传递到request域中1)加在方法参数上,将对象传递到request域中,或向request域中取值 //2)加在方法上,将方法的返回值放入request域中 @RequestMapping("/detail2") publicModelAndViewdetail2(Integerid,@ModelAttribute("username")Stringusername, HttpServletRequestrequest, HttpSessionsession, HttpServletResponseresponse ){ request.setAttribute("requestTest","请求域数据"); session.setAttribute("sessionTest","session域数据"); HashMapconditions=newHashMap<>(); conditions.put("sal","88888888"); conditions.put("age","35"); //todo去数据库查询用户信息 System.out.println("查询id为"+id+"的用户记录"); Useruser=newUser(id,"詹姆斯",18,"男","美国克利夫兰", newRole("小前锋",23), conditions, Arrays.asList("打篮球","打游戏")); //通过ModelAndView设置跳转的页面和值 ModelAndViewmodelAndView=newModelAndView(); //向页面传值 modelAndView.addObject("user",user); //指定跳转的页面以/开头,则直接到资源根目录下找(即webapp下) //不以/开头,跟在RequestMapping最后一个/后面 modelAndView.setViewName("detail.jsp"); returnmodelAndView; } //将方法返回值放入request域中 @ModelAttribute(name="modelAttributeTest") publicStringtest(){ return"我是@ModelAttribute的测试"; }
detail.jsp中代码如下:
<%@pagecontentType="text/html;charset=UTF-8"language="java"isELIgnored="false"%>用户详情页面 用户详细信息
用户名 | ${user.name} | 年龄 | ${user.age} |
性别 | ${user.sex} | 地址 | ${user.addr} |
角色ID | ${user.role.id} | 角色名 | ${user.role.name} |
条件1 | ${user.conditions.sal} | 条件2 | ${user.conditions.age} |
爱好 | ${user.hobbies} |
获取@ModelAttribute设置的值2:${modelAttributeTest}
获取request设置的值3:${requestTest}
获取session设置的值4:${sessionTest}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。