第一节ssm+maven搭建及扩展修改(一.搭建基础架构)
第二节ssm+maven搭建及扩展修改(二.架构页面除去jsp采用html5)
之前用的老式的架构,不是前后端分离,这里,我想大家都能看到之前的代码,它的返回类型是ModelAndView(Model、ModelMap和ModelAndView),当然你可以去封装它。
其实,前后端分离的区别就在于在controller层的接口类上添加了@ResponseBody
String 指定返回的视图页面名称,结合设置的返回地址路径加上页面名称后缀即可访问到。
注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面。 例如:
@RequestMapping(value = "/something", method = RequestMethod.GET)
@ResponseBody
public String helloWorld() {
return"Hello World";
}
上面的结果会将文本"Hello World "直接写到http响应流。
@RequestMapping("/welcome")
public String welcomeHandler() {
return"center";
}
对应的逻辑视图名为“center”,URL= prefix前缀+视图名称 +suffix后缀组成。
void 如果返回值为空,则响应的视图页面对应为访问地址
@RequestMapping("/welcome")
publicvoid welcomeHandler() {}
此例对应的逻辑视图名为"welcome"。
当然,只是写法不同,架包什么的都不用变,在前后台分离架构里,html与服务不在同一工程,那么ModelAndView的指定到目标页面的写法是无法使用的,因此,前后台分离的写法,页面之间跳转均是跳转后通过携带的数据或比如id查询后得到的数据再展示。而,前后台不分离的可以通过请求后ModelAndView内部指定目标页面和数据去展示。
在当前,流行的前后台分离写法里,通常都采用@RestController定义controller层,省去了每个请求的接口都写@ResponseBody的麻烦。
package org.test.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.test.bean.Person;
import org.test.service.IPersonService;
@RestController
@RequestMapping("/personController")
public class PersonController {
private IPersonService personService;
public IPersonService getPersonService() {
return personService;
}
@Autowired
public void setPersonService(IPersonService personService) {
this.personService = personService;
}
}
如感兴趣,可以看看Model、ModelMap和ModelAndView之间的区别及一些用法,比如页面跳转及携带参数,这部分,将会在java面试(Model、ModelMap和ModelAndView之间的区别及一些用法)这一栏中追加写好,敬请期待。谢谢!!!