有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java spring mvc控制器以不同的方式映射

这两种类型的@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;
    }

共 (1) 个答案

  1. # 1 楼答案

    区别主要是句法上的。还要注意,通常将ModelAndView声明为方法参数,而不是实例化它

    Model作为参数+String查看返回值优点:

    • 更容易设置模型属性(如果您愿意,可以减少违反德米特定律的情况)
    • 更容易返回视图值(只需返回字符串)

    ModelAndView作为返回值&;param pros:

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

    另见: