JavaWeb
1. JavaWeb
Java Web,是用Java技术来解决web互联网相关领域的技术栈。web包括:web服务端和web客户端两部分。Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框架等等。Java技术对Web领域的发展注入了强大的动力。
1.1 What is JavaWeb
Internet上供外界访问的Web资源分为:静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变;动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同人不同时间点访问web页面看到的内容各不相同。
- 静态web资源开发技术:HTML、CSS
- 动态web资源开发技术:JavaScript、JSP/Servlet、ASP、PHP等
在Java中,动态web资源开发技术统称为Java Web。
1.2 Web应用程序
Web应用程序即可以被浏览器访问的程序,其本身由多部分组成:
- html css js
- jsp servlet
- Java程序
- jar包
- 配置文件(properties)
Web应用程序编写完成后,若想提供给外界访问,还需要一个服务器来进行统一管理。
1.3 静态Web
1.3.1 What
.htm,.html等后缀都是静态网页后缀,如果服务器上一直都存在这些文件,我们就可以直接对其进行读取。
1.3.2 缺点
- Web页面无法进行动态更新,所有人看到的都是一样的,一般会在其内容实现上通过轮播图和点击特效来实现伪动态(JavaScript、VBScript)
- 无法和数据库进行交互,即数据无法持久化,用户无法与其进行交互;
1.4 动态Web
1.4.1 What
Web页面会动态展示,即不同的人在不同的时间看到的页面各不相同。
1.4.2 缺点
若服务器的动态Web资源出现错误,则WebServer会拿不到客户端请求的页面或拿到错误页面,因此我们就需要重新编写后台程序并重新发布,即停机维护;
1.4.3 优点
Web页面可以动态刷新,各个用户看到的页面各不相同;且页面能够与数据库进行交互。(数据持久化:注册、商品信息、用户信息…)
2. Web服务器
2.1 实现Web的技术
ASP(Active Server Pages、动态服务器页面):
- 微软发布的,同时也是国内最早流行的服务器端脚本环境,可用来创建动态交互式网页并建立强大的web应用程序;
- 用VBScript、JavaScript等简单容易的脚本语言,结合HTML代码,即可快速完成网站的应用程序,实现动态网页技术;
- 在ASP的开发过程中,由于每个页面的代码量都上千行,因此业务代码十分混乱,维修成本也异常的高。
PHP(Hypertext Preprocessor、超文本预处理器):
- THE PHP Group开发的服务器端脚本语言,适用于Web开发并可嵌入HTML中;
- 同时支持面向对象和面向过程的开发,使用非常灵活;
- 开源免费、快捷高效、性能提升、跨平台、常驻内存;
- 无法承载大规模的访问量,因此PHP的适用范围具有相当大的局面性。
JSP/Servlet(JavaServer Pages、JAVA服务器页面):
- 由Sun Microsystems公司主导创建的一种基于Java语言和B/S架构(浏览器/服务器)的动态网页技术标准;
- 可以承载三高问题(高并发、高可用、高性能)带来的影响;
- 语法像ASP,加强自身的市场竞争力
2.2 Web服务器
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache、 Nginx 、IIS、Tomcat。
IIS(Internet Information Services)
- 由微软公司提供的运行Microsoft Windows的互联网基本服务;
- Windows自带的用于运行JSP的服务器
- Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,且最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而成为了比较流行的Web 应用服务器;
- Tomcat 服务器是一个免费开源的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选;
- Tomcat 实际上运行的是JSP 页面和Servlet,他也能处理HTML页面但并不擅长。
3. Tomcat
3.1 安装Tomcat
Tomcat官网:https://tomcat.apache.org/
3.2 Tomcat启动和配置
解压后文件夹分析:
启动/关闭Tomcat
- 启动:执行Tomcat解压后的文件夹中bin目录下startup.bat文件;
- 关闭:执行Tomcat解压后的文件夹中bin目录下shutdown.bat文件;
3.3 配置
服务器的核心配置文件是Tomcat解压后的文件夹中conf目录下的server.xml文件。
可以配置启动的端口号:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
可以配置主机的名称:(localhost–>127.0.0.1)
<Host name="localhost" appBase="webapps
unpackWARs="true" autoDeploy="true">
常用默认端口号
应用 | 端口号 |
---|---|
Tomcat | 8080 |
MySQL | 3306 |
HTTP | 80 |
HTTPS | 443 |
面试题
3.4 发布网站
将自己写的网站放到服务器(Tomcat)中指定的Web应用的文件夹(Webapps)下就可以访问了。
4. HTTP
4.1 What
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
文本:html、字符串…
超文本:图片、音乐、视频、定位、地图…
4.2 发展历程
- HTTP1.0:客户端与Web服务器连接后,只能获取一个web资源,然后就会断开连接;
- HTTP2.0:客户端与Web服务器连接后,就可以获取多个web资源
4.3 HTTP请求
客户端 — 发送请求 — 服务器
-
General
- Request URL: https://www.baidu.com/ 请求地址
- Request Method: GET get方法/post方法
- Status Code: 200 OK 状态码:200
- Remote Address: 183.232.231.174:443 远程地址
-
Request Headers
- Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3
- Accept-Encoding: gzip, deflate, br
- Accept-Language: zh-CN,zh;q=0.9 语言
- Connection: keep-alive
4.3.1 请求行
请求行中的方式有:Get,Post,HEAD,DELETE,PUT,TRACT…
- Get方式能够携带的参数较少,大小有限制,会在URL地址栏显示出数据内容,高效但不安全;
- Post方式能够携带的参数和大小没有限制,且不会在URL地址栏显示出数据内容,安全但不高效
4.3.2 请求消息头
代码 | 含义 |
---|---|
Accept | 告诉服务器客户端支持的数据类型 |
Accept-Encoding | 告诉服务器客户端所支持的数据压缩格式 |
Accept-Language | 客户端语言环境 |
Cache-Control | 缓存控制 |
Connection | 告诉服务器请求完成后是断开还是保持连接 |
Host | 客户端想通过服务器访问的主机名 |
4.4 HTTP响应
服务器 — 响应请求 — 客户端
- Response Headers
- Cache-Control: private 缓存控制
- Connection: keep-alive 连接
- Content-Encoding: gzip 编码
- Content-Type: text/html 类型
4.4.1 状态行
- 1xx:信息
- 2xx:成功
- 200:请求响应成功
- 3xx:重定向
- 4xx:客户端错误
- 404:资源不存在
- 5xx:服务器错误
- 502:网关错误
4.4.2 响应消息头
代码 | 含义 |
---|---|
Location | 这个头配合302状态码,让客户端完成重定位 |
Server | 服务器通过这个头,告诉浏览器服务器的类型 |
Content-Encoding | 告诉浏览器,服务器的数据压缩格式 |
Content-Length | 告诉浏览器,回送数据的长度 |
Content-Type | 告诉浏览器,回送数据的类型 |
Last-Modified | 告诉浏览器当前资源缓存时间 |
Refresh | 告诉浏览器,隔多长时间刷新 |
Content-Disposition | 告诉浏览器以下载的方式打开数据 |
5. Maven
Maven-项目对象模型(POM),可以通过一小段描述信息来管理项目的构建\报告和文档的项目管理工具软件。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。(核心思想:约定大于配置)
5.1 下载安装Maven
解压文件后,配置系统的环境变量;最后在cmd中通过mvn -v指令来测试Maven是否安装成功。
5.1.1 配置阿里云镜像
鉴于Maven本体是国外的,我们还需要对Maven目录下conf中的settings.xml文件进行修改,把镜像(mirrors)换成国内的阿里云镜像,加速我们的项目所需依赖的下载。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
5.1.2 配置本地仓库
对Maven目录下conf中的settings.xml文件进行修改,把本地仓库(localRepository)换成我们自定义的本地仓库maven-repo。
<localRepository>本地路径/maven-repo</localRepository>