Tomcat(day08)

本章节的思维导图

标红部分为重点部分

1)常见软件系统体系结构    B/S和C/S

* C/S结构即客户端/服务器(Client/Server),例如:QQ
* 需要编写服务器端程序,以及客户端程序,例如我们安装的就是QQ的客户端程序;
* 缺点:软件更新时需要同时更新客户端和服务器两端,比较麻烦
* 优点:安全性比较好

* B/S结构即浏览器/服务器(Browser/Server);
* 优点:只需要编写服务器端程序
* 缺点:安全性较差

2)WEB资源(了解)

    html:静态资源    - 浏览器可以看得懂

    JSP/Servlet:动态资源
            -  需要先转成html,再给浏览器看。(好处:可以有变量)
            当然,除了JavaWeb程序,还有其他Web程序,例如:ASP、PHP等。

图片解析静态资源和动态资源区别

    访问web资源
            -  打开浏览器,输入url
            协议名://域名:端口/路径       
                        例如:http://www.baidu.com:80/index.html

3)web服务器(了解)

        web服务器的作用是接收客户端的请求,给客户端作出响应。

        对于JavaWeb程序而言,还需要有JSP/Servlet容器,JSP/Servlet容器的基本功能是把动态资源转换成静态资源,当然JSP/Servlet容器不只这些功能,我们会在后面一点一点学习。

        我们需要使用的是Web服务器和JSP/Servlet容器,通常这两者会集于一身。下面是JavaWeb服务器:

1)Tomcat(Apache):当前应用最广的JavaWeb服务器;JavaWeb只是JavaEE的一部分
2)JBoss(Redhat红帽):支持JavaEE,应用比较广;
3)GlassFish(Orcale):Orcale开发JavaWeb服务器,应用不是很广
4)Weblogic(Orcale):要钱的!支持JavaEE
......

4)Tomcat(有重点)

    Tomcat安装在C:\Program Files\Apache Software Foundation\Tomcat 9.0

    启动Tomcat前,我们必须要配置环境变量

JAVA_HOME:必修先配置 JAVA_HOME,因为 Tomcat启动需要使用jdk        **** D:\develop\Java\jdk1.8.0_261\bin
CATALINA_HOME:Tomcat的环境变量可以选择性配置(必须用该命名,否则无法使用) - 但未配置环境变量的Tomcat无法通过startup.bat启动Tomcat

    修改Tomcat的端口号
            -  修改Tomcat下conf目录下的server.xml文件中的port

    Tomcat的目录结构

1)bin:该目录下存放的是二进制可执行文件,执行Tomcat可以通过Tomcat9w.exe运行
点击startup.bat也能运行,但是这种运行必须提前配置好JAVA_HOME和CATALINA_HOME的环境变量
配置好后,也可以直接通过Dos命名直接输入startup.bat运行

2) conf:这是一个非常非常重要的目录,这个首录下有四个重要的文件
        a: server.xml 配置整个服务器信息。例如可以修改端口号,添加虚拟主机等
        b: tomcat-users.xml存储tomcat用户的文件,包括用户名、密码以及相关信息。
        c:web.xml部署描述符文件,这个文件中注册了很多MIME类,即文档类型
        d: context.xml对所以应用的统一配置,通常我们不会去配置它

3) lib:Tomcat自身要用的一大堆的jia包,要导入jar包,之间放到该目录下即可

4) logs:这里面存储的是一些日志文件,这些日志文件是用来记录tomcat的运行信息

5) temp:Tomcat生成临时文件的地方,停止Tomcat后删除!

6) webapps:这目录是非常非常非常重要的地方,用来存储我们写的所有web程序
其中ROOT是一个特殊的项目,在地址栏中没有给出项目,默认为ROOT项目

7) work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!
Tomcat通过JSP生成的java文件,由j编译ava文件生成的class文件,都存放在这个目录下
        LICENSE:许可证
        NOTICE:说明文件

5)Web应用(重点)

    静态网站:
            **  在webapps目录下创建一个目录(命名必须不包括中文和空格),这个目录称之为项目目录
            **  在项目目录下创建一个html文件 day08下的index.html

    动态网站:
            **  在webapps目录下创建一个目录
            **  在项目目录下创建如下内容:
                ->  WEB - INF 目录(* 静态或动态页面在该目录下,外界无法访问)
                        在该目录下创建web.xml文件
                        lib目录    ——  放jar包
                        classes目录    ——  放.class文件
                -> 创建静态或动态页面(可以新建目录封装,访问时加上路径即可)

    配置外部应用
            ** 原本我们的项目放到webapps下,现在我放到外面,希望Tomcat也可以找到它!
            也可以把应用放到Tomcat之外,这就是外部应用了。例如我们把上面写的hello应用从webapps目录中剪切到C盘下,即C:/hello。现在hello这个web应用已经不在Tomcat中了,这时我们需要在tomcat中配置外部应用的位置。

配置的方式有两种:
1)conf/server.xml:找到<Host>元素,在其中添加<Context>元素
 例如:<Context path="hello44" docBase="F:/hello4"/>
 访问:http://localhost:8080/hello44/
        **  path:指定当前应用的名称
        **  docBase:指定应用的物理位置

2)conf/Catalina/localhost:创建XXX.xml文件,在文件中写入<Context docBase="项目的实际路径"/>
 访问:http://localhost:8080/XXX/

    映射虚拟主机(了解)
        *  修改端口号为80

        *  在本机上可以解析域名为127.0.0.1,这需要修改C:\WINDOWS\system32\drivers\etc\hosts文件
            添加http://www.baidu.com和127.0.0.1的绑定关系
                在文件后空一行写    127.0.0.1 www.baidu.com

        *  在serve.xml文件中添加一个<Host>主机代码
            - 代码, 代码中的项目名为webapps(里面包含ROOT目录,ROOT下包含WEB-INF目录)

6)Server中元素的介绍(了解)

    Service:服务
    Connector:连接
    Engine:引擎
    Host:主机
    Context:上下文

7)HTTP协议(重点)

    协议:协议的甲乙双方,就是客户端(浏览器)和服务器端!
            理解成双方通信的格式!

    *  HTTP概述

        HTTP(hypertext  transport  protocol),即超文本传输协议。这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。
        HTTP 就是一个通信规则,通信规则规定了客户端发送给服务器端的内容格式,也规定了服务器发送给客户端的内容格式。其实我们要学习的就是这个两个格式!客户端发送给服务器的格式叫“请求协议”;服务器发送给客户端的格式叫“响应协议”。

    *  请求协议

1. Accept:告诉服务器,浏览器支持哪些类型            2. Accept—Language:支持的语言        3. User—Agent:浏览器的所有信息        4. Accpet—Encoding:支持的编码        5. Host:请求的主机        6. Connection:连接一小会

请求行
多个请求头信息 的格式为      头名称:头值。
空行
请求体(GET请求没有请求体)

正文(体),表单是一大堆内容,而发送给服务器的只有一行字符串!            ***** Content-Type(上传的时候,进行修改):appliction/x-www-form-urlencoded --> 表示表单中的数据自动使用url编码
HTTP协议会把汉字转成UTF-8编码

    *  响应协议

状态码以2开头全算成功,以3开头全要转接,以4开头全都是客户端的错误,以5开头都是服务器的错误。

格式:
    响应行(协议/版本    状态码    状态码的解析)
    响应头(key/value格式)
    空行
    响应正文

*  HTTP/1.1  200  OK:响应协议为HTTP1.1,状态码为200,表示请求成功,OK是对状态码的解释。
*  Server:Apache-Coyote/1.1:服务器的版本信息;
*  Content-Type:text/html;charset=UTF-8;响应体使用的编码为UTF-8;
*  Content-Length:724;响应体为724字节。
*  Set-Cookie:JSESSIONID=C97E2B4C55553EAB......响应给客户端的Cookie
*  Data:Web,.....GMT;  响应的时间


个别请求头介绍:

Referer: http://localhost:8080/hello/index.jsp:请求来自哪个页面,例如你在百度上点击链接到了这里,那么Referer:http://www.baidu.com ;如果你是在浏览器的地址栏中直接输入的地址,那么就没有Referer这个请求头了;

Content-Type: application/x-www-form-urlencoded:表单的数据类型,说明会使用url,格式编码数据﹔url.,编码的数据都是以“%”为前缀,后面跟随两位的16进制,例如“传智”这两个字使用UTF-8的url编码用为“%E4%BC%A0%E6%99%BA";

Content-Length:13:请求体的长度,这里表示13个字节。

keyword=hello:请求体内容! hello是在表单中输入的数据,keyword是表单字段的名字。

*  响应码

        响应头对浏览器来说很重要,它们说明了响应的真正含义。

        200:请求成功,浏览器会把响应体内容(通常是html〉显示在浏览器中; 

        500:请求资源找到了,但服务器内部出现了问题

        404:请求的资源没有找到,说明客户端错误的请求了不存在的资源;

        302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的uRL地址;

重定向原理图

        304:当用户第一次请求index.html时,服务器会添加一个名为 Last-Modified响应头,这个头说明了index.html的最后修改时间,浏览器会把index.html内容,以及最后响应时间缓存下来。当用户第二次请求index.html时,在请求中包含一个名为lf-Modified-Since 请求头,它的值就是第一次请求时服务器通过Last-Modified响应头发送给浏览器的值,即index.html最后的修改时间,lf-Modified-Since 请求头就是在告诉服务器,我这里浏览器缓存的index.html最后修改时间是这个,您看看现在的index.html最后修改时间是不是这个,如果还是,那么您就不用再响应这个index.html内容了,我会把缓存的内容直接显示出来。而服务器端会获取.Jf-Modified-Since值,与index.html的当前最后修改时间比对,如果相同,服务器会发响应码304,表示index.html与浏览器上次缓存的相同,无需再次发送,浏览器可以显示自己的缓存页面,如果比对不同,那么说明index.html 已经做了修改,服务器会响应200。

304原理图

推荐阅读更多精彩内容

  • java动态网页技术 servlet 本质就是一段Java程序 在Servlet中最大的问题是,HTML输出和Ja...
    Liang_JC阅读 80评论 0 0
  • Tomcat来源 我们为什么能通过Web服务器映射的URL访问资源?肯定需要写程序处理请求,主要3个过程: 接收请...
    某翁阅读 25评论 0 0
  • ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓WEB↓↓↓↓...
    _Levi__阅读 385评论 1 0
  • 本文内容Web概述与Tomcat的安装及注意事项tomcat的目录结构与项目发布Eclipse集成Tomcat发布...
    Vincilovfang阅读 287评论 0 0
  • 一、环境介绍 基于LVS(linux virtual server)linux虚拟服务器的http集群搭建环境:使...
    花生花二三说阅读 1,379评论 0 14