day02

实现功能

登录功能拦截

/**
 *  检查用户是否登录
 */
@Slf4j
@WebFilter(filterName = "loginCheckFilter",urlPatterns = "/*")  //拦截所有的请求
public class LoginCheckFilter implements Filter {

    //请求匹配器
    public static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();


    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;

        //1.获取本次请求的uri
        String requestURI = request.getRequestURI();

        //不需要处理的请求
        String[] urls = new String[]{
                "/employee/login",
                "/employee/logout",
                "/backend/**",
                "/front/**",
        };

        //2.判断请求是否需要处理
        boolean check = check(urls, requestURI);

        //3.如果不需要处理直接放行
        if (check == true){
            filterChain.doFilter(request,response);//放行
            return;
        }
        //4.判断登录状态,如果已登录,则直接放行
        if(request.getSession().getAttribute("employee") != null){
            filterChain.doFilter(request,response);
            return;
        }

        //5.如果为登录则返回未登录结果,通过输出流方式向客户端页面响应数据
        response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));
        return;

    }

    /**
     *  请求判断
     * @param urls
     * @param requestURI
     * @return
     */
    public boolean check(String[] urls,String requestURI){
        for (String url:urls){
            boolean match = PATH_MATCHER.match(url, requestURI);
            if (match){
                return true;
            }

        }
        return false;
    }
}

登录处理用户名相同时:定义异常类处理

/**
 * 全局异常处理
 */
@ControllerAdvice(annotations = {RestController.class, Controller.class})//拦截
@ResponseBody //封装成json数据
@Slf4j
public class GlobalExceptionHandler {


    /**
     *  异常处理方法   自定义异常类
     * @return
     */
    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)

    public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){  //异常提示SQLIntegrityConstraintViolationException

        log.info(ex.getMessage());//输出异常信息

        if (ex.getMessage().contains("Duplicate entry")){ //判断异常信息包含Duplicate entry

            String[] split = ex.getMessage().split(" ");
            String msg  = split[2] + "已存在";
            return R.error(msg);

        }

        return R.error("未知错误");

    }

}

分页功能分析
分页功能分析

@GetMapping("/page")
public R<Page> page(int page,int pageSize,String name){

    log.info("page {},pageSize {},name {}",page,pageSize,name);

    //构造分页的构造器
    Page pageinfo = new Page(page,pageSize);

    //构造条件构造器
    LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper();

    //Employee::getUpdateTime  可以取出get set方法获得属性值设置属性值

    //添加筛选条件
    queryWrapper.like(StringUtils.isNotEmpty(name),Employee::getName,name);
    //添加排序条件
    queryWrapper.orderByDesc(Employee::getUpdateTime);

    //执行查询
    employeeService.page(pageinfo,queryWrapper);

    return R.success(pageinfo);

}

前端返回数据精度丢失(id)
把前端的json数据先转换为string类型

在这里插入图片描述
在这里插入图片描述

/**
 *  根据ID修改员工信息
 * @param request
 * @param employee
 * @return
 */
@PutMapping
public R<String> update(HttpServletRequest request,@RequestBody Employee employee){

    log.info(employee.toString());

    Long empId = (Long) request.getSession().getAttribute("employee");
    employee.setUpdateTime(LocalDateTime.now());
    employee.setUpdateUser(empId);

    employeeService.updateById(employee);

    return R.success("信息修改成功");

}

在这里插入图片描述

@GetMapping("/{id}")
public R<Employee> getById(@PathVariable Long id){

    log.info("id");
    Employee employee = employeeService.getById(id);

    if (employee != null){

    return R.success(employee);

    }
    return R.error("信息错误");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值