欢迎来到天天文库
浏览记录
ID:9890160
大小:229.00 KB
页数:28页
时间:2018-05-14
《华为外包java面试题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SSH篇(后台)一、SSH概述1.1SSH的含义当前J2EE企业级应用分为三层:表现层-业务层-数据源层,而SSH代表了每一层的具体实现,它是三种流行的开源框架的缩写,S-Struts,S-Spring,H-Hibernate。这三者的组合是当前J2EE开发的标准模式,也代表了J2EE正在朝着简化复杂性,轻量化方向发展,最新J2EE6已证明了这种趋势。1.2J2EE开发模式的演变J2EE应用一直采用三层加构,即表现层-业务层-数据源层。旧石器时代:J2EE应用采用表现层-远程EJB-实体EJB(或JDBC),这是最为正
2、宗也是最复杂的J2EE开发,适用于银行等小部分项目;随后由于微软.NET的兴起以及其对J2EE的挑战,正宗的J2EE出现了一个变种:表现层-本地EJB-Ibatis,在这种模型中业务层选择了本地EJB,同时数据源层也改为Ibatis,这种模式极大的提高性能,华为大部分项目采用这种构架。在这两种架构中,由于采用了EJB组件模型,从而依赖于EJB容器,而EJB容器以一种全无或全有的方式提供服务,同时业务实现也受制于容器。这种开发模式导致了以下复杂性:依赖于应用服务器,不可移植,开发困难,无法在容器外测试,部署复杂,效率低下
3、。新石器时代:在新石器时代依然采用了三层加构,只是抛弃了EJB,而采用了Spring等轻量级容器,同时持久化由全自动的Hibernate承担。在这种架构中,由于放弃了EJB,放弃了全功能的应用服务器,在节省了软件许可费用的同时也大大提高了软件开发效率。由于web服务器的可移植也好于应用服务器,从而使得J2EE应用可顺利移植。1.3SSH与传统开发的比较从上面所述可以看出传统J2EE开发和SSH开发的不同。简言之,传统J2EE开发采用EJB组件在限制了业务实现的同时也极其复杂,只适用银行等一部分应用;SSH不强制采用应用
4、服务器,不限制业务实现,透明的持久化从而减化了开发的复杂度,提高了开发效率。二、Struts-WEB层开发的标准2.1Struts简介Struts是Apache软件基金会的一个开源项目。采用Servlet/JSP技术,实现了基于J2EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。使用标准的JSP以外,还提供了大量的标签库使用,同时也可以与其他表现层组件技术(产品)进行整合。Struts出现之前J2EEWeb层没有统一标准,各个公司都是自有框架,给从业者,企业带来了诸多不便。Struts采
5、用了经典MVC设计,从而事实上成为WEB层开发的标准2.2Struts的原理在谈到Struts前,简单讲下MVC设计模式。MVC即Model-View-Controller的缩写,MVC减弱了业务逻辑接口和数据接口之间的耦合,同时让视图层更富于变化。MVC的工作原理,如下图1所示:控制器(Controller)-负责转发请求,对请求进行处理。视图(View)-界面设计人员进行图形界面设计。模型(Model)-程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。Struts
6、是MVC的一种实现,它将Servlet和JSP标记用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的体系结构与工作原理如下图2所示:从图2中我们可以知道,Struts的体系结构包括模型(Model),视图(View)和控制器(Controller)三部分。下面让我们从用户发出请示角度来看看struts的体系结构(Model2)与工作原理:(1)首先,用户(通常通过浏览器,如IE)发出请求,Struts的控制器(ControllerServlet)得到请求。(
7、2)Struts控制器通过配置文件得到业务逻辑处理Action,并调用Action的处理用户请求。(3)Action处理业务业务逻辑(可能查找数据库或调用别的系统),处理完成后,填充相关的Model对象,并把控制权返回控制器。(4)控制器选择相应的视图(视图从模型里取出数据),并返回给用户。2.3Struts2简介Struts2提供了对MVC的一个清晰的实现,这一实现包含了很多参与对所以请求进行处理的关键组件,如:拦截器、OGNL表达式语言、堆栈。下图是Struts2的处理流程。一个请求在Struts2框架中的处理大概
8、分为以下几个步骤1客户端初始化一个指向Servlet容器(例如Tomcat)的请求2这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMeshPlugin)3接着FilterDispatcher
此文档下载收益归作者所有