【问题标题】:spring mvc controller mapping different waysspring mvc控制器映射不同的方式
【发布时间】:2016-04-01 10:30:07
【问题描述】:

这两种@RequestMapping有什么区别? (一般情况下,不包括传递给页面和映射页面的参数), 正确的方法是返回模型或页面?

@RequestMapping("/")
    public String index(Model model) {
        model.addAttribute("categories", myService.listGroups());
        return "index";
    }

@RequestMapping(value = {"/", "/helloworld**"}, method = {RequestMethod.GET})
    public ModelAndView welcomePage() {
        ModelAndView model = new ModelAndView();
        model.addObject("title", "Spring Security Tutorial");
        model.addObject("message", "Welcome Page !");
        model.setViewName("helloworld");
        return model;
    }

【问题讨论】:

  • 除了 url,第一个适用于 POST、PUT 等,第二个仅适用于 GET

标签: java spring spring-mvc


【解决方案1】:

区别主要在于句法。另请注意,通常将ModelAndView 声明为方法参数,而不是实例化它。

Model as param + String 查看返回值优点:

  • 更容易设置模型属性(如果您关心的话,可以减少违反德米特法则的情况)
  • 更容易返回视图值(只需返回一个字符串)

ModelAndView 作为返回值和参数优点:

  • 将这两者封装在一个对象中,这可以让您在某些情况下更好地组合方法(可能是链处理程序方法?)
  • 允许返回非字符串视图,例如RedirectView(例如,与字符串视图相比,它允许您设置准确的 3** HTTP 响应状态,而无需接触甚至声明 HTTP Servlet 响应参数: Set HTTP status code for redirect when returning a String in a Spring 3 controller)

另见:

【讨论】:

    猜你喜欢
    • 2017-04-07
    • 2016-09-16
    • 2020-01-16
    • 1970-01-01
    • 2018-03-27
    • 2015-07-09
    • 2016-07-04
    • 2018-04-07
    • 2012-05-30
    相关资源
    最近更新 更多