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

什么是营销型网站设计wordpress邮箱汉化插件下载

什么是营销型网站设计,wordpress邮箱汉化插件下载,网站站外优化推广方式,网站开发主要学什么主要是三个处理#xff1a; 1、统一用户登录权限验证#xff1b; 2、统一异常处理#xff1b; 3、统一数据格式返回。 目录 一、用户登录权限校验 #x1f345; 1、使用拦截器 #x1f388; 1.1自定义拦截器 #x1f388; 1.2 设置自定义拦截器 #x1f388;创建cont… 主要是三个处理         1、统一用户登录权限验证         2、统一异常处理         3、统一数据格式返回。 目录 一、用户登录权限校验 1、使用拦截器 1.1自定义拦截器 1.2 设置自定义拦截器 创建controller类并且运行项目 2、拦截器原理 二、统一异常处理 三、统一数据返回 为什么需要统一数据返回格式 统一数据返回格式 定义同已返回类型 同以数据处理 业务类 一、用户登录权限校验 1、使用拦截器 可以对一部分方法进行拦截而另一部分不拦截。 1.1自定义拦截器 /* * 全局变量 * */ public class AppVar { // Session keypublic static final String SESSION_KEY SESSION KEY; }/* * 自定义拦截器 * 返回true - 表示拦截器验证成功继续指定后续方法 * 返回false - 表示验证失败不会执行后续的方法了 * */ Component public class UserInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception { // 业务方法HttpSession session request.getSession(false);if (session!null session.getAttribute(AppVar.SESSION_KEY)!null){ // 用户已经登录return true;}return false;} } 1.2 设置自定义拦截器 将自定义拦截器设置当前项目的配置文件中并且设置拦截规则。 拦截器要注入到Spring中才能运行他是伴随着Spring的启动而启动的 Configuration public class AppConfig implements WebMvcConfigurer {Autowiredprivate UserInterceptor userInterceptor;Overridepublic void addInterceptors(InterceptorRegistry registry) { // registry.addInterceptor(new UserInterceptor());registry.addInterceptor(userInterceptor).addPathPatterns(/**) //(/**)表示拦截所有的请求.excludePathPatterns(/user/reg)//表示过滤拦截不拦截(/user/reg).excludePathPatterns(/user/login);//表示过滤拦截不拦截(/user/login)} } 创建controller类并且运行项目 RestController RequestMapping(/user) public class UserController {RequestMapping(/getuser)public String getUser(){System.out.println(do getUser());return user;}RequestMapping(/reg)public String reg(){System.out.println(do reg());return reg;}RequestMapping(/login)public String login(){System.out.println(do login());return login;} }其中 addPathPatterns表示要拦截的url“/**”表示拦截任意方法elcludePathPatterns表示需要排除的URL以上得拦截规则可以拦截URL包括静态文件图片文件、JS、CSS等一般拦截静态文件的时候我们可以把这些静态文件分类放在static文件中 2、拦截器原理 在使用拦截器之前   使用拦截器之后会在调用Controller之前进行相应的业务处理 实现原理源码分析 所有的controller指定都会通过一个调度器DispatcherServlet来实现 所有的请求都会执行DispatcherServlet中的doDispatcher方法在doDispatcher会执行一系列的事件该事件是在执行拦截器之前的如果该事件返回false后续就不会执行Controller。 以下是doDispatcher中的一部分代码发现在执行controller之前都会追先执行预处理 // 调⽤预处理【重点】if (!mappedHandler.applyPreHandle(processedRequest, respon se)) {return;}// 执⾏ Controller 中的业务mv ha.handle(processedRequest, response, mappedHandler.g etHandler());if (asyncManager.isConcurrentHandlingStarted()) {return; } 那么关于预处理⽅法 applyPreHandle方法从上面的源码可以看出着和我们之前定义的拦截器相似着就是拦截器的实现原理 boolean applyPreHandle(HttpServletRequest request, HttpServletResponse response) throws Exception {for(int i 0; i this.interceptorList.size(); this.interceptorIndex i) {// 获取项⽬中使⽤的拦截器 HandlerInterceptorHandlerInterceptor interceptor (HandlerInterceptor)this.interceptorList.get(i);if (!interceptor.preHandle(request, response, this.handler)) {this.triggerAfterCompletion(request, response, (Exception)null);return false;}}return true;} 二、统一异常处理 统一异常处理就是指常规的异常统一处理。 统一异常处理使用的是ControllerAdvice ExceptionHandler来执行的ControllerAdvice表示控制器通知类ExceptionHandler是异常处理两个结合表示当出现异常的时候执行某个通知也就是执行某个方法事件。 首先认为构造一个空指针异常 RequestMapping(/reg)public String reg(){System.out.println(do reg());Object obj null;System.out.println(obj.hashCode());System.out.println();System.out.println(do reg());return reg;} 报错了 这种直接给你报错的方式并不直观所以我们可以进行统一的异常处理返回直观的数据。 然后我们进行统一异常处理 首先定义一个统一的返回对象 Data public class ResultAjax {private int code; //状态码private String msg; //状态码的描述信息private Object data;//返回数据 } 然后定义异常管理器 RestControllerAdvice public class ExceptionAdvice {ExceptionHandler(NullPointerException.class)public ResultAjax doNullPointerException(NullPointerException e){ResultAjax resultAjax new ResultAjax();//错误的信息使用-1描述状态码resultAjax.setCode(-1);resultAjax.setMsg(空指针异常 e.getMessage());resultAjax.setData(null);return resultAjax;} } 这时候就会返回状态的描述信息 也可以直接使用NullPointerException的父类 ExceptionHandler(Exception.class)public ResultAjax doException(Exception e){ResultAjax resultAjax new ResultAjax();resultAjax.setCode(-1);resultAjax.setMsg(空指针异常 e.getMessage());resultAjax.setData(null);return resultAjax;} 三、统一数据返回 为什么需要统一数据返回格式 统一数据返回格式的优点为什么要统一 方便程序员更好的接收和解析后端数据接口返回的数据降低前端程序源和后端程序员的沟通成本按照找某个格式实现所有接口都这样返回有利于项目统一数据的维护和修改有利于后端技术部分的统一规范的标准制定不会出现稀奇古怪的返回内容 统一数据返回格式 定义同已返回类型 Data public class ResultAjax {private int code; //状态码private String msg; //状态码的描述信息private Object data;//返回数据/** 返回成功* */public static ResultAjax success(Object data){ResultAjax resultAjax new ResultAjax();resultAjax.setCode(200);resultAjax.setMsg();resultAjax.setData(data);return resultAjax;}/** 返回失败* */public static ResultAjax fail(int code,String msg){ResultAjax resultAjax new ResultAjax();resultAjax.setCode(code);resultAjax.setMsg(msg);resultAjax.setData(null);return resultAjax;}public static ResultAjax fail(int code,String msg,Object data){ResultAjax resultAjax new ResultAjax();resultAjax.setCode(code);resultAjax.setMsg(msg);resultAjax.setData(null);return resultAjax;} } 同以数据处理 统一数据处理强制执行 ControllerAdvice实现ResponseBodyAdvice接口并且重写它其中的两个方法supports必须返回truebeforeBodyWrite方法进行重新判断和重写操作 ControllerAdvice public class ResponseAdvice implements ResponseBodyAdvice {/** 默认翻会true的时候* 才会执行beforeBodyWrite方法* */Overridepublic boolean supports(MethodParameter returnType, Class converterType) {return true;}Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType,MediaType selectedContentType,Class selectedConverterType,ServerHttpRequest request,ServerHttpResponse response) {//已经包装好的对象if (body instanceof ResultAjax){return body;} // 没有包装return ResultAjax.success(body);} } 业务类 RestController RequestMapping(/user) public class UserController { RequestMapping(/login)public ResultAjax login(){System.out.println(do login());return ResultAjax.success(login);}RequestMapping(/getnum)public int getNum(){return 1;} } 其中login没有定义返回类型getNum定义了返回类型返回结果分别如下 注意         如果定义的返回值类型是String那么会报错 RequestMapping(/getstring)public String getString(){return qqq;} 那么可以对String类型作出单独处理 Autowiredprivate ObjectMapper objectMapper;Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType,MediaType selectedContentType,Class selectedConverterType,ServerHttpRequest request,ServerHttpResponse response) {//已经包装好的对象if (body instanceof ResultAjax){return body;} // 对字符串进行单独处理if (body instanceof String){ResultAjax resultAjax ResultAjax.success(body);try {return objectMapper.writeValueAsString(resultAjax);} catch (JsonProcessingException e) {e.printStackTrace();}} // 没有包装return ResultAjax.success(body);} 返回结果
http://www.pierceye.com/news/933060/

相关文章:

  • 网站源码网网站建设 制作教程
  • 怎么样销售关于网站建设网站服务器过期了怎么办
  • 常州建网站需要多少钱直播app开发费用
  • hpsocket 网站开发英文网站cms
  • 外贸自建站有哪些网站开发有哪几类
  • 青岛网站建设推广短视频运营是做什么的
  • 华为官方网站进入wordpress单页增加分页
  • 互动营销型网站建设大型网站建设开发设计公司
  • 锦州建设局网站商城网站建设方案电子版
  • 网站上删除信息如何做飞虎队网站建设
  • 中国有多少个网站网站做视频一个月有多少钱收入
  • 网站文字大小普洱市建设局网站
  • 兰州网站建设小程序凡客网站目录优化
  • 宿州科技网站建设一站式网站管家
  • 网站开发模块学些什么郑州网站建设动态
  • 各类设计型网站wordpress 防注入
  • 网站中有一个非常著名的原则如何与老板谈网站建设
  • 免费十八种禁用网站如何做一个网页布局
  • cms仿站pc网站案例
  • dede如何做手机网站哪些客户需要做网站
  • 阜蒙县建设镇官方网站那种网站2021
  • 同信.长春网站建设北京网站建设策划
  • 长沙游戏网站开发开发人员公众号
  • 用手机能建网站吗软件商店软件下载
  • 天津自助建站哪个建设网站
  • 西宁市网站建设公司推荐网站全网建设 莱芜
  • 安徽阜阳网站建设公司wordpress网页自适应屏幕大小
  • 上海门户网站的亮点网站开发平台及常用的开发工具
  • 广州h5设计网站公司网站建设从建立服务器开始
  • 如何网站建设全包12306网站多钱做的