1. JavaWeb概述
Java一般是用来做JavaWeb开发的,这里的开发指的是Web后端开发。那么什么是JavaWeb呢?什么是Web后端呢?有没有Web前端呢?
1.1 JavaWeb
我们知道计算机模拟的是人的功能。
以最简单的图书管理系统为例,如果没有计算机的话,人与人之间的交互大概应该是这样的:
读者出示借读卡,保安根据借读卡发现该用户是图书馆客户,所以允许该用户进入图书馆。
图书馆根据书号在不同位置摆放了很多类图书,供用户阅读和选择。
用户选择了要借阅的图书后,向管理员请求借读,管理员根据用户的借读卡以及图书在对应的表单中填写记录,用于后续管理。
用户办理借阅成功后,走出图书馆。
有了计算机之后,开发了图书管理系统。用户没必要实地去图书馆,管理员也没必要手动将信息全部记录下来。交互过程大概是这样的:
读者凭借账号和密码登录图书管理系统(账号和密码,会核实该用户),进入虚拟图书馆。
虚拟图书馆在网页显示了一些基本的图书信息,供读者阅读和选择。
用户选择了要借阅的图书后,发送借阅申请,系统检查该用户的权限后,自动填写保存,保存数据,供后台图书管理员审查。
用户办理借阅成功后,退出系统即可。(等待纸质书的邮寄或者在线阅读等等)
可能会有一些疑问:
- 这个所谓的图书管理系统在哪里登录呢?我在我自己的计算机上登录和在网吧的计算机登录有什么区别吗?
- 没有保安,它是怎么知道我的用户和密码是正确的呢?
- 图书管理系统上展示的书籍信息,怎么展示出来的,怎么知道还有几本书可以借阅的呢?
- 办理借阅的时候,没有管理员,谁来负责填写所谓的借阅表单信息呢?
私以为:
- 和实际生活中一样,图书馆只有一座,所以图书管理系统也只有“一个”,在哪里登录都无所谓,只要账号和密码正确即可。
- 账号和密码,会根据数据库保存的信息进行核实。
- 书籍展示信息,后台是程序进行控制的。
- 借阅表单信息也是后台程序控制。
- 网络是计算机和计算机之间通信的渠道。这样,一台计算机实现了该图书管理系统,提供访问入口(代替保安以及图书管理员)。其他计算机(账号和密码)就可以访问该系统,借阅图书(代替人)。所以说,网络和计算机缩短了人与人之间的距离。
实际上,我们在登录和浏览管理系统的时候,首先我们要看到这些信息,比如输入框、书籍摘要、借阅按钮等等,这些展示在屏幕上的内容称为前端;而背后账号密码的核实,表单的填写,书籍的数量等等,在背后实际控制的内容称为后端。
而JavaWeb其实就是这一套技术的总和,把Web看成一个容器,主要使用JavaEE技术来实现,再加上各种中间件等等。技术体系如下所示:
1.2 JavaWeb前端
前面提到前端实际上是“表象”等一些展示的内容,为了让用户使用起来比较方便,看起来炫酷,体验好,以及向后端传输的内容等等。典型的技术有HTML、CSS、JavaScript。
1.3 JavaWeb后端
后端则是实际的逻辑操作流程,本质上整个系统的功能是由后端来完成的,后端也被称为服务端。典型的技术有Servlet、JSP、AJAX以及一些优化框架(Spring、SpringMVC、SpringBoot、SpringCloud)等等。
1.4 总结
这样,整个Web系统的工作流程是:由用户在前端进行操作(输入信息、点击按钮等等),这些操作信息被发送到后端服务器,后端接收操作,根据操作,选择对应的处理步骤进行处理,并将处理结果返回给前端。
在这个过程中,前端和后端是通过网络来进行通信的,这就涉及到计算机网络相关的知识,但是一般情况下,不可能程序员每次都自己写数据包的发送和解析等功能,这时候就需要Web服务器,Web服务器主要用来接收客户端发送的请求和响应客户端请求,典型的代表是Tomcat。
2. 系统结构
JavaWeb项目涉及到前后端两部分,二者之间的关系称为架构,Web项目一般的系统结构主要分为两种:
- C/S架构
- B/S架构
2.1 C/S架构
全称为Client/Server(客户端/服务器),即客户端软件和服务器进行交互,典型的就是QQ、网易云音乐,以及游戏客户端等等,需要安装特定的客户端软件。
C/S架构的优点:因为下载了客户端,客户端必定有一些特有的东西,以游戏客户端为例,它必定包含了一些固有的图片,本地构建模型、渲染色彩等等,包含了一定的计算功能。这些不需要网络进行传输,减少了与服务器之间的通信。
- 速度快
- 体验好
- 界面酷炫
- 服务器压力小
- 安全(缓存在客户端)
- …
缺点:
- 升级维护比较麻烦(客户端在异地,笔试本地,有一些软件并不是那么容易安全装的)
- …
2.2 B/S架构
全称为Browser/Server(浏览器/服务器),即浏览器和服务器进行交互,典型的就是通过浏览器访问浏览器,比如通过浏览器访问百度、京东、12306的等等,不需要下载特定的客户端,只需要通过浏览器访问。实际上浏览器也相当于特殊的客户端,所以B/S架构是特殊的C/S架构。
优点:
- 升级维护方便,成本比较低。(只需要升级客户端即可)
- 不需要安装特定的客户端软件,用户操作及其方便,主需要打开浏览器,输入网址即可。
- …
缺点:
- 速度慢(所有的数据都在服务器,所以需要大量的通信)
- 体验差
- 不安全(所有的数据都在服务器)
- …
2.3 总结
所以开发B/S架构的系统,其实就是开发网站,Web系统。需要的技术有:
Web前端(运行在浏览器上的程序)
- HTML
- CSS
- JavaScript
Web后端(运行在服务器端的程序)
Java
Java做Web开发称为JavaWeb开发,JavaWeb开发最核心的规范是Servlet(Sever Applet,服务器端的小程序)。
C
C++
Python
PHP
…(各种各样的语言均可)
3. Java三大块
JavaSE
即Java标准版,是一套标准类库,别人写好的,也是JavaEE和JavaME的基础。
JavaEE(Web方向)
即Java企业版,在标准类库的基础上新增了一些,可以帮助我们完成企业级项目的开发,Java程序员主要是这个方向。JavaEE包含13种规范,其中Servlet就是JavaEE规范之一。
JavaME(嵌入式,内核程序的开发)
即Java微型版,还是一套类库,只不过适合内核等嵌入式程序的开发。比如机顶盒内核程序、吸尘器内核程序等等。
4. 备注
参考B站《动力节点》。