springmvc定时任务及RequestBody注解

假设一个物流或商城系统,当后台库存不足时,要提示管理员,或者有人下单等情况,都要及时的通知管理员,因此就需要定时去后台查询,定时发送请求到后台,查看库存是否足够等信息。

定时任务启用java定时器,再自启动的servlet容器中,设置计时器,如果时间到了,就会自动执行方法内容。java通过线程休眠来实现计时功能Thread.sleep()

使用步骤:

1.再mvc配置文件中添加启用定时任务注解

2.创建定时任务

@Controller
public class KuCunController {

    /**
     * 通过scheduled组件来实现
     * @return
     */
    @Scheduled(cron = "0/5 * * * * ?")
    public String fun1() {
        String kucun = "10";
        System.out.println("启用了定时任务" + new Date());
        return kucun;
    }
}

注意:因为定时任务是在自启动的servlet容器中,是随着服务器启动开始计时的,因此需要再服务器启动时启动项目,因此要在web.xml中配置项目随服务器启动而启动:

关于cron的取值:

 

 

 可以使用ModelAndView返回视图。

RequestBody用法:

@ResponseBody:将数据转换成json并输出到响应流中
@RequestBody:将请求中的json数据转换成Java对象,一般用来处理复杂类型的数据
模拟ajax请求:
function test() {
        var emps=[];
        emps.push({ename:"zhangsan",empno:1,age:10});
        emps.push({ename:"lisi",empno:2,age:20});
        emps.push({ename:"wangwu",empno:3,age:30});
        $.ajax({
            type:"post",
            url:"/ce812/emp/add",
            data: JSON.stringify(emps),
            contentType:"application/json",
            success: function (data) {
                alert(data);
            },
            error:function (xhr, msg) {
                alert(msg)
            }

        })
    }
@Controller
@RequestMapping("/emp")
@ResponseBody
public class EmpController {

    /**
     * @param emps:复杂对象,使用requestbody接收
     * @return
     */
    @PostMapping("/add")
    @ResponseBody
    public String test1(@RequestBody List<Emp> emps) {
        System.out.println(emps);
        return "ok";
    }
}

前端页面发送请求,注意数据格式问题,发送json数据到后台,后台通过requestBody将json数据中的多个数据转为对象。

原文地址:https://www.cnblogs.com/Zs-book1/p/11353308.html