JavaWeb介绍
一、JavaWeb简介
1.什么是JavaWeb?
JavaWeb是用Java技术来解决相关web互联网领域的技术栈。
2.JavaWeb技术栈
B/S架构:Browser/Server(浏览器/服务器)架构模式。
(1)特点:
客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取web资源,服务器把web资源发送给浏览器即可。
(2)Web资源:
1)静态资源:HTML/CSS/JavaScript、图片等,负责页面展示。
2)动态资源:Servlet、JSP等,负责逻辑处理。
(3)HTTP协议:规定了浏览器和服务器之间通信的规则。
(4)Web服务器:负责解析HTTP协议,解析请求数据,并发送响应数据。
Web服务器可以封装HTTP协议操作,简化开发;可以将web项目部署到服务器中,对外提供网上浏览服务。
二、HTTP协议
HTTP协议:HyperText Transfer Protocol ,超文本传输协议,规定了浏览器和服务器之间通信的规则。
1.HTTP的特点
(1)基于TCP协议,面向连接,安全;
(2)基础请求-响应模型,一次请求对应一次响应;
(3)HTTP是无状态的协议,对于事务的处理没有记忆能力,即每次请求--响应都是独立的,后一次请求不能记录前一次请求的数据。
1)缺点:多次请求间不能共享数据。
2)优点:速度快。
2.HTTP-请求数据格式
请求数据分为三部分:请求行、请求头、请求体。
(1)请求行
请求数据的第一行,包括了请求方式(GET/POST等7种请求方式)、请求资源路径(/,这里代表根目录)、协议版本(HTTP/1.1);
【注意】三者之间用空格" "隔开。
(2)请求头
从第二行开始,格式为键值对(key:value)的形式;
常见的HTTP请求头:
Host | 表示请求的主机名 |
User-Agent | 浏览器版本 |
Accept | 表示浏览器能接受的资源类型,如text/*表示文本、image/*表示图片、*/*表示所有类型 |
Accept-Language | 表示浏览器偏好的语言,服务器可以据此返回不同语言的网页 |
Accept-Encoding |
表示浏览器可以支持的压缩类型 |
(3)请求体
POST请求方式的最后一部分,与请求头之间有一个空行,用来存放请求参数。
【tips】GET请求和POST请求的比较:
①GET请求的请求参数放在请求行中,没有请求体;POST请求的请求参数在请求体中;
②GET请求的请求参数有大小限制,POST请求没有限制。
3.HTTP-响应数据格式
响应数据分为三部分:响应行、响应头、响应体。(1)响应行
响应数据的第一行,包括了协议版本、状态码(200)、状态码描述(OK);
(2)响应头
从第二行开始,格式为键值对(key:value)的形式;
【tips】①状态码分类:
状态码分类 | 说明 |
1XX | 响应中:临时状态码,表示请求已接受,告诉客户端应该继续请求或如果已经完成则忽略它。 |
2XX | 成功:表示请求已经被成功接收,处理已完成。 |
3XX | 重定向:重定向到其他地方,让客户端再发起一个请求来完成整个处理。 |
4XX | 客户端错误:处理发生错误,责任在客户端。 |
5XX | 服务器端错误:处理发生错误,责任在服务器端。 |
(3)响应体
最后一部分,与响应头之间有一个空行,用来存放响应数据。
三、Tomcat的使用
1.Tomcat简介
Tomcat是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量的JavaEE规范。
2.Tomcat目录结构
3.Tomcat的使用
(1)启动:双击bin\startup.bat
(2)关闭:Ctrl+C.
(3)配置:
修改启动端口号:在conf\server.xml中修改。
【tips】HTTP协议默认端口号为80,如果将Tomcat端口号改为80,将来访问Tomcat时,直接输入"localhost"即可,不用加端口号了。
端口号冲突问题:关掉对应的程序。
(4)项目部署:
将项目放到webapps目录下, 即部署完成。
【tips】一般JavaWeb项目会被打包成war包,然后将war包放到webapps目录下,Tomcat会自动解压缩war文件。
4.IDEA中的Maven Web项目
(1)Maven Web项目结构:
(2)部署的JavaWeb项目(已开发完成可部署的项目)结构:
5.在IDEA中创建Maven Web项目
(1)使用骨架创建Maven Web项目:
1)删除pom.xml中多余的坐标;
2)补齐缺失的目录结构java和resources。
(2)(★推荐★)不使用骨架创建Maven Web项目:
1)在pom.xml中添加打包方式为war(默认为jar):
<packaging>war</packaging>
2)补齐缺失的目录结构webapps。