网站经营跟备案不符,网站 邮件系统建设招标,网站建设与制作就业前景,北京新机场建设网站一、引子
我们在上一篇文章SpringMVC-组件解析里介绍了SpringMVC框架执行一个请求的过程#xff0c;并演示了快速使用Controller承接请求。本篇我们将深入介绍SpringMVC执行请求时#xff0c;如何响应客户端。
二、响应类型
SpringMVC的数据响应方式主要分为两类#xff…一、引子
我们在上一篇文章SpringMVC-组件解析里介绍了SpringMVC框架执行一个请求的过程并演示了快速使用Controller承接请求。本篇我们将深入介绍SpringMVC执行请求时如何响应客户端。
二、响应类型
SpringMVC的数据响应方式主要分为两类1页面跳转2返回数据。其中对于1页面跳转又包括直接返回字符串与通过返回ModelAndView对象。对于2返回数据又包括返回普通的字符串与返回集合/对象。
三、页面跳转
页面跳转都是前后端不分离的做法所以这部分我们简单介绍一下。
1返回字符串
返回字符串的方式自我们介绍SpringMVC以来便一直是以这种方式来演示的所以我们在这里就不再重复演示了。
2返回ModelAndView
我们先来做一个简单的回顾读者是否还记得在JavaWeb阶段我们声明一个类然后继承HttpServlet。在重写doPost或doGet方法时形参为HttpServletRequest req, HttpServletResponse resp。我们提到doPost与doGet方法是由谁来调用呢参数req与resp又是如何传入方法的呢。如果忘记了可以回顾Servlet执行流程与Servlet体系结构两篇文章。答案是由Web容器如Tomcat来调用与传参的。
在SpringMVC中也是我们可以在Controller的方法中传入ModelAndView对象Model对象甚至是HttpServletRequest、HttpServletResponse等类型的对象。SpringMVC都会在调用时为你传入这些对象。示例如下 RequestMapping(/model)public ModelAndView model(ModelAndView modelAndView) {modelAndView.setViewName(success);return modelAndView;}
又如 RequestMapping(/http)public String model(HttpServletRequest httpServletRequest) {System.out.println(httpServletRequest);httpServletRequest.setAttribute(username, zhangsan);return success;}
四、回写数据
回写数据需要用ResponseBody注解修饰类或方法表明不进行视图跳转而是需要返回数据。
1回写普通字符串 RequestMapping(/return)ResponseBodypublic String returnData() {return return;}
2回写对象
返回对象数据需要JSON序列化还需要在处理器适配器中配置数据转换器
添加依赖 !-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactIdversion2.9.10/version/dependency!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.databind/jackson-databind --dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.10/version/dependency
是否还记得在SpringMVC-组件解析中介绍的处理器适配器HandlerAdapter在其中配置一个属性配置数据转换器。这有点类似于在视图解析器配置视图的前后缀。请读者回顾SpringMVC-组件解析 bean classorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapterproperty namemessageConverterslistbean classorg.springframework.http.converter.json.MappingJackson2HttpMessageConverter//list/property/bean
Controller中方法 RequestMapping(/user)ResponseBodypublic User returnObject() {User user new User();user.setName(zhangsan);user.setAge(23);return user;}
五、总结
至此我们完成了SpringMVC-响应的介绍请读者继续关注笔者将在下一篇文章中为大家介绍SpringMVC-请求的介绍。届时将可以利用SpringMVC框架完成大部分的请求与响应啦