JavaWeb概念
Java Web
,是用Java
技术来解决相关Web
互联网领域的技术栈,Web
包括:web
服务端和web
客户端两部分。Java
在客户端的应用有Java Applet
,不过使用得很少,Java
在服务器端的应用非常的丰富,比如Servlet
,JSP
、第三方框架等等。Java技术对Web领域的发展注入了强大的动力。
什么是HTTP?
超文本传输协议(
Hypertext Transfer Protocol,HTTP
)是一个简单的请求-响应协议,它通常运行在TCP
之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII
形式给出;而消息内容则具有一个类似MIME
的格式。这个简单模型是早期Web
成功的有功之臣,因为它使开发和部署非常地直截了当(MIME
,全称为“Multipurpose Internet Mail Extensions
”,比较确切的中文名称为“通用互联网邮件扩充”。MIME
类型的格式是大类型/小类型
,并与某一种文件的扩展名相对应,例如:超文本标记语言文本 .html,.html text/html;普通文本 .txt text/plain;RTF文本 .rtf application/rtf)
简单来说就是:
http
(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP
之上。例如:在浏览器点击一个链接,浏览器就为我打开这个链接的网页。原理:当在浏览器中点击这个链接的时候,浏览器会向服务器发送一段文本(文本可以是html、字符串、…;超文本就是图片,音乐,视频,定位,地图等),告诉服务器请求打开的是哪一个网页。服务器收到请求后,就返回一段文本给浏览器,浏览器会将该文本解析,然后显示出来。这段「文本」就是遵循HTTP
协议规范的,且HTTP
协议中的数据又叫报文
HTTPS
(全称:Hyper Text Transfer Protocol over SecureSocket Layer
),是以安全为目标的HTTP
通道,在HTTP
的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS
在HTTP
的基础下加入SSL
,HTTPS
的安全基础是SSL
,因此加密的详细内容就需要SSL
。HTTPS
存在不同于HTTP
的默认端口及一个加密/身份验证层(在HTTP
与TCP
之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面
HTTP发展历史
http/1.0
:客户端可以与web
服务器连接后,只能获得一个web
资源,然后断开连接
什么是请求?
请求是指客户端给服务器发送数据(
request
),请求一般又分为GET
请求和POST
请求
什么是响应?
响应是指服务器给客户端回传数据(
response
)
注:请求和响应是成对出现的,有请求就有响应
浏览器向服务器请求某个web资源时,一般也是浏览器向服务器发送了一个HTTP请求
一个完整
HTTP
请求应该包含三个部分:`请求行、请求头、请求体(其实这里其实可以分为四个部分,空白行我们忽略不计)空间划分:一般分为
请求行
——请求头
——空白行
(表隔离,无任何作用)——请求体
(一般Request Method
是GET
的话就有请求体,POST
的话没有请求体)
请求行:描述客户端的请求方式(GET
和POST
)、请求的资源路径,以及使用的HTTP协议版本号
GET / HTTP/1.1
Host: www.baidu.com
GET
请求:请求能够携带的参数比较少,大小有限制,会在浏览器的URL
地址栏显示数据内容,不安全,但高校,没有请求体。是GET
请求的有:form标签
;method="get"
;a标签
;link标签引入css
;Script标签引入js文件
;img标签引入图片
;iframe引入html页面
;或者是在浏览器输入一个地址然后回车也属于GET
请求
POST
请求:请求能够携带的参数没有限制,大小有限制,不会在浏览器的URL地址栏显示数据内容,安全,有请求体
请求头:请求参数信息
请求头的格式一般都是一个key
对应一个value
,或者一个key
对应多个value
的情况
【Request Headers】
Accept(告诉浏览器,客户端可以接收的数据类型):
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br(支持哪种编码格式) GBK UTF-8 GB2312 ISO8859-1 (告诉服务器,客户端可以接收的数据编码格式)
Accept-Language: zh-CN,zh;q=0.9 (告诉服务器,客户端可以接收的语言类型)
Cache-Control: no-cache (缓存控制)
Connection: keep-alive (告诉服务器回传数据不要马上关闭,保持一小段时间的连接)
Cookie:
Host: www.baidu.com (主机)
Refresh:告诉客户端,多久刷新一次
Location:让网页重新定位
User-Agent:获得客户端浏览器的信息
空白行:没有任何内容,起到隔离作用
请求体:请求参数信息,只要POST
请求方式才有请求体,而且请求体是POST
方式请求参数
一个HTTP响应代表着服务器向浏览器回送数据
HTTP响应跟请求差不多,一般分为
状态行
——响应头
——空白行
(表隔离,无任何作用)——响应体
(一般Request Method
是GET
的话就有请求体,POST
的话没有请求体)
状态行:响应的协议和版本号、响应状态码(服务器对请求处理的结果情况,常见以下状态码)响应状态描述符
HTTP/1.1 200 OK
响应状态码常出现的几种
200
:表示请求成功
3**
:请求重定向(重新向:重新到我指定给你新位置去)
404
:表示请求服务器已经收到了,但是你要的数据不存在(本地和DNS
找不到资源;请求地址不存在或者错误)
5**
:服务器内部错误(代码错误)500
、502
:表示网关错误
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status(具体看这篇文章)
响应头
描述服务器的基本信息,以及数据的描述
【Response Headers】
Cache-Control: private 缓存控制
Connection: keep-alive 服务器告知浏览器连接方式
Content-Encoding: gzip 服务器告知浏览器数据压缩的格式
Content-Type: text/html;charset=utf-8 指定浏览器采用对应编译器对响应体二进制数据进行解析(表示响应体的数据类型)
Server: BWS/1.1 表示服务器的信息
响应头的格式也是一个key
对应一个value
,或者一个key
对应多个value
的情况
空白行:没有任何内容,起到隔离作用
响应体:响应体可能是被访问静态资源文件内容、被访问的静态资源文件命令或者被访问的动态资源文件运行结果(回传给客户端的数据)
web资源又分为 静态资源和动态资源两种
静态web有html、css、js、图片等
静态Web存在的缺点
无法动态的更新页面、所有的用户浏览到的都是同一个页面
只有伪动态,例如轮播图(靠js
和VBScript
)
它无法和数据库交互(数据无法持久化,用户也没办法交互)
动态web有jsp页面、servlet程序
动态Web存在的缺点
加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,然后重新发布
停机维护
Web
服务器有很多,这里只说Tomcat
服务器(因为免费且大部分企业在使用)服务器是一种被动操作,用来处理一些被动请求,接受用户请求,返回响应
Tomcat
Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。适合初学者。Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
Tomcat各版本、jdk和servlet各版本对应关系
Servlet Spec | JSP Spec | EL Spec | WebSocket Spec | Authentication (JASIC) Spec | Apache Tomcat Version | Latest Released Version | Supported Java Versions |
---|---|---|---|---|---|---|---|
5.0 | 3.0 | 4.0 | 2.0 | 2.0 | 10.0.x | 10.0.5 | 8 and later |
4.0 | 2.3 | 3.0 | 1.1 | 1.1 | 9.0.x | 9.0.45 | 8 and later |
3.1 | 2.3 | 3.0 | 1.1 | 1.1 | 8.5.x | 8.5.65 | 7 and later |
3.1 | 2.3 | 3.0 | 1.1 | N/A | 8.0.x (superseded) | 8.0.53 (superseded) | 7 and later |
3.0 | 2.2 | 2.2 | 1.1 | N/A | 7.0.x | 7.0.109 | 6 and later (7 and later for WebSocket) |
2.5 | 2.1 | 2.1 | N/A | N/A | 6.0.x (archived) | 6.0.53 (archived) | 5 and later |
2.4 | 2.0 | N/A | N/A | N/A | 5.5.x (archived) | 5.5.36 (archived) | 1.4 and later |
2.3 | 1.2 | N/A | N/A | N/A | 4.1.x (archived) | 4.1.40 (archived) | 1.3 and later |
2.2 | 1.1 | N/A | N/A | N/A | 3.3.x (archived) | 3.3.2 (archived) | 1.1 and later |
安装解压
下载地址:https://tomcat.apache.org/
目录介绍
解压后打开目录(这里我把Tomcat
服务器安装在D:\java jdk\apache-tomcat-9.0.45
)
temp
:用来存放Tomcat
运行时产生的临时数据。
work
:是Tomcat
工作时的目录,用来存放Tomcat运行时jsp
翻译为Servlet
的源码(其实jsp
本质上就是Servlet
)和Session
钝化(钝化就是序列化写在磁盘上)的目录(学Servlet
之前,首先我们要学学Tomcat
。Tomcat
是一个Web
服务器(同时也是Servlet
容器),通过它我们可以很方便地接收和返回到请求(如果不用Tomcat
,那我们需要自己写Socket
来接收和返回请求))
首先去tomcat的bin目录启动或者关闭脚本,或者后面直接通过idea配置tomcat
然后打开浏览器访问(如果启动失败就是jdk环境没有配置好)
打开浏览器输入地址:
http:localhost:8080
,或者把localhost
换成127.0.0.1
要么本机真实IP
或者通过命令行访问
找到
Tomcat
的bin
文件夹,在上面路径输入cmd
,然后输入命令startup.sh
找到解压目录
D:\java jdk\apache-tomcat-9.0.45\conf\server.xml
,里面可以修改端口号(port
属性就是你需要的端口号,修改完端口号,一定要重启Tomcat服务器才能生效)
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
可以配置主机的名称
默认的主机名为:localhost
(也就是127.0.0.1
)默认网站应用存放的位置为:webapps
(一般不要去修改)
下面这篇文章是整合IDEA+Maven配置Tomcat服务器(包括目录详解)文章,这里不细说
https://blog.csdn.net/qq_47256069/article/details/116140082
webapps目录
默认网站应用存放的位置为:webapps
。一个目录代表一个应用:我们可以把自己的网站部署到这上面,拷贝webapp
目录下的一个ROOT
目录,然后修改成自己网站的名字(里面其他东西都可以删了,留个web.xml
文件就行)
启动tomcat后,输入下面的地址,默认访问的工程是ROOT目录下的index.jsp文件
http://localhost:8080/(没有部署工程名的时候,默认是
ROOT
工程)http://localhost:8080/工程名(如果输入的地址没有资源名的时候,默认访问的是
index.html
页面)
上面我们说了,
Tomcat
默认存放网站的位置是webapps
,然后将自己的网站放在服务器(Tomcat
)中指定的webapps
目录下的应用,然后启动Tomcat
后,在浏览器输入http://localhost:8080/工程名/资源名
部署网站后是如何进行访问的?(面试题)
输入一个域名;然后回车(也就是回车后做的事情)首先会检查本地的C:\Windows\System32\drivers\etc\hosts
配置文件有没有映射(去hosts
文件增加主机的域名映射);有的话直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问。没有的话去DNS
服务器找
Tomcat服务器第二种部署web网站方式
D:\java jdk\apache-tomcat-9.0.45\conf\Catalina\localhost(在这里面写配置文件,一个
xml
代表一个项目)
在你们对应的Tomcat
目录下找(我的是上面这个路径)然后创建一个xml
文件,往xml
文件写下面的内容(项目名是xml
文件名,注意字符集问题),然后启动Tomcat
服务器后,在浏览器输入对应的路径即可访问!
<Context path="项目名(外面xml文件名字)" docBase="项目路径" />