JavaWeb简介
什么是Web
web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构
Web的起源及三个核心标准
1989年CERN(欧洲粒子物理研究所)中由“蒂姆·伯纳斯·李”(Tim Berners-Lee人称WWW之父)领导的小组提交了一个针对Internet的新协议和一个使用该协议的文档系统,该小组将这个新系统命名为World Wide Web,它的目的在于使全球的科学家能够利用Internet交流自己的工作文档。
这个新系统被设计为允许Internet上任意一个用户都可以从许多文档服务计算机的数据库中搜索和获取文档。1990年末,这个新系统的基本框架已经在CERN中的一台计算机中开发出来并实现了,1991年该系统移植到了其他计算机平台,并正式发布。
Tim Berners-Lee使用超文本为中心来组织网络上的资料,同时提出了建立存取与浏览网页的方法;建立了超文本标记语言(HTML:HyperText Markup language); 设计了超文本传输协议(HTTP:Hypertext Transport Protocol)用来获取超链接文件;使用统一资源定位器(URL:Uniform Resource Locator)来定位网络文件、站点或服务器。“URL、HTTP和HTML”就是万维网的三个核心标准。
URL统一资源定位符为描述Internet上的网页以及其他资源地址提供了一个标识方法,Internet上的每个网页都有一个唯一的名称标识,该标识被称为URL地址。我们在浏览器地址栏中输入的网站地址就是URL,有了URL便可实现对资源进行定位,系统就可以对资源进行各种操作。URL由协议类型、主机名和路径及文件名三个部分组成。
HTTP超文本传输协议,是一种通信协议,它规定了客户端(浏览器)与服务器之间的信息交互方式。因此只有客户机和服务器都支持HTTP,才能在万维网上发送和接收信息。HTTP可以使浏览器的使用更加高效,并减少网络传输。它不公保证了计算机正确快速地传输超文本文档,还可以确定具体传输文档中的哪些部分以及优先传输哪些部分等。
HTTP协议是一种无连接、无状态的允许传输任意类型数据对象的简单快速的支持客户机/服务器模式的通信协议。
HTML(HyperText Markup language)超文本标记语言,是一种制作web网页的标准语言,有了HTML,使用不同字处理软件的计算机之间就可以无障碍的交流。HTML是一种标记语言,标记也就是标签,就是对浏览器在的各种元素进行标识的意思。HTML使用标签来标记网页中的各个部分,通过这些标签浏览器就可以获得网页中的各个部分,并知道各个部分该如何显示。以下就是一个最简单的HTML语言的结构。
BS与CS两种软件体系结构
对于开发人员来说,在项目开发过程中针对 不同项目选择恰当的软件体系结构非常重要,适当的软件体系结构与软件的安全性可维护性等密切相关。目前有两种流行的软件体系结构分别是B/S体系结构和C/S体系结构。
C/S是Client/Server的缩写,即客户机服务器模式。客户机和服务器都是独立的计算机。客户机是面向最终用户的应用程序或一些接口设备,它是服务的使用者。可以简单的将客户机理解为那些用于访问服务器资料的计算机。服务器是某项服务的提供者,为客户的请求提供服务,它包含着数据库和一些通信设备,并负责它们的维护和管理。而连接客户机和服务器的则是网络协议、应用接口。
客户机和服务器之间这种协同工作的方式就称为C/S结构。
B/S是Brower/Server的缩写,即浏览器/服务器模式。B/S模式是一种随着Internet技术兴起而出现的一种网络结构模式。这种模式将系统逻辑功能的大部分实现集中到服务器上,客户端只实现极少的事务逻辑,系统的开发和维护都更加简洁。
B/S结构利用了不断发展的浏览器技术,并结合了浏览器的多种脚本语言,如VBScript、JavaScript待等,以及AJAX技术,使用通过浏览器就实现了原本需要复杂的软件才能实现的强大功能,有效地节约了软件的开发成本。在Web服务器上采用的就是B/S结构。
C/S与B/S区别:
- 硬件环境方面:C/S 一般建立在局域网基础之上的,小范围里的网络环境。B/S 建立在广域网之上的,一般只要有操作系统和浏览器就行。
- 软件重用性方面:C/S程序中的软件重用性没有B/S程序的软件重用性好。
- 系统维护方面:C/S结构的系统升级困难,必须整体考量,要实现升级可能需要重新设计系统。B/S系统中可能仅更换个别构件,实现无缝升级。降低系统升级开销,升级简单。
- 用户接口方面:B/S结构使用浏览器做为客户界面,因此有更丰富的表现方式,而C/S表现方法有限。
- 处理问题方面:C/S 程序与操作系统相关,不同的操作系统对应不同的客户端程序;而B/S结构可以面向不同的用户群,地域可以分散与操作系统关系较小。
什么是Web应用程序
Web应用程序是一种可以通过浏览器访问的应用程序。 一个Web应用程序是由完成特定任务的各种Web组件(web components)构成的并通过Web(即网页)的形式将服务展示给外界。在实际应用中,Web应用程序是由多个Servlet、JSP页面、HTML文件以及图像文件等组成。所有这些组件相互协调为用户提供一组完整的服务。
WEB服务器与客户端
-
什么是客户端
在BS结构的Web应用程序中Web浏览器就是客户端。用户只要拥有一个合适的浏览器,就可以访问万维网上的服务器,并使用各种类型的服务器所提供的服务了。用户通过在浏览器地址栏中输入相应的URL地址,向服务器发出请求,服务器接收到请求
-
什么是Web服务器
Web服务器是指驻留于因特网上某种类型计算机的程序,是可以向发出请求的浏览器提供文档的程序。当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。
-
服务器特征
服务器是一种被动程序,只有当Internet上运行在其他计算机中的浏览器发出请求时,服务器才会响应。
常见的Web服务器介绍
WEB服务器也称为WWW服务器、HTTP服务器,其主要功能是提供网上信息浏览服务。Unix和Linux平台下常用的服务器有Apache、Tomcat、IBM WebSphere等,其中应用最广泛的是Apache。而Window NT/2000/2003平台下最常用的服务器是微软公司的IIS。
-
Apache是世界上应用最多的WEB服务器,优势主要在于源代码开放、有一支开放的开发队伍、支持跨平台应用以及其可移植性等。Apache的模块支持非常丰富,虽在速度和性能上不及其他轻量级WEB服务器,是属于重量级产品,所消耗的内存也比其他WEB服务器要高。
-
Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的web应用软件容器,Tomcat server是根据servlet和jsp规范执行的,因此也可以说Tomcat server实行了Apache-Jakarta规范,且比绝大多数商用应用软件服务器要好,但是,tomcat对静态文件和高并发的处理比较弱。
-
IBM WebSphere是一种功能完善、开放的WEB应用程序服务器,它基于Java的应用环境,建立、部署和管理Internet和Intranet Web应用程序。相对于其他流行的WEB服务器而言,应用的数量很少。
-
IIS是一种WEB服务组件,允许在公共Intranet或Internet上发布信息的WEB服务器,其中包括WEB服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络上发布信息成了一件很容易的事情。它提供ISAPI作为扩展WEB服务器功能的编程接口,同时还提供了Internet,可以实现对数据库的查询和更新。
-
Lighttpd是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的WEB Server环境,它具有内存开销低、CPU占有率低、效能好,以及模块丰富等特点。支持FastCGI、CGI、Auth、输出压缩、URL重写及Alias等重要功能,属于轻量级WEB服务器。
-
Nginx是一款高性能的HTTP和反向代理服务器,能够选择高效的epoll、kqueue、eventport最为网络I/O模型,在高连接并发的情况下,能够支持高达5万个并发连接数的响应,而内存、CPU等系统资源消耗却非常低,运行非常稳定。
Web 服务器 | Nginx | Apache | Lighttpd |
---|---|---|---|
反向代理 | 非常好 | 好 | 一般 |
Rewrite 规则 | 非常好 | 好 | 一般 |
FastCGI | 好 | 差 | 非常好 |
热部署 | 支持 | 不支持 | 不支持 |
系统压力比较 | 很小 | 小 | 很大 |
稳定性 | 非常好 | 好 | 一般 |
安全性 | 一般 | 好 | 一般 |
技术资料 | 很少 | 非常多 | 一般 |
静态文件处理 | 非常好 | 一般 | 好 |
虚拟主机 | 支持 | 支持 | 支持 |
内存消耗 | 非常小 | 很大 | 非常小 |
学习web开发,需要先安装一台web服务器,然后再在web服务器中开发相应的web资源,供用户使用浏览器访问。
JavaWeb的发展历程
了解java web的发展历史和相关技术的演进历程,非常有助于加深对java web技术的理解和认识。
-
Servlet的出现
上世纪90年代,随着Internet和浏览器的飞速发展,基于浏览器的B/S模式随之火爆发展起来。 最初,用户使用浏览器向WEB服务器发送的请求都是请求静态的资源,比如html、css等。 但是可以想象:根据用户请求的不同动态的处理并返回资源是理所当然必须的要求。
Java 为了应对上述需求,就必然推出一种技术来支持动态需求,因此servlet技术诞生了。使用Servlet技术,页面中的所有信息需要通过输出语句来生成。
-
Jsp的出现
servlet诞生后,sun公司很快发现servlet编程很繁琐,1)servlet代码有大量冗余代码,out输出就得写上百遍;2)开发servlet必须精通网页前端和美工,你得非常不直观的在Servlet中写前端代码,这使得实现各种页面效果和风格非常困难。
所以,sun公司借鉴 微软的asp,正式推出了jsp(servlet1.1)。采用HTML语言直接生成界面,在界面中使用<% %>脚本标识嵌入Java代码
-
倡导了MVC思想的servlet版本servlet1.2出现---jsp + javabean + servlet
jsp出现后,也存在问题,1)前端开发人员需要看大量他看不懂的后端代码;2)同样,servlet开发人员也在复杂的前端代码中找到其能写servlet代码的地方
所以,MVC思想的JSP+JavaBean+Servlet诞生了
Model:JavaBean完成所有的处理过程
View: JSP完成输入和输出,主要使用HTML标签和JSP标签
Control: Servlet主要完成控制,接收请求,调用业务处理(JavaBean),根据调用的结果找到一个JSP页面对用户进行响应
-
框架阶段
倡导了MVC思想的jsp+javabean+servlet出现,也存在问题:
- jsp页面中嵌入了很多java代码,使得结构很乱;
- 对于大型项目,servlet过多,转向频繁,流程,配置等不易集中管理,因而出现了struts
Struts
- 2001年6月,struts1.0出现,struts针对jsp推出了一套struts标签,从而使得jsp中没有了Java代码,结构清晰,功能强大。针对servlet,它提供了Action类来代替了servlet,这个Action类具有servlet的功能,并且能够进行一些请求过滤和自动转码的功能。
Spring
-
原本已经开起来很完美了,但是又有一个问题,就是我们在Action调用DAO、Java bean等对象的时候都需要在自身代码中构建它们的对象来使用,这样增加了程序的耦合性,这与我们:“高内聚、松耦合”的思想不符合,那么怎么解决这个问题呢?因而出现了Spring框架。
Spring框架有两大功能:IOC(控制反转)和AOP(面向切面的编程),其中IOC就是说:当一个类中想要调用另外一个类的对象时,不需要再通过new 关键字来创建,而是由Spring框架来负责:创建、分配和管理,从而降低了程序中的耦合性。而AOP可以用来做一些日志的打印和输出,用于提示程序执行过程中的一些具体信息等。
SpringMVC
-
之后struts和Spring的整合,由于每一个bean都要在Spring中注册,每一个URL都要在struts配置文件中配置。当bean很多和URL对应的请求很多的时候,配置文件无疑会是很庞大的,这个就会使得配置起来很麻烦的费力。那么还有没有更好的办法使得能够结合Spring的功能和struts的功能,但是又可以使配置文件不会批量的加?因而SpringMVC出现了
SpringMVC通过“基于注解”的方式代替了struts,并且通过Controller类来代替和实现了Action的功能。由于是基于注解的,所以很多的配置信息放在了Controller类中配置,从而降低了.xml文件的配置复杂度。
SpringBoot
-
SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
-
Spring Boot的核心特点
-
微服务:使用Spring Boot可以生成独立的微服务功能单元
-
自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置
-
起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。
-
命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。
-
Actuator:让你能够深入运行中的Spring Boot应用程序
-
SpringCloud
-
Spring Cloud是一系列框架的有序集合。它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色。对于我们想快速实践微服务的开发者来说,第一类子项目就已经足够使用.
现在是各种框架百花齐放的时代,但是无论什么框架,都是对常见问题的抽象和封装,什么新的框架,也脱离不了Servlet这个根基,Servlet基础一定要打牢。学习的时候千万不能跟着框架走,框架让做什么就做什么,而是要想为什么这样做。
本文作者:韩熙隐ario
本文链接:https://www.cnblogs.com/arioya/p/18700323
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步