前言:本文章是Java Web后端技术系列的第一篇,主要介绍Web的基础知识,接下来将持续更新,感兴趣的小伙伴欢迎持续关注。因为我也是刚接触Java web方面的知识,尚有许多不足,如有错误欢迎指正!
Web即互联网,Java Web即使用Java技术来解决相关Web互联网领域的技术栈。通俗地来讲,就是把编写好的Java代码发布到互联网上,为别人提供服务。
网络中有很多的计算机,它们之间的信息交流,我们称之为“交互”。
软件架构
常见的两个交互方式是:B/S交互模式和C/S交互模式,也称为B/S架构和C/S架构。
这里面的S是Server,即服务器;B是Browser,即浏览器;C是Client,即客户端。
服务器是一台安装有服务程序的计算机,它的作用是将开发者的本地资源发布到互联网上,让别人可以访问到这些资源。
一般来说我们要获得某项服务,比如打王者荣耀,我们需要先在手机安装一个游戏软件,通过这个游戏软件与服务器获得连接,从而能够享受游戏。这其中的游戏软件就是客户端,手游的这种交互方式就是C/S架构。
C/S架构下访问服务器必须安装相应的客户端软件,客户端软件可以执行很多程序、存放很多数据,这种架构能够提供更多更好的服务。比如玩手游,手游需要大量的模型数据,这些数据是提前存放在客户端的,与服务器连接的时候只需要交互较少量的信息即可,这样即使网速不够快我们依然能够享受到这种服务。
而有时候我们并不需要向服务器请求大量的资源,比如看文章、查资料、看视频等,如果每一个服务都要单独安装一个软件,那就太麻烦了。
试想一下,如果你要上微博,你必须在电脑上安装一个微博的客户端;要上开源中国,必须在电脑上安装一个开源中国的客户端;要上CSDN,必须在电脑上安装一个CSDN的客户端…那是一种什么体验…
更合理的方法应该是将这些较轻量的工作都交给同一个客户端,让它来处理所有这些服务。这个客户端可以向不同的服务器发送请求、接收响应并展示响应信息,这个就是浏览器,相对应的也就是B/S架构。
B/S架构是一种特殊的C/S架构,一个客户端(浏览器)连接多个不同的服务器。理论上讲,C/S架构能实现的服务B/S架构也能实现,只要网速足够快。
比如在2G、3G时代,要看电影一般都是下载到本地,用本地播放器看的,因为如果要在线观看的话网速太慢了。但是现在网速提升了,我们可以轻松地用浏览器看电影、甚至看直播。同样的,现在我们虽然无法用浏览器玩大型游戏,但随着网络技术的发展、5G的到来,云电脑、云游戏等即将来临,到时候通过浏览器玩大型游戏也不再是不可能的事情。
B/S架构和C/S架构各有优缺点:
B/S架构的特点是开发、部署、更新都比较简单,但是用户体验稍微差一些。
试想一下在手机上登陆网页版的微信和直接用微信软件哪个更舒服一些。
C/S架构的特点是用户的体验更好,但需要对客户端及服务器代码进行开发、部署、维护更新。
比如开发者要对APP进行功能升级,则需要升级服务器和客户端的功能,然后将新版本的客户端发布到应用商店里,用户下载更新后才能使用到新功能。而如果是基于B/S架构的话,开发者只需要升级服务器,用户下一次访问的时候就可以直接使用新功能了,不需要那么麻烦的操作。
因此,随着网络技术的发展,B/S架构未来可能会更加吃香一点。
资源分类
上面我们讲到要向服务器请求资源,资源的种类很多,主要分为两种:静态资源、动态资源。
对于静态资源,同一个页面,不同用户看到的内容都是一样的。
比如百度首页。
常见的文件后缀有: .html、.js、*.css
对于动态资源, 同一个页面,不同用户看到的内容可能不一样 。
比如我的淘宝购物车
常见的文件后缀有: .jsp、.aspx、*.php
值得注意的是,浏览器不能直接解析动态资源,需要Tomcat将动态资源转为静态资源。对于Tomcat是什么、怎么用,将在后面的文章介绍。
URL
网络上的资源那么多,我们怎么定位某一个具体的资源呢?一个比较显而易见的方式是为每一个资源设置一个独一无二的编号,我们只要知道编号,就能够找到资源。
这个编号就是Uniform Resource Locator——统一资源定位符,简称URL,通俗的理解就是网址。
要用一个编号规则为无数的资源编号,我们需要一个严格的编号规范。URL的完整格式如下:
协议://域名:端口号/资源位置?参数=值
协议:常见的协议有http、https、ftp
域名:域名或IP地址
端口号: 程序必须使用端口号,才可以让另一个计算机访问。之所以很多的URL上是没有端口号的,是因为http协议的默认端是80,可以省略
资源位置: 用于描述WEB资源在服务器上的位置
参数=值: 浏览器和服务器交互传递的数据
常见的URL解析:
https://www.google.com/search?q=Java
上面的URL中,
协议是:https;
域名是:www.google.com,域名是独一无二的;
资源位置是:search;
传递的参数是:q=Java
Web服务器
Web服务器可以理解为一种服务程序,安装了它之后你的计算机就可以成为一台服务器(见上面关于服务器的介绍)。
常见的Web服务器有:
免费:
Tomcat: Apache组织开源免费的web服务器,支持JavaEE规范(后面将重点介绍这个Web服务器)
Jetty:Apache组织开源免费的小型web服务器,支持JavaEE规范
JBoss:RedHat红帽公司的开源免费的web服务器,支持JavaEE规范
Glass Fish:Sun公司开源免费的web服务器,支持JavaEE规范
付费:
WebLogic:Oracle公司收费的web服务器,支持JavaEE规范
WebSphere:IBM公司收费的web服务器,支持JavaEE规范
各种服务器所占的市场份额
Java EE规范是Oracle公司规定的一种服务器规范(本质上是一组接口),所有的服务器厂商都要实现这些接口。
在JavaEE中一共有13种规范。实现的规范越多,功能越强。
总结
最后用思维导图总结本文章的内容。