java 网盘开发_springboot仿百度网盘开发的在线云盘项目

该博客介绍了一个使用SpringBoot实现的WebInterceptor,主要用于拦截用户请求,检查是否登录,并记录请求的执行时间。当用户未登录时,会重定向到登录页面。此外,拦截器还会打印出方法的执行耗时。
摘要由CSDN通过智能技术生成

package com.whut.pan.config;

import com.whut.pan.dao.model.User;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.web.method.HandlerMethod;

import org.springframework.web.servlet.HandlerInterceptor;

import org.springframework.web.servlet.ModelAndView;

import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* 拦截配置

*

* @author Sandeepin

*/

public class WebInterceptor implements HandlerInterceptor {

private Logger logger = LoggerFactory.getLogger(this.getClass());

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

throws Exception {

boolean flag = true;

if (handler instanceof HandlerMethod) {

String ip = request.getRemoteAddr();

long startTime = System.currentTimeMillis();

request.setAttribute("requestStartTime", startTime);

HandlerMethod handlerMethod = (HandlerMethod) handler;

Method method = handlerMethod.getMethod();

logger.warn("用户ip:" + ip + ",访问目标:" + method.getDeclaringClass().getName() + ":" + method.getName());

User user = (User) request.getSession().getAttribute("user");

if (null == user) {

logger.warn("未登录");

response.sendRedirect("toLogin");

flag = false;

} else {

logger.warn("登录的账号:{}", user.getUserName());

flag = true;

}

}

return flag;

}

@Override

public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,

ModelAndView modelAndView) {

if (handler instanceof HandlerMethod) {

HandlerMethod handlerMethod = (HandlerMethod) handler;

Method method = handlerMethod.getMethod();

long startTime = (Long) request.getAttribute("requestStartTime");

long endTime = System.currentTimeMillis();

long executeTime = endTime - startTime;

// 打印方法执行时间

if (executeTime > 1000) {

logger.warn(

"[" + method.getDeclaringClass().getName() + "." + method.getName() + "] 执行耗时 : " + executeTime

+ "ms");

} else {

logger.warn("[" + method.getDeclaringClass().getSimpleName() + "." + method.getName() + "] 执行耗时 : "

+ executeTime + "ms");

}

}

}

@Override

public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,

Exception ex) {

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值