https://www.bilibili.com/video/BV1Sb411s7qa 
P25~32
 
返回值类型 字符串 1 2 3 4 @RequestMapping("/testReturnString")  public  String testReturnString ()    return  "success" ;  } 
返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址
此处返回”success”将跳转到success.jsp
应用 
从数据库中取User并存入Model
1 2 3 4 5 6 7 8 9 10 11 12 @RequestMapping("/testReturnString")  public  String testReturnString (Model model)       User user = new  User();   user.setUsername("ha" );         model.addAttribute("user" ,user);         return  "success" ;  } 
在success.jsp中取出User
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <%@ page contentType="text/html;charset=UTF-8"  language="java"  isELIgnored="false"  %> <html> <head>     <title>Title</title> </head> <body>     <h3>执行成功</h3>     ${user.username}     ${user.password} </body> </html> 
void 1 2 3 @RequestMapping("/testVoid")  public  void  testReturnString ()  } 
如果没有返回值,默认根据请求路径跳转,如此处会找testVoid.jsp
修改需要用到Request、Response对象
1 2 3 4 5 @RequestMapping("/testVoid")  public  void  testReturnString (HttpServletRequest request,HttpServletResponse response)  throws  Exception      request.getRequestDispatcher("/WEB-INF/pages/success.jsp" ).forward(request, response); } 
也可以用response重定向
1 2 3 4 5 response.sendRedirect(request.getContextPath()+"index.jsp" ); response.sendRedirect("testRetrunString" ); 
或者指定响应结果,例如响应json数据
1 response.setCharacterEncoding("utf-8" ); response.setContentType("application/json;charset=utf-8" ); response.getWriter().write("HELLO" ); 
ModelAndView ModelAndView 是 SpringMVC 提供的一个对象
内部有一个Model,可以存数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 @RequestMapping("/testReturnModelAndView")  public  ModelAndView testReturnModelAndView ()     	ModelAndView mv = new  ModelAndView();          User user = new  User();   user.setUsername("ha" );         mv.addObject("user" ,user);      mv.addObject("username" , "张三" );          mv.setViewName("success" );      return  mv; } 
转发和重定向 使用关键字进行转发和重定向时,无法使用视图解析器,需要自己写路径,用得不多
forward 1 2 3 4 @RequestMapping("/testForward")  public  String testForward ()    return  "forward:/WEB-INF/pages/success.jsp" ;  } 
路径必须写实际视图url,不能写逻辑视图
既可以转发到jsp,也可以转发到其他的控制器方法
redirect 1 2 3 4 5 @RequestMapping("/testRedirect")  public  String testRedirect ()       return  "redirect:testReturnModelAndView" ;  } 
如果重定向到jsp页面,页面不能再WEB-INF中,会找不到
响应json 使用@ResponseBody 注解实现将 controller 方法返回对象转换为 json 响应给客户端
在webapp目录下新建js文件夹,把jquery.main.js复制进去,要用的jsp中引入
response.jsp 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <%@ page contentType="text/html;charset=UTF-8"  language="java"  %> <html> <head>     <title>Title</title>     <script src="js/jquery.min.js" ></script>     <script>                  $(function(){             $("#btn" ).click(function(){                  alert("hello btn" );             });         });     </script> </head> <body>     <button id="btn" >发送ajax的请求</button> </body> </html> 
然而此时在页面中点击按钮,不会有响应
因为虽然引入了jquery.min.js
但是在web.xml中配置的DispatcherServlet拦截路径”/“,也会拦截静态的资源文件
过滤静态资源 在springmvc.xml中配置
1 2 3 4 <mvc:resources  location ="/css/"  mapping ="/css/**" /> <mvc:resources  location ="/images/"  mapping ="/images/**" /> <mvc:resources  location ="/js/"  mapping ="/js/**" /> 
配置之后再点击按钮,就会有弹框了
发送ajax请求 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <script>      $(function(){     $("#btn" ).click(function(){              $.ajax({                  url:"user/testAjax" ,         contentType:"application/json;charset=UTF-8" ,         data:'{"username":"hehe","password":"123","age":30}' ,         dataType:"json" ,         type:"post" ,         success:function(data){                      alert(data);           alert(data.username);           alert(data.password);           alert(data.age);         }       });     });   }); </script> 
响应json格式数据 Springmvc 默认用 MappingJacksonHttpMessageConverter 对 json 数据进行转换,需要加入 jackson 的包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <dependency >   <groupId > com.fasterxml.jackson.core</groupId >    <artifactId > jackson-databind</artifactId >    <version > 2.9.0</version >  </dependency > <dependency >   <groupId > com.fasterxml.jackson.core</groupId >    <artifactId > jackson-core</artifactId >    <version > 2.9.0</version >  </dependency > <dependency >   <groupId > com.fasterxml.jackson.core</groupId >    <artifactId > jackson-annotations</artifactId >    <version > 2.9.0</version >  </dependency > 
客户端发送的ajax请求,传的是json字符串,后端将其封装到user对象中
1 2 3 4 5 6 7 8 @RequestMapping("/testAjax") public  @ResponseBody  User testAjax (@RequestBody  User user)  {     user.setUsername("haha" );   user.setAge(40 );   return  user; } 
加@ResponseBody,把user转成json