让人眼前一亮的前后端数据交互方式

 在改测试提出的bug时,因为项目不是我写的,而且我刚到这个公司,看代码时苦苦找不到前端和后端是怎么交互的,没有看到http请求(其实是有,我眼瞎了),在大神简单的讲了一下,

 哇好像突然开窍了,之前没有看到的后端的Controller层也都浮出水面。这里也算积累到了经验,搜索url时不要整段url搜,因为后端可能是用多个@RequestMapper拼装的url,所以几率最大的是从url后面截取搜。

 在前端.jsp页面中只看到了${param},但没有看到后台到底是怎么传数据的。

原来

下面讲讲SpringMVC的几种像页面传值的方式:

1. 使用HttpServletRequest 然后setAttribute(),就和Servlet中一样

2. 使用ModelAndView对象

 Model数据会利用HttpServletRequest的Attribute传值到success.jsp中

    @RequestMapping("/login.do")  
    public ModelAndView  login(String name,String pass){  
        User user = userService.login(name,pwd);  
        Map<String,Object> data = new HashMap<String,Object>();  
        data.put("user",user);  
        return new ModelAndView("success",data);  
    }  

3. 使用ModelMap对象

 ModelMap数据会利用HttpServletRequest的Attribute传值到success.jsp中

    @RequestMapping("/login.do")  
    public String login(String name,String pass ,ModelMap model){  
        User user  = userService.login(name,pwd);  
        model.addAttribute("user",user);  
        model.put("name",name);  
        return "success";  
    }

4. 使用@ModelAttribute注解

 在Controller方法的参数部分或Bean属性方法上使用

 @ModelAttribute数据会利用HttpServletRequest的Attribute传值到success.jsp中

@RequestMapping("/login.do")  
   public String login(@ModelAttribute("user") User user){  
       //TODO  
      return "success";  
   }  

   @ModelAttribute("name")  
   public String getName(){  
       return name;  
   }

5. Session存储

 可以利用HttpServletReequest的getSession()方法

@RequestMapping("/login.do")  
   public String login(String name,String pwd  
                               ModelMap model,HttpServletRequest request){  
        User user = serService.login(name,pwd);  
        HttpSession session = request.getSession();  
        session.setAttribute("user",user);  
        model.addAttribute("user",user);  
        return "success";  
   }

6. 自定义Map

@ResponseBody
   @RequestMapping(value = "/updatestatus", method = RequestMethod.POST)
   public Map<String, Object> updateStatus(HttpServletRequest request) {
       Map<String, Object> result = new HashMap<String, Object>();
       String id = request.getParameter("id");
       SystemAdministrator sysadmin=systemAdminBiz.get(Integer.valueOf(id));
       sysadmin.setStatus(1);
       boolean    flag = systemAdminBiz.update(sysadmin);
       result.put("status", flag);
       return result;
   }

关注公众号:猿小雷
获取更多文章,第一之间掌握技术。
有问题请在公众号内回复,小雷会一一回答。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_34638225/article/details/81268695