11.SpringMVC注解式开发-处理器方法的返回值
处理器方法的返回值
使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类型
1.ModelAndView
2.String
3.void
4.自定义类型对象
1.返回ModelAndView
若处理器方法处理完后,需要跳转到其他资源,且又要在跳转的资源间传递数据,此时处理器方法
返回ModelAndView比较好。当然,若要返回ModelAndView,则处理器方法中需要定义ModelAndView对象
在使用时,若该处理器方法只是进行跳转而不传递数据或只是传递数据而不向任何资源跳转(如对页面的Ajax异步响应)
此时若返回ModelAndView,则将总是有一部分多余:要么Model多余,要么View多余。即此时返回ModelAndView 不合适
2.返回String
1.返回内部资源逻辑视图名
2.返回View对象名
// 返回 内部资源逻辑视图名 (若只跳转不返回数据,则可以直接使用 String 作为返回值)
@RequestMapping(value = "/returnString1.do")
public String method() {
return "/WEB-INF/jsp/hello.jsp"; // 注册了 视图解析器 之后,好像就只能去 return 视图对象的
// id名,才能找到对应的视图
} // 返回 外部资源逻辑视图名 (需 注册一个 视图解析器 。并定义id 为 taobao 的视图对象)
@RequestMapping(value = "/returnString2.do")
public String method2() {
return "taobao";
}
3.返回void:
对于处理器方法返回void的应用场景,主要有两种:
1.通过ServletAPI 传递数据并完成跳转
2.AJAX 响应
// 返回 void ,通过 servlet里面的 API 完成数据的处理和跳转
@RequestMapping(value = "/returnVoid.do")
public void method3(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("name", "xzk");
request.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(request, response);
} //返回 void ,通过AJAX 进行异步请求相应,不需要指定返回的视图,会自动返回到请求的页面
@RequestMapping(value = "/ajax.do")
public void method4(String name,int age,HttpServletResponse response) throws IOException {
//处理器对于 AJAX 请求中所提交的参数,可以使用逐个接受的方式,也可以以对象的方式整体接收。只要保证AJAX请求参数与接收对象的属性名称一致
Map<String, Object> map = new HashMap<String, Object>();
//数据存储到 Map 中
map.put("name", name);
map.put("age", age); //将 map 转为 JSON
JSONObject jsonObject = JSONObject.fromObject(map);
//得到JSON字符串
String jsonStr = jsonObject.toString();
//将数据发回客户端(json字符串) PrintWriter out = response.getWriter();
out.print(jsonStr);
out.close();
}
4.返回Object
处理器方法也可以放回Object 对象。但返回的这个Object对象不是作为逻辑视图出现的,
而是作为直接在页面显示的数据出现的
返回Object对象,需要使用 @ResponseBody 注解,将转换后的JSON数据放入到响应体中
环境搭建:1.导入Jar包 2.注册注解驱动
@Controller
@RequestMapping("/test")
public class MyController { // 返回 Obejct ,但返回的这个Object对象
// 不是作为逻辑视图出现的,而是作为直接在页面显示的数据出现的(需要将Object转成JSON给浏览器页面,所以需要 jackson
// jar包)(为什么JSONObject 不可以呢,因为SpringMVC会自动去调jackson,是配套的,而不会自己去调用JSONObject吧,)
// 返回 Object 对象 ,需要使用 @ResponseBody 注解 ,将转换后的JSON数据 放入到响应体 中
@RequestMapping(value = "/ajax.do")
@ResponseBody
public Object method() {
return 99.99;
} //返回字符串对象 (如果里面包含中文,需要使用 produces 来 限制输出结果的类型 )
@RequestMapping(value = "/ajaxString.do",produces="text/html;charset=utf-8")
@ResponseBody
public String method2() {
return "99.99 字符";
} //返回自定义类型对象
@RequestMapping(value = "/ajaxPerson.do")
@ResponseBody
public Person method3() { return new Person("xx",20);
} //返回Map集合
@RequestMapping(value = "/ajaxMap.do")
@ResponseBody
public Map<String,Object> method4() {
Map<String,Object> map = new HashMap<String,Object>();
map.put("person1", new Person("xx1",21));
map.put("person2", new Person("xx2",22)); return map;
} //返回List 集合
@RequestMapping(value = "/ajaxList.do")
@ResponseBody
public List<Person> method5() {
List<Person> list = new ArrayList<Person>();
list.add(new Person("xx1",21));
list.add(new Person("xx2",22));
list.add(new Person("xx3",23));
return list;
}
}
<script type="text/javascript"> $(function() {
/* 按钮的 点击响应事件 */
$("button").click(function() {
$.ajax({
//ajax 默认的请求方式是 GET,get方式 我们的 Spring 字符拦截器拦截不到,所以在这里设置成Post
type:"post",
//url:"test/ajax.do",
//url:"test/ajaxString.do",
//url:"test/ajaxPerson.do",
//url:"test/ajaxMap.do",
url:"test/ajaxList.do",
//后台处理成功后,会自动返回到 这里,(这里交流的方式是通过 json 字符串,给后台的是json,返回来的也是json)
success:function(data){
//遍历这个 List 集合
$(data).each(function(index) {
alert(data[index].username + " " + data[index].age);
});
}
});
});
});
</script>
11.SpringMVC注解式开发-处理器方法的返回值的更多相关文章
- springmvc 注解式开发 处理器方法的返回值
1.返回void -Ajax请求 后台: 前台: 返回object中的数值型: 返回object中的字符串型: 返回object中的自定义类型对象: 返回object中的list: 返回object中 ...
- 《SpringMVC从入门到放肆》十一、SpringMVC注解式开发处理器方法返回值
上两篇我们对处理器方法的参数进行了分别讲解,今天来学习处理器方法的返回值. 一.返回ModelAndView 若处理器方法处理完后,需要跳转到其它资源,且又要在跳转资源之间传递数据,此时处理器方法返回 ...
- 10.SpringMVC注解式开发-处理器方法的参数
1.逐个参数接收 只要保证请求参数名与该请求处理方法的参数名相同即可 // 请求参数名 与该处理器中的请求方法的参数名相同 ,即可接收前台传递过来的参数 public ModelAndView met ...
- 9.SpringMVC注解式开发-处理器的请求映射规则的定义
1.对请求URI的命名空间的定义 @RequestMapping的value属性用于定义所匹配请求的URI.但对于注解在方法上和注解在类上, 其value 属性 所指定的URI,意义是不同的 一个@C ...
- SpingMVC注解式开发-处理器方法的参数(形参request等)
HttpServletRequest HttpServletResponse HttpSession 请求中所携带的请求参数
- 3.2.3 SpringMVC注解式开发
SpringMVC注解式开发 1. 搭建环境 (1) 后端控制器无需实现接口 , 添加相应注解 Controller类添加注解 @Controller //该注解表将当前类交给spring容器管理 @ ...
- 《SpringMVC从入门到放肆》八、SpringMVC注解式开发(基本配置)
上一篇我们结束了配置式开发,配置式开发目前在企业中用的并不是很多,大部分企业都在使用注解式开发,所以今天我们就来学习注解式开发.所谓SpringMVC注解式开发是指,处理器是基于注解的类的开发方式.对 ...
- SpringMVC 注解式开发
SpringMVC的注解式开发是指,处理器是基于注解的类的开发.对于每一个定义的处理器,无需再配置文件中逐个注册,只需在代码中通过对类与方法的注解,便可完成注册.即注解替换是配置文件中对于处理器的注册 ...
- 《SpringMVC从入门到放肆》九、SpringMVC注解式开发(简单参数接收)
上一篇我们学习了注解式开发的配置方式并写了一个小Demo跑起来.今天我们来学习注解开发的参数接收.处理器方法中的常用参数有五类,这些参数会在系统调用时由系统自动赋值,即程序员可以在方法中直接使用.具体 ...
随机推荐
- tomcat配置使用log4j管理日志
从tomcat官网下载和tomcat对应的tomcat-juli.jar和tomcat-juli-adapters.jar,从log4j官网下载log4j的jar包(我用的是log4j-1.2.17. ...
- MyEclipse环境的项目改为在Eclipse中运行爬坑记【我】
新检出一个web项目,同事都是运行在MyEclipse中的,我用Eclipse启动, 1.首先是许多jar包报错: 处理方法为 remove掉,然后 选 WEB-INF 下的所有 jar 重新添加 ...
- Java NIO 学习笔记 读写结合补充
小练习:nio读写文件,将fileread中的内容读取到filewrite中 try { //创建输入通道 FileInputStream fis = new FileInputStream(&quo ...
- JAVA 基础编程练习题35 【程序 35 最大最小交换】
35 [程序 35 最大最小交换] 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组. package cskaoyan; public class cskaoyan35 { ...
- 安装“Microsoft SQL Server 2014 Management Objects”时报错"Error Writing to file: Microsoft.SqlServer.XEvent.Linq.dll."
问题: 当安装的软件依赖Microsoft SQL Server 2014 Management Objects时,会把这个组件打进安装包里,但是在服务器上安装时却报如下错误: “Error Writ ...
- redis管理工具rdm安装;另一个管理工具medis
安装: brew cask install rdm 开源安装 http://docs.redisdesktop.com/en/latest/install/ 说明 直接从官网下载也可以,不过是收费的 ...
- go语言简单介绍,增强了解
1. Go语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同.但是它通过接口(interface)的概念来实现多态性.Go语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之 ...
- 最新 小米java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.小米等10家互联网公司的校招Offer,因为某些自身原因最终选择了小米.6.7月主要是做系统复习.项目复盘.LeetCode ...
- [转帖]linux各种IPC机制
linux各种IPC机制 docker中的资源隔离,一种就是IPC的隔离.IPC是进程间通信. 下面的文章转载自https://blog.csdn.net/yyq_9623/article/detai ...
- hanlp分词工具应用案例:商品图自动推荐功能的应用
本篇分享一个hanlp分词工具应用的案例,简单来说就是做一图库,让商家轻松方便的配置商品的图片,最好是可以一键完成配置的. 先看一下效果图吧: 商品单个推荐效果:匹配度高的放在最前面 这个想法很好,那 ...