瑞吉外卖 day1 day2 小节

1. @slf4j    别名"酸辣粉",哈哈,言归正传。@Slf4j是用作日志输出的,一般会在项目每个类的开头加入该注解,如果不写下面这段代码,并且想用log
private final Logger logger = LoggerFactory.getLogger(当前类名.class);
那么就可以使用@slf4j。
2.放在resource下的静态资源没有config包是访问不到的。
3. @Configuration  说明配置类。
4. addResourceHandlers   设置静态资源映射,可以访问resource下的index.html。

5.
function loginApi(data) {
  return $axios({
    'url': '/employee/login',
    'method': 'post',
    data
  })
这里是login.js文件 用axios阿贾克斯技术向后端发送请求。
6. map-underscore-to-camel-case: true
在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射
7.R.java  通用返回结果,服务端响应的数据最终都会封装成此对象。

8.  
  public static <T> R<T> success(T object) {
        R<T> r = new R<T>();
        r.data = object;
        r.code = 1;  //登录成功,返回1,并且返回数据
        return r;
    }

    public static <T> R<T> error(String msg) {
        R r = new R();
        r.msg = msg;
        r.code = 0;//登录失败,返回0,并且返回错误信息
        return r;
    }
9. @RequestBody   作用在形参列表上,用于将前台发送过来固定格式的数据【xml 格式或者 json等】封装为对应的 JavaBean 对象。
10. queryWrapper.eq(Employee::getUsername,employee.getUsername());
相当于创建一个Employee对象并调用getUsername方法。
11. Employee emp = employeeService.getOne(queryWrapper);   
因为数据库username 索引类型是Unique  用getOne方法查出来唯一的一个数据。
12. Session   存储特定用户会话所需的属性及配置信息。
13. @mapper的作用是可以给mapper接口自动生成一个实现类,让spring对mapper接口的bean进行管理,并且可以省略去写复杂的xml文件。

14.
 @Slf4j
@SpringBootApplication
@ServletComponentScan
public class ReggieApplication {
    public static void main(String[] args) {
        SpringApplication.run(ReggieApplication.class,args);
        log.info("项目启动成功...");
    }
}
加入@ServletComponentScan 才会扫描 LoginCheckFilter.java 文件下的
 @WebFilter(filterName = "loginCheckFilter",urlPatterns = "/*") 的注解
15.filter过滤器(或拦截器)的作用是 过滤出请求地址。
16. 路径匹配器,支持通配符
    public static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();"/backend/**"
17. json数据是是一种轻量级的数据交换格式,它基于一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
18.log.info()  打印日志。
19. @ControllerAdvice(annotations = {RestController.class, Controller.class})
拦截带有@RestController @Controller 注解的类。
20.@ResponseBody//封装成json数据再返回。
21.@Slf4j  打印日志输出。
22. @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
处理哪些异常。
23.json数据格式:{“name”:“张晓明”,“phone”:“13812344321”}。
24.vue 创建完对象之后,自动调用created()里面的方法。
25.页面发送ajax请求,将页面查询参数(page、pageSize、name)提交到服务端。
26.@getMapping 前端控制器中,发送的请求是get方式,后端就用@getmapping 接收。
27.//构造条件构造器
 LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper();
这里用LambadaQueryWrapper的好处就是写条件匹配的时候不需要写字段名,否则后期维护时如果发生了数据库变化,表的字段名变更情况时还得来这里改
28. //添加过滤条件
 queryWrapper.like(StringUtils.isNotEmpty(name),Employee::getName,name);
Employee::getName,name  调用Employee里面的getName方法,并传入name。
29.//添加排序条件
queryWrapper.orderByDesc();    Desc排序降序  ,   asc升序排序。

30.
 @Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;
开头的@RequestMapping("/employee") 添加过了  ("/employee")
底下的@PostMapping 就不用添加  ("/employee")
31. Session   保存每个用户的专用信息
32. 
@PostMapping

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("员工信息修改成功");

}
 
HttpServletRequest 接口继承自 ServletRequest 接口,其主要作用是封装 HTTP 请求消息。由于 HTTP 请求消息分为请求行、请求消息头和请求消息体三部分。因此,在 HttpServletRequest 接口中定义了获取请求行、请求头和请求消息体的相关方法。
33. 错误信息:discard long time none received connection. 
Js对long型数据进行处理时丢失精度,导致提交的id和数据库的Id不一致。
34.在WebMvcConfig配置类中扩展Spring mvc 的消息转换器,在此消息转换器中使用提供的对象转换器进行java对象到json数据的转换。

35. 
package com.itheima.reggie.config;
@Slf4j
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        log.info("开始进行静态资源映射...");
        registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");
        registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");
    }
 
为了调用resource下的静态资源,因resource底下的静态资源不自动加载。

 /**
     * 扩展mvc框架的消息转换器
     * @param converters
     */
    @Override
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        //创建消息转换器对象
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
        //设置对象转换器,底层使用Jackson将java对象转换为json
        super.extendMessageConverters(converters);
        //将上面的消息转换器对象追加到mvc框架的转换器集合中
        converters.add(0,messageConverter);//为了把添加的转换器放在首位,所以索引设置为0.
    }
}
  
配置消息转换器,因为json格式会使long精度丢失。
36. 
package com.itheima.reggie.common;

@Data
public class R<T> {

    private Integer code; //编码:1成功,0和其它数字为失败

    private String msg; //错误信息

    private T data; //数据

    private Map map = new HashMap(); //动态数据

    public static <T> R<T> success(T object) {
        R<T> r = new R<T>();
        r.data = object;
        r.code = 1;  //执行成功,返回1,并且返回数据
        return r;
    }

    public static <T> R<T> error(String msg) {
        R r = new R();
        r.msg = msg;
        r.code = 0;  //执行失败,返回0,并且返回错误信息
        return r;
    }

    public R<T> add(String key, Object value) {
        this.map.put(key, value);
        return this;
    }
}

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值