如何在Spring 4上正确使用模型?

时间:2015-05-11 17:20:15

标签: java spring spring-mvc

我是使用Spring的MVC的新手(但我已经在其他php框架上使用了几年)。

我有很多疑问,我阅读了弹簧信息并且似乎是正确的...然后我检查了这个教程http://javahash.com/spring-4-mvc-hello-world-tutorial-full-example/并且它可以工作,但是在控制器部分,有一个我不明白的代码,我想知道如何正确使用Spring上的模型。

据我所知,模型应该调用对db的调用,那么,服务(接口和实现)和DTO呢?

在这个例子中他们做了这样的事情:

@Controller
public class HelloWorldController { 

    @RequestMapping("/hello")
    public String hello(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) {
        model.addAttribute("name", name);
        return "helloworld";
    }

}

它接收一个模型作为参数......我敢打赌,如果有的话,Spring会使用默认的,如果我想添加更多的交互,让我们说,指定一个模型来调用db?知道我怎么能这样做吗?

如果我想添加服务......如果有人能帮助我理解,我对它有点无能为力......

提前致谢

2 个答案:

答案 0 :(得分:1)

此模型对象由spring注入,其内容将发送到视图。 您可以在http://docs.spring.io/spring-framework/docs/current/javadoc-api/查看模型界面的文档。 如果您想访问视图中的某个对象,可以使用 model.addAttribute(object)。 我想你可以阅读The IoC Container文档来了解spring是如何工作的。

答案 1 :(得分:1)

Model是一个表示视图所需数据的映射。它可以包含一个或多个实体,简单对象,字符串或任何您想要的内容。

MVC不需要使用数据库。该模型不“调用数据库”。您可以将存储库注入控制器,以将数据从数据库加载到模型中。

@Controller
@RequestMapping("/foo")
public class FooController {

  @Autowired
  private FooRepository fooRepository;

  @RequestMapping
  String getFoos(Model model) {

    List<Foo> foos = fooRepository.findAll();
    model.addAttribute("foos", foos);

    model.addAttribute("someOtherDataYourViewNeeds", "bar");

    return "foo/list";

  }

}