spring mvc响应数据方式
目录
- 1. 页面跳转
- 2. 回写数据@ResponseBody注解
1. 页面跳转
- 转发,如果有视图解析器,要写全路径/pages/success.jsp
@RequestMapping("/save4")
public String save4(HttpServletRequest req) {req.setAttribute("key", "value 4");return "forward:/pages/success.jsp";
}
- 重定向
@RequestMapping(value = "/redirect")
public String testRedirect() {return "redirect:/pages/success.jsp";
}
- 视图解析器(自动加上前后缀)
https://editor.csdn.net/md/?articleId=108309962 - ModelAndView对象
- 返回ModelAndView对象
/*** 页面跳转之* @return 返回视图模型对象*/@RequestMapping(value = "/save1")public ModelAndView save1() {System.out.println("save running..");ModelAndView modelAndView = new ModelAndView();// 视图对象用来展示数据 跳转到success页面modelAndView.setViewName("success");// 模型对象用来封装对象modelAndView.addObject("key", "i am value");return modelAndView;}
- ModelAndView 作为形参,springmvc框架自动注入
/*** model and view 作为参数, 返回ModelAndView* @param modelAndView* @return*/@RequestMapping("/save2")public ModelAndView save2(ModelAndView modelAndView) {modelAndView.setViewName("success");modelAndView.addObject("key", "i am value 1");return modelAndView;}
- model作为形参
/*** model作为参数 返回视图可* @param model* @return*/@RequestMapping("/save3")public String save3(Model model) {model.addAttribute("key", "i am value 3");return "success";}
2. 回写数据@ResponseBody注解
@ResponseBody注解简单介绍,用来返回字符串,对象。1. @ResponseBody 告知spring mvc框架,该方法,不进行视图跳转,直接进行视图响应2. 回写json,Jackson,(jackson-core, jackson-databind, jackson-annotations)3. 回写对象,或者集合, 封装对象或者转换json的步骤,需要繁琐的配置。RequestMappingHandlerAdapter注入集合。。4. 使用<mvc:annotation-driven/>自动集成转换json
- 回写字符串
@RequestMapping("/save5")@ResponseBody // 告知spring mvc框架 回写字符串,而不是视图跳转public String save5() {return "hello world !";}
- 返回json字符串,使用Jackson,导入pom
@RequestMapping("/save6")@ResponseBodypublic String save6() {User user = new User();user.setName("jack");user.setAge(18);ObjectMapper objectMapper = new ObjectMapper();String str = null;try {str = objectMapper.writeValueAsString(user);} catch (JsonProcessingException e) {e.printStackTrace();}return str;}
- 通过mvc复杂配置,或者添加注解驱动
/*** 返回用户对象* @return mvc框架通过配置帮你转为json格式 / mvc注解驱动*/@RequestMapping(value = "/save7")@ResponseBodypublic User save7() {User user = new User();user.setName("bitqian");user.setAge(19);return user;}
- 处理器映射器注入Jackson
<!-- 配置处理器映射器 用于json等的转换--><bean id="requestMappingHandlerAdapter"class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><property name="messageConverters"><list><!-- 可配置 多个 消息转换器--><!-- 配置Jackson转换器--><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/></list></property></bean>
- 或者更好的注解驱动代替上面
<mvc:annotation-driven/>
spring mvc响应数据方式相关推荐
- Spring MVC 响应数据、作用域对象
紧耦方式完成响应: 使用:在单元方法的形参中声明request对象或者response对象,使用request对象完成转发,使用response对象完成直接响应或者重定向. 注意:使用这两种方式,单元 ...
- Spring MVC JSON数据交互(附带实例)
Spring MVC 在数据绑定的过程中需要对传递数据的格式和类型进行转换,它既可以转换 String 等类型的数据,也可以转换 JSON 等其他类型的数据.本节将针对 Spring MVC 中 JS ...
- spring mvc 响应处理post请求和get请求 测试
**********web.xml********************** <?xml version="1.0" encoding="UTF-8"? ...
- Spring mvc 响应字符串
@RequestMapping("/test") public void testVoid(HttpServletRequest request, HttpServletRespo ...
- 【Spring-MVC基础】由浅入深-Spring MVC
本文致力于由浅入深的去介绍,使用Spring MVC:细节比较多,希望能对正在观看的你有所帮助! 博主水平有限,难免存在缺陷和错误,欢迎大佬的指出与补充,谢谢! 0x01.认识Spring MVC 1 ...
- Spring MVC【入门】就这一篇
MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1: 出现的弊端: JSP 和 Ja ...
- Spring MVC和REST中@RestController和@Controller注释之间的区别
Spring MVC中的@RestController注释不过是@Controller和@ResponseBody注释的组合. 它已添加到Spring 4.0中,以简化在Spring框架中RESTfu ...
- 14.6 Spring MVC 测试框架(翻译)
14.6 Spring MVC 测试框架(每天翻译一点点) Spring MVC测试框架对 Spring MVC 代码提供一流的测试支持 ,它拥有一个 fluent API ,可以和JUnit, Te ...
- Spring MVC 实践 - Base
Spring MVC 实践 标签 : Java与Web Spring Web MVC Spring-Web-MVC是一种基于请求驱动的轻量级Web-MVC设计模式框架, Spring MVC使用MVC ...
最新文章
- 6 Java Shell排序
- P1603 斯诺登的密码
- form表单中method的get和post区别
- Mybatis(三) 映射文件详解
- 深入剖析分布式监控 CAT —— 消息文件存储
- Android PorterDuff.Mode
- 内中断---汇编学习笔记
- CF 295A - Greg and Array 差分數列
- 第五六七章(PTA复习)
- Hadoop的Mapreduce中Mapper的key和Map的key的区别
- 给程序员的忠告:九种不值得你追随的老板
- VMware下Ubuntu图形界面切换到命令行终端模式
- golang中apend_golang的append()为什么不会影响slice的地址?
- Windows核心编程_静态编译和动态编译的区别
- EMD 加 时频分析
- 结构光三维重建阶段性总结
- android 后台监听按键,Android监听home键的方法详解
- 线性动态规划-文件排版
- python pdfminer的功能_python:pdfminer接口测试
- 5.1 Runner构建优化