前言:
此刻朋友们对“ajax跳转到指定控制器”大约比较注意,姐妹们都需要知道一些“ajax跳转到指定控制器”的相关资讯。那么小编同时在网摘上收集了一些对于“ajax跳转到指定控制器””的相关知识,希望同学们能喜欢,小伙伴们快快来学习一下吧!控制器方法的返回值表示本次请求的处理结果,返回值有ModelAndView, String, void , Object;
1、返回值:ModelAndView数据和视图
请求的结果有数据和视图,使用ModelAndView最方便数据:存放request作用域。视图:执行forward转发操作
2、String 视图
1、框架对返回值是String,执行的是forward转发操作。2、视图可以表示为完整视图路径, 或者视图的逻辑名称@RequestMapping(value ="/return-string-view.do")public String doReturnStringView1(HttpServletRequest request,String name, Integer age) { System.out.println("执行了MyController的doReturnStringView1方法name="); //返回结果,forward,转发到show.jsp //逻辑名称, 需要配置视图解析器 return "show";}@RequestMapping(value ="/return-string-view2.do")public String doReturnStringView2(HttpServletRequest request,String name, Integer age) { System.out.println("执行了MyController的doReturnStringView2方法name="); //完整视图路径,不能使用视图解析器 return "/WEB-INF/view/show.jsp";}
3、void 没有数据和视图
void: 没有数据和视图, 可以使用HttpServletResponse对象输出数据,响应ajax请求。
/** * 控制器方法返回是void ,响应ajax请求。 使用HttpServletResponse输出数据 */ @RequestMapping("/return-void-ajax.do") public void returnVoidAjax(HttpServletResponse response,String name,Integer age) throws IOException { System.out.println("处理void返回类型, name="+name+",age="+age); //调用service得到结果对象 Student student = new Student(); student.setName(name+"同学"); student.setAge(age); //把对象转为json ObjectMapper om = new ObjectMapper(); String json = om.writeValueAsString(student); System.out.println("服务器端对象转为的json==="+json); //输出json,响应ajax response.setContentType("application/json;charset=utf-8"); PrintWriter pw = response.getWriter(); pw.println(json); pw.flush(); pw.close(); }
4、Object
返回对象Object ,可以是List, Student , Map ,String ,Integer.... 这些都是数据, 而ajax请求需要的就是数据。 在ajax请求中,一般需要从服务器返回的是json格式的数据, 经常要处理java对象到json的转换。而且还需要输出数据响应ajax请求。 框架提供了处理 java对象到json转换, 还是数据输出工作。
/** * 控制器方法返回Student--json * application/json;charset=utf-8 * * 框架的处理模式: * 1. 框架根据控制器方法的返回值类型, 找到HttpMessageConverter接口的实现类。 * 最后找到的是MappingJackson2HttpMessageConverter. * * 2.使用实现类MappingJackson2HttpMessageConverter.执行他的write()方法,把 * student对象转为了json格式的数据 * * 3.框架使用@ResponseBody注解,把2中的json输出给浏览器。 * * 设置的content-type: application/json;charset=utf-8 */ @RequestMapping("/doStudentJson.do") @ResponseBody public Student doAjaxJson(String name,Integer age){ System.out.println("控制器方法返回自定义对象Student,转为json。"+name+"=="+age); Student student = new Student(); student.setName("同学"+name); student.setAge(age); return student; }
5、控制器方法的返回值是String那么默认情况下是代表的视图,我们有办法将它的返回值改为数据吗?
在控制器方法的上面添加@ResponseBody
/** * 控制器方法返回String--数据 * * 区分返回值String是数据还是视图。 * 1.方法上面有@ReponseBody注解就是数据 * 2.方法上面没有@ResponseBody注解就是视图 * * * Content-Type: text/plain;charset=ISO-8859-1 * * 解决中文,需要使用@RequestMapping的produces属性。 * produces属性: 指定content-type的值 * * * 框架处理String返回值 * 1. 框架使用的StringHttpMessageConverter * 2. StringHttpMessageConverter使用的是text/plain;charset=ISO-8859-1。 * * * content-type: 告诉浏览器, 怎么显示服务器返回的数据 */ @RequestMapping(value = "/doStringData.do",produces = "text/plain;charset=utf-8") @ResponseBody public String doStringData(String name,Integer age){ System.out.println("控制器方法返回String,是数据"); return "Hello SpringMVC注解式开发"; }
6、@ResponseBody注解的作用:
@ResponseBody注解作用等于以下代码: //输出json,响应ajax response.setContentType("application/json;charset=utf-8"); PrintWriter pw = response.getWriter(); pw.println(json); pw.flush(); pw.close();
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #ajax跳转到指定控制器