《SSH配置及运行过程》由会员分享,可在线阅读,更多相关《SSH配置及运行过程(7页珍藏版)》请在金锄头文库上搜索。
1、MVC 是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用 MVC 应用程序被分成三 个核心部件:模型、视图、控制器。它们各自处理自己的任务。视图视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面, 在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们 包括Macromedia Flash 和象XHTML, XML/XSL, WML等一些标识语言和Web services.如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不 同的视图。在视图中其实没有真正的处
2、理发生,不管这些数据是联机存储的还是一个雇员列表,作 为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。模型模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs 和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型 与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以 被多个视图重用,所以减少了代码的重复性。控制器控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送 HTML表单时,控制器本身不输出任何东西和做任何处理
3、。它只是接收请求并决定调用哪个模型构件 去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理, 然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数 据,并通过表示层呈现给用户。为什么要使用 MVC大部分Web应用程序都是用像ASP,PHP,或者CFML这样的过程化语言来创建的。它们将像数据库查询 语句这样的数据层代码和像HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表 示层分离开来,但这通常不是很容易做到的,它需要精心的计划和不断的尝试。MVC从根
4、本上强制性 的将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它给我们带来的好处是无庸质疑的。 首先,最重要的一点是多个视图能共享一个模型,正如我所提及的,现在需要用越来越多的方式来 访问你的应用程序。对此,其中一个解决之道是使用MVC,无论你的用户想要Flash界面或是WAP界 面;用一个模型就能处理它们。由于你已经将数据和业务规则从表示层分开,所以你可以最大化的 重用你的代码了。由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用。例如,很多数据可能用 HTML来表示,但是它们也有可能要用Macromedia Flash和WAP来表示。模型也有状态管理和数据持久 性处
5、理的功能,例如,基于会话的购物车和电子商务过程也能被Flash网站或者无线联网的应用程序 所重用。 因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变你的应用程序的数据层和业务 规则。如果你想把你的数据库从MySQL移植到Oracle,或者改变你的基于RDBMS数据源到LDAP,只需 改变你的模型即可。一旦你正确的实现了模型,不管你的数据来自数据库或是LDAP服务器,视图将 会正确的显示它们。由于运用MVC的应用程序的三个部件是相互对立,改变其中一个不会影响其它两 个,所以依据这种设计思想你能构造良好的松偶合的构件。 对我来说,控制器的也提供了一个好处,就是可以使用控制器来联接不同的
6、模型和视图去完成用户 的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制 器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。三层架构即“表现层”,“业务层”,“持久化层”。表现层实现的代表作品是 Struts 框架,业务层实现的 代表作品是Spring,持久层实现的代表作品是Hibernate。举个例子。 持久层从持久库中取出-10。 业务层按照一定的逻辑(这里我们举例取温度的逻辑)翻译成 -10摄氏度。表示层显现给用户 “哎呀,今天好冷!”。 层就相当于一个黑盒子,我们不用知道它内部怎么实现,只需要知道如何去调用它就行了。每层只 与上
7、下相邻的两层打交道。当一层内部由于技术变迁发生变化时,只要接口不变,其他层不用做任 何改变。分层之后灵活性提高,也便于团队分工开发。呵呵,写的很详细吧。希望对你有帮助。spring mvc的运行原理如同struts,是典型的mvc框架,只不过提供了对spring业务层的无缝衔接, mvc的m代表model,v代表view,v是一种视图渲染技术,包含了 MVC框架的标签和自定义标签,方便 简化HTML代码,即原先在JSP里面的动态代码都将用标签来表示,有助于数据分离,便于美工美化页 面,view还包含了页面的校验部分,提供了初始的页面校验,比如空校验,邮件格式校验等等标签, 因此view部分主要
8、负责页面的处理和展示,model代表模型, 简单的说就是业务模型或者数据模型,比如一个用户信息,就是一个数据模型,一个登录操作,就 是一个业务模型,模型其实是业务规则和数据对象的抽象,c就是控制器,可以想象,v负责展示页 面数据,m抽取了模型,而模型和展示数据之间的对应和连接则需要c来完成,因此ctrol (控制器), 是模型和展示数据的桥梁,举个例子,一个用户登录界面,输入的用户登录信息是view,经过control 的派发和控制,获取到了用户信息的模型,然后再经过control的派发处理,到页面上展示为view 数据。Hibernate 运行原理1. 读取并解析配置文件2. 读取并解析映射
9、信息,创建SessionFactory3. 打开Sesssion4. 创建事务Transation5. 持久化操作6. 提交事务7. 关闭Session8. 关闭SesstionFactory为什么要用:1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层 的编码工作3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库, 从一对一到多
10、对多的各种复杂关系。2 Hibernate 是如何延迟加载?1. Hibernate2延迟加载实现:a)实体对象b)集合(Collection )2. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存 在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。Struts的工作流程:在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml 文件中读取配置信息, 把它们存放到各种配置对象当ActionServlet接
11、收到一个客户请求时,将执行如下流程.-检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到 ActionForm 对象中;-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;-(4)如果ActionForm 的validate()方法返回null 或返回一个不包含ActionMessage 的ActuibErrors 对象, 就表示表单验证成功 ;-(5)ActionServlet根据Action
12、Mapping所包含的映射信息决定将请求转发给哪个Action,如果相应 的Ac tion实例不存在,就先创建这个实例,然后调用Act ion的execu te()方法;-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件;-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;为什么要用:JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构 建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把
13、这些技术组织起来的规则,这就 是框架, Struts 便应运而生。基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件8. Struts的validate框架是如何验证的?在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。9. 说下Struts的设计模式MVC模式:web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配 置好的设置决定是否需要表单验证,如果需要就
14、调用ActionForm的Validate ()验证后选择将请求 发送到哪个Act ion,如果Ac tion不存在,Ac tionServlet会先创建这个对象,然后调用Ac tion的 execute ()方法。Execute ()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward 对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象 指定的jsp生成动态的网页,返回给客户。spring工作机制及为什么要用?1. springmvc请所有的请求都提交给DispatcherServ
15、let,它会委托应用系统的其他模块负责负责对 请求进行真正的处理工作。2. DispatcherServlet 查询一个或多个HandlerMapping,找到处理请求的Controller.3. DispatcherServlet 请请求提交到目标Controller4. Controller 进行业务逻辑处理后,会返回一个 ModelAndView5. Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象6. 视图对象负责渲染返回给客户端。为什么用:AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应
16、用程序代码中。 使用 AOP 后,公共服务(比如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时 不会增加域对象的对象模型的复杂性。IOC 允许创建一个可以构造对象的应用环境, 然后向这些对象传递它们的协作对象。 正如单词 倒置 所表明的,IOC就像反过来的JNDI。没有使用一堆抽象工厂、服务定位器、单元素(single ton )和 直接构造(straightconstruetion ),每一个对象都是用其协作对象构造的。因此是由容器管理协 作对象(collaborator )。Spring即使一个AOP框架,也是一IOC容器。Spring最好的地方是它有助于您替换对象。有了 Spring , 只要用JavaBean属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类 似接口的协作对象。S