开发外贸网站开发怎样做app推广

张小明 2026/1/8 5:55:12
开发外贸网站开发,怎样做app推广,基于php网站开发环境,在百度搜索到自己的网站拦截器定义拦截器是Spring框架提供的核⼼功能之⼀, 主要⽤来拦截⽤⼾的请求, 在指定⽅法前后, 根据业务需要执 ⾏预先设定的代码.实现拦截器1. 定义拦截器创建类#xff0c;实现HandlerInterceptor接口#xff0c;重写preHandle和postHandle两个方法#xff0c;在方法中实现…拦截器定义拦截器是Spring框架提供的核⼼功能之⼀, 主要⽤来拦截⽤⼾的请求, 在指定⽅法前后, 根据业务需要执 ⾏预先设定的代码.实现拦截器1. 定义拦截器创建类实现HandlerInterceptor接口重写preHandle和postHandle两个方法在方法中实现拦截器逻辑其中preHandle方法是在controller类之前进行用于检查postHandle是controller实现完成后或者拦截成功后逆序进行用于收尾。实现流程假设拦截器有三个功能情况一放行调用preHandle方法实现功能123如果放行则调用controller方法完成后调用postHandle方法实现功能321情况二拦截调用preHandle方法实现功能123在第3个功能处拦截随后跳过controller方法调用postHandle方法只实现功能21。因为3并没有在preHandle实现。package com.spring.bookmanage.interceptor; import com.spring.bookmanage.constant.Constants; import com.spring.bookmanage.entity.Result; import com.spring.bookmanage.entity.UserInfo; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; Slf4j Component public class LoginInterceptor implements HandlerInterceptor{ Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { log.info(目标代码执行前); HttpSession session request.getSession(false); if(!checkStatus(session)){ response.setStatus(401); return false; } //true放行false拦截 return true; } Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { log.info(目标方法执行后); } Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { log.info(完成后); } public boolean checkStatus(HttpSession session) { if(sessionnull||(session.getAttribute(Constants.SESSION_USER_INFO)null)){ //用户未登录 return false; } UserInfo userInfo(UserInfo)session.getAttribute(Constants.SESSION_USER_INFO); if ((userInfonull)||(userInfo.getId()0)){ //用户未登录 return false; } return true; } }2. 注册拦截器创建类实现WebMvcConfigurer接口实例化LoginInterceptor类并重写addInterceptors⽅法方法中定义拦截路径/book/**package com.spring.bookmanage.config; import com.spring.bookmanage.interceptor.LoginInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; Configuration public class WebConfig implements WebMvcConfigurer { Autowired private LoginInterceptor loginInterceptor; Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor).addPathPatterns(/book/**); } }通过打印日志可以看到拦截器生效红框标出拦截路径Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor) .addPathPatterns(/**) .excludePathPatterns(/user/login);//设置拦截器拦截的请求路径 (/** 表⽰拦截所有请求) }统一数据返回格式该功能将统一格式返回前端实现创建类实现ResponseBodyAdvice接口重写supports和beforeBodyWrite方法。supports方法: 判断是否要执行beforeBodyWrite方法. true为执行, false不执行. 通过该方法可以选择哪些类或哪些方法的response要进行处理, 其他的不进行处理.beforeBodyWrite方法: 对response方法进行具体操作处理package com.spring.bookmanage.config; import com.spring.bookmanage.entity.BookInfo; import com.spring.bookmanage.entity.Result; import lombok.SneakyThrows; import org.jspecify.annotations.Nullable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; import tools.jackson.databind.ObjectMapper; ControllerAdvice public class ResponseAdvice implements ResponseBodyAdvice { Autowired private ObjectMapper objectMapper; Override public boolean supports(MethodParameter returnType, Class converterType) { //false:不处理 true:处理 return true; } SneakyThrows Override public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { if(body instanceof String){ return objectMapper.writeValueAsString(Result.success(body)); } if(body instanceof Result){ return body; } return Result.success(body); } }统⼀异常处理统⼀异常处理使用的是 ControllerAdvice ExceptionHandler 来实现的, ControllerAdvice 表⽰控制器通知类ExceptionHandler 是异常处理器两个结合表示当出现异常的时候执行某个通知也就是执行某个方法事件package com.spring.bookmanage.config; import com.spring.bookmanage.entity.Result; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; Slf4j ControllerAdvice ResponseBody public class ExceptionAdvice { ExceptionHandler public Result handler(Exception e){ log.error(error: e); return Result.fail(inner error); } }三组件及Controller背后的调度者DispatcherServlet我们看看Spring是怎么实现的, 还是从 DispatcherServlet 的代码开始分析。DispatcherServlet 对象在创建时会初始化一系列的对象源码过于复杂笔者作为和各位读者同样甚至更加稚嫩的初学者就不大量展示了以下为一小部分DispatcherServlet源码public class DispatcherServlet extends FrameworkServlet { //... protected void initStrategies(ApplicationContext context) { initMultipartResolver(context); initLocaleResolver(context); initThemeResolver(context); initHandlerMappings(context); //url-方法映射 initHandlerAdapters(context); //适配器可理解为统一接口格式工具 initHandlerExceptionResolvers(context); //异常处理器 initRequestToViewNameTranslator(context); initViewResolvers(context); initFlashMapManager(context); } //...springboot启动时由Servlet容器在80端口默认监听并且DispatchServlet类启动初始化这九大对象其中就包括url-方法映射这就是我们的controller适配器异常处理机制等。当请求某个方法DispatcherServlet调用拦截器对请求进行检验如果没有问题则放行如果有问题则直接跳过controller调用当请求被拦截器放行DispatcherServlet查找所有Controller方法找到对应的请求路径的方法调用当返回某个结果DispatcherServlet查找所有结果统一格式方法调用并封装结果返回当出现异常DispatcherServlet查找所有异常处理找到合适的异常处理方法并调用。总结本章节主要介绍了SpringBoot 对⼀些统⼀功能的处理⽀持.1. 拦截器的实现主要分两部分: 定义拦截器(实现HandlerInterceptor 接口) 配置拦截器2. 统⼀数据返回格式通过ControllerAdvice ResponseBodyAdvice 来实现3. 统⼀异常处理使⽤ControllerAdvice ExceptionHandler 来实现, 并且可以分异常来处理4. 学习了DispatcherServlet的一点点源码
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

创建网站数据库电子商务有限公司简介

GKD订阅管理终极指南:2025年高效配置与使用全攻略 【免费下载链接】GKD_THS_List GKD第三方订阅收录名单 项目地址: https://gitcode.com/gh_mirrors/gk/GKD_THS_List GKD订阅管理工具是专门为GKD用户设计的订阅资源聚合平台,通过智能化的订阅管理…

张小明 2026/1/7 21:30:43 网站建设

深圳外贸建站烟台网站网站建设

Dockge终极指南:5分钟掌握自托管Docker管理平台完整教程 【免费下载链接】dockge A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager 项目地址: https://gitcode.com/GitHub_Trending/do/dockge 在现代容器化部署中…

张小明 2026/1/8 10:05:25 网站建设

网站建设费入如保入账二手手机网站网页设计

私有化语音合成平台:网盘直链助手与VoxCPM-1.5-TTS-WEB-UI的协同实践 在企业对数据隐私要求日益严格的今天,将AI能力部署于本地已成为一种刚需。尤其是在医疗、金融和政府等领域,哪怕只是上传一段文本进行语音合成,也可能触及合规…

张小明 2026/1/7 21:17:41 网站建设

php网站架设教程网站售后

VideoDownloadHelper:解锁网页媒体下载的全新体验 【免费下载链接】Chrome插件VideoDownloadHelper下载指南 本仓库提供了一个名为 **VideoDownloadHelper** 的Chrome插件资源文件下载。该插件适用于谷歌和火狐浏览器,能够帮助用户从网站中提取视频和图像…

张小明 2026/1/7 21:17:41 网站建设

网站做好后交接代理公司注册哪家好

还在为无法离线收听B站优质音乐内容而发愁吗?想要随时随地欣赏喜欢的UP主音频作品却苦于没有合适工具?今天带你解锁BilibiliDown这款实用工具,实现B站音频自由下载,打造专属个人音乐库! 【免费下载链接】BilibiliDown …

张小明 2026/1/7 21:17:44 网站建设

贵州专业网站建设263企业邮箱入口注册

打破工具孤岛的时代需求 在敏捷测试迭代中,需求频繁变更、用例版本混乱、缺陷追溯困难成为团队协作的典型痛点。Jira作为缺陷跟踪核心,与Confluence知识库的深度整合,正成为提升测试效能的破局关键。 一、整合核心价值:构建测试协…

张小明 2026/1/7 21:17:54 网站建设