1) 在springmvc方法的形参中定义Map,Model,ModelMap,并在方法中通过这三个对象进行值的传递;
①其中Map和ModelMap使用方式是一致的;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | @RequestMapping ( "/detail" ) public String detail(Integer id, //ModelMap modelMap Map modelMap ){ HashMap<String,String> conditions= new HashMap<>(); conditions.put( "sal" , "88888888" ); conditions.put( "age" , "35" ); //todo 去数据库查询用户信息 System.out.println( "查询id为" +id+ "的用户记录" ); User user= new User(id, "詹姆斯" , 18 , "男" , "美国克利夫兰" , new Role( "小前锋" , 23 ), conditions, Arrays.asList( "打篮球" , "打游戏" )); //通过modelMap或map向前台传值==>request.setAttribute(key,value) modelMap.put( "user" ,user); return "detail.jsp" ; } |
②Model只是通过addAttribute进行传值;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | @RequestMapping ( "/detail" ) public String detail(Integer id, Model model){ HashMap<String,String> conditions= new HashMap<>(); conditions.put( "sal" , "88888888" ); conditions.put( "age" , "35" ); //todo 去数据库查询用户信息 System.out.println( "查询id为" +id+ "的用户记录" ); User user= new User(id, "詹姆斯" , 18 , "男" , "美国克利夫兰" , new Role( "小前锋" , 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)的情况都在下面的代码内;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | //演示通过ModelAndView向页面传值 //@ModelAttribute:注解将对象传递到request域中 1)加在方法参数上,将对象传递到request域中,或向request域中取值 // 2)加在方法上,将方法的返回值放入request域中 @RequestMapping ( "/detail2" ) public ModelAndView detail2(Integer id, @ModelAttribute ( "username" ) String username, HttpServletRequest request, HttpSession session, HttpServletResponse response ){ request.setAttribute( "requestTest" , "请求域数据" ); session.setAttribute( "sessionTest" , "session域数据" ); HashMap<String,String> conditions= new HashMap<>(); conditions.put( "sal" , "88888888" ); conditions.put( "age" , "35" ); //todo 去数据库查询用户信息 System.out.println( "查询id为" +id+ "的用户记录" ); User user= new User(id, "詹姆斯" , 18 , "男" , "美国克利夫兰" , new Role( "小前锋" , 23 ), conditions, Arrays.asList( "打篮球" , "打游戏" )); //通过ModelAndView设置跳转的页面和值 ModelAndView modelAndView= new ModelAndView(); //向页面传值 modelAndView.addObject( "user" ,user); //指定跳转的页面 以/开头,则直接到资源根目录下找(即webapp下) // 不以/开头,跟在RequestMapping最后一个/后面 modelAndView.setViewName( "detail.jsp" ); return modelAndView; } //将方法返回值放入request域中 @ModelAttribute (name = "modelAttributeTest" ) public String test(){ return "我是@ModelAttribute的测试" ; } |
detail.jsp中代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> < html > < head > < title >用户详情页面</ title > </ head > < body > < h1 >用户详细信息</ h1 > < table > < tr > < td >用户名</ td > < td >${user.name}</ td > < td >年龄</ td > < td >${user.age}</ td > </ tr > < tr > < td >性别</ td > < td >${user.sex}</ td > < td >地址</ td > < td >${user.addr}</ td > </ tr > < tr > < td >角色ID</ td > < td >${user.role.id}</ td > < td >角色名</ td > < td >${user.role.name}</ td > </ tr > < tr > < td >条件1</ td > < td >${user.conditions.sal}</ td > < td >条件2</ td > < td >${user.conditions.age}</ td > </ tr > < tr > < td >爱好</ td > < td >${user.hobbies}</ td > </ tr > </ table > 获取@ModelAttribute设置的值:${username}< br /> 获取@ModelAttribute设置的值2:${modelAttributeTest}< br /> 获取request设置的值3:${requestTest}< br /> 获取session设置的值4:${sessionTest} </ body > </ html > |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。
- 本文固定链接: https://zxbcw.cn/post/189900/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)