Gir*_*ane 30 spring spring-mvc
我见过控制器返回一个String(表示视图)的例子
@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
Owner owner = ownerService.findOwner(ownerId);
model.addAttribute("owner", owner);
return "displayOwner"
}
Run Code Online (Sandbox Code Playgroud)
我还看到了控制器返回"ModelAndView"对象类型的示例
public ModelAndView helloWorld() {
ModelAndView mav = new ModelAndView();
mav.setViewName("helloWorld");
mav.addObject("message", "Hello World!");
return mav;
}
Run Code Online (Sandbox Code Playgroud)
两者之间有什么区别,我应该使用哪一个?无论哪种方式,我都可以解决我的观点.
Tho*_*mas 18
这是相同的逻辑,但它不是春天的相同版本.
ModelAndView对象是处理模型和视图的spring 2.x方法.在您给出的示例中,modelandview对象将加载"helloWorld"视图(取决于您的模板引擎可能是helloWorld.jsp,或helloWorld.html,...),模型中包含一个数据"消息".
另一种方式是spring 3.x方式.您可以编写与helloworld完全相同的示例.
@RequestMapping(value="/helloWorld", method=RequestMethod.GET)
public String helloWorld(Model model) {
model.addAttribute("message", "Hello World!");
return "helloWorld";
}
Run Code Online (Sandbox Code Playgroud)
该模型可根据要求自动填充.
我们可以简化这种表示法,因为url映射"helloWorld"直接是视图名称.
@RequestMapping(value="/helloWorld", method=RequestMethod.GET)
public void helloWorld(Model model) {
model.addAttribute("message", "Hello World!");
}
Run Code Online (Sandbox Code Playgroud)
helloWorld视图将自动加载
Ada*_*zyk 16
如果我们谈论的是MVC 3,那么两者都是正确的.但直接返回ModelAndView是旧的方式,而且更加口头.
如果你只返回一个字符串(没有@ResponseBody,这是其他东西),这个字符串被视为视图名称,并且spring将其推送到视图解析器 - 所以,你不必担心(至少,当你在编写控制器时) ,你将使用什么类型的视图渲染器(让它成为jsp或速度,没关系).您只传播Model实例,然后返回提示如何处理它.适当的ModelAndView对象稍后在内部由字符串生成.
通常,spring 3为参数和返回类型提供了更大的灵活性(请参阅Spring文档中的定义@RequestMapping处理程序方法部分).
在Spring MVC中,如果要渲染jsp页面,则应返回ModelAndView
例如:
@RequestMapping(value="/index.html", method=RequestMethod.GET)
public ModelAndView indexView(){
ModelAndView mv = new ModelAndView("index");
return mv;
}
Run Code Online (Sandbox Code Playgroud)
当您点击/index.html时,此函数将返回index.jsp
此外,您可以使用@ResponseBody注释和序列化程序返回任何JSON或XML对象.
例如:
@RequestMapping(value="/getStudent.do",method=RequestMethod.POST)
@ResponseBody
public List<Student> getStudent(@RequestParam("studentId") String id){
List<Student> students = daoService.getStudent(id);
return students;
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,您将返回List作为JSON,以防您启用Jackson序列化程序.为了使您能够将以下内容添加到Spring XML中:
<context:annotation-config/>
Run Code Online (Sandbox Code Playgroud)
而Serializer本身:
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter"/>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.
| 归档时间: |
|
| 查看次数: |
62073 次 |
| 最近记录: |