返回ModelAndView的方式
@RequestMapping(value = "/list", method = RequestMethod.GET)
public ModelAndView list(
@UserAuth UserAuth user,
ModelAndView mav) {
if (!user.isAuthenticated()) {
mav.setViewName("redirect:http://www.test.com/login.jsp");
return mav;
}
mav.setViewName("list");
mav.addObject("articles", listService.getLists());
return mav;
}
Run Code Online (Sandbox Code Playgroud)
返回String的方式
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(
@UserAuth UserAuth user,
Model model) {
if (!user.isAuthenticated()) {
return "redirect:http://www.test.com/login.jsp";
}
model.addAttribute("articles", listService.getLists());
return "list";
}
Run Code Online (Sandbox Code Playgroud)
这些工作相同.哪个更好?有什么区别?
我没有太多的Spring MVC经验,我有以下关于控制器方法可以返回的valids返回类型的内容.
所以我知道用户生成一个由DispatcherServlet接收和处理的HttpRequest,它将此请求分派给特定的控制器类.
控制器类是这样的:
@Controller
public class AccountController {
@RequestMapping("/showAccount")
public String show(@RequestParam("entityId") long id, Model model) {
...
}
.......................................
.......................................
.......................................
}
Run Code Online (Sandbox Code Playgroud)
所以我知道每个方法处理一个特定的请求,并且处理的请求由@RequestMapping注释指定.
我也知道该方法返回一个String对象,该对象是逻辑视图名称(然后由视图解析器解析以呈现视图)
所以,在这个阶段,我认为控制器类的方法只返回String对象.但我不确定.也许像这样的方法也可以返回一些不同类型的对象?