精华内容
下载资源
问答
  • HTML5基础教程第2版 授课教师 职务 第11章 开发支持离线的Web应用程序 课程描述 Web应用程序的资源都存储 在Web服务器上如果无法 连接网络或者Web服务器 不在线那么传统的Web应 用程序就无法正常运行了 使用HTML5...
  • 标题 bs模式,cs模式的概念,web应用程序是什么,如何开发web项目部署到服务器 bs模式 B/S 模式即浏览器和服务器结构。 cs模式的概念 C/S即客户端/服务器。 web应用程序是什么 Web应用程序是利用浏览器和...

    标题 bs模式,cs模式的概念,web应用程序是什么,如何开发web项目部署到服务器

    bs模式

    		B/S 模式即浏览器和服务器结构。
    

    cs模式的概念

    		C/S即客户端/服务器。
    

    web应用程序是什么

    	    Web应用程序是利用浏览器和服务器在互联网上执行任务的计算机程序。
    

    如何开发web项目部署到服务器

    	先配置tomcat ,在点击下方servers在页面找到服务器右键点击运行服务器,就可以在浏览器http://localhost:8080/项目名/网页名.jsp看到你布置的内容。
    
    展开全文
  • Web应用程序开发课程总结

    千次阅读 2020-06-06 20:36:24
    Web应用程序的定义: 顾名思义,Web应用是运行在Web上的应用程序。...Web应用程序的开发方法及应用范围: Java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多

    Web应用程序的定义:

    顾名思义,Web应用是运行在Web上的应用程序。但是反过来,运行在Web上的应用程序都是Web应用吗?答案是否定的。这里所说的Web应用是指运行在网络上,以浏览器作为通用客户端的应用程序,在许多地方又被称为B/S(Browser/Server,浏览器-服务器)模式的应用。例如我们身边的教务系统,选课系统,都是基于浏览器进行访问的Web应用程序。

    Web应用程序的开发方法及应用范围:

    Java

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

    Python

    Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。目前Python典型的Web开发框架有Django、Flask、Tornado等。

    ASP

    ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境,可用来创建动态交互式网页并建立强大的web应用程序。当服务器收到对ASP文件的请求时,它会处理包含在用于构建发送给浏览器的HTML(Hyper Text Markup Language,超文本置标语言)网页文件中的服务器端脚本代码。除服务器端脚本代码外,ASP文件也可以包含文本、HTML(包括相关的客户端脚本)和com组件调用。ASP简单、易于维护 , 是小型页面应用程序的选择,在使用DCOM (Distributed Component Object Model)和 MTS(Microsoft Transaction Server)的情况下,ASP甚至可以实现中等规模的企业应用程序。

    JSP

    我们这学期采用的就是JSP做前端模板,Java作为后端的开发形式。JSP(全称Java Server Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。

    PHP

    PHP原始为Personal Home Page的缩写,已经正式更名为 “PHP: Hypertext Preprocessor”,即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法,利于学习,使用广泛,主要适用于Web开发领域。PHP 语言作为当今最热门的网站程序开发语言,它具有成本低、速度快、可移植性好、 内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。但随着互联网的不断更新换代,PHP语言也出现了不少问题。 根据动态网站要求,PHP语言作为一种语言程序,其专用性逐渐在应用过程中显现,其技术水平的优劣与否将直接影响网站的运行效率。其特点是具有公开的源代码, 在程序设计上与通用型语言,如C语言相似性较高,因此在操作过程中简单易懂,可操作性强。同时,PHP语言具有较高的数据传送处理水平和输出水平,可以广泛应用在Windows系统及各类Web服务器中。如果数据量较大,PHP语言还可以拓宽链接面,与各种数据库相连,缓解数据存储、检索及维护压力。随着技术的发展,PHP 语言搜索引擎还可以量体裁衣,实行个性化服务,如根据客户的喜好进行分类收集储存,极大提高了数据运行效率。

    学习心得

    这学期,基于一个电商网站的web应用程序。我开始了我的web应用程序开发之路,接触到了很多的新知识,当然也有对很多旧知识的复用。比如Java就是,新一次的学习,不光学习到了新的知识,对Java的理解仿佛也更加深刻了,这可能就是老师督促我们反复学习的原因所在。前端采用JSP模板,利用JSP这门脚本语言,动态的内嵌Java代码,形成了前端页面。当然,也要对CSS,HTML的运用得心应手。否则是出不来漂亮的页面的。还有Servlet,过滤器,监听,EL表达式等等,需要有自己的理解才能用的得心应手。当然,合理的开发模式也是必不可少的,我采用的就是MVC模式。将后端分成三层,合理分工,各司其职。做到程序的低耦合性,提高我们代码的健壮性。下面写一下自己的一点知识理解。

    MVC开发模式

    Java的开发模式也是历经周折,几次转变,才有了现在的三层架构。在最开始的时候,单纯的只有一个Servlet模块来作为衔接数据库和前端的程序。后来代码逻辑的复杂,使得有了JavaEE Model1版本,分成了JSP(C和V)和JavaBean(M),由JavaBean来和数据库交互再交给JSP。再后来不得不将JSP分开,分成了Servlet(C)、JSP(V)和JavaBean(M)。这样就有了最开始的MVC模型。M(Model,模型层):负责数据的操作,数据库的访问,数据的封装。也就是我们的JavaBean。V(视图层,View):负责生成视图的内容,和用户进行交互。也就是我们的JSP。C(Controller,控制器层):负责调度M和V,进行程序的控制。也即是我们的Servlet。再后来对数据封装的业务逻辑不断复杂,为了降低耦合度,我们又将JavaBean进行了拆分,分成了DAO持久层(负责进行数据库访问,也称Repository)和Service(负责数据的封装)两层,此时的JavaBean只是作为实体类来封装对象,在层与层之间产生作用。也就是我们现在使用的流水线式开发模式,各司其职,互不干扰。画了一幅图可以更好地加深理解。20200504181813

    Servlet

    浏览器内核中有通信模块,来和我们的服务器中的通信模块首先建立连接。当用户产生操作后,通信模块生成请求数据包,由浏览器发送给服务器,服务器收到后解析数据包,写入request,创建Servlet,由Servlet来读取request。经过Servlet的逻辑处理后,写入response,交由服务器通信模块来读取response,读取成功后会销毁request对象和response对象,并且生成响应数据包。发送给浏览器,浏览器解析响应数据包后,展示给用户。这就是完成的从用户产生操作到和用户产生交互的完整过程。

    其中Servlet的内部及其发展是这样的:

    • 为了保证服务器模块和开发者提供的代码判断能够正确的配合到一起,Sun公司设计了Servlet接口。
    • 其中init(ServletConfig)方法:当一个Servlet对象被创建后,我们的服务器,会马上调用该对象的init方法,实现初始化的逻辑。我们如果希望哪些逻辑希望在Servlet对象在被创建后立即执行,可以放入init方法。
    • destroy()方法:当服务器准备销毁一个Servlet对象之前,会主动调用该对象的destroy方法。我们如果希望哪些逻辑在Servlet对象销毁之前调用,可以放入destroy方法内。
    • service()方法:当服务器收到一份Servlet来响应用户的请求时,会调用该Servlet的service方法。处理用户的请求的逻辑应该放入service方法中。
    • init方法,destroy方法,service方法在一个Servlet的生命周期中分别会被调用1次,1次,多次。
    • 还有getServletInfo()方法和ServletConfig()方法目前的开发中一般不会应用到。
    • 并且,在实际开发中。我们一般仅仅只需要写service方法中的逻辑。
    • 因此,Sun公司对此重新定义了GenericServlet抽象类,该类实现了Servlet接口,和其他四个方法的空实现。我们现在的实际开发中,只需要继承GenericServlet抽象类即可。
    • 但是,浏览器访问服务器存在HTTP协议和HTTPS协议,GenericServlet是面向两种协议的协议,没有对HTTP协议的特殊支持。
    • 所以,Sun公司又开发了面向HTTP协议的HTTPServlet,继承了GenericServlet,并提供了很多处理HTTP协议请求的
    展开全文
  • Web应用程序的资源都存储在Web服务器上,如果无法连接网络,或者Web服务器不在线,那么传统的Web应用程序就无法正常运行了,使用HTML5可以开发支持离线的Web应用程序,在连接不上Web服务器时,可以切换到离线模式;...

    Web应用程序的资源都存储在Web服务器上,如果无法连接网络,或者Web服务器不在线,那么传统的Web应用程序就无法正常运行了,使用HTML5可以开发支持离线的Web应用程序,在连接不上Web服务器时,可以切换到离线模式;等到可以连接Web服务器时,再进行数据同步,把离线模式下完成的工作提交到Web服务器。

     1、HTML5离线Web应用程序概述

    1)什么是离线Web应用程序

    传统Web应用程序的工作原理。

    浏览器/服务器(B/S)网络模型

     传统Web应用程序只须要部署在Web服务器上即可,应用程序可以是HTML(HTM)文件或ASP、PHP等脚本文件。

    Web浏览器的主要功能如下。

    • 由用户向指定的Web服务器(网站)申请服务。申请服务时需要指定Web服务器的域名或IP地址以及要浏览的HTML(HTM)文件或ASP、PHP等脚本文件。如果使用ASP作为开发语言,则Web服务器只能使用Windows;如果使用PHP作为开发语言,则Web服务器可以选择使用Windows或UNIX、Linux等多种平台。
    • 从Web服务器下载申请的HTML(HTM)文件。
    • 解析并显示HTML(HTM)文件,用户可以通过Web浏览器申请指定的Web服务器。
    • Web浏览器和Web服务器使用HTTP进行通信。

    Web服务器通常需要有固定的IP地址和永久域名,其主要功能如下。

    • 存放Web应用程序。
    • 接受用户申请的服务。如果用户申请浏览ASP、PHP等脚本文件,则Web服务器会对脚本进行解析,生成对应的临时HTML(HTM)文件。
    • 如果脚本中需要访问数据库,则将SQL语句传送到数据库服务器,并接收查询结果。
    • 将HTML(HTM)文件传送到Web浏览器。

    可见,在传统Web应用程序中,Web服务器是至关重要的,如果不能连接Web服务器,就无法运行Web应用程序。但在实际应用中,经常会遇到网络状况不好的情况(特别是使用手机、iPad等移动设备上网时,这种情况就更明显),此时就无法使用Web应用程序了,这显然不够方便。

    离线Web应用程序可以在无法连接Web服务器时运行,它的工作原理如下。

    • 当访问一个支持离线Web应用程序的网站时,该网站将会告诉浏览器离线Web应用程序使用的所有文件。
    • 浏览器将Web应用程序使用的所有文件下载到本地。
    • 当支持离线Web应用程序的网站不在线时,浏览器会访问下载到本地的文件,从而运行离线Web应用程序。

    例如,在离线Web应用程序中,用户可以在不连接Web服务器的情况下,编辑一篇较长的文章,并将其保存在本地,待下次连接Web服务器时再提交文章。

    离线Web应用程序的主要组件如下图所示。

    离线Web应用程序的主要组件

     Manifest是一个文件,其中包含离线Web应用程序的部署组件描述符,也就是需要加载的所有文件列表。

    图中的数据库指的是Web SQL 数据库或IndexedDB,并不是服务器端数据库。

    2)开发离线Web应用程序需要完成的工作

    开发离线Web应用程序通常需要完成下面几项工作。

    (1)离线资源缓存。首先需要了解Web应用程序离线工作时所需的资源文件。这样就可以在在线状态时,把这些文件缓存到本地。以后,如果浏览器无法连接Web服务器,则可以自动加载这些资源文件,从而实现离线访问应用程序。在HTML5中,通过cache manifest 文件指明需要缓存的资源。

    (2)检测在线状态。在支持离线的Web应用程序中,浏览器应该知道在线或离线的状态,并做出对应的处理。

    (3)本地数据存储。在离线时,Web应用程序需要把数据存储到本地,以便以后在线时可以同步到Web服务器上。

     

    2、开发HTML5离线Web应用程序

    1)Application Cache API

    HTML5提供Application Cache API,可以实现离线资源缓存。实现离线资源缓存的好处如下。

    • 可以在离线时继续使用Web应用程序。
    • 将资源缓存到本地,可以节省带宽,缩短Web应用程序的响应时间。
    • 可以减轻Web服务器的负载。

    可以通过window.applicationCache对象访问Application Cache API。也可以使用它判断浏览器是否支持Application Cache API。如果window.applicationCache等于True,则表明当前浏览器支持Application Cache API;否则表明不支持。

    在网页中定义一个按钮,单击此按钮时,会检测浏览器是否支持Application Cache API。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Test</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
        </style>
    </head>
    
    <body>
    
        <button id="check" onclick="check();">检测浏览器是否支持Application Cache API</button>
    
        <script>
            function check() {
                if (window.applicationCache) {
                    alert("您的浏览器支持Application Cache API。");
                } else {
                    alert("您的浏览器不支持Application Cache API。");
                }
            }
        </script>
    
    </body>
    
    </html>

    2)Cache Manifest文件

    要使用Application Cache API开发离线Web应用程序,就需要创建一个Cache Manifest 文件,用于指定需要缓存的文件列表。

    一个Manifest文件的例子。

    CACHE MANIFEST // Manifest文件的开始
    version 1.0 // 定义版本,更新时只需修改版本号
    CACHE:
    01.png
    test.js
    test.css
    NETWORK:
    *
    FALLBACK
    online.html offline.html

    具体说明如下。

    • CACHE:指定需要缓存的文件。
    • NETWORK:指定只有通过联网才能浏览的文件。
    • *:代表除了在CACHE中的文件,所有其他文件都需要因特网连接。
    • FALLBACK:每行分别指定在线和离线时使用的文件。

    如果要在网页中引用manifest文件,使用缓存的文件,就需要在HTML标签中定义manifest属性。例如:

    <HTML lang="en" manifest='test.manifest'>

    即在访问网页时,按照test.manifest文件中指定的文件列表缓存。在Web服务器上也需要配置对Manifest文件的支持。例如,在Apache中需要编辑conf\mine.types,增加如下内容。

    test/cache-manifest manifest

    保存后需要重新启动Apache服务。

    使用Manifest文件实现离线资源缓存。

    假定有一个小的Web应用程序,由test.html、test.css和test.js组成。test.html的内容如下。

    <!DOCTYPE html>
    <html lang="en" manifest="test.manifest">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>当前时间</title>
        <link rel="stylesheet" href="test.css">
        <script src="test.js"></script>
    </head>
    <body>
        <p>The time is : <output id="test"></output></p>
    </body>
    </html>

    网页中引用test.css和test.js,并定义一个output元素,用于显示当前时间。在<HTML>标签中,使用manifest属性指定对应的Manifest文件。

    test.css的内容如下。

    output {
        font: 2em sans-serif;
    }

    其中定义了output元素的字体。

    test.js的内容如下。

    setTimeout(function () {
        document.getElementById('test').value = new Date();
    }, 1000);

    程序会在1秒后获取当前的系统时间并在output元素中显示。

    test.manifest的内容如下。

    CACHE MANIFEST
    test.html
    test.css
    test.js

    当用户在线访问test.html时,浏览器会缓存test.html、test.css和test.js等文件。以后当用户离线访问时,这个Web应用也可以正常使用。

    提示:测试时需要将整个Web应用上传至Apache服务器上浏览。第一次浏览test.html后,停止Apache服务,测试离线访问的效果。

    3)更新缓存

    支持离线的Web应用程序需要将Cache manifest文件中指定的文件保存在本地缓存中,此过程称为更新缓存。可以通过两种方式更新缓存,即等待浏览器自动更新缓存和调用JavaScript接口手动更新缓存。

    (1)浏览器自动更新缓存

    浏览器会在第一次访问Web应用程序时将Cache manifest文件中指定的文件保存在本地缓存中,并在Cache manifest文件的内容变化时更新缓存,需要缓存的资源文件的内容变化时,则不会更新缓存。

    (2)调用JavaScript接口手动更新缓存

    在应用程序中,可以调用window.applicationCache.update()方法手动更新缓存。除了update()方法外,applicationCache对象还提供了以下两个方法。

    • abort():取消正在进行的缓存下载。
    • swapcache():切换成本地最新的缓存环境。

    可以通过window.applicationCache.status的值了解离线应用程序缓存的状态,它可以是如下值。

    • UNCACHED:未缓存。
    • IDLE:闲置。
    • UPDATEREADY:已更新。
    • CHECKING:正在检查。
    • DOWNLOADING:正在下载。
    • OBSOLETE:失败。

    applicationCache对象定义了一组事件,可以在更新缓存的不同情况下被触发,如下表所示。

    applicationCache对象的事件
    事件 具体描述 处理函数
    checking 用户代理检查更新或者在第一次尝试下载manifest文件时被触发,本事件通常是事件队列中第一个被触发的

    applicationCache.onchecking = function () {

        // 检查manifest文件是否存在

    }

    noupdate 检测出manifest文件没有更新

    applicationCache.onnoupdate = function () {

        // 返回304表示没有更新,通知浏览器直接使用本地文件

        ......

    }

    downloading 用户代理发生更新并且正在取资源,或者第一次下载manifest文件列表中列举的资源

    applicationCache.ondownloading = function () {

        // 检查到有manifest或者manifest文件已更新就执行下载操作,即使需要缓存的文件在请求时服务器已经返回过了

        ......

    }

    progress 用户代理正在下载manifest文件中需要缓存的资源

    applicationCache.onprogress = function () {

        // 下载时周期性地触发,可以通过它获取已经下载的文件个数

        ......

    }

    cached manifest中列举的资源已经下载完成,并且已经缓存

    applicationCache.oncached = function () {

        // 下载结束后触发,表示缓存成功

        ......

    }

    updateready manifest中列举的文件已经重新下载并更新成功,接下来可以使用swapCache()方法更新到应用程序中

    applicationCache.onupdateready = function () {

        // 第二次载人,如果manifest被更新

        // 在下载结束时触发

        // 不触发

        ......

    }

    obsolete manifest的请求出现404或者410错误,应用程序缓存被取消或更新缓存的请求失败

    applicationCache.onobsolete = function () {

        // 未找到文件,返回404或者410时候触发

        ......

    }

    error

    在以下情况下被触发。

    • manifest文件没有改变,但是页面引用的manifest文件没有被正确下载。
    • 在取manifest列举的资源的过程中发生致命的错误。
    • 在更新过程中manifest文件发生变化。

    applicationCache.onerror = function () {

        // 其他和离线存储有关的错误

        ......

    }

    改进之前的离线Web应用程序,实现手动更新缓存,并对applicationCache对象的各种事件进行处理。

    <!DOCTYPE html>
    <html lang="en" manifest="test.manifest">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>当前时间</title>
        <link rel="stylesheet" href="test.css">
        <script src="test.js"></script>
    </head>
    <body>
    
        <p>The time is : <output id="test"></output></p>
        <button id="update" onclick="update();">更新缓存</button>
        <output id="msg"></output>
    
        <script>
            function update() {
                if (window.applicationCache) {
                    window.applicationCache.update();
                } else {
                    alert("您的浏览器不支持Application Cache API。");
                }
            }
            applicationCache.onchecking = function () {
                document.getElementById('msg').value = "检查manifest文件是否存在";
            };
            applicationCache.onnoupdate = function () {
                document.getElementById('msg').value = "检查出manifest文件没有更新";
            };
            applicationCache.ondownloading = function () {
                document.getElementById('msg').value = "发现更新并且正在获取资源";
            };
            applicationCache.onprogress = function () {
                document.getElementById('msg').value = "正在下载manifest文件中的需要缓存的资源";
            };
            applicationCache.oncached = function () {
                document.getElementById('msg').value = "下载结束";
            };
            applicationCache.onobsolete = function () {
                document.getElementById('msg').value = "未找到文件";
            };
            applicationCache.onerror = function () {
                document.getElementById('msg').value = "出现错误";
            };
        </script>
    </body>
    </html>

    单击“更新缓存”按钮,程序会调用window.applicationCache.update()方法手动更新缓存。因为在加载页面时已经更新了缓存,所以手动更新通常会触发onnoupdate事件,在output元素msg中显示“检测出manifest文件没有更新”。

    提示:第一次加载test.html时注意观察output元素msg的内容,其中会显示更新缓存的过程。

    4)检测在线状态

    除了将服务器的资源缓存在本地外,离线Web应用程序还应该能够在离线时将要提交给服务器的数据保存在本地,等下次连线时再将其同步到服务器。这就要求应用程序能够检测浏览器的在线状态。在HTML5中,可以通过navigator.onLine属性可以判断浏览器的在线状态,如果navigator.onLine为true,则表示在线;否则表示离线 。

    在网页中定义一个按钮,单击此按钮时,会检测浏览器的在线状态。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Test</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
        </style>
    </head>
    
    <body>
    
        <button id="check" onclick="check();">检测浏览器的在线状态</button>
    
        <script>
            function check() {
                if (navigator.onLine) {
                    alert("您的浏览器在线。");
                } else {
                    alert("您的浏览器离线。");
                }
            }
        </script>
    
    </body>
    
    </html>

    HTML5中还定义了online和offline两个与浏览器在线状态有关的事件。当在线(离线)状态切换时,将触发online(在线)/offline(离线)事件。

    对online和offline事件进行响应,当在线/离线状态切换时,弹出对话框显示浏览器的在线状态。

    <script>
        window.addEventListener('online', check);   // 离线到上线
        window.addEventListener('offline', check);  // 上线到离线
        function check() {
            if (navigator.onLine) {
                alert("您的浏览器在线。");
            } else {
                alert("您的浏览器离线。");
            }
        }
    </script>

     

    展开全文
  • Web应用程序开发原理

    2019-12-08 23:15:50
    Web应用程序开发原理 C/S架构 客户机/服务器计算模式 客户机和服务器都承担一部分计算 优点: 分担了服务器的一部分压力 ...Web应用程序的组成部分 1.网页 静态网页 客户端动态网页 服务器端动态网页 2.Web服务器...

    Web应用程序开发原理

    C/S架构

    客户机/服务器计算模式
    客户机和服务器都承担一部分计算
    优点:
    分担了服务器的一部分压力
    缺点:
    维护成本高
    

    B/S架构

    浏览器/服务器计算模式
    浏览器处理简单计算,服务器提供数据支持
    优点:
    客户端承担一部分计算,维护成本低
    缺点:
    服务器压力增大,容易崩溃
    

    Web应用程序的组成部分

    1.网页

    静态网页
    客户端动态网页
    服务器端动态网页
    

    2.Web服务器

    提供数据来源
    

    3.Web浏览器

    4.http协议

    具备固定格式的字符串
    浏览器 --》 http请求协议 --》 服务器 --》 http响应协议 --》 浏览器
    1. http请求 是浏览器发数据给服务器   request
    2. http响应 服务器回应数据给浏览器   response
    服务器只能被动接受浏览器发送的请求,服务器接受到请求之后必定会向浏览器发送响应
    

    http请求

    请求行 http方法 请求的URL http版本
    请求头
    空行
    消息体
    

    http请求示例

    GET /1010.html HTTP/1.1
    Accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
    Accept-Language: zh-Hans-CN,zh-Hans;q=0.5
    Cache-Control: no-cache
    UA-CPU: AMD64
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/5.0 (Windows NT 6.2; Win64; x64; Trident/7.0; rv:11.0) like Gecko
    Host: localhost:8088
    Connection: Keep-Alive
    Cookie: Idea-d1852ee0=19930357-c834-4171-848b-45b0d6568373
    

    http响应

    状态行 http版本 响应码/状态码 响应描述/状态描述
    响应头
    空行
    消息体
    

    例子

    一个简单的服务器
    /**
    * @Title: MyServer.java
    * @Package com.lovo.myserver.launch
    * @Description: TODO(用一句话描述该文件做什么)
    * @author Administrator
    * @date 2019年12月6日
    * @version V1.0
    */
    package com.lovo.myserver.launch;
    
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    /**
      * <p>Title: MyServer</p>
      * <p>Description: </p>
      * @author Administrator
      * @date 2019年12月6日
    */
    public class MyServer {
    	public static void main(String[] args) {
    		InputStream inputStream = null;
    		OutputStream outputStream = null;
    		try {
    			//创建ServerSocket 对象,开启8088端口,监听发送过来的请求
    			ServerSocket  serverSocket = new ServerSocket(8088);
    			System.out.println("启动服务器......");
    			//让服务器循环监听请求
    			while (true) {
    				//接收请求过来的数据
    				Socket socket =  serverSocket.accept();
    				//获取输入流
    				inputStream = socket.getInputStream();
    				//构建一个byte数组,用来装从输入流里面读取出来的数据
    				byte[] data = new byte[1024];
    				//从输入流中读取数据放入data数组里面
    				inputStream.read(data);
    				//把byte数组中的二进制数据转换成string类型
    				String httpInfo = new String(data);
    				System.out.println(httpInfo);
    				//获取输出流向浏览器响应数据
    				outputStream = socket.getOutputStream();
    				//响应普通文本
    				//outputStream.write("<h1>请求处理完毕,响应数据</h1>".getBytes());
    				//outputStream.flush();
    				
    				//响应二进制数据(图片、视频、音频)
    				FileInputStream imgInput = new FileInputStream("img/main.jpg");
    				byte[] by = new byte[1024];
    				int len = 0;
    				while ((len = imgInput.read(by)) != -1) {
    					outputStream.write(by, 0, len);
    					outputStream.flush();
    				}
    				if (imgInput != null) {
    					imgInput.close();
    				}
    				if (outputStream != null) {
    					outputStream.close();
    				}
    				if (inputStream != null) {
    					inputStream.close();
    				}
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    
    展开全文
  • Web应用程序开发

    2012-10-15 19:54:46
    应用程序:指允许用户执行特定任务软件程序,主要分为桌面应用程序和Web应用程序两种类型。 桌面应用程序(Desktop Application):一般是指采用客户机/服务器结构(Client/Server)应用程序。 C/S模式将应用...
  • 目前基于Java的Web应用程序的开发主要分4层:表示层、业务层、持久层和DB层。 (1)表示层 表示层采用的视图技术主要有: l JSP + Taglibs(如JSTL或一些框架如WebWork2的标记) l 模板框架(如Veloctiy、...
  • 目前基于Java的Web应用程序的开发主要分4层:表示层、业务层、持久层和DB层。 (1)表示层 表示层采用的视图技术主要有: l JSP + Taglibs(如JSTL或一些框架如WebWork2的标记) l 模板框架(如Veloctiy、...
  • Java Web应用程序开发

    千次阅读 2012-10-16 08:30:38
    Java Web应用程序开发 用Tomcat构建WEB站点 WEB应用相关知识 Web应用程序简介 应用程序:指允许用户执行特定任务软件程序,主要分为桌面应用程序和Web应用程序两种类型。 桌面应用程序(Desktop ...
  • ApexApps.dev是Apex Apps(由Aaron Gazzola拥有和运营的Web应用程序开发业务)产品组合,博客和信息网站。 该项目是通过引导。 可用脚本 在项目目录中,可以运行: npm start 在开发模式下运行应用程序。 打开...
  • MySQL和JSP的Web应用程序 MySQL 和 JSP Web 应用程序JSP 开发人员构建 Web 应用程序时遇到需要强大数据库连接特殊问题。MySQL 和 JSP Web 应用程序解决了构建数据驱动应用程序 JavaServer 页面上发展...
  • java WEB 应用程序开发

    2012-10-15 21:26:41
    应用程序:指允许用户执行特定任务软件程序,主要分为桌面应用程序和Web应用程序两种类型。 桌面应用程序(Desktop Application):一般是指采用客户机/服务器结构(Client/Server)应用程序。 C/S模式将应用...
  • Web服务的概念及其创建 15.1 循序渐进学理论 15.1.1 Web应用程序介绍 1Web的概念 用户 WWW浏览器 WWW服务器 数据库服务器 DB 图15-1 Web的三层C/S计算模式 2Web程序的发展 1HTML语言阶段 2Script语
  • Web应用程序是工作在B/S模式下,通过浏览器访问驻留在Web服务器上多个页面集合。可以进一步来定义Web应用程序,即能够在一个Web应用服务器虚拟目录上运行所有文件、页面、操作、模块或者能被执行代码被...
  • Web应用程序开发方法研究

    千次阅读 2012-09-07 15:25:16
    Web应用程序开发方法研究   摘要:如今已进入了web2.0高速发展网络时代,各种基于互联网的Web...总结了Web应用程序开发的一般步骤,提出了将软件复用技术,经典设计模式、开源框架合理应用于程序开发以达到高效开
  • 本书提供了使用HTML5,CSS3和JavaScript构建移动网络体验指南。 这是一种模式和实践指南。
  • web应用程序开发原理

    2016-09-21 19:53:00
    其中,1具有部署方面优势,但在一台计算机中进行全部处理,应用程序难于维护,难于集成其他平台上其他平台上其他应用程序 ;2优点在于信息共享性好,网络信息传输量小,缺点是不易维护,用户操作界面...
  • 应用程序分层开发模式----MVC1. 了解MVC模式2. MVC和三层架构关系 1. 了解MVC模式 Spring Boot开发WEB 应用程序主要使用MVC模式。MVC是Model(模型)、View(视图)、Controller(控制器)简写。 1 Model:是...
  • java Web的开发模式

    2017-06-13 16:04:58
    两种web应用程序的开发模式分别为: 1、JSP+JavaBean模式; 2、Servlet+JSP+JavaBean模式; 一、JSP+JavaBean开发模式 1、JSP主要负责用户的请求和显示数据。  JavaBean用于封装业务数据。 2、该开发模式将...
  • JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。JavaServer Faces 还引起了广大 Java/Web 开发人员的兴趣。...
  • JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。JavaServer Faces 还引起了广大 Java/Web 开发人员的兴趣。...
  • Convertigo是用于移动和Web应用程序开发以及后端开源低代码平台。 Convertigo社区版是一个开源全栈低码无码平台。 该平台可在几天内用于构建和运行复杂跨平台企业移动和Web应用程序。 Convertigo平台由几个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,693
精华内容 3,077
关键字:

web应用程序的开发模式