Tomcat服务器 和 HTTP协议
**WEB开发简介**
* 当前网络上两种架构
* C/S Client/Server 客户端/服务器 需要下载客户端软件 例子:QQ 快播 暴风影音
* 优点:服务器压力相对比较小,安全性比较高。
* 缺点:需要下载客户端软件,总去更新。
* B/S Browser/Server 浏览器/服务器 不需要下载客户端软件(客户端就指浏览器) 例子:购物网站(淘宝 京东) 12306
* 缺点:服务器压力比较大(硬件比较强)
* 优点:浏览器,不用更新,服务器端去做更新了。
**WEB相关知识**
* WEB:网页。JavaWeb:使用Java语言来开发网页。
* 静态的WEB资源
* HTML CSS JavaScript
* 动态的WEB资源
* Servlet/JSP
* 静态和动态的区别
* 动态的资源数据是活的,例子:假如说A用户登陆淘宝,显示A用户的名字。B用户登陆了淘宝,显示B用户的名字。
* 微软 ASP.net
* PHP 小巧(开发网站非常强大,处理大数据)
* RUBY 小日本
* Java语言优点:开发了网站,没有任何优势。优势是服务器端,处理业务(电信,淘宝,银行)。
* 静态Web资源:简单一句话,浏览器能看的懂的。
* 动态Web资源:先需要服务器把它转换成HTML,再给浏览器看。
**服务器的简介**
* 服务器整体概念:
* 硬件:一台电脑。
* 软件:服务器的软件,Tomcat服务器软件。
* 如果安装了服务器软件了,启动服务器和关闭服务器。假如启动了服务器,怎么访问?
* 访问:http://www.baidu.com 一回车访问百度了
* http:// 代表HTTP的协议
* www.baidu.com 域名(DNS域名服务器注册 .baidu.com 61.135.169.125)
* 最终:http://192.168.1.100:端口号(默认值80)
* 最终:http://192.168.1.100:80/index.html
**常见的WEB服务器**
* Tomcat(Apache) 开源免费的 开发中应用最广的服务器 支持JSP/Servlet规范 SSH
* JBoss 免费的 支持JAVAEE所有的规范 EJB规范 JSP/Servlet
* Weblogic 原来的公司BEA公司 收费的 大型的服务器 支持JAVAEE所有的规范 被Oracle收购了
SUM公司(Java语言) + 数据库(Oracle MySQL(也被收购了)) + 服务器(Weblogic)
* Websphere 公司的IBM公司 收费 大型的服务器 支持JAVAEE所有的规范
**Tomcat服务器**
* 下载tomcat服务器,安装版本和解压版本。现在都使用解压版本(7.x)
* 解决文件,放在本地的磁盘上(目录:不要有中文和空格)
* 启动服务器:在tomcat/bin/startup.bat(批处理文件),双击文件。弹出黑色的窗口。服务器成功。(不要把黑窗口关闭)
* 访问服务器的主页:http://localhost:8080 就可以访问tomcat默认主页
* 关闭服务器:(关闭黑窗口,关闭暴力的),温柔的关闭。在bin的目录下,有shutdown.bat。双击该文件,关闭服务器。
**常见问题**
* 第一个注意:必须安装JDK,必须配置Java_Home环境变量。窗口一闪而过。说明环境变量没配置好。
* 不小心,已经启动了一个服务器,又想启动服务器。端口占用的问题。
* 端口占用的问题:java.net.BindException: Address already in use: JVM_Bind
* 解决占用的问题:
* 先找到占用端口的应用程序,结束掉该应用程序。
* netstat –ano 查看所有占用端口的应用程序,找到程序的PID,要任务任务管理器中结束掉。
* 有一个应用一直占用,一开机就占用。
* 修改端口号(修改tomcat服务器的端口号)。(默认是8080,改成其他的端口号)
* Tomcat服务器的配置文件 -- tomcat/conf/server.xml的文件
* 一般情况下改成80,80端口是HTTP协议的默认端口号,访问可以不写。
* 如果万一占用的80端口,干掉它。系统中的服务要是占用80端口,禁用该服务。
* 如果系统自带的微软服务器IIS(World wide web publish IIS),去系统服务中把服务禁用。
**Tomcat目录结构**
** bin 可执行文件(启动和关闭)
***** conf 存放的Tomcat配置文件
*** lib 给Tomcat服务器运行时所需jar
*** logs 存放Tomcat运行时产生日志文件。
** temp Tomcat运行时产生临时文件
***** webapps Wab Applicatons(WEB应用们),在该目录下存放就是项目。
***** work JSP翻译成.java的文件,存放在work的目录下。
**在webapps目录创建静态和动态的WEB资源**
* webapps目录下存放的是项目,项目区分静态的WEB资源和动态的WEB资源。
* 静态和动态在webapps的目录下存在的方式不一样。
* 如果静态的WEB资源 -- 在webapps目录创建一个文件(项目名称) -- 直接可以放在静态资源(HTML CSS JS)
(例如:在webapps目录创建一个文件名为hello,里面有个文件为index.html,启动tomcat,访问http://localhost:80/hello/index.html即可,80端口可以省略)
* 如果动态的WEB资源
* 在webapps目录下创建一个文件
* 在该文件下创建WEB-INF的目录(名称固定、大写固定)
* 在WEB-INF目录下web.xml的文件(必须要有,有文档声明,根节点和约束,复制一份)
* 在WEB-INF目录下 classes文件夹(.class文件)
* 在WEB-INF目录下 lib文件夹(引入第三方jar包)
**MyEclipse和服务器集成**
* MyEclipse是开发工具(编写代码)
* Tomcat服务器:运行的项目
* MyEclipse和Tomcat集成的步骤
* window -- 首选项 -- MyEclipse -- servers -- Tomcat7.x -- 配置JDK -- 配置Tomcat目录 -- Enable,点击ok
* 启动 -- 在server窗口中 -- 右键选择启动和关闭
* 如果在MyEclipse部署项目。(右键add相应的项目即可)
**Context上下文(虚拟路径)**
* 虚拟路径:理解访问路径(默认和项目名称是相同的)。
* 发布到服务器中,作为访问路径。
* 总结:在webapps的目录下的项目的名称其实是虚拟路径(访问路径),虚拟的路径默认情况下和项目名称是相同的。
**部署项目(两种方式)**
* 直接把项目复制到webapps的目录下
* 原因:需要把你的系统部署到公司的服务器。
* 在tomcat/conf/server.xml -- 在<Host>标签的中间配置虚拟路径(希望找到C盘oa的项目)
<Context path="/itcast" docBase="C:/oa" />
* path="项目的虚拟路径(访问路径)"
* docBase="指定真实项目的路径"
* 也是配置虚拟路径的方式,但是不用去修改tomcat/conf/server.xml。
* tomcat安装路径\conf\Catalina\localhost创建一个XML的配置文件,名称可以是任意(例子:hello5.xml),它就会以文件的名称作为虚拟路径(访问路径)。我就会把hello5文件的名称作为虚拟路径。 http://localhost/hello5.
* hello5文件书写的内容:
* 文档声明<?xml version="1.0" encoding="UTF-8"?>
* 直接编写<Context docBase="c:/ob" />
**WEB通信**
注意:hosts文件中把上面两个地址倒过来,例如: 10.2.4.86 www.baidu.com, 看下图即可。
**配置虚拟主机(了解)**
在hosts文件中的<Host>标签中完成虚拟主机的配置。在原来的Host标签上再加一个如下所示:
D盘下有一个mytaobao的文件夹,里面新建一个ROOT文件夹,在此文件夹中新建index.html
## HTTP的协议(重点)重点掌握头的信息,固定的作用 ##
**HTTP协议的简介**
* 什么是HTTP的协议:协议:甲乙双方根据一些规定达成的共识。人与人之间的协议。
* 人与计算机怎么沟通呢?人通过浏览器与计算机的服务器进行沟通。
* 客户端与服务器之间怎么沟通:涉及到数据的传输。风姐传到服务器端,接收凤姐,服务器内部查找内容,返回给你浏览器。
* 凤姐是怎么传输啊?图片或者html的内部怎么传输啊?
* HTTP的协议
* 把凤姐数据封装到协议规定的格式里,发送到服务器。
* 服务器把HTML,图片的数据封装到协议的规定的格式,返回给浏览器。
* HTTP协议的格式
* 咱们要学的是这些格式?这是格式有一些内容,需要学的?
* 请求:从客户端发起,向服务器端发送请求。
* 响应:从服务器做出回应,接收到客户端发送过来的请求,对客户端做出了响应。
**HTTP协议的版本**
* HTTP协议1.0
* 从客户端链接服务器端,发送请求,得到响应。立即断开。
* HTTP协议1.1(现在使用)
* 从客户端链接服务器端,发送请求,得到响应。不会立即断开,链接一会,如果一段时间内,没有请求,自动断开。
**HTTP协议的请求**
* 请求行
* 请求方式
* 提交方式有哪些?
* 提交方式有很多,主要有两种,get和post。之间区别:
(1)get请求参数在地址栏中显示,post不显示而是在请求体重
(2)get不安全,post安全
(3)get传输数据有大小限制,post没有
* 提交的地址
* 协议版本 HTTP/1.1
* 请求头
Accept: text/html,image/*
Accept-Charset: ISO-8859-1
Accept-Encoding: gzip
Accept-Language:zh-cn
Host: www.itcast.com:80
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT
Referer: http://www.itcast.com/index.jsp
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Connection: close/Keep-Alive
Date: Tue, 11 Jul 2000 18:23:51 GMT
* 重点的有
* If-Modified-Since 需要和响应头和304(状态码)和在一起使用,控制本地的缓存。
* Referer 记住当前网页的来源(作用:统计网站的访问,防止盗链)
* User-Agent 获取浏览器的版本信息
* 空行
* 请求体
* 封装的是post提交方式的参数列表。
附1:get和post请求图解:
附2:Referer 作用图解:
**HTTP协议的响应**
* 响应行
* 协议版本
* 状态码(重点记住)
* 200 :请求成功处理,一切OK
* 302 :请求重定向
* 304 :服务器端资源没有改动,通知客户端查找本地缓存
* 404 :客户端访问资源不存在
* 500 :服务器内部出错
* 状态码描述
* 响应头
Location: http://www.it315.org/index.jsp
Server:apache tomcat
Content-Encoding: gzip
Content-Length: 80
Content-Language: zh-cn
Content-Type: text/html; charset=GB2312
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
Refresh: 1;url=http://www.it315.org
Content-Disposition: attachment; filename=aaa.zip
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
Connection: close/Keep-Alive
Date: Tue, 11 Jul 2000 18:23:51 GMT
* 重点的响应头
* Location 和302一起完成重定向
* Last-Modified 和 If-Modified-Since 和304一起来完成控制缓存的操作。
* Refresh 定时页面刷新(页面定时跳转)
* Content-Disposition 文件下载的时候需要使用
* 下面这三个头需要一起使用
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
作用:禁用浏览器缓存。
* 空行
* 响应体:服务器向客户端返回的数据。
附1:post结构:
附2:Last-Modified 和 If-Modified-Since 和304一起来完成控制缓存的操作原理: