根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。 过滤器和拦截器之间的区别在于,在Java Web中,传入的请求和响应会预先过滤掉一些信息,或者预先设置一些参数,然后将servlet或struts的动作传递给业务逻辑,例如,在进入servlet或struts动作之前,过滤掉非法URL(不是login.do地址请求,如果用户未登录,则过滤掉),或者统一设置字符集,或者删除一些非法字符,面向方面的编程是在服务或方法之前调用方法,或在方法之后调用方法. 例如,动态代理是的简单实现,它在调用方法Operation之前先打印出字符串(或其他业务逻辑),也可以在调用方法后打印出字符串,甚至进行业务处理. 引发异常时的逻辑运算. 和过滤器之间的区别: 1.基于java的反射机制,过滤器基于函数回调. 2.不依赖于servlet容器,过滤器依赖于servlet容器. 3.只能对动作请求起作用,而过滤器可以对几乎所有请求起作用. 4.可以访问操作上下文和值堆栈中的对象,但过滤器不能. 5. 在动作生命周期中,可以多次调用,并且在初始化容器时只能调用一次过滤器. 执行顺序: 过滤前-拦截前-动作处理-拦截后-过滤. 个人认为过滤是一个水平过程. 首先,对客户端提交的内容进行过滤(例如,未登录的用户无法访问内部页面);过滤器通过后,将检查用户提交的数据的验证并进行一些初步的数据处理和过滤器的区别,然后将处理后的数据发送给相应的Action;在完成Action处理并返回之后,还可以执行其他处理(尚未考虑要做什么),然后返回到过滤器的后续操作. 面向方面的编程(AOP是“面向方面的程序”的首字母缩写),我们知道面向对象的功能是继承,多态性和封装. 封装要求将功能分散到不同的对象中,这在软件设计中通常称为职责分配. 实际上,让不同的类设计不同的方法. 这样,代码便分散到各个类中. 这样做的好处是,它减少了代码的复杂性并使类可重用. 但是人们还发现,在分散代码的同时,还增加了代码的重复性. 这意味着什么?例如,我们可能需要登录两个类中的每个方法. 根据面向对象的设计方法,必须将日志的内容添加到两个类的方法中. 也许它们是完全一样的,但这是因为面向对象的设计使得不可能将类连接到类,并且不可能统一这些重复的代码. 有人可能会说它很容易处理,我们可以在一个单独的类中的一个单独方法中编写此代码,然后在这两个类中对其进行调用. 但是,通过这种方式,这两个类与上面提到的独立类结合使用,它们的更改将影响这两个类. 那么,有什么方法可以让我们在需要时随意添加代码?这种在运行时将代码动态地切入指定方法和类位置的编程思想是面向方面的编程. 通常,我们切入指定类的指定方法的代码片段称为切面,以及将哪些类和方法切入切点. 使用AOP,我们可以将几个类共有的代码提取为一个切片,然后在需要时切入对象,从而更改其原始行为. 这样,AOP实际上只是对OOP的补充. OOP从水平方向区分每个类和过滤器的区别,而AOP从垂直方向将特定代码添加到对象. 有了AOP,OOP就变成了三维. 如果添加了时间维度,则AOP会将OOP从二维更改为三维,从平面更改为三维. 从技术上讲,AOP基本上是通过代理机制实现的. 可以说AOP是编程历史上的一个里程碑,它是对OOP编程的非常有用的补充.
|
温馨提示:喜欢本站的话,请收藏一下本站!