不懂Springmvc实现向前台传递数据的方法?其实想解决这个问题也不难,下面让小编带着大家一起学习怎么去解决,希望大家阅读完这篇文章后大所收获。

1) 在springmvc方法的形参中定义Map,Model,ModelMap,并在方法中通过这三个对象进行值的传递;

①其中Map和ModelMap使用方式是一致的;

@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进行传值;

@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)的情况都在下面的代码内;

//演示通过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中代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %><html><head> <title>用户详情页面</title></head><body><h2>用户详细信息</h2><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>

感谢你能够认真阅读完这篇文章,希望小编分享Springmvc实现向前台传递数据的方法内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!