web应用后端MVC框架详解
Posted 畅游DT时代
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web应用后端MVC框架详解相关的知识,希望对你有一定的参考价值。
文章来源:中国联通网研院网优网管部——IT技术研究团队
Web应用开发分前端和后端,前端指的是用户可以看得见碰得着的东西,包括Web页面的结构、Web的外观视觉表现以及Web层面的交互实现。前端开发人员精通html、 CSS,能够兼容业界承认的主流浏览器;熟悉javascript,掌握1~2种JS框架,如JQuery。后端更多的是与数据库进行交互以处理相应的业务逻辑,需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等。后端开发人员一般精通JSP,Servlet,JDBC开发,应该对类库以及框架非常熟悉,如Spring,Hibernate,IBatis,OSGI等;能熟练使用Oracle、mysql等常用的数据库系统,熟悉Tomcat、Jboss等应用服务器;精通设计模式、UML建模等,熟悉网络编程,具有设计和开发对外API接口经验和能力,同时具备跨平台的API规范设计以及API高效调用设计能力。
目前阶段比较流行的后端技术主要有Java,php,Node.js、Ruby on Rails、Java EE、Python等,Python、 Ruby、PHP属于同一类,都是脚本型语言,特点是不需编译,开发效率高(很多定义逻辑都不必考虑),但是执行效率低。经常用于小型网站开发,门户网站居多。Node.js最大的特点是基于事件驱动和异步IO,特别擅长低CPU运算、多IO、高并发的WebService,缺点是代码维护有难度,应用于生产环境不太稳定。由于Node.js是基于JavaScript 去开发后台,因此前端人员使用较多。而JavaEE用作企业级应用,跨平台性能好,稳定可靠、运行效率高、不容易犯错,拥有最完整的生态链。针对不同的业务场景,一般都有比较全的解决方案,同时,Java拥有完整的大数据技术体系,包括但不限于Hadoop,Hbase,Spark,Storm 用来处理海量数据。因此,Java成为服务端开发的主要语言。
此外,数据访问也逐渐通过面向对象的方式来替代直接的SQL访问,出现了ORM(Object Relation Mapping)的概念,ORM框架模式称为对象-关系映射模式,主要将关系型数据库中的表转换为实例对象,后台开发人员在操作对象的时候,不必拼写复杂的SQL语句,只需操作相对应的对象的属性和方法即可。Hibernate是ORM框架的典型代表,然而,越是功能强大的ORM越是消耗内存,系统里面有大数据量、大运算量、复杂查询的地方,就不要用ORM。这种框架更适合复杂的系统(这里使用复杂,而不是大型),因为这样的系统要求建造速度快,系统稳定,他们的业务规则异常的复杂,但他们对系统的性能要求并不是很高。两个框架模式的快速发展使得WEB应用快速地渗透到各个行业中。
这里我们注重了解一下MVC框架模式,它的出现使得开发者只关心核心业务的开发,框架将一些与业务无关的各类技术封装好,使开发者开发的时候不用什么都要考虑,什么都要重新写,极大地提高了开发效率。比较常用的MVC框架有Struts2,SpringMVC、JSF等,由于Struts2技术上的放缓,SpringMVC在开发效率和性能上逐渐显露出优势,使得SpringMVC受到了越来越多人的追捧。说到SpringMVC就不得不提Spring框架,SpringMVC是Spring框架的一部分,Spring框架一共包括核心容器、Spring 上下文、Spring AOP、Spring DAO、Spring ORM、Spring Web 模块、Spring MVC七个模块,核心容器提供 Spring 框架的基本功能。Spring框架的核心思想就是控制反转(IOC)和面向切面(AOP),IOC指的是把本来属于Java程序中创建对象的功能交由容器来接管,容器充当第三方。我们在XML文件里定义各个对象的依赖关系,由容器完成对象的构建,当我们的Java代码里需要使用某个实例的时候就可以从容器里获取,容器会根据XML配置文件,调用该实例的方法注入到程序里,实现依赖注入。下图的例子是在XML文件中定义的一个bean,id为jdbcTemplate(一个bean相当于一个组件,用于实现某个功能,class用来声明该bean的实现类,相当于在声明调用这个实现类就可以实现该bean 的功能),容器在初始化的时候,会根据XML文件中定义的Bean创建一个jdbcTemplate实例,程序中所有需要用到jdbcTemplate的地方,都不需要自己new一个实例,而是由容器负责注入。
Spring还有另外一个显著的特点就是AOP,其主要目的是尽量减少在业务逻辑的代码中混入很多的系统相关的逻辑,比如日志记录、权限管理、事务管理等,这些系统性逻辑的编程工作都可以独立编码实现,然后以切面的形式穿插在业务逻辑之中,业务逻辑不再关心与自己自身关系不大的系统逻辑,实现不同逻辑的低耦合效果。
说完Spring核心容器,我们接着来了解SpingMVC,为了更好地理解SpingMVC,我们必须了解Servlet,因为SpringMVC框架是以Servlet为核心的的体系结构。Servlet用于实现MVC中controller模块。Servlet是Sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个Servlet接口,用户若想开发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
编写一个Java类,实现servlet接口。
把开发好的Java类部署到web服务器中。
浏览器和服务端之间通过http协议进行沟通,Servlet的主要功能是接收浏览器传给服务端的请求(request),并将服务端处理完的响应(response)返回给用户的浏览器。具体流程如下:浏览器记录用户的选择,然后将需要传给服务器的数据按照http协议封装好,http报文通过网络传输到指定的服务器,服务器通过特定的Web容器接收这个报文信息, Web容器将接受到的http报文解析成一个request对象存储起来,Web服务器调用Servlet的方法使用这个request做完相应的处理后,Servlet将结果信息封装到response对象里,然后将response对象交给Web容器,Web容器则把这个response对象转变为http协议的报文,并将报文回传给浏览器,浏览器最后解析这个响应报文,将最终结果展示给用户。
上图是SpringMVC的处理流程,图中的前端控制器指的就是DispatcherServlet类,而DispatcherServlet继承自HttpServlet抽象类,其本质上就是一个Servlet,主要负责调度不同的控制流程,根据用户的不同请求,转发给对应的页面控制器进行处理,页面控制器指的就是我们自己定义的业务逻辑相关的Controller。我们在使用Spring框架的时候,项目导入完必要的Spring包之后,需要在web.xml中对DispatcherServlet类进行申明,如下图所示,其中 DispatcherServlet与之相对应的servlet-mapping,是用来映射用户请求相关的URL,同时可以定义初始化参数(init-param),DispatcherServlet在进行初始化的时候就可以根据init-param的值定义Spring上下文(context—上下文,指的是一种环境,主要是各种bean),然后依照这个上下文的内容进行分配任务。
明白了SpringMVC的处理流程,也就开始对SpringMVC有了一个初步认识。
-END-
声明:
本文为中国联通网研院网优网管部IT技术研究团队独家提供。
如需转载或合作,请联系管理员(zhouyh@dimpt.com)
长按既可添加关注
以上是关于web应用后端MVC框架详解的主要内容,如果未能解决你的问题,请参考以下文章
Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解 - 基本介绍