• 【转载】Web应用工作原理


    问题描述:

              Web应用工作原理

     

    问题解决:

             参考资料:http://blog.csdn.net/lcore/article/details/8964642

     

    前言

                      什么是web应用程序?web应用程序又是如何进行工作的呢?什么是动态网页技术?又有

                 哪些动态网页技术呢?这次这篇文章需要探求总结的。

    Web应用

                      我们知道应用程序有两种模式,C/S模式和B/S模式。C/S模式是客户端/服务器模式,这类

                应用程序一般独立的运行。B/S模式是浏览器/服务器模型,需要借助浏览器来运行。

                      web应用程序一般就是B/S模式的,所谓的web应用程序就是基于HTTP等协议,通过web访问

                应用程序。

                       通过对两者的对比简单的谈谈B/S的优缺点:

                        B/S优势:

                                1、开发成本低

                                2、管理和维护相对简单

                                3、产品升级便利(不需要客户端的维护)

                                4、用户使用方便,容易上手。

                                5、出现故障的概率较C/S小

                        B/S不足:

                                1、通过web进行访问安全性不足

                                2、客户端不能随心变化

                                3、浏览器产品过多,网页开发的时候兼容性问题较为严重。

    Web应用工作原理

                             了解了Web应用程序的相关概念之后我们来看看web应用程序的工作原理

                            通过上图可以服务器通过HTTP协议获取客户端请求信息,并向客户端返回处理之后

                    的响应。

    HTTP协议通信原理

                            HTTP协议是位于OSI七层网络模型中的最上层。它是一种为操作兄和应用程序提供

                     访问网络接口的通信协议。

                            在web应用中,浏览器端发送请求数据包,服务器端返回响应数据包来实现web应用

                     程序的工作。当服务器向客户端返回响应后,整个连接就会关闭,是一种无状态的连接。

    动态网页技术

                               在上述web应用工作的原理中,我们通过HTTP协议访问一个在服务端存在的文件,服务

                        器可以找到该文件并将其内容封装到HTTP请求体重,以消息体的形式返回给客户端。不过

                        这种方式无法和后台数据库进行交互,我们只能访问静态的页面。

                                为了解决这种办法,动态网页技术也就诞生了。其解决的办法就是为web服务器配置

                        一个辅助的应用程序服务器,完成用户请求的动态生成。

                                最早期的动态网页技术就是CGI(common gateway interface)

                         CGI可以使用不同的程序语言来生成动态的文件,但是CGI程序会为每一个请求开启一个进程

                        对于服务器的消耗比较的打。

                               解决这一问题可以使用多线程的方式,为每一个请求开启一个线程,减少了服务器端的资源

                        消耗。Java方面解决这个问题就产生了Servlet技术。

    Servlet(web容器管理)

                              servlet是与平台无关的服务器端组件,他是运行在web容器中例如Tomcat,servlet和客户端的

                         通信采用的是“请求/响应”模式,Servlet组件主要负责请求和响应,例如用户登录:接受浏览器发送

                         的登录信息,数据库后台的验证。之后以响应的形式返回处理的结果。

                              Servlet容器,这里以Tomcat为例,Tomcat处理servlet和客户端的通信,调用serlvet的方法。

                         之后Tomcat容器和web服务器之间进行数据交互,由web服务器将结果返回给客户端。

    Servlet规范和Servlet容器

                           servlet容器负责管理和运行servlet,从起初的设计上可以知道他是支持多线程的。

                       负责管理servlet的生命周期。并且可以和web服务器进行通信。使用servlet容器能够

                       提供一个较好的安全性,隐私数据的访问可以得到限制。有了servlet容器的支持后,coder

                       能够将更多的精力放在对业务逻辑的处理上。

                           需要说明的是现阶段有着各式的servlet容器,这就产生了一个规范性的问题,只有对servlet

                      容易有一个规范,web系统才能在不同的web容器上运行。

                          常用的servlet容器有Tomcat、JBoss、webLogic等,后续的学习中选用Tomcat。

    Servlet容器在网络中的位置

                           以Tomcat为例,Tomcat为每个对servlet的请求都开启一个线程,tomcat同时负责管理

                       servlet的生命周期和他的运行。

                           在处理一个请求的时候,tomcat负责将请求以对象的形式(Request)传递给servlet,当servlet

                      处理请求后(Servlet运行结束),由tomcat刷新响应对象(Response),并将该对象返回给web

                      服务器,由web服务器返回给客户端。

    简单Java Web应用程序的组成

                             说了那么多那么一个简单的java web应用程序有哪些组成部分呢?(简单应用程序)

                             我们在Eclipse下简单的建立一个web功能来看看吧。

      /WEB-INF目录:Web应用应用部署目录,浏览客户是看不到该目录下的文件的,该目录

                                                下的文件专供Web服务器专用。
    web.xml:部署描述文件,/WEB-INF目录下最重要的文件,它描述了程序的部署、配置信息,

                                         为Web服务器所使用。
    /classes:Web应用的类文件存放处,如Web应用中的Servlet类文件、一些实用java类如

                                        javaBeans的类文件等。该文件夹是在build目录下的,发布之后可以看见。
    /lib:部署java类库文件存放处,Web应用使用的一些其他库文件存放处。
    *.jsp:JSP文件,通常存放在Web应用程序的根目录上,有时为便于管理也可以存放在根目录

                                   下的其他目录下,如根目录下的jsp目录中。
    *.html:HTML文件,通常存放在Web应用程序的根目录上,有时为了便于管理也可以存放在

                                     根目录下的其他目录下。
    /src:源代码目录。

  • 相关阅读:
    配置python库源为清华源
    ubuntu下安装使用jupyter
    《在下雪天气里和女朋友在一起就会有种很特别的氛围,我很喜欢》梗图
    ubuntu安装cuda、cudnn和nvidia-docker
    jreg视频内容整理
    【北邮人论坛帖子备份】给考公同学的建议。如今我流的泪都是当年脑子进的水
    拉取docker容器后启动容器的脚本
    多个git账户ssh密钥配置
    【北邮人论坛帖子备份】【FAQ】给今年国企求职学弟学妹的一点建议
    nui-app记录不明白的属性
  • 原文地址:https://www.cnblogs.com/luosongchao/p/3465481.html
Copyright © 2020-2023  润新知