java web的前世今生

  笔者接触java web已一年光景,从当初对企业级开发一无所知到现在熟练运用开发工具与框架,个中实有所获,现将其分享出来,若有不是,还请各位不吝赐教!
  讲java,就不可避免地要涉及到spring(至少现在是如此),所以,我们接下来先讨论讨论Spring。
  Spring回顾
  Spring 是由Rod Johnson创建的一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。这是百度百科对Spring的定义。Spring包括很多模块,最核心的是Core与IOC(DI),以其为基础,又构建了SpringMVC、SpringCloud、SpringBoot等其他在业界非常有影响力的框架,但在我们这篇文章中,主要讨论的是web的发展历史,因此介绍Core与IOC(DI)以及SpringMVC(事实上笔者只会这几个^-^)。
  前文已经提到过,Spring最基础的是Core与IOC,这一部分内容以XML的形式来将我们在类中的对象以依赖注入的方式进行实例化。依赖注入,简单来说是由Spring接手对象的创建工作,然后在我们需要用到对象的地方进行注入,方便开发人员的开发工作。这是IOC的基本思路。Core实现了这一思路,使用ApplicationContext接口读入XML配置文件,形成bean工厂,之后再用getBean方法获取bean实例即可使用。但是,诸位看官有没有发现这个貌似有点麻烦,没错,就是有点麻烦,Spring也考虑到了这一点,于是在Spring的2.5版本开始支持@Autowired注解来进行依赖注入,解决了“很麻烦”这个问题。好了,我们对Spring基础的介绍就到这里,下面开始介绍web开发技术的演进。
  java web技术的演进
  java web开发有两种设计模型,一种是以jsp为中心的调用模型来处理具体业务的模型一,其特点是小而精,适合小型项目的开发,开发效率很高。另一种是以MVC模式为基础的模型二,它适合构建中型或者大型的企业级项目。本文主要讨论模型二。
  模型二,即MVC设计模式,包含模型、视图和控制器三个模块,控制器是模型二设计的程序的web请求的入口,也是具体的逻辑处理层,可以由Servlet或者Filter实现;模型由javaBeans持有,是后台用来保存数据的对前台表单序列化后的映射,为数据安全起见,这些javaBeans理论上是不可以序列化的;视图由jsp页面表达,将后台数据进行展现。这样的设计看起来貌似很合理,但我们可能忽略了一个问题,那就是web程序的入口与逻辑处理层紧密耦合了,这显示不符合我们的需要,于是,MVC有了改进版,那就是将程序入口与逻辑处理部分剥离开来,让他们各司其职。具体的解决办法不外乎在servlet之后新建一个类,让它专门负责逻辑处理的工作。嗯,现在模型的问题讨论得差不多了,但是,我们在使用这个模型构建项目的时候,会发现每次新建项目都要编写servlet,我们自然而然想到,能不能将这些工作与具体逻辑分离开来,使之成为一个可重用的部分,减轻构建项目的压力,让开发者将精力更多的放到逻辑处理上去。于是乎,SpringMVC出现了,它帮我们解决了这个问题,使用dispatcherServlet替代了我们编写的所有servlet,然后只需让我们的controller集成它的Controller接口就可以实现URL的映射。好,到现在为止,我们讨论了MVC模型后台处理的发展。接下来我们讨论后台与前端的交互。
  在传统的MVC模式中,前台页面是由Spring的viewResolver来负责对jsp页面进行展示的,但由于它与后台紧耦合,随着业务需求的不断增加,这种前后台交互的方式越来越不适应业务的变化。于是乎,另一个伟大的神器--Ajax出现了,它实现了前后端的分离,极大地方便了业务逻辑的扩展,对web技术的发展具有划时代的意义。
  再论注解
  前文已经说过,Spring可以使用@Autowired注解进行依赖注入,其实,Spring支持大量的注解,包括上一部分提到的controller,在使用SpringMVC的情况下,完全可以使用@Controller注解来标识一个类为controller,同时也支持@RequestMapping注解来实现URL映射,而无需在xml文件中配置。在ajax出现之后,后端的分工进一步细化,controller只承担之前servlet的任务,具体的业务逻辑交由service层实现,service也可以通过@Service注解告知Spring该类的身份。
  好,这就是java web的大体发展历史,当然,如果要继续追踪的话,本文还应包括前后端部署分离、基于微服务的web开发等等,但这已超出了笔者构思本文的初衷,故不在此赘述。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值