SSM整合-其他问题

SSM整合-其他问题

@Slf4j

想要输出的类上使用@Slf4j注解,调用log对象的方法(例如info),使用{}作为占位符打印日志

@RestController
@ComponentScan("com.xiaobai.controller")
@RequestMapping("schedule")
@Slf4j
public class ScheduleController {
    log.info("查询到的数据为:{}", r);
}

PageBean

尚硅谷提供了一个实体类PageBean,此实体类可以用于PageHelper插件查询之后,使用PageInfo获取到分页信息后,封装到此实体类中

我们在之前学习的微头条项目中,使用Vo对象来接收查询到的分页参数

@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean<T> {
    private int currentPage;   // 当前页码
    private int pageSize;      // 每页显示的数据量
    private long total;    	   // 总数据条数
    private List<T> data;      // 当前页的数据集合
}

R(Result包装对象)

在JavaWeb中,我们也有这样的类,封装了响应业务码,还有枚举类型的响应状态信息

尚硅谷提供了一个包装对象,但这个简单得多,只有成功(200),和失败(500)

package com.xiaobai.util;

public class R {

    private int code = 200; //200成功状态码

    private boolean flag = true; //返回状态

    private Object data;  //返回具体数据


    public static R ok(Object data) {
        R r = new R();
        r.data = data;
        return r;
    }

    public static R fail(Object data) {
        R r = new R();
        r.code = 500; //错误码
        r.flag = false; //错误状态
        r.data = data;
        return r;
    }


    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public boolean isFlag() {
        return flag;
    }

    public void setFlag(boolean flag) {
        this.flag = flag;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}

Service分页查询处理

public R page(int pageSize, int currentPage) {
    // 调用分页插件
    PageHelper.startPage(currentPage, pageSize);
    // 查询
    List<Schedule> schedules = scheduleMapper.queryList();
    // 分页数据装配
    PageInfo<Schedule> pageInfo = new PageInfo<>(schedules);
    // 封装pageBean
    PageBean<Schedule> schedulePageBean = new PageBean<>(currentPage,pageSize, pageInfo.getTotal(),pageInfo.getList());
    // 封装R
    return R.ok(schedulePageBean);
}

同源禁止策略的解决方案*

我们在JavaWeb中解决这个问题的方式,是建立一个Filter过滤器

@CrossOrigin

在ssm项目中,在Controller层类或方法上面使用@CrossOrigin注解,即可允许跨域访问