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

网站使用了seo优化工具怎么检测软件定制为什么不给源码

网站使用了seo优化工具怎么检测,软件定制为什么不给源码,wordpress html 静态化,网络推广运营目录1.核心概念AOP(Aspect Oriented Programming)面向切面编程:一种编程范式,指导开发者如何组织程序结构作用:在不惊动原始设计的基础上为其进行功能增强。连接点(JoinPoint):程序执行过程中的任意位置切入点(PointCut)&#xff…

目录

1.核心概念

AOP(Aspect Oriented Programming)面向切面编程:一种编程范式,指导开发者如何组织程序结构

作用:在不惊动原始设计的基础上为其进行功能增强。

连接点(JoinPoint):程序执行过程中的任意位置

切入点(PointCut):匹配连接点的式子

通知(Advice):在切入点执行的操作

切面(Aspect):描述通知与切入点的对应关系

2.小案例

目标:在接口执行前输出当前系统时间。

①在pom.xml中导入依赖spring-context、aspectjweaver

②定义dao接口与实现类

/src/main/java/com/itheima/dao/BookDao.java

package com.itheima.dao;public interface BookDao {public void save();public void update();
}

/src/main/java/com/itheima/dao/impl/BookDaoImpl.java

package com.itheima.dao.Impl;
import com.itheima.dao.BookDao;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {public void save() {System.out.println(System.currentTimeMillis());System.out.println("book dao save ...");}public void update(){System.out.println("book dao update ...");}
}

③定义通知类

/src/main/java/com/itheima/aop/MyAdvice.java

package com.itheima.aop;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;//通知类必须配置成Spring管理的bean
@Component
//设置当前类为切面类类
@Aspect
public class MyAdvice {//设置切入点,要求配置在方法上方@Pointcut("execution(void com.itheima.dao.BookDao.update())")private void pt(){}//设置在切入点pt()的前面运行当前操作(前置通知)@Before("pt()")public void method(){System.out.println(System.currentTimeMillis());}
}

/src/main/java/com/itheima/config/SpringConfig.java

package com.itheima.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;@Configuration
@ComponentScan("com.itheima")
//开启注解开发AOP功能
@EnableAspectJAutoProxy
public class SpringConfig {
}

④测试

/src/main/java/com/itheima/App.java

package com.itheima;
import com.itheima.config.SpringConfig;
import com.itheima.dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class App {public static void main(String[] args) {ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao = ctx.getBean(BookDao.class);bookDao.update();}
}

3.AOP工作流程

  • Spring容器启动

  • 读取所有切面配置中的切入点

  • 初始化bean,判定bean对应类中的方法是否匹配到任意切入点

  • 匹配失败,获取的bean还是原来的bean

  • 匹配成功,获取的bean是原始对象的代理对象,从而不仅能运行原来的一些方法,还能运行增强的内容。

4.通知类型

前置通知

后置通知

环绕通知(重点)

返回后通知

抛出异常后通知

5.AOP通知获取数据

①获取切入点方法的参数

  • JoinPoint:使用于前置、后置、返回后、抛出异常后通知

  • ProceedJoinPoint:适用于环绕通知

②获取切入点方法的返回值

  • 返回后通知

  • 环绕通知

③获取切入点方法的运行异常信息

  • 抛出异常后通知

  • 环绕通知

pom.xml和/src/main/java/com/itheima/config/SpringConfig.java同上面的案例

/src/main/java/com/itheima/dao/BookDao.java

package com.itheima.dao;public interface BookDao {public String findName(int id);
}

/src/main/java/com/itheima/dao/impl/BookDaoImpl.java

package com.itheima.dao.impl;import com.itheima.dao.BookDao;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {public String findName(int id) {System.out.println("id:"+id);return "fyx";}
}

/src/main/java/com/itheima/aop/MyAdvice.java

package com.itheima.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
import java.util.Arrays;//通知类必须配置成Spring管理的bean
@Component
//设置当前类为切面类类
@Aspect
public class MyAdvice {//设置切入点,要求配置在方法上方@Pointcut("execution(* com.itheima.dao.BookDao.findName(..))")private void pt(){}//设置在切入点pt()的前面运行当前操作(前置通知)@Before("pt()")public void before(JoinPoint jp) {Object[] args = jp.getArgs();System.out.println(Arrays.toString(args));System.out.println("before advice ...");}// @After("pt()")public void after(JoinPoint jp) {Object[] args = jp.getArgs();System.out.println(Arrays.toString(args));System.out.println("after advice ...");}//@Around("pt()")public Object around(ProceedingJoinPoint pjp) throws Throwable {Object[] args = pjp.getArgs();System.out.println(Arrays.toString(args));args[0] = 666;Object ret = pjp.proceed(args); // 获取参数处理之后再发送回去return ret;}//@AfterReturning(value="pt()",returning = "ret")public void afterReturning(String ret) {System.out.println("afterReturning advice " + ret);}//@AfterThrowing(value="pt()",throwing = "t")public void afterThrowing(Throwable t) {System.out.println("afterThrowing advice " + t);}
}

/src/main/java/com/itheima/App.java

package com.itheima;import com.itheima.config.SpringConfig;
import com.itheima.dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class App {public static void main(String[] args) {ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao = ctx.getBean(BookDao.class);String name = bookDao.findName(100);System.out.println(name);}
}

6.AOP补充案例

需求:网盘分享链接输入密码时处理尾部多余空格

pom.xml和/src/main/java/com/itheima/config/SpringConfig.java同上面的案例

/src/main/java/com/itheima/dao/ResourcesDao.java

package com.itheima.dao;public interface ResourcesDao {boolean readResources(String url, String password);
}

/src/main/java/com/itheima/dao/impl/ResourcesDaoImpl.java

package com.itheima.dao.impl;import com.itheima.dao.ResourcesDao;
import org.springframework.stereotype.Repository;@Repository
public class ResourcesDaoImpl implements ResourcesDao {public boolean readResources(String url, String password) {// 模拟校验return password.equals("root");}
}

/src/main/java/com/itheima/service/ResourcesService.java

package com.itheima.service;public interface ResourcesService {public boolean openURL(String url, String password);
}

/src/main/java/com/itheima/service/impl/ResourcesServiceImpl.java

package com.itheima.service.impl;import com.itheima.dao.ResourcesDao;
import com.itheima.service.ResourcesService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class ResourcesServiceImpl implements ResourcesService {@Autowiredprivate ResourcesDao resourcesDao;@Overridepublic boolean openURL(String url, String password) {return resourcesDao.readResources(url, password);}
}

/src/main/java/com/itheima/aop/DateAdvice.java

package com.itheima.aop;import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;@Component
@Aspect
public class DateAdvice {//设置切入点,要求配置在方法上方@Pointcut("execution(boolean com.itheima.service.*Service.openURL(*,*))")private void servicePt(){}@Around("DateAdvice.servicePt()")public Object around(ProceedingJoinPoint pjp) throws Throwable {Object[] args = pjp.getArgs();for(int i = 0; i < args.length; i++) {// 判断参数是不是字符串if(args[i].getClass().equals(String.class)) {args[i] = args[i].toString().trim();}}Object ret = pjp.proceed(args);return ret;}
}

/src/main/java/com/itheima/App.java

package com.itheima;import com.itheima.config.SpringConfig;
import com.itheima.service.ResourcesService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class App {public static void main(String[] args) {ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);ResourcesService resourcesService = ctx.getBean(ResourcesService.class);boolean flag = resourcesService.openURL("https://pan.baidu.com/hh", "root ");System.out.println(flag);}
}

http://www.yayakq.cn/news/193564/

相关文章:

  • 网站职位推荐怎么做网站关键词优化公司
  • 中天建设集团有限公司总网站惠州市网站开发
  • 从网站栏目看网站功能河北省建设机械会网站首页
  • 做一网站优化要多少钱智能网联对应的职业
  • 哪些网站不扣流量做网站可视化
  • 旅游景点企业网站排名网站建设模板是什么意思
  • 钉钉创建企业外贸网站建设网站优化
  • 织梦儿童早教教育培训网站模板安卓app开发教程视频免费
  • 网站没有后台登陆文件夹网站开发做什么
  • 网站开发技术概况随便来一个公司邮箱
  • 潮州网站seo推广安阳建筑设计
  • 做网站需要学那些导入 wordpress
  • 域名查询服务器资阳优化团队市场
  • 温州网站建设技术托管网站数据库搬家
  • 租车网站开发wordpress 评论 沙发
  • 高度重视局门户网站建设网页微信版客户端下载
  • 怎么建个自己的网站html5网站有点
  • 编程网站开发培训河南省住房与建设注册中心网站
  • 社交网站图片展示阿里巴巴建设电子商务网站目的
  • 手机怎么建设视频网站吉安公司做网站
  • 泰安房产网站wordpress 分类 配图
  • 网站开发项目小组成员职责网站建设后需要维护吗
  • 品牌网站推广方案建设企业网站支票打印软件
  • 网站推广有哪些举措手机设计
  • 镇江网站设计哪家好西安网站排名优化
  • 网站404做多大wordpress上传与安装
  • 网站建设推广注册公司ui做的好的网站有哪些内容
  • 什么是网站模板设计社交网站cms
  • 网站的扁平化设计理念缪斯设计公司官网
  • 自己电脑做采集网站怎么查网站备案