web项目(java)与学习概况

前言(Preface)

  • 有关web项目的兴起,其实并非三言两语,早先是单机程序,后来,出现了网络程序,然后呢,出现了两层结构的网页程序,然后,又出现了3层结构的,这个单机项目,还有简化版的那个网络项目,对于web项目而言,去理解它们的意义并不大,因为毕竟我们大多是做web项目,其他的基本也不会去做,既然不做,这里无需花那么多篇幅去赘述。具体见Web’s Development
  • 本文致力于从宏观角度理解web项目,通过java语言对web项目进行简单的剖析。关于更加具体的专有名词,技术细节,参见博主或其他网络文献,本文内容如下:
    web:(World Wide Web)全球广域网,或称万维网。它是一种基于HTTP(HyperText Transfer Protocol超文本传输协议)网络协议的信息交互系统。

1.What is the Web Project

简单来说,所谓的web项目就是,我们是通过浏览器,通过网页去访问的这个项目 (比如说,我们能够通过浏览器访问百度,淘宝等,他们就是web项目)。在一个标准的web项目里,程序是运行在三个地方:一部分程序是运行在浏览器。一部分程序运行在服务器上。还有一些程序运行在数据库里。运行在不同部位的程序是不一样的,这些程序都是由不同的语言完成的。如下图所示。
web项目之java实现

2.服务端(Server-side programming)

服务器端使用java语言,分为Java基础和JavaSE(Java核心API)两个部分。在一个正式的,完整的web项目中,关于java语言,它是怎么运用的,能解决什么问题,如何与数据库进行交互,如何与浏览器进行交互,仅仅使用java语言是远远不够的。

3.客户端(Client-side programming)

浏览器上得有运行的网页,这也是程序。我们想做网页,需要由HTML(Hyper Text Markup Language),CSS(Cascading Style Sheets),JS(JavaScript),这三门技术结合在一起,才能开发出来。

4.数据库(Database)

数据库端所用的语言是sql(Structured Query Language),分为,DDL,DML,DQL,TCL,DCL五个部分,我们平时写,可能写的更多使用DML和DQL。(DQL: Data Query Language, DML: Data Manipulation Language, DDL: Data Definition Language, DCL:Data Control Language, TCL: Transaction Control Language)

5.浏览器与服务器交互(client-server interaction)

在浏览器和服务器之间,有一个交互的关系(比如说,我打开浏览器访问淘宝,淘宝得给我返回来点什么东西,给我返回数据来)。当做出网页之后,这个网页还得和服务器有交互,这个交互是基于HTTP协议进行的。在服务器端,由Servlet进行处理这个交互。有了Servlet之后,浏览器,服务器,数据库,这三者相互就能够串接起来,它们之间的关系就打通了。此时,才可以正真做出一个完整的web项目。

6.服务器和数据库交互(server-database interaction)

我通过浏览器访问淘宝,访问的是他的服务器,淘宝的服务器数据来源于他的数据库。我们访问的是淘宝的服务器,而淘宝的服务器,要访问它的数据库,在服务器和数据库之间要有一个交互,这个交互,是通过jdbc技术来实现的。

7.框架(Framework)

  • 通过java,sql,html,css,js,这5门语言,再加上jdbc和Servlet两项技术,就可以做出一个完整的web项目了。但是还不够,为了降低成本,在投标时提升公司的竞争力,公司要求我们开发项目,速度得快(如果别人能够用一年开发出来,我们团队只需半年时间,在抢项目报价时,别人报100w,我们可以报50w,因为我们成本低,这就具有竞争力了)。
  • 为了提升web项目的开发效率,我们还需要引入一些工具,这些工具统称为框架。框架是对开发web项目基本的底层技术加以封装,能够提高我们的编程效率。
  • 浏览器,我们也叫前端,有一个框架,叫jQuery。使用jQuery开发网页的效率会高一点。但其实jQuery主要提升的是JS的开发 效率。
  • 服务器,有一个框架叫,Spring,它能够对整个服务端的所有对象,加以管理;还可以整合所有的第3方框架,是服务端最为核心的管理框架。
  • 服务器与数据库交互,针对于jdbc访问数据库,目前市场上最为流行的框架是Mybatis。同类框架还有Hibernate(了解)。
  • 浏览器与服务器交互,对于如何处理浏览器的请求,提升开发效率,目前市场上最为流行的是SpringMVC,SpringMVC不仅仅底层封装了Servlet,还简化了开发模式,对程序进行了分层解耦。同类框架还有Struts2(了解)。

8.Servlet’s imporance in WebProject

从Servlet在web项目的功能分析:

  • 从Java基础,JavaSE,数据库,到前端,前端又包括,HTML,CSS,JS,JQuery,这么多内容,那么从web项目的角度而言,它们最终都是为了引出,或者说服务于,最后最为关键的一项技术,Servlet,一旦有了Servlet,整个的web项目就打通了。
  • 我们可以用Java基础和SE可以处理服务端的基本的逻辑,我们可以用jdbc访问到数据库,我们可以用前端这些内容,做出网页来,但整个web项目,还有最后一个环节Servlet,我们一旦有了Servlet这个内容以后,你就牛了,你就打通任督二脉了,马上这个功夫就突飞猛进了,如果以前只会说,扎个马步,弄个三拳两脚意思一下,现在的话,就真的能把这个web项目做完整,可以说是,从一个小白,能够蜕变成一个大白,也不能说大白,蜕变成一个,就是说,起码会写web项目的程序员了。从这个内容以后,你才可以说你是一个程序员了,在此以前,你并不是,只会写helloworld,那不是,所以呢,可想而知Servlet是多么的关键。
  • 当然了,并不是说这个Servlet这个内容, 它比别的内容有多重要,都很重要,但我认为Servlet尤为重要, 重要在哪呢,因为有了Servlet,才可以去真正的做web项目,通过做web项目不但可以演示servlet怎么用,也会把以前的一些内容串接起来,比如说jdbc啊,比如说这个,页面的一些内容啊,比如说se的内容啊,数据库啊,等等会串接起来,那么,在串接的时候呢,既会涉及到以前的内容,又会有当前的内容,所以说,它是一个综合的内容,起到一个承上启下的作用。
  • Servlet是整个web项目的灵魂,是能够为程序员树立起一个做项目的意识,形成一个套路,就是开发web项目的一个套路关键所在。总而言之吧,Servlet对于整个web项目而言尤为重要,甚至可以说最为重要,理解了Servlet,web项目是这样做的,就懂了,Servlet更是以后学习web项目框架基石,一旦懂了Servlet,用框架去做,你还能懂,你还能去做的更好,反之,不明白Servlet,不会做web项目,用框架做web项目,就会更晕了,更麻烦,更不理解。

从Servlet在web项目的难度分析:

  • 在web项目的知识体系中,从难度梯度来讲,难度是逐步递增的。java基础时,其实难度递增量很小,就是你一开始什么也不明白,一开始啥都没有,就是记住一些东西,它的难度并不多,告诉你怎么做,你就怎么做就完了。然后呢,第二阶段SE有一定难度,因为API,有的地方比较抽象,难度就增加了,然后,第3阶段,就是web这个阶段,反而难度降低了,也是和java基础一样,甚至比java基础难度还低,因为很多语法和这个java一样,这个js。然后html,css,就别说难了,这个要说难的话,没有简单的东西了,一定是,这内容是最简单的,然后呢,那在这个内容之后,Servlet这个内容,难度又有所增加了,增加的原因是因为它更综合了,它需要综合以前的内容,它有很多内容更抽象了,它要比se要难,难度又增加了,然后在这个部分之后的框架,框架比它还难,要上天了啊,话是说到这了,你爱信不信啊,我可不是吓唬你。
  • 对Servlet的理解,可以帮助理解web项目,web项目怎么去做,web项目开发的基本原则,和套路是什么,把这个思维方式建立起来,这个思维方式,是web框架的基础,非常的关键。理解Servlet是一系列的内容,主要的内容是servlet,但不止是它,还有什么JSP啊,el表达式,jsp标签啊等等,还有别的内容,但核心呢,是servlet,所以就笼统的叫Servlet。另外,这些内容可不像网页,网页的知识点是非常分散的,你这个标签没明白,不影响另外一个标签,Servlet的一系列内容,你这个原则没明白,后面的案例,是做不出来的,前后有极强的关联性。

9.关于新技术(NewTechnology)

  • 在未来的工作,还是学习中,因为,这个市场的技术太多了,企业选择的话,千差万别。而为了顺应时代的潮流,在所难免的,也会遇到一些推陈出新的技术,都是我们所没有接触过的技术。那么,自主学习的能力就尤为重要。web项目架构体系里的内容,都是最基础的,最核心的,最常用的。还有一些不常用的,尤其在工作的时候,也可能被企业所使用。我们任何一个阶段,在面对任何一项新技术,是怎么去入门,遇到的时候,怎么去学习,以及如何安排学习计划。其实这个套路都差不多。这个技术,它是什么东西。能解决什么问题。它的结构是什么。它的使用步骤又是什么样,然后呢,写一些helloworld案例,大概就是这样。
  • 那么在后续的人生长河里,学习任何内容的时候,无论是自主学习,还是取人之渔,都应该是有这么一个意识,我们不单是要学这个技术,学语法,更重要的是理解自己或他人,对这个课程的这个安排。为什么这样去学习或这样讲授这个课程,我们应该关注在第一天的入门儿时,一般都介绍什么,或者需要学习什么,为什么以这个内容为切入点等等。
  • 其实对于每一个新事物的学习,第一天的安排,这个思路,都是大同小异。完全可以依据自己已有的学习经验,给自己一个参考,做一个依据,从而更好的学习和接受新的事物。

10.总结(Summary)

  • 仅仅通过学习java语言,就可以做出一些小项目了,比如说一些单机小游戏,飞机大战,俄罗斯方块等。再加上数据库sql语言,就可以做出一些CS(Client-Server)架构的项目,但是要做BS(Browser-Server)架构的项目,即web项目,就必须至少会java,sql,html,css和js,这5门语言,还有jdbc和Servlet两项技术进行支持,最后为了提升开发效率,再对相应的框架进行学习,如此,对于初学编程而言,学习顺序适合为,
  1. java,sql,jdbc
  2. html, css和js,再加jQuery
  3. Servlet,SpringMVC
  4. Spring,Mybatis等框架。
  5. Springboot,dubbo,SpringCloud
  • 另外,对于不同的程序员,比如.net程序员,php程序员,python程序员。我们说他是什么程序员,更多的是从服务端来说的。我们说 java程序员,因为我们的服务器,是用java语言写的;我们说 .net程序员,因为他的服务器,是用C#写的;我们说php程序员,因为他的服务器是用php写的,所以不管是什么程序员,想完成一个完整的web项目,他都得会数据库。都得会网页及其他部分的内容,所以不同的程序员之间是有交集的,正因为有交集,如果想转其他方向的程序员,是完全可行的,无需从头开始,只需要学一个服务端语言就可以了,而往往这些语言都是大同小异的。
  • 在整个web项目的学习中,知识点是逐层递进的,越到后面的技术,越倾向于理论理解,越是抽象,很多人的这个思维,在没有操作之前,就已经游走在崩溃的边缘,不知道在想啥了,就是完全就游离了,似乎感觉这些个内容,好像是没什么意思,因为毕竟不是代码,所以越到后面,重心呢,应该有所转移,初期,可能更多的去背这个语法,背这个API ,那直到Servlet这个阶段之后,我们的中心应该是什么呢,不是背API,一切API在手册里都能查到,它就在那里,只要你会用手册,哪个API,你都会用,你不用手册的话呢,你得学一个会一个,那java中的类就是有个,好像有个七八千个,你想一想,可能都学过一遍么,不可能,那js中的 API,也有很多个,不知道多少个,也没法都学一遍, 我们只是学的少部分,那你只能会少部分,那我们怎么样才能,会的更多,都会呢,怎么样才能说,将来任何业务都能解决呢,还是得看这个套路,这个思路,这个思路从哪来,从根上来,就是说这项技术的本质,你把它理解透了,才能够会灵活的运用它,否则的话,会那点几个语法,最终的话,你是理解不透的,理解不透,你自然也没法灵魂的运用。
  • 所以,从Servlet阶段,以及Servlet后续的框架学习阶段,我们更主要的是,理解这个思路,这个原理,这个原则,那么我们写的代码,是验证 这个原则,验证这个思路,所以说,一定要转换这个想法,当然这个想法,不是一朝一夕能转换的,慢慢来,得有这个意识,要重视这些理论的内容,不要以为理论是在扯淡,绝不是在扯淡。
  • 就这么跟你讲吧,比如说,有很多人理解了Servlet,这是个对象,是组件,明白了,过3天你再看看,可能还记得住 ,等你面试时,你再看看,甚至面试都过了,工作时,突然就懵了,我想做个动态网页,我想做这个业务,我怎么做,而做动态网页,不是Servlet这一种方式,还有,别的方案,说我是用Servlet呢,我还是用jsp呢,我还是用ajax呢,我还是用html呢,我还是用js呢,我晕了,我到底用哪一个,我乱了,就是说,我们想做出动态网页来,不是说只有一种解决方案,是有多种的,那这些方案之间,的差异是什么,啊,我们用哪种方案呢,优缺点是什么,你不把某一项技术,在一开始搞明白了,在最后概括时,把它对比明白了,你怎么会灵活运用呢。就是说,到那个时候,晕的时候,你这全都是乱套的,这些概念和理解,不是说用三言两语就可以解释清楚的。

参考文献(References)

文中如有侵权行为,请联系me。。。。。。。。。。。。。
文中的错误,理解不到位的地方在所难免,也请指教!在成长过程中,也将继续不断完善,不作为专业文章。不喜勿喷。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值