前言
之所以叫Javaweb是因为Java对Web领域的发展注入了强大的动力是web领域的主流脚本语言
一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念"一次编译,到处运行"决定了它的高度
一.软件编程体系
1.B/S模型
B/S结构:适用于广域网环境应用程序及数据库系统都安装在服务器上,客户端只需安装一个浏览器软件。处理功能都运行在服务器端。
优点:维护方便、易于升级和扩展。处理功能运行在服务器端,客户端零维护。软件升级只需在服务器端更新程序即可软件重用性好。
缺点:服务器负担沉重,容易成为性能的瓶颈,客户端功能十分有限。 B/S架构也可理解为web架构,包含前端、后端、数据库三大组成部分。
前端
前端开发技术工具包括三要素:HTML、CSS和JavaScript,还有很多高级的前端框架,如bootstrap、jquery, VUE等
后端
后端开发技术工具主要有:Net、JAVA、PHP, Go等
数据库
主流的三种关系型数据库:Mysql.SQLserver、Oracle ,还有Nosql非关系型数据库:Redis、Mongodb等
2.C/S模型
C/S结构:主要适用于局域网环境客户端具有独立的处理功能,同时通过网络与服务器端通信。开发工具包括C++、Delphi、Java等。
优势:充分发挥客户端PC的处理能力,客户端响应速度快。服务器端一般不会成为性能的瓶颈。
劣势:系统的可扩展性和可维护性差。客户端需要专门安装;升级很不方便;可连接用户数有限。
二.http协议
定义:
HTTP (Hyper Text TransferProtocol)超文本传输协议是万维网客户端(Browser)与服务器端(Server)交互遵守的协议,是一个应用层的协议,TCP三次握手四次挥手,通过发包拆包的方式建立连接使用TCP连接进行可靠的传输。
1、HTTP协议是一种请求/应答协议,它通过客户机和服务器相互发送消息的方式工作。
2、使用HTTP消息头,可以实现客户机与服务器之间的HTTP请求和HTTP响应
3、消息头分为:通用头,请求头,响应头和实体头等4类。
HTTP处理流程:
- 建立连接
在java底层代码中是这样实现的,子不过浏览器已经帮我们做了! - 发送请求信息一旦建立的TCP连接,Web浏览器就会向Web服务器发送请求命令。HTTP协议将请求封装成HTTP请求,他包括请求行,请求头,空行,消息体。
- 回送响应信息
- 关闭连接
三.两种网页
1.静态网页
浏览器发出一个URL请求,与服务器建立连接;服务器接到请求后,在硬盘上找到相应的文件:若是静态网页→直接传送到客户端纯粹HTML格式的网页被称为静态网页,通常是以.htm或.html为后缀的HTML文件。
2.动态网页
动态网页文件中含有HTML标记和程序代码,后缀随程序语言的不同而不同,如.asp、.aspx、.php、.jsp等需要数据库支持。
1、动态网页是由服务器执行相应的脚本程序后,动态生成的HTML文件。
2、不同的请求及访问数据的变化会生成不同的HTML代码,网页内容随时更新。 3、具有数据库访问功能,支持客户端和服务器端的交互。
五.端口脚本
脚本(Scripts)是指嵌入到Web页中的程序代码,所使用的编程语言称为脚本语言。Java就可以作为一种脚本语言
按照执行方式和位置的不同,脚本分为客户端脚本和服务器端脚本。
1.客户端脚本
客户端脚本在客户机上被Web浏览器执行
下面就是一段脚本语言
<head>
<title>懒羊羊的第一个网页</title>
</head>
<body>
<p>沸羊羊你好!</p>
</body >
</html>
通过在记事本编写更改文件后缀格式为.html就可在本机浏览器运行,不需要借助服务器也不需要http协议的几次握手挥手,这就是典型的客户端脚本
静态网页只能包含客户端脚本,动态网页则可以包含客户端脚本和服务器端脚本。因此,静态网页中的任何脚本都不能在服务器上运行,而动态网页中的某些脚本只能在Web服务器上运行。
2.服务器端脚本
服务器端脚本在服务器上被Web应用服务器执行
1、常见的客户端脚本语言有VBScript、JavaScript等。
2、工作机制:将脚本嵌入到Web页面中,并随着HTML文件一起传送到客户端,由浏览器解释执行。在脚本执行期间无须与服务器交互,可以对用户的操作直接做出响应。
我在本机启动tomcat服务的前提下,将脚本语言编写好以后在浏览器通过输入绝对路径的方式执行,脚本语言就变成了服务器端脚本语言
所以还是指向一点——运行的环境决定脚本的性质
共同点:
脚本运行于服务器端,能够动态生成网页;-脚本运行不受客户端浏览器限制;
脚本被嵌入到HTML文档中,执行后返回HTML代码。
补充
服务器端网页编程
建动态服务器端内容的过程
–CGI技术
–微软的ASP和ASP.NET技术
–基于Java的Servlet/JSP技术
CGI技术
CGI即通用网关接口(Common Gateway Interface)
最大优点是它可以用Shell、Perl、C、PHP、Python等编写
但是CGI技术也有缺陷:每次请求就打开一个CGI进程,严重消耗服务器资源。极大地限制了一个服务器可以支持的并发 CGI用户数量 。
java的解决法案
Web容器;
Web容器负责管理和运行Servlet
容器对Servlet的支持包括
- 通信支持
- 生命周期管理
- 多线程支持
- JSP支持
- 处理安全性
Servlet
- Servlet是常规的Java代码。代码中用了一些新的API,但是不涉及新的语法。
Servlet代码中有我们不熟悉的重要语句。Servlet不属于J2SE,它属于单独的规范。 - Servlet对标准类(HttpServlet)进行了扩展。
- Servlet没有main()方法。
Servlet主要任务
读取客户端发送的显式和隐式数据
生成结果
向客户端发送显式数据(即文档)和隐式数据(HTTP响应数据)
Servlet规范
规范只定义了一个容器必须实现的标准功能
Servlet容器有很多不同的实现
- Tomcat
- Jboss
- WebLogic
- WebSphere
- Oracle9i AS
Servlet与Web容器配合处理请求和响应
-
客户端向Web服务器发起一个HTTP请求。
-
HTTP请求被Web服务器接受,如果请求的是静态页面,则由Web服务器负责处理。如果请求的是Java Web组件(Servlet或者JSP),则移交给Web容器。Web容器可以在主机的同一个进程、不同的进程或其他的Web服务主机的进程中启动。
-
Web容器根据Servlet的配置文件确定调用的具体Servlet类,并把request对象、response对象传给它。
-
Servlet通过request对象知道客户端的使用者是谁,客户的请求信息是什么和其他的一些信息。Servlet处理完请求后把要返回的信息放入response对象返回到客户端。
-
一旦Servlet完成了请求的处理,Web容器就会刷新response,把控制权返回给web服务器。
Java Web应用程序的组成
- 配置文件
- 静态文件和JSP
- 类文件和包