Controller是管理业务(Service)调度和管理跳转的。
Service是管理具体的功能的。
Controller只负责管理,而Service负责实施。
DAO只完成增删改查,虽然可以1-n,n-n,1-1关联,模糊、动态、子查询都可以。但是无论多么复杂的查询,dao只是封装增删改查。至于增删查改如何去实现一个功能,dao是不管的。
总结这三者,通过例子来解释:
Controller像是服务员,顾客点什么菜,菜上给几号桌,都是ta的职责;
Service是厨师,action送来的菜单上的菜全是ta做的;
Dao是厨房的小工,和原材料打交道的事情全是ta管。
相互关系是,小工(dao)的工作是要满足厨师(service)的要求, 厨师要满足服务员(controller)转达的客户(view)的要求, 服务员自然就是为客户服务喽。
现在最基本的分层方式,结合了SSH架构。 Entity层就是对应的数据库表的实体类。 Dao层是使用了Hibernate连接数据库、操作数据库(增删改查)。 Service层:引用对应的Dao数据库操作。 Controller层:引用对应的Service层,结合SpringMVC注释,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理。
以上的Hibernate, SpringMVC,都需要注入到Spring的配置文件中,Spring把这些联系起来,成为一个整体。
Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源。
例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。例如对Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。 它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。
Filter的生命周期
和我们编写的Servlet程序一样,Filter的创建和销毁由WEB服务器负责。 web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作
filter对象只会创建一次,init方法也只会执行一次。开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。 这个方法完成实际的过滤操作。当客户请求访问与过滤器关联的URL的时候,Servlet过滤器将先执行doFilter方法。FilterChain参数用于访问后续过滤器。 Filter对象创建后会驻留在内存,当web应用移除或服务器停止时才销毁。在Web容器卸载 Filter 对象之前被调用。该方法在Filter的生命周期中仅执行一次。在这个方法中,可以释放过滤器使用的资源。
在Java应用程序中的角色 使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑, 有时可以作为VO(value -object)或dto(Data Transform Object)来使用. 当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法, 也不能携带有connection之类的方法。
POJO是Plain Old Java Objects的缩写不错,但是它通指没有使用Entity Beans的普通java对象, 可以把POJO作为支持业务逻辑的协助类。 POJO有一些private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口。 POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。如果项目中使用了Hibernate框架,有一个关联的xml文件,使对象与数据库中的表对应,对象的属性与表的字段对应。
错误的认识: POJO是这样的一种“纯粹的”JavaBean,在它里面除了JavaBean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的public的get和set方法。我们会发现这样的JavaBean很“单纯”,它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。
真正的意思: POJO = “Plain Ordinary Java Object”,是MartinFowler等发明的一个术语, 用来表示普通的Java对象,不是JavaBean, EntityBean 或者 SessionBean。 POJO不担当任何特殊的角色,也不实现任何特殊的Java框架的接口如,EJB, JDBC等等。 即POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等, 但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现 任何其它Java框架的类或接口
Util是utiliy的缩写,是一个多功能、基于工具的包。 java.util是包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组、日期Date类、堆栈Stack类、向量Vector类等)。集合类、时间处理模式、日期时间工具等各类常用工具包。
Java的实用工具类库java.util包。在这个包中,Java提供了一些实用的方法和数据结构。例如,Java提供日期(Data)类、日历(Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各种类型的随机数,还提供了堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构。
VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。 但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要. 个人觉得同DTO(数据传输对象),在web上传递。
Controller(控制逻辑)层:它是负责在页面和程序之间传输数据的,还有作用是做页面跳转。 页面由用户填写表单数据,点击提交按钮,页面的表单数据由传入Service层。
DAO层(数据库操作层):负责对数据向数据库增删改查的操作。
Service层(业务逻辑层):负责的是对数据的处理。如果没有数据处理任务的话, 此层只做单纯的数据传递作用,而后又到了DAO层。
在该注册的框架中,如果不使用Spring的话,每个层之间的数据传递都需要new一个调用该层数据的 类的实例。而使用了Spring的话,需要做的就是把DAO层和BIZ层的每个类都写一个接口类, 接口类里写实现类的方法,在调用的时候不new对象,直接用对象点(.)方法就可以, 别忘了对每个对象加上set/get方法。
作者:催产的打野 来源: 原文:https://blog.csdn.net/qq_39205129/article/details/96317911 版权声明:本文为博主原创文章,转载请附上博文链接!
