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