03 tomcat服务器与Http协议

一、 WEB 服务器

Web开发背景

目前市面上的软件分为两种:

BS架构:  浏览器端与服务器端的交互   UI界面是在服务器端

CS架构:  客户端与服务器端的交互     UI界面是在客户端程序实现

1. 基本概念

什么是web

WEB在英语中即表示网页的意思,它用于表示Internet主机上供外界访问的资源以及超链接所组成的链表

放在internet网上供外界访问的文件或程序被称为web资源

web资源被分为:

静态web资源: html、css、jpg

动态web资源:Servlet、Jsp

Asp  php  jsp+servlet

 

2. 什么是WEB 服务器?

    就是一台电脑,安装了一个服务器软件

3. 为什么需要安装 WEB 服务器

    思考问题: 从一台计算机的 IE 浏览器如何去访问另一台计算机中的文件

 3.1  两台计算机是如何实现通讯的?

       IP地址(计算机的唯一标识)

IPV4 4个字节的整数,每个字节以 点号 隔开 192.168.1.100  每个字节的取值 0~255

在计算机中程序会绑定在某一个端口  0~65535 尽量用 1024 以上的

连接一台计算机就需要输入 ip 地址和端口号

作为接收方, 应该绑定ip,监听指定的端口

3.2  在本地写程序添加一个服务,供别人来访问, 假设监听 8888 端口

3.3  编码实现了一个本地服务器程序

       作用: 管理本地的资源,只要将html页面放到指定的目录下,外界就可以访问了

3.4  安装服务器的目的: 开发好的web资源可以发布到服务器上,这样外界就可以通过浏览器访问了

 

源程序: MyServer.java

//ServerSocket 对象可以监听端口

ServerSocketserversocket = new ServerSocket(6666);

while(true){

    Socket socket = serversocket.accept(); // 等待客户端的连接请求,一旦有请求过来,就结束阻塞,返回客户端对象

   

    // 一旦有客户来访问,就另开一个新线程去提供服务, main线程继续等待下一个客户的连接

    new Thread(new MyService(socket)).start();

 

}

MyService.java

// 提供服务

InputStreamin = socket.getInputStream();

Thread.sleep(200);

int len =in.available(); // 估计此流不受阻塞能读取的字节数

byte[]buffer = new byte[len];

in.read(buffer);

Stringrequest = new String(buffer);

// 截取第一行

StringfirstLine = request.substring(0, request.indexOf("\n"));

String uriName= firstLine.split(" ")[1];

OutputStreamout = socket.getOutputStream();

// 根据需要访问的资源创建 File 对象

File file= new File("src" + uriName);

if(!file.exists()){

    out.write("对不起!您访问的资源不存在!别瞎搞!!".getBytes());

    out.close();

    return ;

}

// 从文件读, 往浏览器写

FileInputStreamfis = new FileInputStream(file);

 

buffer =new byte[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: web applications 存放所有的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 文件可以配置

    <host>

       <Contextpath=”/myWeb” docBase=”D:\myWeb” />

    </host>

    在 server.xml 文件中配置 contextPath 需要重新启动tomcat 服务器

 

1.2. 在%Tomcat目录%\conf\[enginename][引擎名 一般为Catalina]\[hostname][主机名 一般为localhost]目录下建立一个扩展名为xml的配置文件,内容如下:

<?xml version="1.0" encoding="gbk"?>

<Context docBase="D:\myWeb"/>

    文件名就是 虚拟目录

   <Context docBase=”D:\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"?>

 

<web-appxmlns="http://java.sun.com/xml/ns/javaee"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

    version="2.5">

 

    <welcome-file-list>

       <welcome-file>itcast.html</welcome-file>

    </welcome-file-list>

 

</web-app>

 

 

3. 域名解析

一个完整 url

http:\\www.sina.com:80\itcast\index.jsp

协议名   主机名         端口号 资源名 (uri)

IE 访问服务器的原理,

 在IE中输入的地址中包含域名,域名就需要被翻译成服务器的IP,才能访问到服务器

4. web应用映射的练习:

新建一个 web 应用

配置成缺省的web应用

配置首页

配置tomcat监听端口为80

在 windows 中注册主机名

新建一个web应用进行配置, 要求在ie 输入 http://www.baidu.com 即可访问页面

5. 虚拟主机

服务器允许在一个IP上配置多个主机,即虚拟主机

http://www.sina.com:80/index.html

中的 www.sina.com 起了两个作用:

一 找DNS服务器,作为域名被解析为IP

二 通过Host头告诉服务器访问的主机名

 

配置方式:

一 在 server.xml 文件中配置Host元素,需要指定name(主机名)、appBase(默认web应用存放目录)

appBase目录下所有的web应用,tomcat会自动映射虚拟路径

修改server.xml文件

<Hostname="www.sohu.com" appBase="d:\sohu" unpackWARs="true"autoDeploy="true" xmlValidation="false"xmlNamespaceAware="false"></Host>

      <Hostname="www.sina.com" appBase="d:\sina" unpackWARs="true"autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"></Host>

 

二 在D盘下放入对应的文件

三 修改C:\Windows\System32\Drivers\etc 下的 hosts文件

127.0.0.1 www.sina.com

127.0.0.1 www.sohu.com

 

四 输入http://www.sina.com:8080/bbs/进行访问

PS:实验过程中发现sina目录下不能直接 存放index.html,必须加一个bbs的中间目录。否则不能访问

 

四、http协议

Web开发的基石

1.  tcp/ip协议: 网络通信协议(连接)

ip 协议 :127.0.0.1 ip地址对应一台计算机(互联网层)

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; MSIE 7.0; Windows NT 5.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.html HTTP/1.1

请求方式共有7种,在实践中发现其中的5种没用,只需要学两种 get post

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, 11 Jul 2000 18:23:51 GMT     文件的修改时间,用于做缓存

Referer: http://www.it315.org/index.jsp   说明请求来自哪里,防盗链 (做实验)

User-Agent:Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) 说明浏览器内核

Cookie                             向服务器发送Cookie

Connection:close/Keep-Alive    说明连接状态

Date: Tue, 11Jul 2000 18:23:51 GMT    客户端计算机时间

 

六、http响应消息

内容包括一个状态行、若干消息头、以及实体内容 ,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。

 

HTTP/1.1200 OK    状态行

Server:Apache-Coyote/1.1   消息头

Content-Type:text/html;charset=GB18030

Content-Length:766

Date:Thu, 07 Jul 2011 15:40:02 GMT

 

<!DOCTYPEHTML PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN">  消息体

<html>

  <head>

    <title>My JSP 'index.jsp' startingpage</title>

  </head>

  <body>

    hello

  </body>

</html>

 

 

1. 状态行 HTTP/1.1 404 Not Found

协议版本

状态码: 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, 11 Jul 2000 18:23:51 GMT  告诉浏览器文件的修改时间

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, 11Jul 2000 18:23:51 GMT   系统时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值