精华内容
下载资源
问答
  • 动态网页的基本原理
    2021-08-31 22:03:25

    目录

    1.web的核心概念

    web的应用架构是由英国人Tim Berners-Lee在1989年提出的。1990年11月,由他编写的第一个图形化Web服务器开始运行。

    web是WWW(World Wide Web)的简称,基本原理是:请求(客户端)与响应(服务器端)原理,由遍布在互联网中的Web服务器和安装了Web浏览器的计算机组成

    客户端发出请求的方式:地址栏请求、超链接请求、表单请求

    Web是一种典型的分布式应用架构,从技术层面上看,Web架构的精华有三处

    ①使用HTML(Hypertext Markup Language)实现信息文档的表示

    ②使用URL(Uniform Resource Locator)实现全球信息的精确定位

    ③使用HTTP(HyperText Transfer Protocol)实现分布式的信息传输

    2.常用的WEB服务器

    Windows平台下最常用的服务器是微软的IIS(Internet Information Server)

    Unix和LInux平台下常用的有Apache(最流行)、Tomcat、IBMWebSphere、Nginx、Lighttpd

    3.静态网站和动态网站

    静态网站:一堆.html文件,内容不可变化,大家看到的都是一样的信息

    动态网站:可以根据请求内容动态地生成HTMLXML或其他格式文档的Web网页

    常见的动态网页技术:ASP.NETJSP

    JSP(全称JavaServer Pages),Sun Microsystems公司创建

    JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。具体点说,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)

    ASP.NET (全称为Active Server Pages), Microsoft公司创建,也是服务器端的一种脚本语言

    ASP.NET是ASP技术的升级

    .asp是asp的文件后缀名,.aspx是asp.net的文件后缀名 

    更多相关内容
  • 二、JSP原理 2.1、Web服务器是如何调用并执行一个jsp页面的?  浏览器向服务器发请求,不管访问的是什么资源,其实都是在访问Servlet,所以当访问一个jsp页面时,其实也是在访问一个Servlet,服务器在执行jsp的...
  • [Ubuntu][Apache][CGI]_CGI與Module#01._動態網頁的基礎,基本CGI原理與示範
  • 动态口令基本原理

    千次阅读 2018-12-31 00:30:58
    它的主要原理是: 用户登录前,依据用户私人身份信息,并引入随机数产生随机变化的口令,使每次登录过程中传送的口令信息都不同,以提高登录过程中用户身份认证的安全性。 银行通常提供给用户两种动态口令: 一种是...

    动态口令,又叫动态令牌、动态密码。它的主要原理是: 用户登录前,依据用户私人身份信息,并引入随机数产生随机变化的口令,使每次登录过程中传送的口令信息都不同,以提高登录过程中用户身份认证的安全性。
      银行通常提供给用户两种动态口令: 一种是固定数量的动态口令,最常见的就是刮刮卡。用户每次根据银行提示,刮开卡上相应区域的涂层,即可获得一个口令。刮刮卡成本低廉,使用方法简单,因此很多银行采用这种方法,如工商银行; 另一种是硬件形式的动态口令,即电子令牌,它采用专用硬件,每次可以用自带的密码生成芯片得到一个当前可用的一次性动态密码,交通银行等就采用这种方式。一般来讲,每个客户端的电子令牌都有一个唯一的密钥,该密钥同时存放在服务器端,每次认证时令牌与服务器分别根据同样的密钥,同样的随机数和同样的算法计算出认证时的动态口令,从而确保口令的一致性和认证的成功。因每次认证时,随机数的参数不同,所以每次产生的动态口令也不同。每次计算时参数的随机性保证了每次口令不可预测,以保证系统安全。

      这些随机数是怎样产生的呢?动态口令随机数分为以下几类。

      1. 口令为一个单向的前后相关的序列,系统只记录第N个口令。用户用第N—1个口令登录时,系统用单向算法算出第N个口令与自己保存的第N个口令匹配,以判断用户的合法性。由于N是有限的,用户登录N次后必须重新初始化口令序列。

      2. 时间同步: 以用户登录时间作为随机因素。这种方式对双方的时间准确度要求较高,一般采取以分钟为时间单位的折中办法。在这种动态口令中,对时间误差的容忍可达±1分钟。

      3. 事件同步: 通过某一特定的事件次序及相同的种子值作为输入,使用相同的算法运算出一致的密码,其运算机理决定了其整个工作流程同时钟无关,不受时钟的影响。它节省了用户每次输入挑战信息的麻烦,但当用户的挑战序列与服务器产生偏差后,需要重新同步。

      4. 挑战/应答: 也叫异步认证方式。它比时间/事件同步方式操作相对烦琐,实现相对复杂,一般用于对安全性要求更高的场合,比如登录网上银行等,需要附加认证的情形。当用户需要访问系统时,远程认证服务器根据用户的电子令牌资料产生一个随机的数字串,即“挑战码”,用户将该数字串输入到电子令牌中。电子令牌利用内置的种子密钥和算法计算出相应的应答数(通常也是一个数字串)。

      5. 用户将该应答数输入系统。 系统根据所保存的该用户相应电子令牌信息(种子密钥和算法)计算出应答数,并与用户输入的应答数进行比较。如果两者相同,则认证通过。由于每个电子令牌的种子密钥不同,因此不同用户的电子令牌对同样的挑战数计算出应答数也并不相同。只有用户持有指定的电子令牌才能计算出正确的应答数以通过系统认证。从而可以保证该用户是持有指定电子令牌的合法用户。

    由于口令每次都变化,即使得到密码也没用,而且这种动态口令由专用算法生成,随机性高,不太容易被破解。传统的***程序即使窃取到用户个人信息,拿去登录银行网页,也已经过期。因此,动态口令极大地提高了用户身份认证的安全性。

    转载于:https://blog.51cto.com/victorly/2337269

    展开全文
  • HTML5基本原理

    2018-12-12 22:03:09
    web网页的制作的基本原理原理以及HTML5的基本框架,这是我自己整理得一些笔记,希望能换些积分。
  • 115-RS485基本通讯原理(51单片机C语言实例Proteus仿真和代码)115-RS485基本通讯原理(51单片机C语言实例Proteus仿真和代码)115-RS485基本通讯原理(51单片机C语言实例Proteus仿真和代码)115-RS485基本通讯原理(51...
  • 既然本篇文章说到的是Python构建网页爬虫原理分析,那么小编先给大家看一下Python中关于爬虫的精选文章: python实现简单爬虫功能的示例 python爬虫实战之最简单的网页爬虫教程 网络爬虫是当今最常用的系统之一。最...
  • xss基本原理分析

    2018-03-17 17:01:59
    xss基本原理分析
  • jdk动态代理的原理

    千次阅读 2022-07-05 11:56:07
    通俗的讲,在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 ...四、jdk动态代理实现原理 jdk动

     一、代理是什么

            代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

           通俗的讲,在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 携程或者淘宝上买。又比如,找保姆、找工作等都可以通过找58或boss等网站中介完成。

    二、代理的实现

    在java中代理实现的方式有两种,一种是通过继承的方式,另一种是通过组合的方式去实现。

    1.继承模式

    package com.example.demo.proxy;
    
    public class HouseOwner {
        public void rent() {
            System.out.println("和房东签署协议,租房完成!");
        }
    }
    
    package com.example.demo.proxy;
    
    public class Intermediary extends HouseOwner {
        public void rent() {
            System.out.println("找房....");
            super.rent();
            System.out.println("收房租....");
        }
    }
    package com.example.demo.proxy;
    
    public class Test {
        public static void main(String[] args) {
            HouseOwner houseOwner = new Intermediary();
            houseOwner.rent();
        }
    }

    2.组合模式

    组合模式有三个关键点:

    •  代理类和被代理类实现同一接口
    •  代理类持有被代理类的接口引用。
    •  代理类通过构造函数函数传入被代理类。
    package com.example.demo.proxy;
    
    public interface Owner {
        void rent();
    }
    package com.example.demo.proxy;
    
    public class HouseOwner implements Owner {
        public void rent() {
            System.out.println("和房东签署协议,租房完成!");
        }
    }
    package com.example.demo.proxy;
    
    public class Intermediary implements Owner {
    
        private Owner owner;
    
        public Intermediary(Owner owner) {
            this.owner = owner;
        }
    
        public void rent() {
            System.out.println("找房....");
            owner.rent();
            System.out.println("收房租....");
        }
    }
    package com.example.demo.proxy;
    
    public class Test {
        public static void main(String[] args) {
            Owner owner = new Intermediary(new HouseOwner());
            owner.rent();
        }
    }

    三、jdk动态代理实现 

    package com.example.demo.proxy;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    
    public class Intermediary implements InvocationHandler {
    
        private Owner target;
        
        public Intermediary(Owner target) {
            this.target = target;
        }
    
        @Override
        public Object invoke(Object proxy, Method method, Object[] args)
                throws Throwable {
            System.out.println("找房....");
            //通过反射执行目标方法
            Object result = method.invoke(target, args);
            System.out.println("收房租....");
            return result;
        }
    }
    package com.example.demo.proxy;
    
    import java.lang.reflect.Proxy;
    
    public class Test {
        public static void main(String[] args) {
            HouseOwner houseOwner = new HouseOwner();
            Owner owner = (Owner) Proxy.newProxyInstance(houseOwner.getClass()
                    .getClassLoader(), houseOwner.getClass()
                    .getInterfaces(), new Intermediary(houseOwner));
            owner.rent();
        }
    }

    四、jdk动态代理实现原理

            jdk动态代理的实现与上面讲的组合模式实现代理基本一样,只不过不是在编译前手动编写的代理类,而是在运行时通过反射的方式,动态的生成了代理类,所以称为动态代理。

            核心实现源码:

    
    package java.lang.reflect;
    
    import java.lang.ref.WeakReference;
    import java.security.AccessController;
    import java.security.PrivilegedAction;
    import java.util.Arrays;
    import java.util.IdentityHashMap;
    import java.util.Map;
    import java.util.Objects;
    import java.util.concurrent.atomic.AtomicLong;
    import java.util.function.BiFunction;
    import sun.misc.ProxyGenerator;
    import sun.misc.VM;
    import sun.reflect.CallerSensitive;
    import sun.reflect.Reflection;
    import sun.reflect.misc.ReflectUtil;
    import sun.security.util.SecurityConstants;
    
    
    public class Proxy implements java.io.Serializable {
    
        private static final long serialVersionUID = -2222568056686623797L;
    
      
        private Proxy() {
        }
    
        protected Proxy(InvocationHandler h) {
            Objects.requireNonNull(h);
            this.h = h;
        }
    
       @CallerSensitive
        public static Object newProxyInstance(ClassLoader loader,
                                              Class<?>[] interfaces,
                                              InvocationHandler h)
            throws IllegalArgumentException{
            Objects.requireNonNull(h);
    
            final Class<?>[] intfs = interfaces.clone();
            
          
            Class<?> cl = getProxyClass0(loader, intfs);
    
           
            try {
                if (sm != null) {
                    checkNewProxyPermission(Reflection.getCallerClass(), cl);
                }
    
                final Constructor<?> cons = cl.getConstructor(constructorParams);
                final InvocationHandler ih = h;
                if (!Modifier.isPublic(cl.getModifiers())) {
                    AccessController.doPrivileged(new PrivilegedAction<Void>() {
                        public Void run() {
                            cons.setAccessible(true);
                            return null;
                        }
                    });
                }
                return cons.newInstance(new Object[]{h});
            } catch (IllegalAccessException|InstantiationException e) {
                throw new InternalError(e.toString(), e);
            } catch (InvocationTargetException e) {
                Throwable t = e.getCause();
                if (t instanceof RuntimeException) {
                    throw (RuntimeException) t;
                } else {
                    throw new InternalError(t.toString(), t);
                }
            } catch (NoSuchMethodException e) {
                throw new InternalError(e.toString(), e);
            }
        }
    }
    

            通过 newProxyInstance方法,jdk在运行时动态生成了代理类$proxy0,并加载到了虚拟机中,这个类实际是不存在的。

            $proxy0类的代码如下:

    
    package com.example.demo.proxy;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    import java.lang.reflect.UndeclaredThrowableException;
    
    public final class $Proxy0 extends Proxy implements Owner {
        private static Method method;
    
        static {
            try {
                method = Class.forName("com.example.demo.proxy.Owner").getMethod("rent");
            } catch (NoSuchMethodException | ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    
        public $Proxy0(InvocationHandler invocationHandler) {
            super(invocationHandler);
        }
    
        public final void rent() {
    
            try {
                super.h.invoke(this, method, new Object[]{});
            } catch (Throwable throwable) {
                throwable.printStackTrace();
            }
    
        }
    }

    展开全文
  • 爬虫:把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫...这就要从我们如何得到一个网页说起,我们获取网页其实是通过浏览器访问网站获取网页信息,在本质上,是通过浏览器向网页后台
  • 网页基本构成和抓取原理网页,是一种可以被浏览器等客户端解析的一种文件。与我们平常遇到的文件的区别是:网页是根植于互联网的。也就是说我们通过浏览器浏览的网页文件大部分是不在本地的,它有可能在世界上的任何...

    网页基本构成和抓取原理

    网页,是一种可以被浏览器等客户端解析的一种文件。与我们平常遇到的文件的区别是:网页是根植于互联网的。也就是说我们通过浏览器浏览的网页文件大部分是不在本地的,它有可能在世界上的任何一台连接网络的计算机上面。而且,通过网络的超链接,我们可以浏览世界任意角落的网页文件,这就是我们平常说的网上冲浪,足不出户,就能融入整个世界。

    爬虫抓取的是数据其实就是网页上的内容,具体的抓取原理我们在这个小节会说到,下面我们先来看下网站的概念:

    1. 网站的概念

    在具体讲解网页的构成之前。我们需要先了解一下网站的概念。

    网站,是对外提供服务的多个网页构成的集合。它主要分为静态网站和动态网站。

    1.1 静态网站

    静态网站指的是网站下所有的页面都是使用 HTML 构成的网站。所谓静态,不是指网页是静止不动的,网页中也可以有动画,视频等信息。这里的静态,指的是无法与服务端进行互动。只是被动的解析显示服务器端响应回来的信息。

    静态网站的优点:

    容易被搜索引擎收录,方便 SEO 优化。

    内容独立,不依赖于数据库。

    静态网站的缺点:

    维护成本比较大,大部分内容需要人工手工更新。

    页面无法互动,用户体验不佳。

    1.2 动态网站

    动态网站相对于静态网站,它可以提供更多交互上的体验。比如,用户的注册登录,实时推荐等功能。动态网站里面不仅包含了静态的 HTML 文件,也会包含服务器端的脚本,比如 Jsp,Asp 等。

    动态网站的优点:

    用户体验良好,可以实现更多个性化的设置。

    服务器可以对客户端进行更多的互动,方便服务器对数据的管理和分析。

    动态网站的缺点:

    需要与数据库进行处理,访问速度大大降低。

    对于搜索引擎不友好。

    不管是静态网站里面的网页,还是动态网站里面的网页,他们都有一些网页共同的基本内容。下面我们来看下网页的三大基本元素:

    2. 网页的三大基本元素:

    后面的章节,我们会对网页的三大基本元素进行具体的介绍,这里只是简单的阐述一些基本的概念和用途。

    2.1 HTML

    HTML 是一种标记语言。标记语言并不是编程语言,它无法使用逻辑编程的方式进行编程。它只是约定了一种文档的展现方式。通过约定不同的标签所代表的不同含义,从而在浏览器端渲染出丰富多彩的网页。主要包含头部和主体两大部分。HTML 主要负责页面的结构。

    2.2 CSS

    级联样式表,有时候也叫做风格样式表。需要配合 HTML 来使用,从而提供丰富的渲染效果。

    2.3 Javascript

    是一种脚本语言,广泛的用于前端的逻辑实现。通过 javascript 可以实现许多定制的效果,是前端使用的最广泛的编程语言。

    综上所述,HTML,CSS,Javascript 共同构成了网页的丰富的样式。三者缺一不可,没有 HTML,CSS, Javascript 就是无源之水,毫无意思;没有 CSS,网页就失去了色彩和样式,最终会使得 HTML千篇一律;没有 Javascript,我们就无法看到动态的网页,只是一潭死水。

    3. 爬虫抓取原理

    爬虫爬取的数据其实就是网页上面的内容,我们需要通过特定的工具对网页进行分析,比如说 Beautiful Soup。然后提取出 HTML 中的特定标签下的数据。然后,将数据进行持久化保存,方便日后的数据的分析。

    简单点讲,我们使用爬虫,最根本的目的是爬取网页中对我们有价值的信息和数据。所以,我们大部分爬取的工作,都是在筛选我们有用的信息,并剔除掉无用的信息。这就是爬虫核心所在。

    4. 小结

    通过这一小节,我们认识了网页的基本元素,在我们使用的爬虫的过程中,随时随地都需要分析网页的构成要素,因此,熟练的掌握的网页的基本元素的构成,对于我们后面进行网页的分析很有帮助。

    展开全文
  • 网络基本原理

    千次阅读 多人点赞 2020-06-27 22:53:36
    网络基础 一、路由 路由:路由是指导IP报文发送的路径信息。也可以理解为路由是寻找路径的过程。 路由器:路由器具有路由的功能,作用是数据包... 比如我们要访问外国的某个网站,就可以利用虚拟专用网络(VPN...
  • 有时候,在使用urllib或request爬取网页时,得到的源代码实际和浏览器中看到的不一样,这是因为现在越来越多的网页采用了Ajax、前端模块化工具来构建,整个网页可能都是由JavaScript动态渲染出来的,浏览器加载页面...
  • python爬虫的基本原理

    千次阅读 2021-06-09 10:59:33
    hello,csdn的小伙伴好呀 我是刘志军,一名Python开发者,开个免费的Python爬虫专栏,和我一起开启爬虫之旅吧 学python很多人告诉你说,用python写个爬虫只需要一行代码,例如: ...爬虫的基本原理.
  • 搜索引擎基本工作原理.pdf搜索引擎基本工作原理.pdf搜索引擎基本工作原理.pdf搜索引擎基本工作原理.pdf搜索引擎基本工作原理.pdf搜索引擎基本工作原理.pdf搜索引擎基本工作原理.pdf搜索引擎基本工作原理.pdf
  • NAT基本原理及应用

    千次阅读 2021-03-24 20:41:47
    文章目录NAT概述NAT技术静态NAT动态NAT网络地址端口转换NAPTNAT原理地址转换连接跟踪端口转换NAT应用NAT的缺陷 NAT概述 NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”。允许一个整体...
  • Proxy基本原理

    千次阅读 2021-01-03 17:48:25
    Proxy基本原理 1.正向代理(Forward Proxy)* List item 正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率。 List item ...
  • HTTP基本原理

    万次阅读 多人点赞 2018-02-12 15:11:22
    在本节中,我们会详细了解HTTP的基本原理,了解在浏览器中敲入URL到获取网页内容之间发生了什么。了解了这些内容,有助于我们进一步了解爬虫的基本原理。1. URI和URL这里我们先了解一下URI和URL,URI的全称为Uniform...
  • Kafka基本原理详解

    千次阅读 2022-06-07 15:26:22
    用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到...
  • 给学生上网页设计基础课程的资料第二次课的课件
  • 同步整流的基本工作原理教程文件.pdf同步整流的基本工作原理教程文件.pdf同步整流的基本工作原理教程文件.pdf同步整流的基本工作原理教程文件.pdf同步整流的基本工作原理教程文件.pdf同步整流的基本工作原理教程文件...
  • 一、二维码简介_二维码基本概念_二维码基本原理 1.二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,...
  • 数据库连接池——基本原理

    千次阅读 2021-06-09 15:26:06
    数据库连接池——基本原理 1.数据库连接池是什么? 数据库连接池是负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。 2.为什么要使用连接池? 数据库连接是一种...
  • 网页基本概念和工作原理

    千次阅读 2019-11-29 17:06:37
    基本概念和工作原理 网页基本概念和工作原理
  • 日常工作DBA+爬虫,整理分享下爬虫系列 之前selenium爬虫已经分享多次 这次主要针对小白入门 介绍下基本的python爬虫
  • 爬虫的基本原理

    千次阅读 2020-03-31 22:52:16
    文章目录爬虫概述获取网页提取信息保存数据自动化程序能抓怎样的数据JavaScript渲染页面 我们可以把互联网比作一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛。如果把网的节点比作一个个网页,爬虫爬到这就...
  • HTML基本原理

    千次阅读 2019-02-21 14:11:14
    URL: 统一资源定位符 URN: 统一资源名称 ...2. 确认网站的真实性) HTTP请求过程: sequenceDiagram 客户端-&gt;&gt;服务器: 请求 服务器-&gt;&gt;客户端: 响应 请求: 请求,...
  • 网络爬虫基本原理

    万次阅读 多人点赞 2018-01-16 05:47:25
    爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份。这篇博客主要对爬虫以及抓取系统进行一个简单的概述。 一、网络爬虫的基本结构及工作流程  一个通用的网络爬虫的框架如图所示: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 341,338
精华内容 136,535
关键字:

动态网页的基本原理