1定义异常拦截器,并将异常打印到日志中,创建handle的包创建异常类,标注注解@controllerAdvice的注解此类为一个拦截器
(1)获取日志的方法
Logger logger = LoggerFactory.getLogger(ControllerExceptionHandle.class)
创建方法进行异常的处理
此类方法中@ExceptionHandler代表此方法可以进行异常的处理
,此方法收了两个数据HttpServletRequest和Exception分别代表请求和异常
通过getRequestUrl的方法可以获取请求的地址
mode.setView可以跳转到具体的页面。
此为当异常为自定义异常时进行抛出由springboot本身中定义的异常进行处理,此自定义的异常为资源无法找到
2
日志的处理
此处的需求为:将请求的url,访问者的ip,congtroller中调用的方法,输入的参数,返回的内容在日志中进行输出。
(1)此处使用的方法是面向切面进行编程 创建包Aspect在包中创建LogAspect类加上注解@aspect
在此类中需要定义切面
@pointCut注解表明此方法为切面com.cmf.blog.web..*(…),此处指定了所用到的controller方法所在的方法
@Before注解说明此方法在方法执行之前执行,方法中的jointPoist参数为切面中的参数,用来获取调用的方法名和输入的参数
获取请求请求的全路径和ip的地址的方法
ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes()
HttpServletRequest request= attribute.getRequest();
获取请求全路径的方法request.getRequestURL().toString(),
获取请求的ip地址 request.getRemoteAddr(), //ip
@After(“log()”)
表明方法在切面执行之后执行
@AfterReturning在方法执行之后返回值返回后执行
完整代码