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

西安定制网站建设公司哪家好北京搜索优化推广公司

西安定制网站建设公司哪家好,北京搜索优化推广公司,做网站费用 会计分录,装饰设计加盟目录 一、拦截器的作用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/562351.html

相关文章:

  • 在成都如何找到做网站的公司莱芜警方网站官网
  • 厦门在线制作网站徐州做网站最好的公司
  • 国内禁用的国外网站长沙商城网站开发
  • dw asp access 网站开发优点企业网站模板 免费下载
  • 网站备案域名备案隆昌移动网站建设
  • 基于wordpress的英文小游戏站wordpress安全登录插件下载
  • 公司增加英文网站要怎么做wordpress 手机端模板下载
  • 成都网站建设优化推河南省网站建设方案书
  • 建站 哪个网站系统好用手机网站菜单网页怎么做
  • 如何建立网站平台的步骤iis7 静态网站
  • 南阳注册公司百度快速优化软件
  • 网站建设的er图安全的网站建设
  • 深圳宝安网站建设公司推荐公司内部网站系统
  • 关于网站建设的建议我想做一个网站 不知道找谁做
  • 网站建设制作设计推广优化环保部网站建设项目验收方案
  • 网站备案重要性外贸网站建设视频教程
  • 南京做网站外包做旅游网站赚钱吗
  • 58同城盐城网站建设中国做网站最好的公司
  • 什么样的网站需要备案wordpress修改绑定域名
  • 百度首页关键词优化网站百度优化
  • 对门户网站建设情况的报告做设计的分析图网站有哪些
  • 网站添加属性wordpress 支付宝接口
  • 聊城房地产网站建设成都建网站的公司
  • 网站规划结构邯郸网站制作公司
  • 织梦网站如何做地区分站没有网站也可以做外贸吗
  • 网站设置搜索关键字有哪些做婚礼平面设计的网站
  • 网站建设都需要哪些材料现在学ui设计就业前景
  • 周年庆网站要怎么做一流的邯郸网站建设
  • 南京网站设计我选柚米科技长沙模板网站长沙网站建设
  • 哪个网站ppt模板免费下载做恒生指数看什么网站