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

科技杭州网站建设装个宽带多少钱

科技杭州网站建设,装个宽带多少钱,贵阳市建设管理信息网站,东阳网站建设有哪些前后端分离的开发中#xff0c;用户http请求应用服务的接口时, 如果要求检测该用户是否已登录。可以实现的方法有多种#xff0c; 本示例是通过aop 的方式实现#xff0c;简单有效。 约定#xff1a;前端http的post 请求 export async function request(url,data) {const … 前后端分离的开发中用户http请求应用服务的接口时, 如果要求检测该用户是否已登录。可以实现的方法有多种 本示例是通过aop 的方式实现简单有效。 约定前端http的post 请求 export async function request(url,data) {const config {method: POST,headers: {Content-Type: application/json},}//每个请求的参数要求附加sessionid, 该sessionid 是登录时生成的const paramsData Object.assign(data,{sessionid:globalData.sessionID || })config.body JSON.stringify(paramsData)try {const res await window.fetch(url, config)if(res.status!200){return {status: res.status,data:{},headers: res.headers,url: res.url,statusText:res.statusText}}return {status: res.status,data:await res.json(),headers: res.headers,url: res.url,}} catch (err) {return {status: 404,data:{},headers: res.headers,url: res.url,statusText:fetch error:err.toString()}}} 1、在pom.xml 引用 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId/dependency 2、创建插入标记 Target({ElementType.METHOD}) // 只在对象方法上标记 Retention(RetentionPolicy.RUNTIME) //运行时反射 public interface Interceptor {String additionalMessage() default ; } 3、实现切入类 Aspect Component Slf4j public class LoggingAspect {Autowiredpublic StringRedisTemplate redisTemplatelocate;private T T getSessionID(Object postData,ClassT clazz){return (T)postData;}Around(annotation(Interceptor)) //有标记的地方将实现以下和切入public Object logExecutionTime(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {//获取切入方法的参数就是前部请求的json数据Object[] args proceedingJoinPoint.getArgs();//获取其中的sessionid// requestBase 实体类只有一个参sessionid , 做为其它实体类的父类用于接收接口上传的参数。RequestBase requestBasegetSessionID(args[0],RequestBase.class);log.info(sessionid:{},requestBase.getSessionid());//检测该sessionid 是否存在(redis)if (requestBase.getSessionid()null || !redisTemplatelocate.hasKey(requestBase.getSessionid())) {//用户未登陆throw new Exception(用户未登陆);}//获取 request 和 responseServletRequestAttributes servletRequestAttributes ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());log.info(request:{},servletRequestAttributes.getRequest());log.info(response:{},servletRequestAttributes.getResponse());MethodSignature methodSignature (MethodSignature) proceedingJoinPoint.getSignature();String className methodSignature.getDeclaringType().getSimpleName();String methodName methodSignature.getMethod().getName();Instant startTime Instant.now();//实行被切入的方法Object result proceedingJoinPoint.proceed();String additionalMessage methodSignature.getMethod().getAnnotation(Interceptor.class).additionalMessage();long elapsedTime Duration.between(startTime, Instant.now()).toMillis();log.info(Class Name: {}, Method Name: {}, Additional Message: {}, Elapsed Time: {}ms,className, methodName, additionalMessage, elapsedTime);log.info(Result: {}, result);return result;} } 4 建立api接口在需要检测的方法上加入Interceptor 就完成切入的检测。 RestController Slf4j public class ExampleController {PostMapping(/t1)Interceptor(additionalMessage 要求检测登录)ResponseBodypublic ResponseEntityRequestBase getData(RequestBody DataRequest req) {try {return new ResponseEntity(req, HttpStatus.OK);} catch (Exception e) {return new ResponseEntity(null, HttpStatus.BAD_REQUEST);}} } 5 实体类 Data public class DataRequest extends RequestBase {private String name; }Data public class RequestBase{private String sessionid; }该方法只适用于少部分需要检测而大部份不需要检测的情况下如果整个包都需要检测的利用execution方 法实现 Pointcut(execution(public * com.example.myapp..*.*(..))) Aspect Component Slf4j public class LoginExecution {Autowiredpublic StringRedisTemplate redisTemplatelocate;private T T getSessionID(Object postData,ClassT clazz){return (T)postData;}//切入点 com.aop.ttt 下的所有public 方法Pointcut(execution(public * com.aop.ttt..*.*(..)))public void publicMethods() {}Around(publicMethods())public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {//获取切入方法的参数就是前部请求的json数据Object[] args joinPoint.getArgs();//获取其中的sessionid// requestBase 实体类只有一个参sessionid , 做为其它实体类的父类用于接收接口上传的参数。RequestBase requestBasegetSessionID(args[0],RequestBase.class);log.info(sessionid:{},requestBase.getSessionid());//检测该sessionid 是否存在(redis)if (requestBase.getSessionid()null || !redisTemplatelocate.hasKey(requestBase.getSessionid())) {//用户未登陆throw new Exception(用户未登陆);}//获取 request 和 responseServletRequestAttributes servletRequestAttributes ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());log.info(request:{},servletRequestAttributes.getRequest());log.info(response:{},servletRequestAttributes.getResponse());MethodSignature methodSignature (MethodSignature) joinPoint.getSignature();String className methodSignature.getDeclaringType().getSimpleName();String methodName methodSignature.getMethod().getName();Instant startTime Instant.now();//实行被切入的方法Object result joinPoint.proceed();long elapsedTime Duration.between(startTime, Instant.now()).toMillis();log.info(Class Name: {}, Method Name: {}, Elapsed Time: {}ms,className, methodName, elapsedTime);log.info(Result: {}, result);return result;} }
http://www.pierceye.com/news/41270/

相关文章:

  • 做外贸方面的网站hao123网址之家官网
  • 外贸网站个性设计想学网络运营怎么开始
  • 做网站的服务器带宽一般多少怎么对一个网站做优化
  • 在家建设一个网站需要什么品牌策划费用预算
  • 宜兴做网站的公司制作视频剪辑
  • 北京建网站的公司哪个比较好广告推广软件
  • php下载站源码网站导航设计技巧
  • 餐饮 网站模板seo网站关键词优化工具
  • 社团网站开发模板中国建筑今天最新消息
  • 空壳网站查询优化大师手机版
  • 深圳网站设计go专门做毕业设计的网站
  • 做竞猜网站犯法吗农资销售网站建设方案
  • 中山网站建设文化平台广告设计公司设计收费标准
  • 成都网站建设价格wordpress 手机 登陆不了
  • 迎中国建设银行网站一键做网站
  • 石家庄城乡建设局网站6网站备案 厦门
  • 建筑学院网站网页界面设计历史
  • 国内哪家网站建设公司好快三直播app下载平台
  • 网站备案号不存在广州工程公司有哪些
  • 免费网站开发软件平台电商 网站 设计
  • 深圳维特网站建设开发公司资质等级
  • 深一网站建设wordpress下载面板插件
  • 外贸平台做摩托车配件什么网站好dw做网站链接数据库
  • 怎样做3d动画短视频网站建设银行网站未响应
  • 网站更换ip地址网站备案变更 能让首页关闭 二级域名继续
  • 贵州网站建设hsyunso母版页和窗体做网站例子
  • wordpress全站登陆可见黄页88的盈利模式
  • 网站情况建设说明南京软件网站建设公司
  • 99设计网站昆山有建设网站的吗
  • 青岛模板建站公司dwcc2017怎么做网站