struts、springmvc、spring、hibernate、mybatis等框架整理大全

一.struts1

1.struts1的工作流程

  1. 当Web服务器启动的时候,根据web.xml文件加载并初始化ActionServlet,根据配置ActionServlet的config参数信息,确定struts-config.xml配置文件存放的位置,并根据Servlet映射配置确定其拦截处理的URL,例如,拦截请求的后缀是.do的URL。根据struts-config.xml中的配置信息,为struts中不同的模块初始化相应的对象。
  2. 用户通过Web浏览器向Web服务器提交HTTP请求,Web服务器根据用户请求的URL进行不同的操作。如果用户请求的后缀是.do(请求后缀的过滤可以在web.xml中设置),则交由ActionServlet来处理该客户端请求。如果用户端请求的URL后缀不是.do或者在web.xml中没有对应匹配的servlet,则Web浏览器将直接处理,并将处理的结果返回Web浏览器
  3. ActionServlet接收到客户请求后,根据struts-config.xml文件中注册的ActionForm创建 ActionForm实例对象,并自动填充客户请求中传递来的表单数据到ActionForm Bean对象中。
  4. ActionServlet根据struts-config.xml文件中注册的Action,将请求转发给对应的Action对象,调用execute()方法处理请求(如读取ActionForm中的数据,调用JavaBean进行业务处理)。
  5. Action完成任务后,回送ActionForward对象给ActionServlet。

      6.ActionServlet根据ActionForward对象的内容对相应的JSP页面处理,并将处理后的结果返回Web浏览器。                                

2.struts1的优缺点

优点:

       1.实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现。

       2.有丰富的taglib可以用

       3.提供Exception处理机制

       4.数据库连接池管理

缺点:

         1.Struts 的Action必需是thread-safe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。

         2.对Servlet的依赖性过强. Struts处理Action时必需要依赖ServletRequest 和ServletResponse,所有它摆脱不了Servlet容器。

          3.每配置一下 struts-config,须重新启动tomcat,而且配置烦所,页面转向过多,导致forword配置过多使得 struts-config文件内容过多,寻找东西比较困难

二.struts2

1.什么是struts2

      1.Struts2 是一个非常优秀的MVC框架,基于Model2 设计模型 
由传统Struts1和WebWork两个经典框架发展而来

      2.Strust2 核心功能 
(1)允许POJO(Plain Old Java Objects)对象 作为Action 
(2)Action的execute 方法不再与Servlet API耦合,更易测试 
(3)支持更多视图技术(JSP、FreeMarker、Velocity) 
(4)基于Spring AOP思想的拦截器机制,更易扩展 
(5)更强大、更易用输入校验功能

2.struts2的工作流程

      1.客户端浏览器发出http请求。

      2.根据web.xml配置,该请求被FilterDispatcher接收

      3.根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton

      4.Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。

      5.Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面

      6.返回HTTP响应到客户端浏览器

3.struts2的优缺点

优点:

        1.实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现。

        2.丰富的标签库,大大提高了开发的效率。

        3.Struts2提供丰富的拦截器实现。

        4.Struts2的可扩展性高

        5.异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理。

缺点:

        1.Struts2中Action中取得从jsp中传过来的参数时还是有点麻烦。

        2.校验还是感觉比较繁琐,感觉太烦乱,也太细化了,如果校验出错的只能给用户提示一些信息。如果有多个字段,每个字段出错时返回到不同的画面,这个功能在Strut2框架下借助框架提供的校验逻辑就不容易实现。

         3.安全性有待提高。

三.SpringMVC

1.什么是springMVC

       是一种web程序架构,是一种代码设计思想

       M: model  数据模型

       V: view     视图

       C:controller   控制器

        将所有客户端请求(Request)全部交由控制器,由控制器将其分发并将结果响应回客户端

2.springMVC的工作流程

       1 :客户端发出一个http请求给服务器,web服务器对http请求解析, 如果匹配到DispatcherServlet的请求映射路径(在web.xml文件中指定) web容器将请求转交给DispatcherServlft


      2 :DispatcherServlet接收到这个请求之后,根据请求的信息(包括url,http,请求报文头,和请求参数Cookie等),以及HandlerMapping的配置匹配到处理请求的处理器(handler)

      3:DispatcherServlet根据HandlerMapping找到对应的Handler,并将处理权交给Handler,在有具体的HandlerAdapter对handler进行具体的调用.


      4:Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet.


      5:Handler返回的视图是一个逻辑视图并不是真正的视图,DispatcherServlft通过ViewResolver将逻辑视图转换为真正的视图View


      6 :Dispatcher通过model对ModelAndView()参数进行解析,最终展出完整的view并返回给客户端

  3.springMVC的优缺点

    优点:

         1.完全基于接口编程,真正实现了视图无关。除了jsp,还可以使用Velocity和xstl或其他视图技术,甚至是自定义的视图技术--只需要简单的实现view接口

          2.Spring MVC框架以DispatchServlet为核心控制器,该控制器负责拦截用户的所有请求

          3.Spring MVC所有控制器都必须实现Controler接口,该接口定义了ModelAndView  handleRequest(request,response)方法,通过实现该接口实现用户的业务逻辑控制。

缺点:

         1.Spring与MVC 的Servlet API 耦合,难以脱离容器独立运行

         2.太过于细分,开发效率低

         3.过度追求完美,有过度设计的危险

4.为什么要使用springMVC

         就是让使用者只关心核心业务的开发,框架帮你屏蔽原有技术跟业务开发无关的各类技术问题

四.spring

 1.什么是spring

     spring分为两个部分 IOC和AOP

      IOC:控制反转  

                 将对象的创建交给spring,由spring管理对象的生命周期

      AOP:面向切面编程

                  将程序中的交叉业务逻辑(事物,日志,安全控制,缓存等)代码提取出来,封装成切面,由AOP容器(spring)在适当的时机(编译期/运行时),将封装的切面动态的织入到具体业务逻辑中。

   2.spring的三种注入方式是什么

         1.构造方法注入

         2.setter方法注入

         3.接口注入

五.Hibernate

   1.什么是hibernate

      hibernate是一个持久层框架,对JDBC进行了封装;

      持久层框架做了什么:

       1.配置数据源

       2.映射SQL语句

       3.映射关系

  2.hibernate的工作原理

        1.读取并解析配置文件

        2.读取并解析映射信息,创建Session Factory

        3.打开Session

        4.创建事物Transation

        5.持久化操作

        6.提交事物

        7.关闭session

        8.关闭sessionFactory

 3.hibernate的优点

    1.对JDBC访问数据库的代码进行了封装,简化了数据库访问层繁琐的重复性代码

    2.hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现,很大程序的简化DAO层的编码工作

    3.hibernate使用java反射机制,而不是字节码增强程序来实现透明性

    4.hibernate的性能非常好,映射关系很出色,支持各种关系数据库,从一对一到多对多的各种复杂关系

六.mybatis

        1.什么是mybatis

              mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。

        2.mybatis的优点

                 1. 与JDBC相比,减少了50%以上的代码量。

                 2. MyBatis是最简单的持久化框架,小巧并且简单易学。

                3. MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用。

                 4. 提供XML标签,支持编写动态SQL语句。

                 5. 提供映射标签,支持对象与数据库的ORM字段关系映射。

猜你喜欢

转载自blog.csdn.net/qq_38146131/article/details/82107604
今日推荐