本篇内容介绍了“Spring MVC数据响应如何处理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1. 内置视图解析器
Spring MVC 中的视图解析器负责解析视图,可以通过在配置文件中定义一个ViewResolver来配置视图解析器,配置如下:
<!--默认的内置视图解析器--><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--设置前缀--> <property name="prefix" value="/WEB-INF/templates"/> <!--设置后缀--> <property name="suffix" value=".html"/></bean>
定义了一个id为viewResolver的视图解析器,并设置了前缀后缀,这样设置的好处就是简化方法中定义的路径。在访问视图解析器是就会自动的增加前缀和后缀。
2. 使用原生servlet的对象传递数据
HttpServletRequest:通过request对象获取请求信息
控制器方法:
//使用servlet传递数据@RequestMapping("/testServlet")public String testRequestByServletAPI(HttpServletRequest request){ request.setAttribute("test","hello,servlet"); return "success";}
3. 使用ModelAndView对象传输数据
当使用modelAndView对象的时候,返回值的类型也必须是ModelAndView,可以将要跳转的页面设置成view的名称,来完成跳转的功能,同时数据也是放到request域中。
使用方式:
创建ModelAndView对象
向模型对象中添加数据
设置逻辑视图名
返回ModelAndView对象
控制器方法:
@RequestMapping("/testModelAndView") public ModelAndView testModelAndView(){ //创建ModelAndView对象 ModelAndView mav = new ModelAndView(); //处理模型数据,即向请求域request共享数据 mav.addObject("test","Hello ModelAndView"); //设置视图名称 mav.setViewName("success"); return mav; }
ModelAndView对象的作用:
将控制器方法中处理的结果数据传递到结果页面,也就是把在结果页面上需要的数据放到ModelAndView对象中即可,其作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。
4. 使用Model、Map、ModelMap传输数据
在SpringMVC中除了可以使用原生servlet的对象传递数据之外,还有什么其他的方式呢?
可以在方法的参数上传入Model,ModelMap,Map类型,此时都能够将数据传送回页面。
控制器方法:
@RequestMapping("/testModel")public String testModel(Model model){ model.addAttribute("test","Hello Model"); return "success"; } @RequestMapping("/testMap") public String testMap(Map<String,Object> map){ map.put("test","Hello Map"); return "success"; } @RequestMapping("/testModelMap") public String testModelMap(ModelMap modelMap){ modelMap.addAttribute("test","hello modelmap"); return "success"; }
如果方法的入参为Map,Model和ModelMap类型,Spring MVC会将隐含模型的引用传递给这些入参。在方法体内,开发者可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据,作用类似于request对象的setAttribute方法的作用: 用来在一个请求过程中传递处理的数据。
三者之间的关系:
Map为原生的储存键值的对象,里面很多的方法可以使用;
Model 只有寥寥几个方法只适合用于储存数据,简化了新手对于Model对象的操作和理解;
ModelMap 继承了 LinkedMap ,除了实现了自身的一些方法,同样的继承 LinkedMap 的方法和特性;
Map、Model、ModelMap的底层都是使用BindingAwareModelMap。
Map、Model和ModelMap返回的是地址路径
5. 使用session传输数据
HttpSession:通过session对象得到session中存储的对象
控制器方法
//向session域共享数据@RequestMapping("/testSession") public String testSession(HttpSession httpSession){ httpSession.setAttribute("testSessionScope","hello session"); return "success"; } //向application域共享数据 @RequestMapping("/testApplication") public String testApplication(HttpSession session){ ServletContext servletContext = session.getServletContext(); servletContext.setAttribute("testApplicationScope","hello application"); return "success"; }
“Spring MVC数据响应如何处理”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!