当前位置: 首页 > wzjs >正文

做网站即墨宁波seo网络优化公司

做网站即墨,宁波seo网络优化公司,做电子商务网站建设工资多少,女式包包网站建设定位目录 一、拦截器的作用1.1 请求处理前的拦截1.2 请求处理后的拦截1.3 请求完成后的拦截 二、创建拦截器2.1 实现 HandlerInterceptor 接口2.2 注册拦截器 三、拦截器的使用场景3.1 权限校验3.2 日志记录3.3 性能监控 四、总结 在 Spring 框架中,拦截器( …

目录

    • 一、拦截器的作用
      • 1.1 请求处理前的拦截
      • 1.2 请求处理后的拦截
      • 1.3 请求完成后的拦截
    • 二、创建拦截器
      • 2.1 实现 `HandlerInterceptor` 接口
      • 2.2 注册拦截器
    • 三、拦截器的使用场景
      • 3.1 权限校验
      • 3.2 日志记录
      • 3.3 性能监控
    • 四、总结

在 Spring 框架中,拦截器( HandlerInterceptor)是一种强大的机制,用于在请求处理之前、之后以及请求完成之后执行代码。拦截器可以用于实现诸如权限校验、日志记录、性能监控等功能。本文将详细介绍 Spring 拦截器的使用方法,并提供具体的代码示例。

一、拦截器的作用

1.1 请求处理前的拦截

在请求到达控制器方法之前,拦截器可以执行一些前置操作,例如校验用户是否登录、记录请求时间等。

1.2 请求处理后的拦截

在控制器方法执行完毕后,拦截器可以执行一些后置操作,例如修改响应内容、记录处理时间等。

1.3 请求完成后的拦截

在请求完全处理完毕后,拦截器可以执行一些清理操作,例如释放资源、记录日志等。

二、创建拦截器

2.1 实现 HandlerInterceptor 接口

创建一个类实现 HandlerInterceptor 接口,并重写其方法。

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class MyInterceptor implements HandlerInterceptor {// 在请求处理之前执行@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle: 请求处理之前");// 返回 true 表示继续执行后续的拦截器或控制器方法,返回 false 表示中断执行return true;}// 在请求处理之后执行@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle: 请求处理之后");}// 在请求完成之后执行@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion: 请求完成之后");}
}

2.2 注册拦截器

在 Spring 配置中注册创建的拦截器。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate MyInterceptor myInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(myInterceptor).addPathPatterns("/**") // 指定拦截的路径.excludePathPatterns("/static/**", "/error"); // 指定不拦截的路径}
}

三、拦截器的使用场景

3.1 权限校验

在用户请求到达控制器之前,校验用户是否有权限访问该资源。

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {Object user = request.getSession().getAttribute("user");if (user == null) {// 如果用户未登录,重定向到登录页面response.sendRedirect(request.getContextPath() + "/login");return false;}return true;
}

3.2 日志记录

记录请求的详细信息,包括请求时间、请求路径、响应时间等。

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {long startTime = System.currentTimeMillis();request.setAttribute("startTime", startTime);return true;
}@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {long startTime = (Long) request.getAttribute("startTime");long endTime = System.currentTimeMillis();System.out.println("请求路径:" + request.getRequestURI() + ",处理时间:" + (endTime - startTime) + "ms");
}

3.3 性能监控

对请求的处理时间进行监控,分析系统的性能瓶颈。

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {long startTime = System.currentTimeMillis();request.setAttribute("startTime", startTime);return true;
}@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {long startTime = (Long) request.getAttribute("startTime");long endTime = System.currentTimeMillis();long responseTime = endTime - startTime;System.out.println("请求路径:" + request.getRequestURI() + ",响应时间:" + responseTime + "ms");// 根据响应时间进行性能分析和警告
}

四、总结

通过实现 HandlerInterceptor 接口并重写其方法,我们可以创建自定义的拦截器。然后在 Spring 配置中注册拦截器并指定其拦截路径,就可以在请求的各个阶段执行自定义逻辑。拦截器在权限校验、日志记录、性能监控等场景中有着广泛的应用。希望本文的示例和讲解能够帮助你更好地理解和使用 Spring 拦截器。

http://www.dtcms.com/wzjs/59442.html

相关文章:

  • 做展馆的公司有哪些武汉标兵seo
  • 企业网站后台管理系统模板各城市首轮感染高峰期预测
  • 企业做网站哪家好企业网络营销推广
  • 购物类网站开发蜘蛛搜索
  • 404 wordpress青岛seo关键词排名
  • 给素材网站做签约设计不想做了品牌形象推广
  • 机械外贸网站seo技术员
  • 自己做的网站怎么上传到网络英文seo是什么意思
  • 做网站用boot百度推广图片
  • 图书馆门户网站建设方案广东广州网点快速网站建设
  • 深圳大型论坛网站建设广州网络科技有限公司
  • css的作用新余seo
  • 惠州网站建设 熊掌号重庆整站seo
  • 网站如何添加二维码小网站搜什么关键词好
  • 小学做试卷的网站应用市场
  • 绍兴网站建设设计上海网络seo优化公司
  • 网站背景图片怎么做怎么做网站宣传
  • 2018做网站还是app指数搜索
  • 企业网站后台管理软件网络广告投放
  • 网站首页横版图怎么做百度推广费用一年多少钱
  • 初中做网站用什么软件网站如何被搜索引擎收录
  • 农村创业优化设计七年级下册语文答案
  • 做设计兼职的网站seo的内容怎么优化
  • 怎么做网站推广免费模式营销案例
  • 做网站引流的利润天津seo顾问
  • 钢铁网站建设最新新闻国内大事件
  • 永安市住房与城乡建设局网站360推广怎么收费
  • 桂林做网站公司有哪些推广软文发稿
  • 平度城乡建设局网站端口扫描站长工具
  • 常德天恒建设网站网络营销的工具有哪些