Web基本知识
- Web服务器的安装和配置(了解)
- 服务器和IDEA结合(了解)
- 服务器部署项目(掌握)
- Http协议格式(掌握)
一.WEB概念
- 静态web资源:页面的数据不会发生改变。html,css
- 动态web资源:页面的数据会发生改变。Jsp/Servlet
常见的web资源架构
- B/S:brower/server-浏览器/服务器
- 淘宝,京东
优点:减少客户端的维护成本,无需客户端安装通过浏览器直接请求使用
缺点:加大了服务器端的压力
- C/S:client/server-客户端/服务器
- 微信,12306
优点:核心运行在客户端对服务器端压力较小
缺点:核心代码在客户端需要维护并解决安全性
服务器概念
-
概念
- 就是一台、若干台电脑,必须安装一些指定的软件(tomcat软件)。
-
或者是用于服务器系统的电脑
-
访问
- http://ip地址:端口号
二.HTTP协议
概述
概念
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。
http是应用层基于请求与响应的无状态传输协议
作用
HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理程序和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。
尽管TCP/IP协议是互联网上最流行的应用,HTTP协议中,并没有规定必须使用它或它支持的层。事实上,HTTP可以在任何互联网协议上,或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用。因此也就是其在TCP/IP协议族使用TCP作为其传输层。
通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。
http协议可以理解为底层使用tcp协议,当浏览器发起请求时会建立连接,当服务器响应后就会断开本次连接(每次输入网址发送请求都会建立一起连接,服务器会根据本次请求进行响应后结束连接)
协议目的
HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:
(1)客户与服务器建立连接;
(2)客户向服务器提出请求;
(3)服务器接受请求,并根据请求返回相应的文件作为应答;
(4)客户与服务器关闭连接。
客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。这种一次性连接主要考虑到WWW服务器面向的是Internet中成干上万个用户,且只能提供有限个连接,故服务器不会让一个连接处于等待状态,及时地释放连接可以大大提高服务器的执行效率。
HTTP请求格式(请求协议)
-
请求行
-
提交方式
- get:将提交的参数拼接显示在地址栏,不安全,传递的参数大小有限制
- post:提交的参数封装在请求体内,比较安全,支持大数据传输(文件,图片)
-
提交的路径
-
协议版本
- 1.0:发送一次请求,产生一次响应,链接断开
- 1.1:发送一次请求,产生一次响应,链接并不会马上断开,如果一段时间没有请求,链接自动断开。
-
-
请求头
- 每个请求头都有固定的作用
- user-agent:获取客户浏览器的版本信息
- referer:获取网页的来源
- 每个请求头都有固定的作用
-
空行
-
请求体
HTTP响应格式(响应协议)
- 响应行
- 协议版本
- 状态码
- 200 一切正常
- 302 重定向
- 304 浏览器缓存
- 404 客户端发生错误(地址有问题)
- 500 服务器内部发生错误
- 响应头
- refresh:页面定时刷新
- location:重定向页面(与302状态码结合使用)
- 空行
- 响应体
- 响应的内容
HTTP状态码 
三.服务器
3.1下载和安装
- 直接解压
- 运行:双击startup.bat(在安装目录下的bin目录)
- 访问测试:在浏览器输入http://localhost:8080
3.2安装目录介绍
bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat8.exe、tomcat8w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗口启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止Tomcat;
conf:这是一个非常非常重要的目录,这个目录下有四个最为重要的文件:
-
server.xml:配置整个服务器信息。例如修改端口号,添加虚拟主机等;下面会详细介绍这个文件;
-
tomcatusers.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了;
-
web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的!
-
context.xml:对所有应用的统一配置,通常我们不会去配置它。
lib:Tomcat的类库,里面是一大堆jar文件。如果需要添加Tomcat依赖的jar文件,可以把它放到这个目录中,当然也可以把应用依赖的jar文件放到这个目录中,这个目录中的jar所有项目都可以共享之,但这样你的应用放到其他Tomcat下时就不能再共享这个目录下的Jar包了,所以建议只把Tomcat需要的Jar包放到这个目录下;
logs:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中。
temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!
webapps:存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的。项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。http://localhost:8080/examples,进入示例项目。其中examples就是项目名,即文件夹的名字。
work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。
LICENSE:许可证。
NOTICE:说明文件。
3.3 启动和关闭
注意事项:
如果日志出现乱码问题:apache-tomcat-8.5.73\conf\logging.properties 改为GBK即
如果启动过程中出现端口被占用:apache-tomcat-8.5.73\conf\server.xml 大概69行,我这里是47行。
访问地址:主机IP地址/localhost:端口号
localhost:本机;
3.4 端口号的配置
端口号修改之后,需要重启服务器
tomcat默认的端口号是8080,我们的操作系统默认的端口是80,可以省略:80
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
安装过程中常见问题
启动Tomcat
1.在tomcat的安装路径下,有startup.bat文件
访问测试:http://localhost:8080/
2.启动方式2
如果没有服务,则添加
在当前目录下,service.bat install
已经有,则移除掉:service.bat remove
3.启动方式3
cmd->
cd 你的tomcat目录\bin 这个路径
输入catalina run
会显示环境变量的依赖:
关闭:
因为已经关闭了,所以报错。
3.5 部署项目
a)第一种方式:直接在webapps下放我们的网站目录;
jar -cvf mi.war 目录 为指定目录打包为war包.
-c 创建新的归档文件
-v 在标准输出中生成详细输出
-f 指定归档文件名
打一个war包的方式放到webapps下,这个war包会自动解压;
b)第二种方式:配置Server.xml文件
<!-- 配置 -->
<Context docBase="d:/aaa/mi" path="/mi2"/>
docBase:表示网站的实际路径
path:表示外部的url访问的路径
c)第三种方式:在conf下的Catalina下的localhost增加一个url.xml的文件
参考配置:
<Context docBase="d:/aaa/mi"/>
并且第4种方式,如果url发生变更,不需要重启服务器,只用修改文件名即可,也就是说文件名和url一致的。
3.6 tomcat管理工具
点击取消按钮。把提示如下内容复制到 conf/tomcat-users.xml 保存,重启服务器.
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
四.IDEA配置Tomcat
配置Tomcat安装目录
第一个Web项目:HelloWeb创建
-
动态web项目目录介绍
- 项目名
- 静态资源(HTML,CSS,JAVASCRIPT)
- WEB-INF(必须有)
- classes:java文件编译生成的字节码文件
- lib:项目运行需要的jar文件
- web.xml:核心配置文件
- 项目名
-
静态WEB项目结构
- 项目名(文件夹)
- 静态资源
- 项目名(文件夹)
3.3 问题:
解决idea启动tomcat控制台中文乱码
sword=“s3cret” roles=“manager-gui”/>
# 四.IDEA配置Tomcat
### 配置Tomcat安装目录
### 第一个Web项目:HelloWeb创建
* 动态web项目目录介绍
* 项目名
* 静态资源(HTML,CSS,JAVASCRIPT)
* WEB-INF(必须有)
* classes:java文件编译生成的字节码文件
* lib:项目运行需要的jar文件
* web.xml:核心配置文件
* 静态WEB项目结构
* 项目名(文件夹)
* 静态资源
### 3.3 问题:
解决idea启动tomcat控制台中文乱码
修改idea显示编码,windows默认用gbk所以idea显示默认为GBK编码,在Help→Edit custom vm options 添加 -Dfile.encoding=UTF-8