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

网站建设推广服务费的税率是网站中加入企业qq

网站建设推广服务费的税率是,网站中加入企业qq,普通人怎么样做网站,零基础企业管理培训课程目录 前言1. 基本知识2. Demo3. 实战解析 前言 对于Java的基本知识推荐阅读#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等#xff08;超全#xff09;【Java项目】实战CRUD的功能整理#xff08;持续更新#xff09; 1. 基本知识 HandlerInter… 目录 前言1. 基本知识2. Demo3. 实战解析 前言 对于Java的基本知识推荐阅读 java框架 零基础从入门到精通的学习路线 附开源项目面经等超全【Java项目】实战CRUD的功能整理持续更新 1. 基本知识 HandlerInterceptor 是 Spring MVC 提供的一种机制用来在请求处理的不同阶段进行拦截 它通常用于日志记录、权限校验、性能监控等操作 继承 HandlerInterceptor 允许定义自定义的逻辑在请求被处理之前、之后以及完成后执行额外的任务 HandlerInterceptor 接口中包含三个主要方法 preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 在请求处理之前调用即在控制器方法调用之前 返回 boolean 类型如果返回 true则继续处理请求如果返回 false则中断请求 postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) 在请求被处理之后、视图被渲染之前调用 用于对 ModelAndView 做进一步的修改或处理 afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) 在整个请求完成后包括视图渲染完成后调用 用于清理资源、记录日志或执行后续的逻辑 HandlerInterceptor 使用场景 日志记录拦截请求并记录请求信息如 URL、参数、处理时间等权限校验在进入控制器方法之前检查用户是否有权限访问某个资源性能监控统计每个请求的耗时以便优化性能会话管理检查用户会话状态判断用户是否已经登录 基本的 API 介绍 HttpServletRequest表示客户端的请求可以从中获取请求的 URL、参数、请求体等HttpServletResponse表示服务器端的响应可以向客户端写入响应数据Handler处理器通常是控制器方法或其代理对象通常是 HandlerMethodModelAndView封装了数据模型和视图信息可以在 postHandle 方法中对其进行修改 使用 HandlerInterceptor 的步骤 创建拦截器类实现 HandlerInterceptor 接口并重写其方法注册拦截器在 Spring 配置中将自定义的拦截器注册到拦截器链中配置拦截路径可以选择对哪些 URL 进行拦截或者排除哪些 URL 2. Demo 创建一个自定义拦截器类 import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;Component public class MyInterceptor implements HandlerInterceptor {// 在控制器处理请求之前调用Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(preHandle: 请求URL - request.getRequestURI());// 这里可以进行权限校验、记录日志等操作// 如果返回 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: 请求完成清理资源);} }注册拦截器 需要将这个拦截器注册到 Spring MVC 中 通常在配置类中添加拦截器 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(/login, /register); // 排除某些路径} }创建简单的测试控制器 为了测试拦截器的效果可以创建一个简单的控制器 import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;RestController public class TestController {GetMapping(/test)public String test() {return 拦截器测试成功;}GetMapping(/login)public String login() {return 这是登录页面不会被拦截;} }运行程序并测试 启动 Spring Boot 应用后访问 /test URL 将会在控制台看到以下输出 preHandle: 请求URL - /test postHandle: 请求处理完毕 afterCompletion: 请求完成清理资源如果访问 /login因为在 WebConfig 中排除了 /login 路径拦截器不会生效 总的来说 HandlerInterceptor 是 Spring MVC 中非常有用的拦截器机制它可以在请求处理的各个阶段执行自定义逻辑 常用的拦截器功能包括日志记录、权限检查、性能监控等使用步骤定义拦截器类、注册拦截器、配置拦截路径 3. 实战解析 Slf4j // 引入 Lombok 提供的注解用于简化日志的使用不需要显式定义 logger 对象。 public class ApiAccessLogInterceptor implements HandlerInterceptor {// 定义一个常量用于存储处理方法HandlerMethod的属性名称这个属性将在后续的过滤器中使用。public static final String ATTRIBUTE_HANDLER_METHOD HANDLER_METHOD;// 定义一个常量用于存储 StopWatch 对象的属性名称StopWatch 是用于记录请求耗时的计时器。private static final String ATTRIBUTE_STOP_WATCH ApiAccessLogInterceptor.StopWatch;/*** 拦截器的前置处理方法 (preHandle)在请求处理前调用。* * param request 当前的 HttpServletRequest 对象包含了请求信息。* param response 当前的 HttpServletResponse 对象包含了响应信息。* param handler 请求处理器通常是一个 Controller 中的方法或其对应的代理对象。* return 如果返回 true则继续执行后续的拦截器或目标方法如果返回 false则中断请求流程。*/Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {// 记录 HandlerMethod处理方法将其存储到 request 属性中以供后续的过滤器或日志使用。HandlerMethod handlerMethod handler instanceof HandlerMethod ? (HandlerMethod) handler : null;if (handlerMethod ! null) {request.setAttribute(ATTRIBUTE_HANDLER_METHOD, handlerMethod);}// 打印请求日志。如果当前环境不是生产环境非 prod 环境则执行日志输出。if (!SpringUtils.isProd()) { // 检查当前是否是生产环境如果不是则记录日志// 获取请求的查询参数以键值对的形式存储。MapString, String queryString ServletUtils.getParamMap(request);// 如果请求是 JSON 请求类型则从请求中提取出请求体。String requestBody ServletUtils.isJsonRequest(request) ? ServletUtils.getBody(request) : null;// 如果既没有查询参数也没有请求体则打印无参数的日志否则打印包含参数或请求体的日志。if (CollUtil.isEmpty(queryString) StrUtil.isEmpty(requestBody)) {log.info([preHandle][开始请求 URL({}) 无参数], request.getRequestURI());} else {log.info([preHandle][开始请求 URL({}) 参数({})], request.getRequestURI(),StrUtil.nullToDefault(requestBody, queryString.toString()));}// 计时操作为请求创建一个 StopWatch计时器并启动它用于后续计算请求的处理耗时。StopWatch stopWatch new StopWatch();stopWatch.start();// 将 StopWatch 对象存储到 request 的属性中以便在 afterCompletion 方法中使用。request.setAttribute(ATTRIBUTE_STOP_WATCH, stopWatch);}return true; // 返回 true表示允许请求继续往下处理。}/*** 拦截器的后置处理方法 (afterCompletion)在整个请求处理完成包括视图渲染完成之后调用。* * param request 当前的 HttpServletRequest 对象包含了请求信息。* param response 当前的 HttpServletResponse 对象包含了响应信息。* param handler 请求处理器通常是一个 Controller 中的方法或其对应的代理对象。* param ex 如果请求处理过程中出现异常这里可以捕获到。*/Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {// 打印响应日志。如果当前环境不是生产环境非 prod 环境则执行日志输出。if (!SpringUtils.isProd()) {// 从 request 属性中获取在 preHandle 方法中创建的 StopWatch 对象。StopWatch stopWatch (StopWatch) request.getAttribute(ATTRIBUTE_STOP_WATCH);// 停止计时器计算请求处理总耗时。stopWatch.stop();// 打印完成请求的日志包括请求的 URL 和耗时单位毫秒。log.info([afterCompletion][完成请求 URL({}) 耗时({} ms)],request.getRequestURI(), stopWatch.getTotalTimeMillis());}} }截图如下
http://www.w-s-a.com/news/542103/

相关文章:

  • 网站建设在开封找谁做wordpress 数据转换
  • 旅游网站开发的流程江苏付费网络推广培训
  • 网站软文标题2018wordpress主题
  • 德清网站设计wordpress免登录发布接
  • 可以做游戏的网站有哪些客户关系管理系统的主要功能
  • 整人关不掉的网站怎么做广东省网站免备案表
  • 网站设计素材edu域名网站
  • 中山学校的网站建设wordpress文章图片显示不出
  • 兰溪城市建设规划网站网站联盟的基本流程
  • 免费推广网站注册入口小说阅读网站怎么建设
  • 新网站怎么做网络推广怎么做企业网站排名
  • jsp商业网站开发网站链接如何做二维码
  • 江苏高校品牌专业建设网站怎么制作网站搜索窗口
  • 北京app建设 网站开发公司织梦网站seo
  • 大学网站 作风建设专题汽车配件外贸出口公司
  • 东莞做网站系统购物网站建设精英
  • 建设vip网站相关视频网站营销建设公司
  • 微站直播平台杭州seo按天计费
  • seo 新旧网站 两个域名福州设计网站建设
  • 如何做网站客户端如何做网络营销网站
  • 苏州网站建设制度打鱼网站建设
  • 瓜子二手车直卖网上海小红书seo
  • 天津中小企业网站制作珠海做网站的
  • 网站排名影响因素最牛的科技网站建设
  • 长春网站建设公司怎么样电商网站建设与开发期末考试
  • 品牌网站建设搭建国内外网站建设
  • 辽宁人社app一直更新整站seo定制
  • 兰州网站建设论坛装修品牌
  • 云南省城乡住房与建设厅网站用什么网站可以做电子书
  • 自己电脑怎么做网站服务器吗0基础如何做网站