跳转结果的方式
ModelAndView对象,根据View的名称和视图解析器跳转到指定页面
- 页面: 视图解析器前缀 + view name + 视图解析器后缀
ModelAndView mv = new ModelAndView(); //封装显示到视图中的数据 mv.addObject("msg", "hello spring mvc annotation"); //视图名 mv.setViewName("hello");
- 页面: 视图解析器前缀 + view name + 视图解析器后缀
通过ServletAPI对象实现
- 不需要配置视图解析器
- 可以使用IO/重定向/转发
public void hello(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.getWriter().print("hello, spring mvc!!"); resp.sendRedirect("index.jsp"); req.getRequestDispatcher("index.jsp").forward(req, resp); }
通过Spring MVC实现转发和重定向(不配置视图解析器)
@RequestMapping("/hello1") public String hello1 () { //转发1 //return "index.jsp"; //转发2 //return "forward:index.jsp"; //重定向 return "redirect:index.jsp"; }
通过Spring MVC实现转发和重定向(配置视图解析器)
@RequestMapping("/hello2")
public String hello2 (){
//转发
//return "hello";
//重定向,不需要视图解析器
return "redirect:hello.do";
}
数据处理
提交数据处理(三种方式)
- 提交数据的域名称需要和处理方法的参数名称一致
- 域名称和参数名不一致的情况下可以通过
@RequestParam
配置参数
- 提交参数为对象时,域名称与属性名称一致即可
- 提交数据的域名称需要和处理方法的参数名称一致
响应数据处理(两种方式)
- 通过
ModelAndView
需要配置视图解析器
- 通过
ModelMap
来实现,不需要视图解析器
- ModelMap需要作为参数传入
- 通过
ModelAndView
和ModelMap
比较- 两者均可以将数据封装到表示层中
ModelAndView
可以指定跳转页面,ModelMap
不可以ModelAndView
需要配置视图解析器,ModelMap
不需要