过滤器\监听器\拦截器的区别 过滤器 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,依赖于servlet容器,主要的用途是过滤字符编码、做一些业务逻辑判断等。其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应(Request、Response)统一设置编码,简化操作;同时还可进行逻辑判断,如用户是否已经登陆、有没有权限访问该页面等等工作。整个过程是基于函数回调完成的。它是随你的web应用启动而启动的,只初始化一次,以后就可以过滤几乎所有的相关请求,只有当你的web应用停止或重新部署的时候才销毁。 监听器 现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是:做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。 拦截器 拦截器是面向切面编程(AOP)的一种实现,就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法。是基于JAVA的反射机制。拦截器不是在web.xml,比如struts在struts.xml中配置,或在Spring的配置文件中配置,所以它不依赖于servlet容器。以Struts拦截器举例,拦截器只能对符合配置的请求起作用,而且可以访问action中的上下文、值栈里的对象,在action的生命周期中,拦截器可多次被调用。这些都是与过滤器所不同的。

JAVABean、EJB、POJO、VO、DTO PO(持久对象Persistant object):随着ORM概念一起出现 VO(Value object值对象):和PO一样仅仅包含数据,和表对应,也可以与表不对应 BO(Business object业务对象):通过调用DAO方法,结合PO、VO进行业务操作 POJO(Plain ordinary Java object) 简单无规则对象 ORM工具中PO没有增加别的属性和方法,只有属性字段及setter和getter方法 DAO(Data access object)数据访问对象 DTO(Data Transfer Object数据传输对象) JavaBean与EJB几乎没有什么是相同的 JavaBean的使用可以不需要容器,EJB的运行一班需要EJB容器(即应用服务器,如JBoss、Weblogic、Websphere等等) EJB可以使用JavaBean,尤其是Entity EJB的时候,但几乎没有看到JavaBean可以使用EJB的

DTO (经过处理后的PO,可能增加或者减少PO的属性): Data Transfer Object数据传输对象 主要用于远程调用等需要大量传输对象的地方。 比如我们一张表有100个字段,那么对应的PO就有100个属性。 但是我们界面上只要显示10个字段, 客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端, 这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。

POJO(POJO是一种概念或者接口,身份及作用随环境变化而变化) : POJO有一些private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口 plain ordinary java object 简单java对象 即POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。 POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。 一个POJO持久化以后就是PO。 直接用它传递、传递过程中就是DTO 直接用来对应表示层就是VO

EJB与DCOM EJB需要EJB容器 DCOm的容器则是MTS 不过DCOM目前已经逐渐被COM+代替,DCOM和COM+的过渡是相当平滑的

VC下DCOM的Server和Client编程 COM原理介绍: 与所有的COM通信一样,只有在客户请求一个服务器的接口时才会开始。 在DCOM中,客户端调用CoCreateInstanceEx(),传送服务器计算机的一个描述和请求一个类标识器(CLSID)和接口。 该请求由服务控制管理器处理(Service Control Manager,SCM),它是Windows的一部分。 SCM负责在服务器计算机上创建和激活COM对象。 在DCOM中,SCM将尝试启动远程计算机上的服务器。DCOM客户服务器组件郭晨如图1: 一旦创建了远程的COM服务器,所有的调用将通过Proxy 和stub对象配置。Proxy和stub使用RPC(Remote Procedure Calls,远程过程调用)进行通信, RPC处理所有网络交互。在服务器端,stub对象负责配置, 而客户端则由proxy负责。 本例子以银行一个用户(Account)的存钱(Deposit)和 取钱(Withdraw)简单模型COM来具体实现。本例子中用到的一个IAccount接口, 这个接口的成员函数有四个: a.Deposit(dobule x)–用来对一个账户存钱 b.Withdraw(double x)-用来对一个账户取钱 c.CurrentAccount(double newVal)-设置当前账户的月 d.CurrentAccount(double *pVal)-获取当前账户的余额 其他内容可参见https://wenku.baidu.com/view/fb1a5617866fb84ae45c8d75.html

JavaEE开发的思考