SpringMVC的数据响应和结果视图
一、返回值分类
1.字符串
1) controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。
@RequestMapping("/testString") public String testString(Model model){ System.out.println("testString-----"); //模拟从数据库中查出的User对象 User user =new User(); user.setUsername("张三"); user.setPassword("123"); user.setAge(20); model.addAttribute("user",user); return "success"; }
<!--在success.jsp页面获取数据--> ${user.username}
2.void
@RequestMapping("/testVoid") public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("testVoid-----"); //1.转发 //request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response); //2.重定向 // response.sendRedirect(request.getContextPath()+"/index.jsp"); //设置中文乱码 response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); //3.直接响应 response.getWriter().write("你好"); return; }
3.ModelAndView
1) ModelAndView 是 SpringMVC 为我们提供的一个对象,该对象也可以用作控制器方法的返回值
2)使用示例
@RequestMapping("/testModelAndView") public ModelAndView testModelAndView(){ //创建testModelAndView ModelAndView mv =new ModelAndView(); System.out.println("testModelAndView-----"); //模拟从数据库中查出的User对象 User user =new User(); user.setUsername("王五"); user.setPassword("123"); user.setAge(20); //把user对象存储到mv对象中,也会把user对象存到request域对象 mv.addObject("user",user); //跳转到那个页面 mv.setViewName("success"); return mv; }
//获取数据
${user.username}
4.转发和重定向
1)使用示例
@RequestMapping("/testForwardOrRedirect") public String testForwardOrRedirect(Model model){ System.out.println("testForwardOrRedirect-----"); //1.请求转发 //return "forward:/WEB-INF/pages/success.jsp"; //2.重定向 return "redirect:/index.jsp"; }
5.ResponseBody响应josn数据
1)使用说明
作用:该注解用于将 Controller 的方法返回的对象,通过 HttpMessageConverter 接口转换为指定格式的 数据如:json,xml 等,通过 Response 响应给客户端 。
2)使用示例
在springmvc中加入配置,不拦截静态资源
<!--配置使得前端控制器,不拦截静态资源--> <!-- <mvc:resources mapping="/css/**" location="/css/"/>--> <!-- <mvc:resources mapping="/images/**" location="/images/"/>--> <mvc:resources location="/js/" mapping="/js/**"/>
<script> // 页面加载,绑定单击事件 $(function(){ $("#btn").click(function(){ alert("hello btn"); // //发送ajax请求 $.ajax({ //编写json格式 url:"user/testAjax", contentType:"application/json;charset=UTF-8", data:'{"username":"张三","password":"123","age","20"}', dataType:"json", type:"post", success:function (data) { //data服务器端响应的json的数据,进行解析 alert(data); alert(data.username); alert(data.age); alert(data.password); } }); }); }); </script>
@RequestMapping("/testAjax") public @ResponseBody User testAjax(@RequestBody User user){ System.out.println("testAjax-----"); //客户端发送ajax请求,传的时json字符串,后端已经把json字符串分装到对象中 System.out.println(user); //模拟响应 user.setUsername("王二麻字"); user.setAge(21); return user; }