说明:
(1)本篇博客合理性解释:
● 在【Spring MVC拦截器1:拦截器入门一】和【Spring MVC拦截器2:拦截器入门二】两篇博客介绍了拦截器的基本使用;那么,本篇博客就通过一个案例,演示下在项目中如何使用拦截器;
● 文章逻辑:当用户发送请求,访问我们的系统时 → 请求中包含很多信息 → 我们可以收集这些基础信息,以供利用 → 为此,拦截器就派上用场了 → 我们可以利用拦截器拦截用户请求,从而获取请求中的基础信息 → 然后,我们也可以把这些信息存储到具体日志文件中 → 为此,就引出了利用logback存储日志了;
(2)本篇博客的代码沿用自 【Spring MVC拦截器2:拦截器入门二】的【interceptor工程】;
(3)本篇博客内容:
● 使用拦截器来采集用户基础数据;
● 也涉及到了【使用logback日志组件,把日志数据存储到日志文件中】
目录
二:预先准备:先创建一个【拦截用户请求,以获取流量信息】的拦截器类:AccessHistoryInterceptor类;
1.创建拦截器类:AccessHistoryInterceptor类;
2.创建并编写logback.xml配置文件:【定义输出器】;【把输出器作用到AccessHistoryInterceptor这个类上】;
(1)创建logback.xml文件,并通过基本配置,看下是否OK;
(2)在logback.xml配置,把日志信息存储到本地日志文件中;(核心重点!!!)
四: AccessHistoryInterceptor拦截器类:【获取用户请求信息】,【将这些信息,存储到日志中去】;(核心重点!!!)
五:在applicationContext.xml中,配置AccessHistoryInterceptor这个拦截器;
一: 用户流量信息简述;
(1)用户流量信息:用户在访问我们的系统时,用户请求中包含如访问时间、访问网址(url)、使用的什么浏览器、使用的什么系统、使用的什么手机、用户IP等信息;
(2)这些用户流量信息是比较重要的:比如电商网站:● 我们根据访问网址(url),就能看出什么商品是最受欢迎的;● 根据访问时间,就能推断出用户是夜猫子还是白天访问;(由此,针对不同的时间段,我们是否可以推荐不同的商品);● 根据发送的请求中附带的用户环境信息,知道当前用户是使用PC机访问的还是使用手机访问的;用到手机是iOS还是Android;
(3)在用户访问应用时,这些用户流量信息,我们可以通过拦截器来收集;
(4)即,本篇博客主要内容是:如何使用拦截器来采集用户基础数据;同时,在其中也会介绍如何使用logback日志组件来存储日志数据;
二:预先准备:先创建一个【拦截用户请求,以获取流量信息】的拦截器类:AccessHistoryInterceptor类;
1.创建拦截器类:AccessHistoryInterceptor类;
初始准备,我们创建AccessHistoryInterceptor拦截器类,来完成采集用户基础数据的工作;
AccessHistoryInterceptor:
package com.imooc.restful.interceptor; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 访问历史拦截器;所有的请求都会被这个拦截器拦截,在请求被处理之前,把请求的相关信息记录到日志文件中; */ public class AccessHistoryInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; } }
说明:
(1)因为AccessHistoryInterceptor拦截器类的主要目的是:拦截用户请求,获取其中的基础信息;所以,这个方法只实现类preHandle()方法;
三:引入logback日志组件;
前面介绍过logback日志组件:如有需要可以依次参考;
●【MyBatis进阶一:slf4j日志门面和logback日志组件;(在MyBatis中的使用logback)(本篇博客仅仅是在控制台输出日志信息,不涉及把日志信息存储到日志文件)】:第一次引入SLF4日志门面、logback日志实现;(也知道了Mybatis框架中,可以很好的使用logback日志组件)
●【【logger.error()】介绍;(只是将日志打印在Console控制台)】:介绍了logger.error()方法的几种重构形式;
●【