最近写了一些springboot接口
postman测试通过之后当然就是实战测试。
然后就是经常遇到的一个问题:
之前写servlet接口时是写了一个跨域过滤器 Filter:
package filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
public class filter implements Filter{
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with, Content-Type");
response.setHeader("Access-Control-Allow-Credentials", "true");
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}
然后web.xml配置一下:
<filter>
<filter-name>filter</filter-name>
<filter-class>filter.filter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
但是在springboot中,直接一个注解 @CrossOrigin 就可以跨域访问了( 简单粗暴 ):
但要注意使用要求:
- jdk1.8+
- Spring4.2+
package com.xzw.test.controllers;
import com.xzw.test.models.Users;
import com.xzw.test.testUtils.Result;
import com.xzw.test.testUtils.ResultUtil;
import com.xzw.test.viewModels.UsersRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@CrossOrigin
public class UserController {
@Autowired
private UsersRepository repository;
@GetMapping(value = "/getUsersList")
public Result getAllUsers() {
try {
return ResultUtil.success(1,"请求成功",repository.findAll());
}
catch (Exception e){
return ResultUtil.error(-1,"请求失败:"+e.getMessage());
}
}
@PostMapping(value = "/addUser")
public Result addOne(@RequestParam("userName") String userName,
@RequestParam("userPwd") String userPwd) {
try{
Users user = new Users(userName, userPwd);
return ResultUtil.success(1,"添加成功",repository.save(user));
}
catch (Exception e){
return ResultUtil.error(-1,"添加失败:"+e.getMessage());
}
}
}
附测试截图:
打印结果截图: