做电影网站怎么降低内存,泰安企业网站建设,沛县网站建设,wordpress jet插件Struts1工作原理图 1、初始化#xff1a;struts框架的总控制器ActionServlet是一个Servlet#xff0c;它在web.xml中配置成自动启动的Servlet#xff0c;在启动时总控制器会读取配置文件(struts-config.xml)的配置信息#xff0c;为struts中不同的模块初始化相应的对象。(面…Struts1工作原理图 1、初始化struts框架的总控制器ActionServlet是一个Servlet它在web.xml中配置成自动启动的Servlet在启动时总控制器会读取配置文件(struts-config.xml)的配置信息为struts中不同的模块初始化相应的对象。(面向对象思想) 2、发送请求用户提交表单或通过URL向WEB服务器提交请求请求的数据用HTTP协议传给web服务器。 3、form填充struts的总控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员变量中。 4、派发请求控制器根据配置信息对象ActionConfig将请求派发到具体的Action对应的formBean一并传给这个Action中的excute()方法。 5、处理业务Action一般只包含一个excute()方法它负责执行相应的业务逻辑(调用其它的业务模块)完毕后返回一个ActionForward对象。服务器通过ActionForward对象进行转发工作。 6、返回响应Action将业务处理的不同结果返回一个目标响应对象给总控制器。 7、查找响应总控制器根据Action处理业务返回的目标响应对象找到对应的资源对象一般情况下为jsp页面。 8、响应用户目标响应对象将结果传递给资源对象将结果展现给用户。 Struts1优缺点为什么要用strust1 1.优点 ①开源的框架结构清晰 ②是MVC的经典实现MVC是一种思想而不是一种技术 ③处理异常机制实现国际化 ④具有强大的标签库 ⑤解决了JSP页面存在大量的JAVA代码维护起来方便 ⑥在formBean中会自动提交不会去使用传统的get、set方法得到值、取值
2.缺点 ①配置复杂 ②测试不方便 ③依赖web容器 ④action是一个单例模式必须设置为线程安全
Struts2工作原理
1 客户端初始化一个指向Servlet容器例如Tomcat的请求 2 这个请求经过一系列的过滤器Filter这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器这个过滤器对于Struts2和其他框架的集成很有帮助例如SiteMesh Plugin 3 接着FilterDispatcher被调用FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4 如果ActionMapper决定需要调用某个ActionFilterDispatcher把请求的处理交给ActionProxy 5 ActionProxy通过Configuration Manager询问框架的配置文件找到需要调用的Action类 6 ActionProxy创建一个ActionInvocation的实例。 7 ActionInvocation实例使用命名模式来调用在调用Action的过程前后涉及到相关拦截器Intercepter的调用。 8 一旦Action执行完毕ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是但不总是也可 能是另外的一个Action链一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper
在上述过程中所有的对象ActionResultsInterceptors等都是通过ObjectFactory来创建的 Struts2优缺点即为什么要用struts2 Struts2就会自动的进行验证。还有很多比如国际化资源文件等。 Struts2的开发中来如果你重来没有用过任何框架你也可以通过快速的学习加入到Struts2的应用开发中来因为它足够的简单。 大量的拦截器 Struts2本身提供了大量的可重用的拦截器比如类型转换拦截器很多时候我们从页面取得参数这个时候它是String类型的我们需要手动。 基于插件的框架 Struts2是一个基于插件的框架社区中提供了很多实用的插件比如jfreechat/json等等使用这些插件可以简化我们的开发加快开发进度。 struts2最大的缺点莫过于在好多web服务器上支持不好例如在websphere5.5,weblogic8.1及以前版本支持非常查需要用最新的。 多种视图的支持 多种视图的支持jspfreemarkerVeloctiy只要你愿意你甚至可以通过轻松的改造让它支持pdf同一个项目中你可以支持多种视图。 更加的模块化 与Struts1.X 相比Struts2更加的模块化可以轻松将配置信息按功能界限拆分成多个文件便于管理和团队协作开发。 与Spring的集成 与Struts1.x相比Struts2不必再自己编写singleton进一步的降低了程序间的耦合性就Struts2内部本身而言降低了框架本身的偶合性。 基于pojo易于测试 在Struts1.x中我需要Mock出这两个Http对象使我们很难编写Action的单元测试与Struts1.x相比Struts2的Action 不再依赖于HttpServletRequest和HttpServletResponse对象使我们能够更方便的针对Action编写单元测试。 Hibernate工作原理 1. 读取并解析配置文件 2. 读取并解析映射信息创建SessionFactory 3. 打开Sesssion 4. 创建事务Transation 5. 持久化操作 6. 提交事务 7. 关闭Session 8. 关闭SesstionFactory
Hibernate优缺点 优点 1 hibernate是基于ORMapping技术的开源的框架对JDBC进行了轻量级的封装使用面向对象的思维来操纵数据库。 2hibernate提供了session缓存和二级缓存对于不需要进行复杂查询的系统性能有提升。 3低侵入式设计
缺点 1hibernate学习成本太高。 2不适合有复杂的sql查询统计 。 3不适合大量的聚集操作存储过程 优缺点补充 1、 不需要编写的SQL语句(不需要编辑JDBC)只需要操作相应的对象就可以了就可以能够存储、更新、删除、加载对象可以提高生产效 2、因为使用Hibernate只需要操作对象就可以了所以我们的开发更对象化了 3、使用Hibernate移植性好(只要使用Hibernate标准开发更换数据库时只需要配置相应的配置文件就可以了不需要做其它任务的操作) 4、Hibernate实现了透明持久化当保存一个对象时这个对象不需要继承Hibernate中的任何类、实现任何接口只是个纯粹的单纯对象—称为POJO对象(最纯粹的对象—这个对象没有继承第三方框架的任何类和实现它的任何接口) 5、Hibernate是一个没有侵入性的框架没有侵入性的框架我们一般称为轻量级框架 6、Hibernate代码测试方便。
Spring工作原理 内部最核心的就是IOC了
动态注入让一个对象的创建不用new了可以自动的生产这其实就是利用java里的反射反射其实就是在运行时动态的去创建、调用对象Spring就是在运行时跟xml Spring的配置 文件来动态的创建对象和调用对象里的方法的 。
Spring还有一个核心就是AOP这个就是面向切面编程可以为某一类对象 进行监督和控制也就是 在调用这类对象的具体方法的前后去调用你指定的 模块从而达到对一个
模块扩充的功能。这些都是通过 配置类达到的。
Spring目的就是让对象与对象模块与模块之间的关系没有通过代码来关联都是通过配置类说明 管理的Spring根据这些配置 内部通过反射去动态的组装对象
要记住Spring是一个容器凡是在容器里的对象才会有Spring所提供的这些服务和功能。
Spring里用的最经典的一个设计模式就是模板方法模式。这里我都不介绍了是一个很常用的设计模式
Spring里的配置是很多的很难都记住但是Spring里的精华也无非就是以上的两点把以上两点跟理解了 也就基本上掌握了Spring.
Spring AOP与IOC 一、 IoC(Inversion of control): 控制反转 1、IoC
概念控制权由对象本身转向容器由容器根据配置文件去创建实例并创建各个实例之间的依赖关系
核心bean工厂在Spring中bean工厂创建的各个实例称作bean 二、AOP(Aspect-Oriented Programming): 面向方面编程 1、 代理的两种方式 静态代理 针对每个具体类分别编写代理类 针对一个接口编写一个代理类
动态代理
针对一个方面编写一个InvocationHandler然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类 Spring 优缺点
它是一个开源的项目而且目前非常活跃它基于IoCInversion of Control反向控制和AOP的构架多层j2ee系统的框架但它不强迫你必须在每一层 中必须使用Spring因为它模块化的很好允许你根据自己的需要选择使用它的某一个模块它实现了很优雅的MVC对不同的数据访问技术提供了统一的 接口采用IoC使得可以很容易的实现bean的装配提供了简洁的AOP并据此实现Transcation Managment等等 优点 Spring能有效地组织你的中间层对象不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EE的 API特制的frameworkSpring致力于解决剩下的问题。 Spring能消除在许多工程中常见的对Singleton的过多使用。根据我的经验这是一个很大的问题它降低了系统的可测试性和面向对象的程度。 通过一种在不同应用程序和项目间一致的方法来处理配置文件Spring能消除各种各样自定义格式的属性文件的需要。曾经对某个类要寻找的是哪个魔法般的属性项或系统属 性感到不解为此不得不去读Javadoc甚至源编码有了Spring你仅仅需要看看类的JavaBean属性。Inversion of Control的使用在下面讨论帮助完成了这种简化。 通过把对接口编程而不是对类编程的代价几乎减少到没有Spring能够促进养成好的编程习惯。 Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。 使用Spring构建的应用程序易于单元测试。 Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口却不会影响调用代码。 Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物它们适用于许多web应用。例如Spring能使用AOP提供声明性事务管理而不通过EJB容器如果你仅仅需要与单个数据库打交道甚至不需要一个JTA实现。 Spring为数据存取提供了一个一致的框架,不论是使用的是JDBC还是O/R mapping产品如Hibernate。
Spring确实使你能通过最简单可行的解决办法来解决你的问题。而这是有有很大价值的。 --------------------- 作者官小飞 来源CSDN 原文https://blog.csdn.net/z742182637/article/details/50394189 版权声明本文为博主原创文章转载请附上博文链接