WEB的发展历程、Tomcat服务器、与HTTP协议

1 web的发展历程

C/S和B/S都是软件架构的两种不同的表现形式:

C/S架构:Client/Server:客户端和服务端的架构.

        该软件运行在电脑桌面:比如,QQ,FeiQ,POS机/火车站买票.

        开发语言:Delphi,VB,VC++,C#,JAVA awt ,swing等.

        特点:一般的,服务端仅仅是安装一个数据库和数据存储,所有程序的代码(功能/界面)都编写在客户端软件中,(把所有业务逻辑都写在客户端,界面渲染也在客户端).

        优点:直观,用户体验好,安全性高等.

        缺点:每次升级,需要重新安装,移植性较低,开发和维护成本较高.
B/S架构:Browser/Server:浏览器和服务端的架构(通过浏览器访问的应用).

        该软件是通过浏览器访问.比如门户网站,管理系统等.

        其实B/S是特殊的C/S,因为浏览器是一个特殊的客户端.

        开发语言:JSP,PHP,ASP等.

        特点:在服务端编写代码,所有的业务逻辑都有服务端完成.客户端只负责界面的渲染.

        优点:可移植性很高,开发和维护较好.

        缺点:用户体验不够好,界面不够丰富,安全性很低.
    瘦客户端:传统的B/S:服务端:负责业务逻辑.客户端:负责界面渲染.

    富客户端:超级BS=CS+BS;界面华丽.

            服务端:负责业务逻辑.

            客户端:负责界面渲染+少量的业务逻辑.

    开发技术:Ext.js,Flash,EasyUI,JavaFX等.

2 服务器

服务器分类:


        软件服务器:其实就是一个软件,提供了B/S应用运行环境。

        硬件服务器:其实就是一台电脑,该电脑安装了软件服务器。

JavaWeb的软件服务器的分类:

        1):http服务器,用于运行静态的页面.

        2):Web服务器,实现了JavaEE的部分功能(比如Servlet/JSP),没有实现javaEE中的EJB规范.

            Tomcat,Jetty等.

        3):应用服务器,实现了JavaEE全部的规范,支持EJBTomcatEE,GlassFish,JBoss,Weblogic(12306),WebSphere

Servlet容器为JavaEeb应用提供运行环境,它负责管理ServletJSP的生命周期,以及管理他们的共享数据.

    Servlet容器也称为JavaWeb容器,或者Servlet/JSP容器--->Tomcat

Tomcat服务器(7.0.64)的安装使用:


    (bin目录):Tomcat的工具,启动,关闭等.

    (conf目录):装了 Tomcat的配置文件.

    (lib目录):Tomcat的核心包和依赖的jar包.

    logs目录:装了日志文件.

    temp目录:临时目录,上传文件的临时文件.

    webapps目录:默认情况下的部署项目的路径.

    work目录:工作目录,装JSP翻译成java文件的代码

1.安装目录不能使用中文的,并且安装路径不允许出现空格,

2.启动Tomcat服务器:Tomcat根/bin/startup.bat

    直到控制台没有打印重大的错误,Exception,没有一闪而过,就表示启动成功.Tomcat的默认端口是8080;

访问:打开浏览器:

    http://服务器所在的主机的IP:服务器的端口号,/资源名字

    http://服务器所在主机的名字:服务器的端口号/资源名字

若服务器在本机:

    http://本机的IP:服务器的端口号/资源名字

    http://127.0.0.1:服务器的端口号/资源名字

    http://localhost:服务器的端口号/资源名字

Tomcat的常见错误:


    1):没有成功启动Tomcat,就开始访问.-->无法显示此网页

    2):出现404的错误提示,HTTP Status 404

        当前访问的资源地址不存在的时候,就报404错误.

        此时的问题是,是我们自己造成的,把资源的名字写错了.

    3):Tomcat成功启动之后,再去启动当前的Tomcat.

        Tomcat的端口已经被占用,端口冲突.

    4):不能乱改动Tomcat中配置文件的结构.

        查看日志文件的,找到错误的的位置,错误原因-->再修改.

    5):在XML配置文件中使用中文,此时XML文件必须使用UTF-8的编码.

        XML文件:文件内容的编码和文件本身的编码要相同,都为UTF-8.

Tomcat的常见配置


    Tomcat的默认端口是8080;

    但是,HTTP协议的默认端口是80,而我们在访问的时候,是遵循http协议的,

    如果是80端口:http://localhost:80/index.jsp

                http://localhost/index.jsp

    修改Tomcat根/conf/server.xml文件中,默认第71行.

    每次配置完之后都要重新启动Tomcat

Tomcat的安装有两种版本:


    1):减压版,减压之后,配置java_home可用.

    2):安装版,在电脑上安装一个服务器.

        本身没有差别,但是设置在开机的时候,自动启动Tomcat.

把Tomcat作为服务器安装在Windows的服务器列表中:

使用Tomcat/bin/service.bat:

    安装服务:service install

    卸载服务:service remove

安全配置:账号跟密码.

<role rolename="manager-gui"/>

<role rolename="admin-gui"/>

<user roles="manager-gui,admin-gui" password="123456" username="admin"/>

JavaWeb项目结构:

                appDemo(web应用根目录)  根目录下的文件外界可以直接访问

                --html,jsp,css,javascript文件等.

                --WEB-INF目录 该目录下的文件外界无法直接访问,由web服务器负责调用.

                        -classes目录-(java类编译之后的class文件)
                        -lib目录-(java类运行所依赖的jar包)
                        -web.xml文件-(web应用的配置文件)

            搭建项目的时候记得改变项目的输出目录:也就是改变classpath的路径,从默认的bin目录改变为webapp/WEB-INF/class中:

            以后把项目给别人,只给webapp目录.

添加Tomcat插件


    1).把插件jar包拷贝到D:\Eclipes\Eclipes4jee\eclipse\dropins
    2).记得在eclipse中的preferences中设置Tomcat的添加路径为D:\JAVA\Tomcat\apache-tomcat-7.0.57
    3).重新启动Tomcat服务器.

部署web项目:


    方法1:直接把项目的web跟路径,拷贝到Tomcat跟/webapps目录中.

         该方式可行,而且是MyEclipse工具的部署方式.

    缺点:

        1:不支持热部署,(代码变动之后,需要重新部署,重新部署的成本很大).

        2:把所有的项目都部署在该路径,启动越来越慢,若其中一个项目有问题,Tomcat是启动不了.

    方法2:告诉Tomcat服务器,从指定的路径去部署项目.

        1):找到Tomcat根/conf/server.xml文件.

        2):在<Host>元素之间,编写<Context>元素,具体代码如下:

            <Context docBase="D:\Java EE\Cookie-Session\webapp" path=""/>

        3):访问当前项目的路径:http://ip:port/contextPath/资源名称

            注意:多个<Context>元素的path不能相同.

虚拟主机配置:


    需求:有两个公司的web应用都发布在同一个Tomcat服务器上,可以为每家公司创建一个虚拟主机.

    www.daidu.com            www.google.com

    修改Windows系统中的C:/Windows/system32/driver/etc/hosts.

    配置二级域名,会使用到.

3 HTTP协议

特点:无状态,默认端口是80 https:

    WEB浏览器与web服务器之间的一问一答的交互过程必须遵循一定的规则,就是HTTP协议.

    HTTP是hypertext transfer Protocol(超文本传输协议)的简写,它是TCP/IP协议上的一个应用层协议,用于定义WEB浏览器与web服务器之间交换数据的过程以及数据本身的格式.

HTTP协议到底约束了什么:

    1.约束了浏览器以何种格式向服务端发生数据:

    2.约束了服务器应该以何种格式来接受客户端发生的数据:

    3.约束了服务器应以何种格式来反馈数据给浏览器;

    4.约束了浏览器应以何种格式来接收服务器反馈的数据.

HTTP1.0规范 跟 HTTP1.1规范

HTTP1.0规范:若请求N个资源,得建立N次连接,发送N次请求,接收N次响应,关闭N次连接,

            每次请求之间都要建立单独的连接,请求,响应,响应完关闭该次连接:
       缺点:每请求一个资源都要单独的建立新的连接,请求完并关闭连接.

    解决方案:能在一次连接之间,多次请求,多次响应,响应完成之后再关闭连接.

HTTP1.1规范:能在一次连接之间,多次请求,多次响应,响应完之后再关闭连接.

       特点:  在一个TCP连接上可以传送多个HTTP请求和响应,多个请求和响应过程可以重叠进行,增加了更多的请求头和响应头

       浏览器给服务器发送数据:一次请求

       服务器给浏览器反馈数据:一次响应

HTTP协议的版本:HTTP/1.0,HTTP1.1,HTTPS2.0

HTTP请求概述

请求信息:

    包含三大部分:请求行,请求头,请求实体.

    请求行:位于请求信息的第一行,格式:请求方式get/post 资源路径 HTTP版本号

          get请求方式:a,若请求服务器上的某个资源,没有指定请求方式,则默认为GET方式

                     b,可以通过GET方式向服务器传递数据,具体方式就是在URL请求路径加上?多个参数分割

          post请求方式:a,若使用post请求方式传递数据,可以借助form表单的method="post"

                     b,数据安全,且长度没有限制

    请求头:<1>,Accept:浏览器可接受的MIME类型(内容类型)(Tomcat安装目录/conf/web,xml中查找)

          <2>,Accept-Charset:告知服务器,客户端支持哪种字符集

          <3>,Accept-Encoding:浏览器能够进行解码的数据编码方式

          <4>,Accept-Language:浏览器支持的语言.

          <5>,Referer:当前页面有哪个页面访问过来的.

          <6>,Content-Type:通知服务器请求正文的MIME类型.

          <7>,Content-Length:请求正文的长度

          <8>,If-Modified-Since:通知服务器,缓存的文件的最后修改时间.

          <9>User-Agent:通知服务器浏览器类型.

          <10>,Connection:表示是否需要持久连接.如果服务器看到这里的值为"keep-Alive",或者看到的请求使用的是HTTP 1.1(HTTP1.1默认进行持久连接)

    请求实体:从第一个空行开始,后面的都是正文.(可以没有),只有POST请求才有请求实体

响应信息:

包含三大部分:

        响应行:位于响应信息的第一行.格式:HTTP版本号 状态码:200(OK) 404(资源名写错了) 500(服务端后台的java代码写错了)

        响应头:Server:告诉客户端服务器使用的容器类型

              Content-Type:当前响应的MIME格式:text/html--->网页文本

              Transfer-Encoding:是否要加密

              Date:响应的时间,什么时候响应的.

        响应实体

GET和POST的区别(面试容易考到):

Get方式请求:

        1):请求的数据全部在浏览器地址栏(很不安全).

        2):观察请求信息:请求信息会全部存储到请求行中.

Post方式请求:

        1):请求的数据不会出现在浏览器的地址栏(比较安全)

        2):观察请求信息:请求信息会全部存储到请求实体中

参数连接:资源?参数名=参数值&参数名=参数值&....

        资源后第一个参数使用?连接,其他使用&连接.

GET和POST请求的区别:

        1):GET的请求数据在地址栏,而POST不会,POST比GET跟安全.

        2):POST请求的参数存放在请求实体中,而get存放于请求行中.

        3):GET方式请求的数据不能超过2k,而POST没有上限.

           比如文件上传时,必须使用POST方式.

        4):GET可以缓存,而POST没有缓存

    查询的时候使用GET其他时候使用POST.表单全部使用post提交,

    哪些时候是GET呢?

        1:直接在浏览器地址栏敲回车.

        2:表单中,method=get.

        3:超链接.

    只有表单中使用method=post,才是POST方式.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值