Java for Web学习笔记(六二):Controller替代Servlet(4)方法返回值
来源:互联网 发布:vb format 日期格式 编辑:程序博客网 时间:2024/06/05 03:47
这次只是预热,将在下一次笔记中更具体的讲述。
返回值和HTTP响应有关。void表示方法手动处理了响应,Spring不需要再进行其他处理。然而可以回复其他类型,有时还带有annotation,告知Spring如何响应。这些都在以后学习,先粗略看看。
- Model类型
- 返回Map<String, Object>、ModelMap或者Model
- Spring通过配置的org.springframework.web.servlet.RequestToViewNameTranslator确定使用哪个view
- View类型
- 返回一个指定的view来渲染响应,Spring提供了数十个View,我们也可以自定义。Controller可以返回String指出View的名字
- 方法可以返回ModelAndView,可以返回View和和model类型,或者view名字和model类型。
- Response Body Entities
- 返回 HttpEntity<?>或org.springframework.http.ResponseEntity<?>(是HttpEntity的继承),Spring将根据协商的Content-Type,使用适当的转换器来处理响应。例子如下
@RequestMapping(value="user/{userId}", method=RequestMethod.GET)public ResponseEntity<User> getUser(@PathVariable("userId") long userId){ User user = this.userService.getUser(id); return new ResponseEntity<User>(user, HttpStatus.OK);}//上面等同与下面的写法@RequestMapping(value="user/{userId}", method=RequestMethod.GET)@ResponseBody@ResponseStatus(HttpStatus.OK)public User getUser(@PathVariable("userId") long userId){ return this.userService.getUser(id);}
- 之前我们使用了@ResponseBody,返回String表示直接作为响应的body,而不使用view。
- 任意类型
- 对于其他类型,Spring将视为Model的属性。
//第一个例子,model的属性名字为userAccount(采用camelCase方式,也就是第一个单词首字母小写,其余的大写)@RequestMapping("user/{userId}")public UserAccount viewUser(@PathVariable("userId") long userId){ ... }//第二个例子,定义了@ModelAttribute,也就是指定model的属性名字为user@RequestMapping("user/{userId}")@ModelAttribute("user")public UserAccount viewUser(@PathVariable("userId") long userId){ ... }
- 异步类型
- 返回java.util.concurrent.Callable<?>或者org.springframework.web.context.request.async.DeferredResult<?>将采用异步处理,在其他线程处理Callable或者DeferredResult。
- 仍可以使用@ResponseBody, @ResponseStatus, @ModelAttribute。
阅读全文
0 0
- Java for Web学习笔记(六二):Controller替代Servlet(4)方法返回值
- Java for Web学习笔记(六三):Controller替代Servlet(5)Model和View
- Java for Web学习笔记(六十):Controller替代Servlet(2)方法中的参数
- Java for Web学习笔记(六五):Controller替代Servlet(7)上传和下载(自定义View)
- Java for Web学习笔记(五九):Controller替代Servlet(1)请求匹配
- Java for Web学习笔记(六一):Controller替代Servlet(3)body映射到参数
- Java for Web学习笔记(六四):Controller替代Servlet(6)Spring Form Tag
- Java for Web学习笔记(六):Servlet(4)HttpServletResponse
- Java Web 学习笔记(二)servlet
- Java for Web学习笔记(二六):JSTL(2)Core Tag(上)
- Java for Web学习笔记(八二):RESTful(2)返回错误信息
- Java for Web学习笔记(二):Web Containers
- Java for Web学习笔记(八三):RESTful(3)Controller
- Java for Web学习笔记(三六):自定义tag(4)自定义Tag文件
- Java for Web学习笔记(六九):Service和Repository(4)Principal
- Java for Web学习笔记(七六):国际化i18n(4)其他
- Java for Web学习笔记(六六):Service和Repository(1)抽象分层
- Java Servlet学习笔记(六)Servlet Cookies处理
- https原理通俗了解
- Caysn打印机IOS平台打印开发包及示例程序_20170610
- Java数据结构与算法---链表的实现
- Solr安装
- leetcode 118. Pascal's Triangle
- Java for Web学习笔记(六二):Controller替代Servlet(4)方法返回值
- DATA WAREHOUSE
- 死锁问题
- Jquery AJAX 跨域POST 请求
- 结构型模式之桥接模式实现
- 开发工具
- Android中view的onTouch&onClick事件分发机制详解
- postgresql基本使用语句(持续更新)
- tensorflow55 《TensorFlow技术解析与实战》16 TensorFlow Debugger