Struts2框架前端
1、简介java
Struts2是一个至关强大的JavaWeb开源框架,是一个基于POJO的Action的MVCWeb框架。它基于当年的WebWork和XWork框架,继承其优势,同时作了至关的改进。mysql
一、Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员能够很好的掌控开发的过程。程序员
二、使用OGNL进行参数传递。OGNL提供了在Struts2里访问各类做用域的数据的简单方式,你能够方便的获取Request、Attribute、Application、Session、Parameters中的数据。大大简化了开发人员在获取这些数据是的代码量。spring
三、强大的拦截器。Struts2的拦截器是一个Action级别的AOP,Struts2中的许多特性都是经过拦截器来实现的,例如异常处理、文件上传、验证等。sql
拦截器是可配置与重用的,能够将一些通用的功能如:登陆验证、权限验证等置于拦截器中以完成了系统中的权限验证功能。数据库
四、易于测试。Struts2的Action都是简单的POJO,这样能够方便的对Struts2的Action编写测试用例,大大方便了JavaWeb项目的测试。编程
五、易于扩展的插件机制。在Struts2添加扩展是一件愉快而轻松的事情,只须要将所须要的Jar包放到WEB-INF/lib文件中,在Struts.xml中作一些简单的设置就能够实现扩展。服务器
六、模块化管理。Struts2已经把模块化做为了体系架构中的基本思想,能够经过三种方法来将应用程序模块化:将配置信息拆分红多个文件把自包含的应用模块建立为插件建立的框架特性,即将于特定应用无关的新功能组织成插件,以添加到多个应用中去。session
七、全局结果与声明式异常。为应用程序添加全局的Result,和在配置文件中对异常进行处理,这样当处理过程当中出现指定异常时,能够跳转到特定页面。
2、Struts2的工做机制
在Struts2框架中的处理大概分为:
一、客户端初始化一个指向Servlet容器(如Tomcat)的请求;
二、这个请求通过一系列的过滤器(Filter)(这些过滤器中有一个叫作ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其余框架的集成颇有帮组,例如:SiteMeshPlugin);
三、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否须要调用某个Action;
四、若是ActionMapper决定须要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;
五、ActionProcy经过ConfigurationManager询问框架的配置文件,找到须要调用的Action类;
六、ActionProxy建立一个ActionInvocation实例。
七、ActionInvocation实例使用命令模式来调用,在调用Action的过程先后,涉及到相关拦截器(Interceptor)的调用。
八、一旦Action执行完毕,ActionInvocation负责根据Struts.xml中的配置找到对应的返回结果。返回结果一般是(但不老是,也多是另外的一个Action链)一个须要被表示的JSP或者FreeMarker的模板。在表示过程当中可使用Struts2框架中继承的标签。在这个过程当中须要涉及到ActionMapper。
spring框架讲解
1、简介
Spring为企业应用的开发提供了一个轻量级的解决方案,包括基于依赖注入的核心机制,基于AOP的声明式事务管理,与多种持久层技术的整合,以及优秀的WebMVC框架等。Spring支持对POJO(PlainObject JavaObject,指最传统的Java对象,和任何模式都无关)的管理。Spring的目标是实现一个全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间彼此能够独立,也可使用其它的框架方案加以代替。
Spring是一个开源的项目;它基于IOC和AOP的架构多层J2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,由于它模块化的很好,容许你根据本身的须要选择使用它的某一个模块;它实现了很优雅的MVC,对不一样的数据访问技术提供了统一的接口,采用IOC使得能够很容易的实现bean的装配,提供了简洁的AOP并据此实现TransactionManager等等。
优势:
一、Spring能有效地组织你的中间层对象,无论你是否选择使用了EJB。
二、Spring能消除在许多工程中常见的对Singleton的过多使用;下降了系统的可测试性和面向对象的程度。
三、经过一种在不一样应用程序和项目间一致的方法来处理配置文件,Spring能消除各类各样自定义格式的属性文件的须要。
四、经过把对接口编程而不是对类编程的代价几乎减小到没有,Spring可以促进养成好的编程习惯。
五、Spring被设计为让使用者它建立的应用尽量少的依赖于他的API。
六、使用Spring构建的应用程序易于单元测试。
七、Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。
八、Spring帮助你解决许多问题而无需使用EJB。
九、Spring为数据存取提供了一个一致的框架,不论使用的是JDBC仍是O/RMapping产品(如hibernate)。
缺点:
Jsp中要写不少代码、控制器过于灵活,缺乏一个公用控制器。
2、Spring的工做机制
一、用户向服务器发送请求,请求被Spring前端控制DispatcherServlet捕获;
2.、DispatcherServlet对请求URL进行解析,获得请求资源标示符(URI)。而后根据该URI,调用HandlerMapping得到该Handler配置的全部相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;
三、DispatcherServlet根据得到的Handler,选择一个合适的HandlerAdapter。(若是成功得到后,此时将开始执行拦截器的preHandler(…)方法)。
四、提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。在填充Handler的入参过程当中,根据你的配置,Spring将帮助你作一些额外的工做(如:HttpMessageConveter、数据装换、数据格式化、数据验证),验证结果存储到BindingResult或Error中。
五、Handler执行完成后,向DispatcherServlet返回一个ModelAndView对对象;
六、根据返回的ModelAndView,选择一个合适的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet;
七、ViewResolver结合Model和View,来渲染试图。
八、将渲染结果返回给客户端。
注解:
1.spring mvc将全部的请求都提交给DispatcherServlet,它会委托应用系统的其余模块负责负责对请求进行真正的处理工做。
2.DispatcherServlet查询一个或多个HandlerMapping,找处处理请求的Controller.
3.DispatcherServlet将请求提交到目标Controller
4.Controller进行业务逻辑处理后,会返回一个ModelAndView
5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
6.视图对象负责渲染返回给客户端。
Hibernate框架讲解
1、简介
Hibernate是开源的、用于封装数据访问层的组件,咱们称之为数据访问层框架(或持久层框架)。
以前咱们经过JDBC/SQL语句从数据库中访问/操做数据,而Hibernate就是封装了这些操做,用于数据访问层的组件技术。
出现Hibernate框架以前在企业项目开发过程当中,以下几点形成了程序员们的痛苦:
一、SQL语句过于繁杂和数据库的耦合度高。
二、指有些SQL会涉及到多表操做,或者有些表会很是庞大,这时候写在Dao中的SQL就会很是复杂,同时致使Dao和数据库的耦合度较高。
三、不一样数据库之间SQL的不一样,致使移植困难。
四、不一样数据库虽然SQL语句大体相同,可是还有一些细节上的差异,好比Oracle中的分页方式和MySQL中的分页是不一样的,因此会有代码移植困难的因素。
五、二维关系表和对象之间数据结构的不匹配。
六、咱们从数据库中取出的数据时结果集(一张表),而咱们开发时须要将查询到的结果集封装为对象,然而数据库中二维表的数据结构和内存中Java对象的数据结构是不匹配的(表中的数据须要通过处理才能变为Java对象)。
基于如上几点,痛苦促进了技术的革新和进步,Hibernate应用而生。
2、Hibernate的工做原理-ORM
对象-关系映射(Object-RelationshipMapping)
在咱们的应用程序(App)中数据用对象类体现,而在数据库中,数据使用表的形式保存。
Hibernate用于应用程序中的对象(Object)与表中的数据关系(Relationship)之间的映射(Mapping),即把对象保存到关系表中或者把关系表中数据取出映射为对象。
能够这样理解,当咱们使用Hibernate框架技术,就能够直接从数据库中取出Java对象,或者把Java对象直接保存于数据库中,中间写SQL语句等繁琐的步骤被Hibernate封装,对咱们是透明的。
Hibernate是自动化程度很高的组件,所以比较难以驾驭,在对Hibernate理解不够透彻的状况下使用,稍不留神可能就会影响性能。
业界还有一些自动化程序度稍低的数据访问层组件,好比Ibatis,至关于半自动化的仪器,可控性较Hibernate强一些,目前也比较流行。
处理步骤:
一、经过Configuration().configure(); //读取并解析hibernate.cfg.xml配置文件
二、由hibernate.cfg.xml中的<mappingresource=”**/**/User.hbm.xml”>读取并解析映射信息.
三、经过config.buildSessionFactory(); //建立SessionFactory;
四、sessionFactory.openSession(); //打开Session
五、session.beginTransaction(); //建立事务Transaction
六、persistent operate 持久化操做.
七、Session.getTransaction().commit(); //提交事务
八、关闭Session
九、关闭SessionFactory