发表于: 2017-11-08 20:51:23

1 637



今日完成的事情:

继续学习分析Spring Aop的知识;

1:什么是Aop思想;Aspect Oriented Program面向切面编程,指的就是spring的一种编程思想,这种思想就是把一个要做的目标性的功能分成两类;核心业务功能以及周边业务功能,也可以说是辅助功能吧;实际来说就像任务中的登陆,增加数据,删除数据是核心业务;而性能统计,打印日志就属于周边辅助性的功能;核心业务不用说就是必须要完成的内容;而周边功能理论上去掉,也不会影响核心业务的实施,但是实际编程中不可能不要,就像日志,作用有很多;除了反应代码是否运行,还可以输出重要的信息,帮助调试,分析业务现状或者问题等,所以不可能忽略的.到这里就可以明确定义什么是切面:就是在Spring的面向切面编程AOP思想的周边功能.

2;什么是Aop;区分了核心和周边功能,理解了切面的定义,知道了aop的面向切面的思想,接着就可以定义什么是Aop;依据上面讲的面向切面编程的AOP思想,然后分别对核心业务功能和切面功能独立进行开发;再然后把切面功能和核心业务功能"编织"在一起,这就叫AOP,也就是面向切面编程

3; Aop的主要作用: 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。以日志为例, 如果不用AOP,每次打日志都去修改业务代码;使用AOP业务代码不需要做任何改变,通过配置就可以实现哪些业务要用上日志,哪些业务不用上日志;代码量更小,而不改代码意味着,犯错的机会更小,维护成本更低,同一时间,开发人员能完成的工作量也更大了。


4;代码实战;可以分成两部分来使用aop也就是xml和注解;

第一部分:基于XML文件配置Aop

主要是分析Xml的配置文件;先是把用的bean放进spring容器

 



然后是配置Aop,先定义切面表达式,引入连接点进而确定切入点; 指定了核心业务功能

 



然后是配置切面通知,指定辅助功能; 通知说明了干什么和什么时候干(什么时候通过方法名中的beforeafteraround等能知道),而切入点则是为了说明在哪干(指定到底是哪个方法)

 


配置文件好了之后,看一下切面的配置,因为用的环绕方法,必须设置ProceedingJoinPoint类型的参数;而且必须有返回值,这个返回值也即是目标方法的返回值;

 

 

 

5;第二部分;基于注解配置Aop; 基于AspectJ的注解方法,似乎牵涉到代理模式整体不太理解,这里用的动态代理,也暂时放一放,只知道一个类被AOP织入增强后,就产生一个结果代理类Aspect(切面): 是切入点和通知的结合,会用,背后的原理先不学了.

与上面的配置Xml类似;只是把增强通知通过注解的方式,放到代码里了; 这句话的意思就是,启动对AOP的支持;Aspect注解起作用,会自动为匹配的类生产代理对象


然后是,通知增强的具体配置

 

6;简单总结一下;实际上通过注解和配置xml两种aop的方法;逻辑是一样的,只是用xml的方法,要把这种逻辑写出来,告诉spring框架去执行;实际应用中也是推荐后者的注解方法,很方便.而作用就是利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,同时提高了程序的可重用性,就像打日志,不必每个方法都写进去,这样就会提高开发效率。

 

7;记录一下增强通知,一共有五种通知,是基于AspectJ的通知注解,也是java社区最完整最完善的AOP框架,Spring也有自身的AOP框架;可以使用基于AspectJ注解或基于XMl配置的AOP,这里使用的就是基于Xml配置;而五种通知注解为; @Before:前置通知,在方法执行之前执行;@After:后置通知,在方法执行之后执行; @AfterRunning:返回通知,在方法返回结果后执行@AfterThrowing:异常通知,在方法抛出异常之后执行;  @Around:环绕通知,围绕着方法执行.

 

8;然后补充一点环绕通知和前置后置的区别;

第一个:目标方法的调用由环绕通知决定,即可以决定是否调用目标方法,而前置和后置通知是不能决定的,他们只是在方法的调用前后执行通知,目标方法肯定是要执行的。

第二个:环绕通知可以控制返回对象,可以返回一个与目标对象完全不同的返回值,虽然这很危险,但是可以办到;而后置方法是无法办到的,因为他是在目标方法返回值后调用; 这个返回值的暂时不太理解,这个返回对象;Mark.

 

9,简单了解一下任务四的概念

1.什么是JSP

JSPJava Server Pages)是由Sun创建的一种使软件开发者可以响应客户端请求,而动态生成 HTMLXML 或其他格式文档的Web网页的技术标准;使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分.JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。

 

2.JSP共有9种基本内置对象:

1request 触发服务调用的请求;2response 对请求的应答;3session 为请求的客户创建的session对象;4application servlet 配置对象获得的 servlet上下文5out向输出流写入内容的对象;6pageContextJSP 的页面上下文;7page 实现处理本页当前请求的类的实例;8config JSP ServletConfig;9exception 表示JSP页面运行时产生的异常

 

3; Tiles 是一种JSP布局框架,主要目的是为了将复杂的jsp页面作为一个的页面的部分机能,然后用来组合成一个最终表示用页面用的,这样的话,便于对页面的各个机能的变更及维护。

 

明日计划的事情:

开始任务四,把之前的代码完善

 

遇到的问题及解决方法:

1;一直有个警告WARN: Establishing SSL connection without server's identity verification is not recommended.

 

原因是MySQL在高版本需要指明是否进行SSL连接;解决办法在mysql连接字符串url中加入ssl=false;还可以直接是true不过要导入证书什么鬼的.

 



简单记录一下SSL是什么: SSL(Secure Sockets Layer安全套接字层)是在Web服务器和浏览器之间建立加密链接的标准安全技术。该链接确保所有在Web服务器和浏览器之间传递的数据保持私有和不可分割的状态。SSL是行业标准,被数百万个网站用来保护他们与客户的在线交易。


然后说一下&amp;这是一个转义字符代表&;一开始用&会报错,要用转义字符;再记录一下常用转义字符的规律: 转义字符串,即字符实体分成三部分:第一部分是一个&符号,英文叫ampersand;第二部分是实体(Entity)名字;第三部分是一个分号。例如,HTML&lt; &gt;&amp;&quot;&copy;分别是<>&"©;的转义字符;xml也类似,这里的&是在xml里所以需要转义&amp

 

 

再测试,ok

 

 

2,这里也有一个小点,影响不大,不过也记录一下,标签的闭合;自闭和标签self closing tags以及结束标签closing tags

 

 

例如一个item元素如果没有内容,那么它可以写成<item></item>,也可以简写成<item/>。这都是符合规定的闭合标签。上面的bean就是这样,bean元素没有内容只有属性,所以不用单独写结束标签,而是在起始标签的最后加上/,表示已经自闭和;也可以正常写结束标签.

 

 

收获:

1;进一步学习了Aop知识,对于切面知识理解了更多

2; 完成小课堂的内容

3;简单了解任务四相关概念

 



返回列表 返回列表
评论

    分享到