@ModelAttribute,ModelAndView模式,HttpServletRequest请求的区分

时间:2017-12-12 15:40:37

标签: java spring spring-mvc

我是mvc spring的新手,我有一些来自互联网的代码,如下所示:

@RequestMapping(value = "/newContact", method = RequestMethod.GET)
public ModelAndView newContact(ModelAndView model) {
    Contact newContact = new Contact();
    model.addObject("contact", newContact);
    model.setViewName("ContactForm");
    return model;
}

@RequestMapping(value = "/saveContact", method = RequestMethod.POST)
public ModelAndView saveContact(@ModelAttribute Contact contact) {
    contactDAO.saveOrUpdate(contact);
    return new ModelAndView("redirect:/");
}

@RequestMapping(value = "/deleteContact", method = RequestMethod.GET)
public ModelAndView deleteContact(HttpServletRequest request) {
    int contactId = Integer.parseInt(request.getParameter("id"));
    contactDAO.delete(contactId);
    return new ModelAndView("redirect:/");
}

我的问题是, 在任何情况下使用和使用@ ModelAttribute,ModelAndView模式和HttpServletRequest请求的目的是什么? 谢谢你。

1 个答案:

答案 0 :(得分:0)

请检查https://stackoverflow.com/a/33422321/3530898。我认为ModelAttribute通常用于表单传输对象(即其字段包含表单数据的bean类),当您想要在控制器的单个方法中设置视图名称和模型对象时,使用ModelAndView。 ModelAndView和Model都在内部使用HttpServletRequest,Spring在HttpServletRequest上添加了包装类,使开发人员更容易开发。但有时你需要HttpServletRequest类,当你想在Ajax调用等中捕获查询参数时