03tomcat服务器和Http协议.docx
《03tomcat服务器和Http协议.docx》由会员分享,可在线阅读,更多相关《03tomcat服务器和Http协议.docx(16页珍藏版)》请在冰豆网上搜索。
03tomcat服务器和Http协议
一、WEB服务器
Web开发背景
目前市面上的软件分为两种:
BS架构:
浏览器端与服务器端的交互UI界面是在服务器端
CS架构:
客户端与服务器端的交互UI界面是在客户端程序实现
1.基本概念
什么是web
WEB在英语中即表示网页的意思,它用于表示Internet主机上供外界访问的资源以及超链接所组成的链表
放在internet网上供外界访问的文件或程序被称为web资源
web资源被分为:
静态web资源:
html、css、jpg
动态web资源:
Servlet、Jsp
Aspphpjsp+servlet
2.什么是WEB服务器?
就是一台电脑,安装了一个服务器软件
3.为什么需要安装WEB服务器
思考问题:
从一台计算机的IE浏览器如何去访问另一台计算机中的文件
3.1两台计算机是如何实现通讯的?
IP地址(计算机的唯一标识)
IPV44个字节的整数,每个字节以点号隔开192.168.1.100每个字节的取值0~255
在计算机中程序会绑定在某一个端口0~65535尽量用1024以上的
连接一台计算机就需要输入ip地址和端口号
作为接收方,应该绑定ip,监听指定的端口
3.2在本地写程序添加一个服务,供别人来访问,假设监听8888端口
3.3编码实现了一个本地服务器程序
作用:
管理本地的资源,只要将html页面放到指定的目录下,外界就可以访问了
3.4安装服务器的目的:
开发好的web资源可以发布到服务器上,这样外界就可以通过浏览器访问了
源程序:
MyServer.java
//ServerSocket对象可以监听端口
ServerSocketserversocket=newServerSocket(6666);
while(true){
Socketsocket=serversocket.accept();//等待客户端的连接请求,一旦有请求过来,就结束阻塞,返回客户端对象
//一旦有客户来访问,就另开一个新线程去提供服务,main线程继续等待下一个客户的连接
newThread(newMyService(socket)).start();
}
MyService.java
//提供服务
InputStreamin=socket.getInputStream();
Thread.sleep(200);
intlen=in.available();//估计此流不受阻塞能读取的字节数
byte[]buffer=newbyte[len];
in.read(buffer);
Stringrequest=newString(buffer);
//截取第一行
StringfirstLine=request.substring(0,request.indexOf("\n"));
StringuriName=firstLine.split("")[1];
OutputStreamout=socket.getOutputStream();
//根据需要访问的资源创建File对象
Filefile=newFile("src"+uriName);
if(!
file.exists()){
out.write("对不起!
您访问的资源不存在!
别瞎搞!
!
".getBytes());
out.close();
return;
}
//从文件读,往浏览器写
FileInputStreamfis=newFileInputStream(file);
buffer=newbyte[1024];
while((len=fis.read(buffer))>0){
out.write(buffer,0,len);
}
socket.close();
二、Tomcat服务器的安装和配置
目前使用较多的服务器weblogic
1.使用tomcat6.0.20.rar文件解压即完成安装
2.tomcat就是一个java程序,一定会用到jre
所以需要配置环境变量java_home配置成jdk的安装目录c:
\jdk1.6
tomcat的启动是通过startup.bat文件,实际上startup.bat中是去调用
catalina.bat文件,而且是通过%catalina_home%\bin\catalina.bat去找
所以为了保证服务器启动正常,需要配置catalina_home环境变量为tomcat的安装目录
3.tomcat的目录结构
bin:
存放一些执行文件
conf:
存放服务器的配置文件
lib:
存放tomcat所依赖的jar文件
logs:
存放日志文件
temp:
存放临时文件
webapps:
webapplications存放所有的web应用程序(web资源)
work:
tomcat的工作目录,jsp翻译成的Servlet就在这个目录下
4.web应用
多个web资源存放在一个目录下即为一个web应用(web应用程序、web工程)
web应用的目录结构
静态web资源直接放在目录下
java类放在classes目录下
web.xml文件负责管理web应用下所有的web资源
所有jar包放在lib目录下
三、WEB应用的映射
1.虚拟目录
一个web应用(服务器上一个目录)要想被供外界访问,就必须要映射虚拟目录
在tomcat6中,放在webapps下的web应用,服务器会自动做映射(将文件夹名称作为虚拟路径)
对于webapps目录外的web应用需要手动映射虚拟路径
1.1.在server.xml文件可以配置
\myWeb”/>
在server.xml文件中配置contextPath需要重新启动tomcat服务器
1.2.在%Tomcat目录%\conf\[enginename][引擎名一般为Catalina]\[hostname][主机名一般为localhost]目录下建立一个扩展名为xml的配置文件,内容如下:
xmlversion="1.0"encoding="gbk"?
>
\myWeb"/>
文件名就是虚拟目录
\myWeb”/>
多级目录配置aaa#myWeb.xml对应/aaa/myWeb
如果文件名是ROOT.xml那就是配置了缺省的web应用,访问时不需要输入虚拟目录
2.web.xml
管理web应用下所有的web资源
通俗地讲,一个web应用下所有的web资源如何被外界访问都需要在此文件下做映射
包括咱们后面学的Servletjsp都需要在这个文件中做映射
实验:
配置web应用的首页
在web应用下新建目录WEB-INF,在此目录下新建web.xml文件
xmlversion="1.0"encoding="ISO-8859-1"?
>
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
version="2.5">
itcast.html
3.域名解析
一个完整url
http:
\\:
80\itcast\index.jsp
协议名主机名端口号资源名(uri)
IE访问服务器的原理,
在IE中输入的地址中包含域名,域名就需要被翻译成服务器的IP,才能访问到服务器
4.web应用映射的练习:
新建一个web应用
配置成缺省的web应用
配置首页
配置tomcat监听端口为80
在windows中注册主机名
新建一个web应用进行配置,要求在ie输入即可访问页面
5.虚拟主机
服务器允许在一个IP上配置多个主机,即虚拟主机
:
80/index.html
中的起了两个作用:
一找DNS服务器,作为域名被解析为IP
二通过Host头告诉服务器访问的主机名
配置方式:
一在server.xml文件中配置Host元素,需要指定name(主机名)、appBase(默认web应用存放目录)
appBase目录下所有的web应用,tomcat会自动映射虚拟路径
修改server.xml文件
\sohu"unpackWARs="true"autoDeploy="true"xmlValidation="false"xmlNamespaceAware="false">
\sina"unpackWARs="true"autoDeploy="true"xmlValidation="false"xmlNamespaceAware="false">
二在D盘下放入对应的文件
三修改C:
\Windows\System32\Drivers\etc下的hosts文件
127.0.0.1
127.0.0.1
四输入:
8080/bbs/进行访问
PS:
实验过程中发现sina目录下不能直接存放index.html,必须加一个bbs的中间目录。
否则不能访问
四、http协议
Web开发的基石
1.tcp/ip协议:
网络通信协议(连接)
ip协议:
127.0.0.1ip地址对应一台计算机(互联网层)
tcp高级协议:
三次握手,发送请求、返回响应、传输数据(传输层)
2.http协议是建立在tcp协议的基础之上(应用层)
W3c制定的通讯协议,作用是规定了浏览器与服务器之间通讯的格式
3.Http协议的版本
Http1.0:
建立连接,发送一次请求就断开
Http1.1:
建立连接,可以无限次发送请求
五、http请求消息
Ie向服务器发送的内容
内容包括一个请求行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。
POST/itcast/HTTP/1.1请求行
Accept:
image/gif,image/x-xbitmap,*/*消息头
Referer:
http:
//localhost:
8080/itcast/
Accept-Language:
zh-CN,en-GB;q=0.8,ar-YE;q=0.7,ja-JP;q=0.5,de-CH;q=0.3,en-US;q=0.2
Content-Type:
application/x-www-form-urlencoded
UA-CPU:
x86
Accept-Encoding:
gzip,deflate
User-Agent:
Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;GTB6.5;CIBA)
Host:
localhost:
8080
Content-Length:
33
Connection:
Keep-Alive
Cache-Control:
no-cache
Cookie:
JSESSIONID=B0B3FB4FFB0315B3D3C620548DD4E1EB
username=zhangsan&password=123456
1.请求行GET/itcast/a.htmlHTTP/1.1
请求方式共有7种,在实践中发现其中的5种没用,只需要学两种getpost
GET方式:
get方式请求参数跟在url后面/itcast/a.html?
username=aaa&password=111,数据最多1K
Post方式:
请求参数放在消息体中传输,相对安全,get大小限制1K,post无数据量限制
2.请求消息头:
IE浏览器用于向服务器说明情况的(浏览器环境)
Accept:
text/html,image/*说明浏览器接受的数据类型
Accept-Charset:
ISO-8859-1说明浏览器使用的字符编码
Accept-Encoding:
gzip,compress说明浏览器支持的压缩格式
Accept-Language:
en-us,zh-cn说明浏览器的语言环境
Host:
www.it315.org:
80说明浏览器要访问的主机名
If-Modified-Since:
Tue,11Jul200018:
23:
51GMT文件的修改时间,用于做缓存
Referer:
http:
//www.it315.org/index.jsp说明请求来自哪里,防盗链(做实验)
User-Agent:
Mozilla/4.0(compatible;MSIE5.5;WindowsNT5.0)说明浏览器内核
Cookie向服务器发送Cookie
Connection:
close/Keep-Alive说明连接状态
Date:
Tue,11Jul200018:
23:
51GMT客户端计算机时间
六、http响应消息
内容包括一个状态行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。
HTTP/1.1200OK状态行
Server:
Apache-Coyote/1.1消息头
Content-Type:
text/html;charset=GB18030
Content-Length:
766
Date:
Thu,07Jul201115:
40:
02GMT
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">消息体
MyJSP'index.jsp'startingpage
hello
1.状态行HTTP/1.1404NotFound
协议版本
状态码:
200(ok)302\307请求重定向,你访问我,我通知你访问另一个资源
304通知浏览器去读缓存404找不到资源500服务器程序出错
2.响应消息头服务器向浏览器说明情况(处理结果)
Location:
http:
//www.it315.org/index.jsp通知浏览器去访问另一个资源
Server:
apachetomcat说明服务器
Content-Encoding:
gzip通知浏览器数据的压缩格式
Content-Length:
80通知浏览器发送数据的长度
Content-Language:
zh-cn通知浏览器语言环境
Content-Type:
text/html;charset=GB2312通知浏览器文件的格式和编码
Last-Modified:
Tue,11Jul200018:
23:
51GMT告诉浏览器文件的修改时间
Refresh:
1;url=http:
//www.it315.org通知浏览器自动刷新
Content-Disposition:
attachment;filename=aaa.zip通知浏览器以下载的方式打开资源
Set-Cookie:
SS=Q0=5Lb_nQ;path=/search发cookie
Expires:
-1//3种禁止缓存的头字段
Cache-Control:
no-cache
Pragma:
no-cache
Connection:
close/Keep-Alive连接状态
Date:
Tue,11Jul200018:
23:
51GMT系统时间
七、https协议
1.https是一种加密协议能保证数据的安全
2.不对称加密对称加密
3.https
1)制作数字证书
keytool-genkey-aliastomcat-keyalgRSA
2)将证书拷贝至tomcat\conf
3)修改server.xml文件配置https连接器
maxThreads="150"scheme="https"secure="true"
clientAuth="false"sslProtocol="TLS"
keystoreFile="conf\.keystore"keystorePass="123456"/>
4)重启服务器打开ie访问
https:
//localhost:
8443
5)ie中安装证书
继续浏览
查看证书
安装证书
。
。
。
。
。
。
。
删除证书: