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

二手车网站开发背景惠州+网站建设公司

二手车网站开发背景,惠州+网站建设公司,织梦网站修改数据库表数据,网站建设与开发定制Spring拦截器 1.实现一个普通拦截器 关键步骤 实现 HandlerInterceptor 接口重写 preHeadler 方法#xff0c;在方法中编写自己的业务代码 Component public class LoginInterceptor implements HandlerInterceptor {/*** 此方法返回一个 boolean#xff0c;如果为 true …Spring拦截器 1.实现一个普通拦截器 关键步骤 实现 HandlerInterceptor 接口重写 preHeadler 方法在方法中编写自己的业务代码 Component public class LoginInterceptor implements HandlerInterceptor {/*** 此方法返回一个 boolean如果为 true 表示验证成功可以继续执行后续流程* 如果是 false 表示验证失败后面的流程不能执行* param request* param response* param handler* return* throws Exception*/Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//用户登录业务判断HttpSession session request.getSession(false);//有session就提取没有也不创建if(session ! null session.getAttribute(Constant.SESSION_USERINFO_KEY) ! null) {//说明用户已经登录return true;}// 401 : 用户没有登录所以没有权限 403 : 用户登录了但没有权限response.setStatus(401);return false;} }2.将拦截器添加搭配系统配置中并设置拦截的规则 Configuration public class AppConfig implements WebMvcConfigurer {Autowiredprivate LoginInterceptor loginInterceptor; //只要不是需求的页面都进行拦截ListString excludes new ArrayListString() {{//放行数组add(/**/*.html);add(/js/**);add(/editor.md/**);add(/css/**);add(/img/**); // 放行 img 下的所有文件add(/user/login); // 放行登录add(/user/reg); // 放行注册add(/art/detail); // 放行详情页add(/user/author); // 放行详情页个人信息的 usernameadd(/art/list); // 放行文章分页列表的接口add(/art/totalpage); // 放行获取文章分页的总页数add(/art/artcount); // 放行分页列表页个人信息的 文章数量 / 也是详情页的文章数量}};Overridepublic void addInterceptors(InterceptorRegistry registry) {//添加拦截规则InterceptorRegistration registration registry.addInterceptor(loginInterceptor);registration.addPathPatterns(/**);//拦截器下放行 excludes 数组内的规则registration.excludePathPatterns(excludes);} }拦截器实现原理 用户调用– controller ---- service ---- mapper----数据库 实现拦截器之后 用户调用–拦截器预处理(拦截规则黑白名单)---- controller ---- service ---- mapper----数据库 实现原理源码分析 protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {HttpServletRequest processedRequest request;HandlerExecutionChain mappedHandler null;boolean multipartRequestParsed false;WebAsyncManager asyncManager WebAsyncUtils.getAsyncManager(request);try {ModelAndView mv null;Exception dispatchException null;try {processedRequest checkMultipart(request);multipartRequestParsed (processedRequest ! request);// 步骤1获取执行链重要重要重要重要重要重要重要重要重要mappedHandler getHandler(processedRequest);if (mappedHandler null) {noHandlerFound(processedRequest, response);return;}// 步骤2获取适配器重要重要重要重要重要重要重要重要重要HandlerAdapter ha getHandlerAdapter(mappedHandler.getHandler());String method request.getMethod();boolean isGet GET.equals(method);if (isGet || HEAD.equals(method)) {long lastModified ha.getLastModified(request, mappedHandler.getHandler());if (new ServletWebRequest(request, response).checkNotModified(lastModified) isGet) {return;}}//步骤3拦截器pre方法重要重要重要重要重要重要重要重要重要if (!mappedHandler.applyPreHandle(processedRequest, response)) {return;}//步骤4真正处理逻辑重要重要重要重要重要重要重要重要重要//执行 Controller 中的业务mv ha.handle(processedRequest, response, mappedHandler.getHandler());if (asyncManager.isConcurrentHandlingStarted()) {return;}applyDefaultViewName(processedRequest, mv);//步骤5拦截器post方法重要重要重要重要重要重要重要重要重要mappedHandler.applyPostHandle(processedRequest, response, mv);}catch (Exception ex) {dispatchException ex;}catch (Throwable err) {dispatchException new NestedServletException(Handler dispatch failed, err);}//步骤6处理视图重要重要重要重要重要重要重要重要重要processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);}catch (Exception ex) {//步骤7拦截器收尾方法重要重要重要重要重要重要重要重要重要triggerAfterCompletion(processedRequest, response, mappedHandler, ex);}catch (Throwable err) {triggerAfterCompletion(processedRequest, response, mappedHandler,new NestedServletException(Handler processing failed, err));}finally {if (asyncManager.isConcurrentHandlingStarted()) {if (mappedHandler ! null) {mappedHandler.applyAfterConcurrentHandlingStarted(processedRequest, response);}}else {if (multipartRequestParsed) {cleanupMultipart(processedRequest);}}}} [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVnpcXAY-1678274299650)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1678269545822.png)] 统一异常处理 统一异常处理使用的是 ControllerAdvice控制器通知类 和 ExceptionHandler异常处理器 来实现。 1.创建统一封装类 2.使用 ExceptionHandler 注解来订阅异常信息 /*** 异常类的统一处理*/ ControllerAdvice ResponseBody public class ExceptionAdvice {ExceptionHandler(Exception.class) // 异常类型public Object exceptionAdvice(Exception e) {return AjaxResult.fail(-1, e.getMessage());} }统一数据的返回 统一数据格式的返回可以使用 ControllerAdvice ResponseBodyAdvice 方法实现。 1.创建一个类并添加 ControllerAdvice 2.实现ResponseBodyAdvice接口并且重写supports和beforeBodyWrite统一返回对象就是在此方法中实现 ControllerAdvice public class ResponseAdvice implements ResponseBodyAdvice {//内容是否需要重写//返回 true 表示重写Overridepublic boolean supports(MethodParameter returnType, Class converterType) {return true;}//方法返回之前调用此方法SneakyThrowsOverridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {// 1.本身已经是封装好的对象 判断一个对象是否为一个类if(body instanceof HashMap) {return body;}// 2.返回类型是 String (特殊)if(body instanceof String) {ObjectMapper objectMapper new ObjectMapper();return objectMapper.writeValueAsString(AjaxResult.success(body));}return AjaxResult.success(body);} }
http://www.w-s-a.com/news/664158/

相关文章:

  • 百度网站评级wordpress忘记admin
  • 建筑标准下载网站263企业邮箱 登陆
  • 旅游房地产网站建设德保网站建设
  • 网站高端建设wordpress订单系统
  • 建设网站成本增加网站备案
  • 行业网站建设方案百度云图片转wordpress
  • 如何建设网站推广平台营销客户管理软件
  • 网站制作南宁如何撰写一个网站规划建设方案
  • 建站网站和维护需要会什么杭州人防质监站网址
  • 唐山免费做网站莱芜吧贴吧最新消息
  • 韶关市建设工程造价网站网络营销的平台有哪些
  • 网站建设费大概多少钱成都网站建设低价
  • 做表格的网站东莞常平房价
  • 国家级建设网站高密做网站哪家强价位
  • 江西省新的建设厅三类人员网站做标记网站
  • 做最精彩绳艺网站产品设计培训
  • 营销型网站建设品牌深圳网络推广最新招聘
  • 单位网站等级保护必须做吗广州app软件开发公司
  • 免费flash网站模板怎么仿网站链接
  • 泉州网站建设哪家好平面设计转行做什么比较好
  • 忘记网站备案账号设计一个网站
  • 国内购物网站哪个最好海珠营销网站建设报价
  • 小型网站搭建logo免费制作
  • dede 网站模板哈尔滨房产信息网官方网站
  • 设计师个人作品集模板班级优化大师网页版登录
  • 高端网站建设教学网站开发前期准备工作
  • 网站评论列表模板设计官网的
  • 怎么做可以访问网站ui设计自学学的出来吗
  • 网站如何接入支付宝软件开发工作内容描述
  • 廊坊网站建设搭建整合营销传播的效果表现为