在Spring MVC框架中,我们可以使用Ajax进行前后端的分离,这样可以使得前端和后端的开发更加分离,更加有效的提高开发效率。
在Spring MVC中,我们可以通过以下几种方式使用Ajax:
- 使用jQuery的$.ajax()方法
- 使用Spring提供的@ResponseBody注解
- 使用Spring的RestController注解
下面我们将分别展示这三种方式的实现:
- 使用jQuery的$.ajax()方法
$.ajax({
url: '/path',
type: 'POST', // GET, DELETE, PUT等
data: {key: 'value'},
success: function(result) {
// 处理返回结果
},
error: function(error) {
// 处理错误
}
});
- 使用Spring提供的@ResponseBody注解
@Controller
public class MyController {
@RequestMapping(value = "/path", method = RequestMethod.POST)
@ResponseBody
public String myMethod(@RequestBody String body) {
// 处理请求
return "response";
}
}
- 使用Spring的RestController注解
@RestController
public class MyRestController {
@RequestMapping(value = "/path", method = RequestMethod.POST)
public String myMethod(@RequestBody String body) {
// 处理请求
return "response";
}
}
在这三种方法中,第一种方法需要我们手动处理JSON的序列化和反序列化,第二种和第三种方法Spring会自动处理JSON的序列化和反序列化。
注意:在使用Ajax时,我们需要注意跨域的问题,如果我们的前端和后端不在同一个域下,我们需要在后端配置允许跨域的请求。
在Spring MVC中,我们可以通过以下几种方式配置允许跨域的请求:
- 使用Spring提供的CorsFilter
- 使用Spring提供的@CrossOrigin注解
下面我们将分别展示这两种方式的实现:
- 使用Spring提供的CorsFilter
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://domain2.com")
.allowedMethods("POST", "GET", "OPTIONS", "DELETE", "PUT")
.allowedHeaders("Content-Type", "X-Requested-With", "accept", "Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers")
.exposedHeaders("Access-Control-Allow-Origin", "Access-Control-Allow-Credentials")
.allowCredentials(true)
.maxAge(3600);
}
}
- 使用Spring提供的@CrossOrigin注解
@CrossOrigin(origins = "http://domain2.com", maxAge = 3600)
@RestController
public class MyRestController {
@RequestMapping(value = "/path", method = RequestMethod.POST)
public String myMethod(@RequestBody String body) {
// 处理请求
return "response";
}
}
在这两种方法中,第一种方法需要我们手动处理跨域的请求,第二种方法Spring会自动处理跨域的请求。
注意:在