webapi签名数组参数转义符问题_c# webapi json 去除转义 - CSDN
精华内容
参与话题
  • WebApi 接口参数不再困惑:传参详解

    千次阅读 2017-05-17 13:31:19
    参考:http://www.cnblogs.com/landeanfen/p/5337072.html 里面还有跨域的问题

    参考:http://www.cnblogs.com/landeanfen/p/5337072.html
    里面还有跨域的问题。

    展开全文
  • Java基础知识点回顾

    万次阅读 2019-04-18 15:21:00
    Java语言规范是Java语法和语义技术性定义,API是应用程序接口(Java预定义类和接口),Java开发工具包(JDK)包含软件库、编译器、解释器以及其他工具,集成开发环境(IDE)提供编辑、编译、调试和在线帮助功能。...
    毕设需要,迅速回顾一遍Java程序设计的基础知识。全文大概7000字,涵盖了Java基本编程技术,不涉及到反射泛型等高级编程技术。
    
    Java语言规范、API、JDK、IDE的含义:

    Java语言规范是Java语法和语义技术性定义,API是应用程序接口(Java预定义类和接口),Java开发工具包(JDK)包含软件库、编译器、解释器以及其他工具,集成开发环境(IDE)提供编辑、编译、调试和在线帮助功能。

    Java平台版本:
    • Java SE:允许开发和部署在桌面、服务器和嵌入式环境和实时环境中使用的Java应用程序。
    • Java EE:它帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。Java EE是在Java SE的基础上构建的,它提供web服务、组件模型、管理和通信API。
    • Java ME:它为在移动设备和嵌入式设备上运行的应用程序提供一个健壮且灵活的环境。
    Java运行环境

    Java的目标代码可以在任何平台上运行,Java的源代码编译之后生成.class文件,由字节码构成(比如博客之前安卓逆向研究的Dalvik字节码)。字节码可以在任何装有Java虚拟机的计算机上运行,Java虚拟机是一个用于解释字节码的软件。

    Java程序剖析:
    • 注释:Java程序包含三种注释,即多行注释、单行注释、文档注释,多行注释,
      /* 注释内容
      注释内容
      /
      单行注释://
      文档注释:可以用javadoc提取注释,形成文档,
      /
      ** 注释内容
      */
    • 修饰符:常见如public, protected, private, static, abstract, final,用于指定数据、方法、类的属性以及它们的用法。
    • 类:是Java的基本结构,一个程序可以包含一个或多个类,一个Java源文件里最多只有一个公有类
    • main方法:Java解释器通过调用main方法执行应用程序。
    常量:
    • 一旦初始化后就不能再改变的数据,语法为final datatype CONSTANT_NAME = value;
    Java数据类型
    • Java数据类型:包括基本类型和引用类型,
      基本类型包括 整数类型(byte, short, int, long) 字符类型(char)浮点类型(float, double)逻辑类型(boolean);
      引用类型包括 类,接口,数组。
      其中,浮点数中以d或D结尾或者无后缀表示double类型,以f或F结尾的表示float类型;整数字面值中以l或L结尾的表示long类型,其他表示int类型。
    • Java数值类型转换:
      如果有一个操作数是double类型,另一个操作数转换为double 类型;否则,如果有一个操作数是float类型,另一个操作数转换为float类型;否则,如果有一个操作数是long类型,另一个操作数转换为long类型;否则,两个操作数都转换为int类型;数据转换总是向较大范围的数据类型转换,避免精度损失
      将值赋值给较大取值范围的变量时,自动进行类型转换;
      将值赋值给较小取值范围的变量时,必须使用强制类型转换。
    • 字符数据类型:char表示16位的单个Unicode字符,char类型的字面值 包括以两个单引号界定的单个Unicode字符,可以用\uxxxx形式表示的, 转义字符表示\n \t \b \r \f \ ` " 。
    编程风格:

    良好的编程风格有利于减少错误,产生容易阅读、易于理解的代码。类和方法前使用文档注释,方法步骤前使用行注释;变量和方法名使用小写,如果有多个单词,第一个单词首字母小写,其他单词首字母大写;类名的每个单词的首字母大写;常量使用大写,单词间以下划线分割。

    Java常见错误类型:

    包括语法错误,即在编译期间产生的错误;运行时错误,导致程序非正常终止的错误;逻辑错误,程序不能按预期的方式执行,编译不会报错。

    条件语句:

    包括If语句、switch语句、条件表达式,其中的if语句判断条件必须是boolean类型的;在if-else条件语句中,else语句与同一块中最近的if语句匹配。在使用条件语句中,避免在条件表达式中使用比较操作符判断布尔变量的真假。
    switch语句的判断条件expression的计算结果只能是byte, char, short, int。value1-valueN必须与 判断条件类型相同,且为常量表达式,不能是变量。

    Java中常用的数学函数:
    • Math.random方法生成[0.0,1.0)之间的double类型的随机数,可以用它写出简单的表达式来生成任意范围的随机数,一般地,a + (int)(Math.random() * b)返回[a, a+b);还可以用该方法生成随机字符,Java中每个字符对应一个Unicode编码从0000到FFFF,在生成一个随机字符,就是产生一个0到65535之间的随机数,所以计算的表达式为(int)(Math.random() * (65535+1))。生成任意2个字符ch 1和ch2(ch1 < ch2)之间的随机字符,
      (char)(ch1 + (int)(Math.random() * (ch2 - ch1 + 1)))
    字符数据类型和操作
    • 在字符型数据和数值类型数据之间转换时,如果转换结果适用于目标变量(不会有精度损失),可以采用隐式转换;否则必须使用强制类型转换
    • 所有数值运算符都可以用在char型操作数上,如果另一个操作数是数值或字符,那么char型操作数就自动转换为数值;如果另一个操作数是字符串,那么char型操作数就会自动转换成字符串再和另外一个操作数字符串相连。
    字符串类型

    String类型是不可变的,其内容是不可修改的;如以下代码片段:

    String s = "java";
    s = "HTML";
    

    其中s可以理解为一个对象指针,其指向对象空间,其中的字符串为java,第二句赋值只是将s指向了另一个对象空间。

    • equals方法用于比较两个字符串是否包含相同的内容
    • equalsIngoreCase忽略大小写比较内容是否相同。
    • regionMatch比较部分内容是否相同。
    • startsWith判断是否以某个字符串开始。
    • endsWith判断是否以某个字符串结束。
    • compareTo方法用于比较两个字符串的大小,即第一个不同字符的差值.
    • 调用length()方法可以获取字符串的长度。。
    • charAt(index)方法可以获取指定位置的字符,index必须位于0到s.length()-1之间。
    • concat()方法用于连接两个字符串,连接操作返回一个新的字符串。
    • indexOf返回字符串中字符或字符串匹配的位置,返回-1表示未找到。indexOf指定第二个参数表示从指定的位置开始查找。
    • toCharArray将字符串转换成字符数组。valueOf方法将基本数据类型转换为字符串,例如转化为字符串,如
      String s1 = String.valueOf(1.0); String s2 = String.valueOf(true);;字符串转换为基本数据类型,Double.parseDouble(str)等。
    方法:
    • 方法签名指方法名称、参数类型、参数数量和返回类型;==一个类中不能包含签名相同或仅返回类型不同的多个方法;==方法头中声明的变量称为形参,**形参可以使用final修饰,表示方法内部不允许修改该参数;**形参不允许有默认值,最后一个可为变长参数。方法可以有返回值,构造函数没有返回值。
    • 如果方法声明中含有形参,调用方法时必须提供实参,实参的类型必须与形参的类型兼容:如父类形参可用子类实参
    • 调用方法时,基本数据类型的实参值的副本被传递给方法的形参,方法内部对形参的修改不影响实参值;对象类型的参数是引用调用。
    方法重载:
    • 方法重载是指方法名称相同,但方法签名不同的方法,仅返回类型不同不可重载。一个类中可以包含多个重载的方法。
    • 当调用方法时,Java编译器会根据实参的个数和类型寻找最准确的方法进行调用;调用时匹配的方法多于一个,则会产生编译错误,成为歧义调用。
    数组:
    • 数组是引用类型。
    • 多维数组只是数组的数组,故数组元素也可能是引用类型变量
    • 凡使用new后,内存单元都初始化为0或Null。
    • 声明数组引用变量,datatype[] arrayRefVar;,任何实例化的数组都是Object的子类。
    • 数组变量是引用类型的变量,声明数组变量并不分配内存空间,必须通过new实例化来分配内存空间。
    • 新创建的数组其元素根据类型被初始化为默认的初始值,
      • 数值类型为0
      • 字符类型为’\u0000’
      • 布尔类型为false
      • 引用类型为null
    • 数组可以在声明的括号后提供初始值,double[] mylist = {1.9, 2.9, 3, 3.5};或者double[] mylist = new double[]{1.9, 2.9, 3, 3.5};
    • 数组的大小在创建这个数组之后不能被改变,arrayRefVar.length可以访问数组的长度。
    • 直接使用赋值语句不能实现数组复制,结果是两个数组引用变量指向同一个数组对象。在将数组作为实参传递给方法时,修改形参引用的数组,将改变实参引用的数组。
    • JVM将数组存储在叫堆的内存区域里,数组引用存储在栈空间中。
    • String传递给方法:由于实参的字符序列不可修改,将克隆给形参
    • 可以把类型相同,但个数可变的参数传递给方法,方法中的参数声明为typeName…parameterName,==Java将可变长参数当数组看待,通过length属性得到可变参数的个数。
    print(String...args){	//可看作String[] args
    	for(String temp: args)
    		System.out.println(temp);
    	System.out.println(args.length);
    }
    
    • java.util.Arrays类包括各种静态方法,其中实现了数组的排序和查找,即sort方法与binarySearch方法。
    • 二维数组的每个元素(数组)的长度可以不同,创建二维不规则数组时,可以只指定第一维下标,第一维的每个元素为null, 必须为每个元素使用new创建数组。
    面向对象思考:
    • 类间的关系描述方法,关联关系:是一种通用的二元关系,对象间通过活动发生联系,例如学生选学课程,教师教授课程。==在Java中,关联关系可以用数据域或方法来实现,对于方法,一个类中的方法包含另一个类作为参数。
    • 聚合关系是一种拥有关系,表示整体与部分之间的关系,即Has-a的关系,在聚合关系中,一个对象可以被多个聚集着拥有; 组合关系是一种隶属关系,一个从属者只能被一个聚集着拥有。如一个Name对象只能为一个Person所拥有,但一个Address对象可以被多个Person所共享
    • 继承关系,表示子类与父类之间的is-a关系,通过继承,子类可以重用父类的数据和代码。
    • 实现关系,表示接口和类之间的关系,类实现接口。
    继承:

    继承是一种软件重用,如果没有继承,会出现很多重复定义。语法为:

    class ClassName extends Superclass{
    	classbody
    }
    

    子类继承了父类中可访问的数据域和方法,子类也可添加新的数据域和方法,子类不继承符类的构造函数。
    一个子类只能有一个直接父类:单继承。
    子类继承的父类的私有属性不能访问,但是可以通过所继承的get和set公有方法设置和访问。


    • 当第一次创建子类对象时,首先初始化其父类静态成员变量(如果没有父类对象),然后初始化当前子类对象的静态成员变量。注意:第一次之后创建子类对象时,不会再次初始化父类和子类的静态成员变量。其实,静态成员变量在有任何实例变量对象之前已经存在。
      接着执行该子类对象的父类的构造函数super(…),可能是编译为父类提供的默认无参构造函数super()。然后执行子类实例变量定义时的初始化表达式,若定义时未给出初始值,则默认为0或null.最后执行子类构造函数中super(…)后面的语句。
    • super关键字:super调用父类的构造函数,必须是子类构造函数的第一条且仅一条语句(先构造父类),如果子类构造函数中没有显示地调用父类的构造函数,那么将自动调用父类不带参数的构造函数。 如果父类属性或方法可以在子类访问,则使用super.data或者super.method(parameters)进行访问。
    • super与无参构造函数:如果一个类自定义了构造函数(不管有无参数),系统不会自动加上无参构造函数; 反之,如果没定义则会加上。编译在为子类添加无参构造函数时,用super()默认调用父类的无参构造函数,如果找不到父类的无参构造函数,则子类添加无参构造函数失败。 所以,如果一个类定义了带参数的构造函数,一定别忘了定义一个无参构造函数。
    实例方法覆盖
    • 如果子类重新定义了从父类中继承的实例方法,称为方法覆盖。
    • 仅当方法是**可访问的实例方法**时,才能被覆盖,即私有实例方法不能被覆盖,私有方法自动视为final. (final修饰类时表示其不可被继承;修饰方法表示不可在子类中被重写;修饰成员变量时表示只能在声明处或者构造函数中初始化一次)。
    • 静态方法不能被覆盖,如果静态方法在子类中重新定义,那么父类方法将被隐藏
    • 一旦父类中的方法被覆盖,则不能通过引用的子类对象访问被覆盖的父类方法。在子类类体函数中可以使用super引用被覆盖的父类方法。
    • 隐藏和覆盖的区别:覆盖,子类对象被父类引用变量引用,父类引用变量调用的相同签名的函数是子类函数(不能发现父类函数,晚期绑定);隐藏,同上,但父类引用变量访问的是父类变量、函数(可以在发现)。
    • 子类方法同样可以与父类中可访问的方法构成重载。
    多态和动态绑定:

    重载发生在编译时,编译时编译器根据方法签名找到最合适的方法;多态发生在运行时,运行时JVM根据变量所引用的对象的真正类型来找到最合适的实例方法。多态是晚期绑定,绑定是指找到函数的入口地址的过程。

    访问控制符和修饰符final
    成员修饰符 本类 本包 子类 它包
    public y y y y
    protected y y y n
    无(package) y y n n
    private y n n n
    • 父类私有成员在子类不可见;
    • 父类公有和保护成员在子类可见
    • 继承到子类后不改变父类成员的访问权限。
      示例
    异常处理:
    • 一般而言,带有异常处理的程序会写成try…catch的形式;在try体内完成程序的正常处理流程,在catch体内完成异常处理。
    • 若正常的异常处理出现错误,则使用"throw <异常对象引用>"抛出异常;抛出的异常由catch捕获,未被捕获的异常逐层传播到main,如果main也没有处理该异常,则操作系统会终止main执行。
    • 抛出而未捕获(未处理)异常的函数,必须用throws声明其未处理的这些异常。有些异常是系统抛出的,程序只需要捕获处理即可。
    • 异常的捕获顺序无论何时,throw以后的语句都不会执行;无论同层catch是否捕获、处理本层的异常(即使抛出或转发异常),同层的finally总是都会执行。 一个catch捕获到异常后,同层catch都不会执行,然后执行同层finally; 一个同层try-catch-finally结束,若无异常则执行其后语句,若有异常,则跳过其后语句,进入上层catch流程
      在这里插入图片描述
      上图中红色标出的为div的执行轨迹。
    自定义异常类:

    自定义异常类必须继承Throwable或其子类;自定义异常类通常继承Exception及其子类,因为它是程序可处理的类。自定义异常类会在父类的基础上增加成员变量,因此,通常需要覆盖toString函数(经常被打印)。未增加新成员就没有必要自定义异常类。自定义异常类通常不必定义clone, equals:捕获和处理异常时通常只是引用异常对象而已。

    抽象类:
    • Java可定义不含方法体的方法,其方法体由子类根据具体情况实现,这样的方法称为抽象方法,包括抽象方法的类必须是抽象类。抽象类和抽象方法的声明必须加上abstract关键字。
    • 类C如果满足下面任一条件,则该类包含抽象方法且是抽象类:
      • 类C显示地进行一个抽象方法的声明;
      • 类C的父类中声明的抽象方法未在类C和它的父类中实现;
      • 类C的接口中声明一个方法,并且类C未实现该方法;
      • 只有类C有一个为实现的方法,类C就是抽象类。
    • 抽象类不能被实例化,即不能用new关键字创建对象;抽象类可以定义构造函数,可以被子类调用;具体子类必须实现抽象父类中所有抽象方法,否则子类需要声明为抽象类;抽象类只能用具体子类的对象实例化。
    接口:

    接口是公共静态常量公共静态方法公共抽象方法默认实例方法的集合。接口中的一切都默认是public的,没有修饰符的方法默认是abstract的,数据成员默认是static的。

    接口不能定义构造函数,一个接口可继承extends多个接口,接口不能被类extends,一个类可实现implements多个接口。

    public interface I1{
    	public static final int k = 1;
    	public abstract void m();
    }
    

    等价于:

    public interface I1{
    	int k = 1;	//=1不可省略,因为默认是public static final的,必须初始化
    	void m();	//不可定义函数体,默认是public abstract.
    }
    

    接口中的方法通过“接口类型的引用变量.方法名”调用,但接口类型的引用变量必须引用实现了该接口的具体类的实例对象。
    接口中的常量名通过"接口名.常量名"访问。
    接口与抽象类的比较

    展开全文
  • Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。 第一阶段 JavaSE编程基础 DOS常用命令 ...

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

    第一阶段

    • JavaSE编程基础

      • DOS常用命令
      • 安装JDK、设置环境变量
      • DOS系统编译、执行Java程序
      • Java的注释
      • 标识符、标识符的命名规范
      • Java 关键字
      • Java的数据类型
      • 变量的定义及初始化
      • Java的运算符
      • 表达式
      • 转义字符
      • 运算符的优先级
      • 类型转换
      • Java分支if...else
      • 多重if、嵌套if
      • Java switch
      • Switch vs if
      • Java循环 for、while 、doWhile
      • 循环的嵌套
      • break、continue、return
      • 方法的定义
      • 方法的形参和实参
      • 无返回值的方法
      • 有返回值的方法
      • 方法的重载
    • Java数组​​​​​​​

      • Java 数组的定义
      • 数组的静态赋值
      • 数组的动态赋值
      • 数组单个元素的访问
      • 数组的遍历访问
      • 数组的增强for循环
      • 数组的排序
      • 数组的顺序查找
      • 数组的二分法查找
      • 命令行参数args的使用
      • 可变参数的应用
      • Arrays工具类的使用
      • 二维数组的使用
    • Java面向对象​​​​​​​

      • 面向对象的分析与设计
      • 面向对象与面向过程的区别
      • Java与面向对象
      • 类的定义
      • 对象的定义
      • 类中成员变量及方法的定义
      • 构造方法的定义和调用
      • 构造方法的重载
      • 面向对象的封装特性
      • this调用属性、方法、构造方法
      • 局部变量和成员变量的作用域问题
      • static静态属性、方法、代码块
      • 工具类的概念及工具类的制作
      • super关键字的使用及理解
      • Java中访问权限控制机制
      • 继承中构造方法的细节
      • 方法的重写
      • equals及toString方法的正确理解
      • Java中的包机制
      • 抽象类,接口,多态
      • 对象的转型
      • final修饰类、属性、方法
      • 抽象类,接口
      • 多态机制
      • 内部类
      • 通过内部类制作性能检测工具
      • Java的内存分析
    • 常用基础类​​​​​​​

      • 常用数据类型的包装类
      • String、StringBuffer、StringBuilder
      • Date的使用
      • SimpleDataFormate对日期和字符
        串之间的转换处理
      • Calendar日历类的使用
      • Math常用方法
      • Random类
      • Runtime类
      • System 类
      • java8新特性
    • 集合​​​​​​​

      • 集合框架体系介绍
      • 集合框架与数组的对比
      • 集合框架之Collection接口
      • 集合框架之List接口
      • ArrayList和LinkedList的使用
      • 深入源码探究ArrayList和LinkedList
        的工作原理
      • 迭代器的工作原理
      • 迭代器的使用
      • 集合框架之Set
      • HashSet和TreeSet的使用
      • 深入源码探究HashSet和TreeSet
        的工作原理
      • HashMap和TreeMap的使用
      • 分析Map和Set的之间的关系
      • Collections工具类
    • 异常处理​​​​​​​

      • Java的异常体系
      • 异常的概念及分类
      • 异常的处理方式
      • 异常设计原则
      • 自定义异常
    • 线程和I/O​​​​​​​

      • I/O
      • NIO
      • 文件操作
      • 多线程
      • 线程池
      • 同步
      • 线程调度
      • 多线程下载
      • 网络http、socket
      • 基于HTTP协议访问网络资源、XML解析
      • 文件的下载
      • ThreadLocal
    • 项目​​​​​​​

      • FTP服务器、多人聊天服务器

    第二阶段

    • HTML5

      • HTML的作用
      • 全局标签
      • 绝对路径与相对路径
      • 常见标签
      • 字符集
      • 表单标签
      • 布局指定的网页
    • CSS3

      • css声明类型
      • 常见的各种属性
      • 圆角属性:border-radius的使用
      • 阴影属性:box-shadow的用法
      • 背景属性扩展:多背景应用
      • 新的颜色表示方式:HSLA色轮模式
      • 浮动
      • 完成自己的初级课页面实战
    • Javascript

      • JavaScript基本语法
      • JavaScript数据类型
      • JavaScript对象和常用对象
      • history对象
      • location对象
      • bom对象
      • 表单对象
      • DOM对象
      • window对象
      • 常用事件
      • 选项卡、幻灯片、贪吃蛇、
        瀑布流各种特效
    • MySQL使用

      • Mysql数据库
      • MySql命令行客户端的使用
      • MySql图形化客户端的使用
      • SQL语句介绍
      • DDL
      • DML
      • DQL
      • 多表的联合查询
      • 子查询
      • 排序、聚合、分组
    • JDBC连接池

      • JDBC的介绍
      • 采用JDBC实现CRUD
      • 采用PrepareStatement防止SQL注入,提高安全性
    • Servlet

      • Tomcat与eclipse的集成开发
      • 什么是Servlet
      • Servlet接收客户端请求信息
      • Servlet响应客户端信息
      • Servlet的生命周期
      • 什么是JSP
      • JSP的内置对象
      • 透析JSP的本质
      • JSTL+EL
      • MVC介绍
      • 分层的重要性
      • Mysql的事务特性
      • MySql的事务实现
      • Session的使用
      • Cookie的使用
      • 实现系统的安全控制
      • DBCP连接池的使用
      • C3P0连接池的使用
      • DBUils
      • 实现用户的自动登录
      • 文件的上传
      • 文件的下载
      • 过滤器解决编码问题
      • 过滤器解决安全验证问题
      • 监听器
      • 反射、注解、泛型
    • MVC

      • 设计模式
      • ORM原理
      • 自定义框架ajax
        • Ajax的工作原理
        • JSON解析
        • Ajax 数据格式(XML格式、HTML格式、JSON格式、各种格式对比)
        • 使用 jQuery 实现 Ajax(load()方法、$.get()方法、$.post()方法、序列化、Ajax应用)
        • 聊天室小实例
    • jQuery

      • jQuery选择器
      • jQuery的常用事件
      • 事件冒泡
      • 事件委派
      • jQuery中的动化
      • 模拟操作
      • jQuery综合实例
    • BootStrap

      • 响应式设计
      • BootStrap安装
      • Bootstrap 组件
      • 进度条和列表组件
      • BootStrap综合实例
    • 项目

      • 讲解项目开发流程
      • 项目简介
      • 项目功能演示
      • 项目功能实现分析
      • 数据库设计分析
      • 项目架构设计分析
      • 实现网站首页的商品展示
      • 实现商品详情页面
      • 实现购物车功能
      • 实现我的订单管理
      • 项目验收

    第三阶段

    • 框架和Maven

      • 为什么用框架
      • 流行的框架
      • Maven概述
      • 使用Maven的优势
      • maven的一次构建
      • 依赖管理
      • 安装配置介绍.使用Maven核心概念介绍( 坐标、依赖、仓库、插件、生命周期等)
      • Maven与第三方Elicpse整合及如何在Eclipse中使用Maven、Maven私服Nexus的安装使用
      • 如何使用Maven构建Web应用
      • 使用Maven构建SSH应用
      • 使用Maven进行多模块和继承使用
    • Hibernate5

      • ORM思想
      • hibernate5与JPA关系介绍
      • hibernate.cfg.xml配置
      • hbm.xml映射文件详解
      • 主键生成策略 PO对象三种状态分析与切换
      • hibernate5一级缓存分析与测试
      • Hibernate5高级映射技术
      • Hibernate5多表联合查询
      • Hibernate5的性能优化
      • hibernate4及hibernate3区别及新特性介绍
    • JPA

      • JPA 概述
      • JPA 注解
      • JPA 相关 API
      • JPA 映射
      • JPQL
      • 二级缓存
      • Spring 整合 JPA
    • Struts2

      • Struts2框架介绍
      • 工作原理及架构分析
      • 快速掌握Struts2开发模式
      • Struts.xml详解
      • 通配符的配置模式
      • ActionContext及ServletActionContext使用
      • 类型自动转换机制
      • 多模块的开发模式
      • 单文件上传
      • 多文件上传
      • 文件下载
      • 拦截器的介绍
      • 默认拦截器
      • 自定义拦截器
      • Token机制

       

    • Spring4

      • 框架原理介绍
      • 框架环境搭建
      • 快速入门
      • 创建Bean的方式及实现原理
      • Bean种类
      • Bean生命周期
      • Bean的作用域
      • Bean的注值方式
      • SpEL
      • 整合Junit测试
      • Web项目集成spring
      • 注解装配Bean
      • AOP思想
      • AOP原理解剖
      • 传统方式实现AOP开发
      • AspectJ介绍及实现AOP开发

       

    • SpringMVC

      • Spring MVC 概述
      • 使用 @RequestMapping映射请求
      • 请求处理方法签名概述
      • 处理方法签名详细说明
      • 使用 HttpMessageConverter
      • 处理模型数据
      • 数据绑定流程剖析
      • 数据转换
      • 数据格式化
      • 数据校验
      • 视图和视图解析器
      • 处理方法的数据绑定
    • 博客、论坛项目整合和富文本编辑器

      • 博客或论坛项目在面试中的意义
      • 如何使用Maven构建框架开始写项目
      • 业务流程
      • 富文本编辑器整合
      • 前后台的业务实现
    • MyBatis

      • 安装和配置MyBatis
      • 使用映射语句
      • 执行非查询语句
      • 使用高级查询技术
      • 事务
      • 使用动态SQL
      • 使用高速缓存提高性能
      • MyBatis数据访问对象
      • DAO使用进阶
    • 项目整合

      • 使用SSM整合博客或论坛项目
      • 体现MyBatis的优越性
      • 使用对比
    • SpringData

      • Spring Data 概述
      • Repository
      • CrudRepository
      • PagingAndSortingRepository
      • JpaRepository
      • 条件查询
      • 使用@Query自定义查询
      • @Query 与 @Modifying 执行更新操作
      • 索引参数与命名参数
      • 用@Query来指定本地查询
      • 为某一个 Repository 上添加自定义方法
      • 所有的 Repository 都添加自实现的方法
    • Redis、MongoDB(二选一)

      • redis安装
      • redis数据类型
      • redis操作
      • java操作redis
      • redis写个带分页好友关系处理系统
      • Linux平台安装MongDB
      • MongDB插入、更新、删除、查询文档、MongoDB条件操作符
      • MongoDB排序、索引、聚合、复制、分片
      • MongoDB与java、MongoDB数据库引用
      • java写一个MongoDB的操作
    • SpringSecurity(二选一)

      • 加强URL访问安全
      • 登录到Web应用
      • 验证用户
      • 加强方法调用的安全
      • 做出访问控制决策
      • 处理视图中的安全性
      • 处理领域对象安全性
    • Shiro(二选一)

      • 权限基础
      • Shiro 概述
      • Shiro 配置基础
      • Permissions
      • Authentication
      • Authorization
      • Role
      • 编程授权
      • Realm
      • Realms的认证实现
      • Realms的授权实现
      • Spring 集成 Shiro
      • Spring 集成 Shiro
      • 基于注解的授权

       

    • WebService

      • WebService介绍
      • WebService的应用场景
    • WebService

      • http协议
      • RestFul规范
      • postman使用
      • spring 实现 RestFul

    第四阶段

    • 亿级并发架构演进

      架构演进特点大并发架构微服务

    • Linux基础

      文件处理命令权限管理命令帮助命令文件搜索命令压缩解压命令命令使用技巧VIM使用软件包管理用户和用户组管理服务和进程基本网络设置云服务器搭建和使用

    • 搭建tomcat环境

      在云服务器下搭建tomcat和MySQL服务器

    • MySQL主从

      MySQL主从和binlog的配置

    • MySQL主从

      nginx服务器的优势nginx服务器配置什么是反向代理什么是负载均衡负载均衡算法构建数十台服务器的负载均衡环境

    • SSL证书配置

      为什么使用SSL证书RSA算法、DES算法Let's Encrypt证书申请证书续期

    • keepalived双活

      不间断服务的重要性keepalived原理OSI七层模型和TCP/IP四层模型配置keepalived服务

    • MySQL高级

      ACID和MySQL的实现原理SQL优化技巧MySQL分区Explain分析

    • memcached

      MySQL引擎memcached优势memcached与Java配使用用memcached分布式处理

    • elasticsearch

      为什么使用全文索引elasticsearch与solr的对对实时索引分布式elasticsearch写一个自己的搜索引擎

    • ActiveMQ队列

      队列应用场景常用的队列服务器队列服务器的架设压力测试Java中使用队列服务器

    • MyCat分库分表技术

      MyCat介绍分库分开技术讲解其他的数据库中间件配置与自动分表

    • Rpc和Dubbo

      分布式服务框架简介Dubbo主要核心部件Dubbo-RPC基本功能Dubbo-高级功能远程方法调用软负载均衡及容错机制linux 上 Dubbo 的部署

    • svn & git & Jenkins持续集成

      svn介绍svn服务器和客户搭建配置如何使用svn多人一起进行冲突解决git常用命令git的web hooks为什么要使用持续集成持续集成与git 的web hooks配使使用

    • echarts图表插件

      图表介绍和选择什么样的图表5分钟快速上手常用API和模块移动端自适应

    • UML和常用工具的使用

      UML的作用UML常用工具的使用UML的3个要素UML的3个基本构造块事物是对模型中最具有代表性的成分的抽象5种图定义UML的应用领域

    • Hadoop

      大数据的应用场景Hadoop架设Hadoop单机配置Hadoop伪分布式环境Hadoop集群环境HDFS的使用和配置分治思想分治思想处理数据MadReduce原理MapReduce架设和使用云服务器上提供的大数据工具

    • 亿人同时在线的抢票系统

      大并发系统的应用大并发系统的分析大并发系统的设计大并发系统的开发手把手带着学员完成大并发系统

    • 综合项目实战

      15个大型项目选择各种项目特点分析项目设计项目分组选择框架后台搭建使用Maven构建项目项目开发压力测试webhooks项目自动部署面试中常问到的项目问题项目bug收集和解决阿里云、腾讯云项目上线项目验收项目答辩

    展开全文
  • JavaScript入门学习笔记

    万次阅读 2020-06-29 13:39:11
    Web前端三层: 结构层HTML定义页面的结构 样式层CSS定义页面的样式 行为层JavaScript用来实现交互,提升用户体验 2.JavaScript作用 在客户端动态的操作页面 eg:购物车 在客户端做数据校验 在客户端...

    JavaScript入门学习笔记

    一、JavaScript简介

    1.什么是JavaScript?

    JavaScript简称JS,由网景公司开发的客户端 脚本 语言(Java服务器端的编程语言),不 需要编译,可以直接运行

    Web前端三层:

    • 结构层HTML定义页面的结构

    • 样式层CSS定义页面的样式

    • 行为层JavaScript用来实现交互,提升用户体验

    2.JavaScript作用

    • 在客户端动态的操作页面 eg:购物车

    • 在客户端做数据校验

    • 在客户端发送异步请求

    二、引用方式

    1.内联方式

    在页面中使用script标签,在script标签的标签体中编写js代码

    <script>
    	js代码 
    </script>
    

    2.行内方式

    在普通标签中编写js代码,一般需要结合事件属性,如onclick、onmouseover等

    补充:

    对象:客观存在的并且可以相互区别的事物 eg:标签 div p span

    外观:-----长相-----CSS

    行为:-----事件属性-----“我爱你”

    <input type="button" value="点我" onclick="alert('我被点了,晕了!')">
     
        <!--<div onmouseover="alert('走开')">把鼠标移上来</div>-->
     
        <!--<a href="" onclick="alert('超链接被触发了')">我是超链接</a>-->
     
        <a href="javascript:alert('超链接被触发了')">我是超链接</a>    
    	<!--使用超链接的href属性执行js时,必须添加javascript:-->
    

    3.外部方式

    使用单独的 .js 文件定义,然后在面页面中使用 script 标签引入外部脚本文件

    <script type="text/javascript" src="js文件的路径"></script>
    

    注意:如果某个script标签用于引入外部的js文件,则该script标签的标签体中不能再写js代码

    三、基本用法

    1、变量

    js是一门弱类型的语言,声明变量时使用 var 关键字,不需要指定变量的类型

    语法: var 变量名=常量或表达式;

    注意:数据类型:常量(具体值)和变量(存放常量的量)

    在ECMAScript 6规范中新增 let 关键字,也用于声明变量

    使用 let 声明的变量支持块级作用域,而 var 声明的变量不支持块级作用域

    注意:在IDEA中配置ES版本Settings–>language &frameworks–>javascript–>javasscript language version

    2、输入和输出

    输出:

    • alert()弹出警告框
    • console.log()输出到浏览器的控制台
    • document.write()输出到页面

    输入:

    • prompt()弹出输入框,获取用户输入的数据

      使用 typeof 变量名 判断变量的类型

      使用 Number(变量名) 将字符串转换为数值

    3、转义字符

    常用转义字符:

    • \n 换行
    • \t 缩进
    • \' 单引号
    • \" 双引号

    4、注释

    • 单行注释: //
    • 多行注释: /*注释内容*/

    5、编码规范

    代码是区分大小写

    每条语句以分号结尾

    代码缩进

    四、核心语法

    1、数据类型

    基础数据类型:

    • string字符串
    • number数值(NaN表示非数字Not a Number,其自身是number类型,表示数值为不正常 状态)
    • boolean布尔 null空类型
    • undefined未定义类型

    数据类型的转换

    • 转换为number

      使用Number()、parseInt()、parseFloat()

    • 转换为string

      拼接空字符串

    • 转换为boolean

      使用Boolean()

      注:0、空字符串、null、undefined、NaN会被转换为false,其他值都会被转换为true

    2、运算符

    算术运算符:+-*/%**++--

    比较运算符:>>=<<==== = =!=

    赋值运算符:=+=-=*=/=%=**=

    逻辑运算符:&&||!

    条件运算符:条件?表达式 1:表达式2

    3、选择结构

    if…else…、switch

    4、循环结构

    while、do-while、for、for…in

    break,continue

    break:退出整个循环

    continue:退出本次循环,继续进行下一次是否执行循环体的条件判断

            //for ... in...对集合类型的数据进行遍历
            var str = 'welcome to JavaScript';
            for(var s in str)
                // console.log(s);
                console.log(str[s]);
    

    5、数组

    5.1 定义方式

    语法:

    var arr = new Array();
    var arr = new Array(1,2,....);
    var arr = [1,2,....]
    

    注:

    • 数组的长度会自动扩展
    • 数组中元素的默认值为undefined
    • 使用length属性来获取到数组的宽度

    5.2 常用方法

    方法 描述
    sort() 排序,默认按字符编码的顺序排列,非string类型会自动转换为 string,可自定义比较规则
    reverse() 反转,将数组元素倒序排列
    join(separator) 将数组中元素使用指定的分隔符连接成字符串,默认通过逗号进行 连接
    indexOf() 返回指定元素在数组中首次出出的位置
    slice(beign,end) 截取数组中索引从begin到end的元素,左闭右开,如果省略第二个 参数,则表示截取到末尾
    toString() 将数组转换为字符串

    5.3 二维数组

    二维数组可以认为是特殊的一维数组,即一维数组中的每个元素又是一个一维数组

    语法:

    var arr = new Array();
    arr[0] = new Array();
    arr[1] = new Array();
    arr[][]=;
    var arr = [
    [1,2,...],
    [1,2,...],
    [1,2,...]
    ]
    

    6、函数

    6.1 自定义函数

    语法:

    function 函数名(参数1,参数2,...)
    {
    函数体;
    }
    

    注意:

    • 定义函数时不需要指定参数的类型
    • 实参个数和形参个数可以不同,未给形参传入实参的,其默认值为undefined
    • 不需要指定返回值的类型,如果有返回值,直接使用retrun返回
    • 如果函数中没有使用return语句返回值,则默认返回undefined

    变量的作用域:

    • 局部作用域

      在函数中声明的变量,只能在该函数内访问,函数运行结束后变量自动销毁

    • 全局作用域

      在函数外部声明的变量,在任何位置都可以访问 块

    • 级作用域

      使用let关键字声明变量,只能在声明它的代码块内访问

    6.2 回调函数

    不会立即执行函数调用,满足一定条件时才会执行或者由别的代码调用执行,称为回调函数 callback

    调用时只写函数名,没有小括号()和参数

    应用:

    • 作为事件绑定的函数
    • 作为另一个函数的参数

    6.3 匿名函数

    没有名字的函数,称为匿名函数,一般用于回调

    应用场景:

    • 用于函数的回调

      window.onclick=function () {
          console.log(111);
      };
      
    • 用于一次性执行的函数,会自动执行,称为自执行函数----用于定义一个插件

      (function () {
          console.log(333);
      })()
      

    6.4 箭头函数

    ES6中允许使用 箭头=> 定义函数,称为箭头函数,也叫lambda表达式,是一种特殊匿名函 数

    五、复合数据

    1.string

    1.1 定义方式

    语法:

    var str = 'welcome';//基本数据类型string
    var str = new String('welcome');//引用数据类型string
    

    使用length属性获取字符串的长度

    1.2 常用方法

    方法 描述
    charAt() 返回在指定索引位置的字符,也可以使用 [索引] 的方式
    indexOf() 返回某个指定的字符串在原字符串中首次出现的位置
    lastindexOf() 返回某个指定的字符串在原字符串中最后出现的位置
    toLowerCase() 将字符串转换为小写字母
    toUpperCase() 将字符串转换为大写字母
    subString() 提取字符串两个指定的索引号之间的字符
    replace() 将指定的字符串替换为新的字符串
    split() 将字符串分隔为字符串数组
    trim() 去除字符串前后两端的空格

    2.Date

    2.1 定义方式

    语法:

    var date = new Date();//定义一个日期对象,表示当前时间
    var date = new Date(year,month,day,hour,minute,second);//参数为指定的年,月,,时,分,秒
    var date = new Date(millSeconds);//参数为当前时间与1970-1-1 0:0:0相差的毫秒数
    

    2.2 常用方法

    方法名 说明
    getFullyear() 以四位数字返回年份
    getMonth() 返回月份[0,11],0表示1月
    getDate() 返回一个月中某一天(1-31)
    getHours() 返回小时(0,23)
    getMinutes() 返回分钟(0,59)
    getSeconds() 返回秒数(0,59)
    getMillseconds() 返回毫秒(0-999)
    getDay() 返回一周中的某一天(0-6),0表示周日
    getTime() 返回从1970-1-1 0:0:0至今相差的毫秒数

    setXxx方法与getXxx方法类似,用于设置对应的值

    3.JSON

    3.1 JSON简介

    JavaScript object Notation是一种轻量级数据交换格式,用于表示JavaScript对象的一种方式 采用与编程语言无关的文本格式,易于阅读和编写,同时易于解析和生成

    3.2 基本用法

    语法: {"属性名":属性值,"属性名":属性值,....}

    注意:

    • JSON结构是由一系列的 键值对 所组成,称为JSON对象
    • 属性名必须使用双撇号括起来

    使用:

    • 简单的JSON对象
    • 复合属性,属性的值也为JSON对象
    • JSON对象的集合

    3.3 JSON转换

    • JSON转换为字符串

      var person = {
          "name":"hector",
          "age":18,
          "height":180.5
      };
      var str = JSON.stringify(person);
      
    • 字符串转换为JSON

      var str = '{"name":"tom","age":20,"sex":"男"}';
      var obj = JSON.parse(str);
      var users = '[
      {"id":1,"username":"tom","password":"123"},
          {"id":2,"username":"jack","password":"111"}
      ]'
      console.log(typeof users);
      var objs = JSON.parse(users);
      

    4.对象类型

    4.1 对象简介

    补充:

    1. 对象:客观存在的并且可以相互区别的事物 eg:一个同学 一本书 页面上的命令按钮 复选 框

    2. 描述一个对象

      属性----外观,长相

      方法----行为模式----干什么

      事件----单击,双击

    3. 对象有三个基本特征:封装、继承和多态

    对象类型可以理解为JAVA中的引用数据类型

    JavaScript是面向对象的语言,但并不是人们常说的纯粹的面向对象的语言,因为它不支持某 些特征

    4.2 创建对象

    三种方式

    • 使用Object

      //新创建的对象没有属性和方法
      var 对象名 = new Object();
      //为对象添加属性
      对象名.属性名 = 属性值;
      //为对象添加方法
      对象名.方法名 = function {
          方法体;
      };
      //调用属性和方法
      对象名.属性名 或 对象名['属性名']
      对象名.方法名
      
    • 使用构造函数,模拟类的定义,相当于自定义了一个类型

      function 构造函数名(形参1,形参2,....{//为了区别与普通函数,构造函数名建议首字
          母大写
          this.属性名=形参1;
          this.属性名=形参2;
          this.方法名=function(){
              方法体;
          };
      }
      
    • 使用JSON格式定义对象,一般只在JSON对象中定义属性

      var JSON对象 ={
          属性名:属性值,//属性名和方法名可不用加引号
          属性名:属性值,
          ...
      };
      

    六、DOM操作

    1.DOM简介

    Document Object Model文档对象模型

    浏览器加载html文档时,会将html文档解析为一个树形结构,称为DOM树

    • HTML文档和DOM树中节点是一 一对应的关系
    • 当DOM树被改变时,与之对应的HTML文档会随之改变
    • 当需要对HTML中的内容进行动态改变时,可以使用DOM来进行操作
    • DOM提供了一组用来操作html文档的API,即提供了一套 属性、方法和事件
    • 树上的每个节点都量一个DOM对象,树的顶层为document 对象 ,表示整个文档

    DOM.png

    2.查询操作

    即获取DOM对象

    方法和属性 含义
    document.getElementById(“id值”) 根据id属性来查询节点,返回匹配的第一 个节点
    document.getElementsByName(“name 属性值”) 根据name属性来查询,返回所有匹配的节 点集合
    document.getElementsByTagName(“标 签名”) 根据标签名来查询,返回所有匹配的节点 集合
    document.querySelector(“选择器”) 根据css选择器来查询,返回匹配的第一个 节点
    document.querySelectorAll(“选择器”) 根据css选择器来查询,返回所有匹配的节 点集合
    parentNode属性 查询当前节点的父节点
    previousSibling属性 查询当前节点的上一个节点
    nextSibling属性 查询当前节点的下一个节点
    firstChild属性 查询当前节点的第一个节点
    lastChild属性 查询当前节点的最后一节点

    3.访问操作

    3.1访问属性

    即获取/设置DOM对象的属性

    DOM对象的属性和HTML标签的属性几乎是一样的,一般情况下DOM对象都会有一个与对应 的HTML标签同名的属性

    用法: DOM对象.属性

    3.2访问内容

    即获取/设置标签中的内容

    • 使用innerHTML

      用法: DOM对象.innertHTML 将内容解析为HTML

    • 使用innertText

      用法: DOM对象.innnertText 将内容作为纯文本

    4.添加操作

    方法 含义
    document.createElement(“标签名”) 创建一个元素节点,即标签
    document.createTextNode(“文本内 容”) 创建一个文本节点,即标签中的文本内容
    node.appendChild(newNode) 将一个新的节点newNode添加到指定的节点 node中子节点的末尾
    node.insertBefore(newNode,refNode) 将一个新的节点newNode添加到node节点中 子节点refNode之前
    node.replaceChild(newNode,refNode) 用一个新的节点newNode替换原有的node节 点中的子节点refNode

    5.删除操作

    方法 含义
    node.remove() 删除当前节点
    node.removeChild(refNode) 删除当前节点中指定的节点

    七、事件处理

    1、简介

    事件:发生在HTML元素上的事情,可以是用户的行为,也可以是浏览器的行为,如:

    • 用户点击了某个HTML元素
    • 用户将鼠标移动到某个HTML元素上
    • 用户输入数据时光标离开
    • 页面加载完成

    事件源:事件触发的源头,即触发事件的元素,如按钮、输入框、超链接等

    事件对象:当一个事件发生时,这个事件相关的详细信息会保存在一个对象中,称为event对 象

    事件监听:监听事件的发生,绑定事件函数,当事件被触发后执行该事件的函数,即回调函数

    2、绑定事件

    两种方式:

    • 静态绑定,通过标签的事件属性绑定

      <input type="button" value="按钮" onclick="fn()">

    • 动态绑定,通过JS代码来绑定事件

      <input type="button" value="按钮" id="btn">
          <script>
          var btn = document.getElementById("btn");
      btn.onclick=function{
          console.log("动态绑定");};
      </script>
      

      注意:

    • 可以通过事件回调函数的第一个参数获取事件对象event

    • 在事件回调函数中,this表示事件源,即发生事件的元素

    3、常用事件

    3.1鼠标事件

    事件名 描述
    onclick 鼠标单击
    ondblclick 鼠标双击
    onmouseover 鼠标移动某元素之上
    onmouseout 鼠标从某元素上移开
    onmousedown 鼠标按钮被按下
    onmouseup 鼠标按键被松开
    onmousemove 鼠标被移动

    3.2键盘事件

    事件名 描述
    onkeydown 某个键盘的键被按下去
    onkeyup 某个键的盘被松开
    onkeypress 某个键盘的键被按下去且松开

    3.3表单事件

    事件名 描述
    onfocus 元素获得焦点
    onblur 元素失去焦点
    onchange 域的内容发生改变,一般用于文件选择器和下拉列表
    onselect 文本内容被选中
    onsubmit 表单提交前触发,回调函数返回true表示允许表单提交,返回false表示阻 止表单提交

    4、事件操作

    4.1 事件冒泡

    概念:当一个HTML元素产生事件时,该事件会从当前元素(事件源)开始,往上冒泡直到页 面的根元素,所有经过的节点都会收到该事件并执行

    特点:先触发子级元素的事件,再触发父级元素的事件

    阻止事件的冒泡: event.stopPropagation()event.cancelBubble=true;

    4.2 事件默认行为

    概念:当一个事件发生时浏览器自己会默认做的事情,如:点击链接时默认会跳转,右键单 击时默认会弹出菜单

    阻止事件的默认行为: event.preventDefault()

    5、示例:下拉列表

    5.1 Select和Option对象

    Select对象:表示HTML表单中的一个下拉列表

    • 属性: length 设置或返回下拉列表中选项的数量selectedIndex 设置或返回下拉列表中被选中项的索引 value 返回下拉列表中被选中项的值 options 返回下拉列表中所有的选项,值为Option对象数组(当该数组改变时对应下拉列 表的选项也会跟着改变)

    • 方法: add() 向下拉列表中添加一个选项

    • 事件: onchange 下拉列表的选项改变时触发

    Option对象:表示HTML表单中下拉列表的一个选项

    • 属性: text 设置或返回在页面中显示的文本值 value 设置或返回传递给服务器的值

    • 构造函数: Option(文本值,服务器值) 创建一个选项

    5.2 二级菜单联动

    实现省市级联的效果

    八、BOM操作

    1.BOM简介

    JavaScript由三部分组成

    • ECMAScript核心语法----JS简称ECMAScript,ES
    • DOM文档对象模型
    • BOM浏览器对象模型

    2.window对象

    常用属性:

    document、location、history等,都是子级对象

    常用方法:

    方法名 含义
    alert(text) 显示一个带有提示信息和确定按钮的警告框
    prompt(text) 显示一个带有提示信息、文本输入框、确定和取消按钮的输 入框,返回值为输入的数据
    confirm(text) 显示一个带有提示信息、确定和取消按钮的确认框,确定时 返回true,取消时返回false
    open(url,name,options) 打开具有指定名称的新窗口,并加载给定url所指定的文档
    setTimeout(fn,delay) 设置一次性计时器,在指定毫秒值后执行某个函数
    setInterval(fn,delay) 设置周期性计时器,周期性循环执行某个函数
    clearTimeout(timer) 清除一次性计时器
    clearInterval(timer) 清除周期性计时器

    常用事件:

    事件名 描述
    onload 页面加载完成
    onscroll 窗口滚动条滑动
    onclick 鼠标单击

    注意:由于window对象是BOM结构的顶层对象,所以在调用window的属性和方法时可以省 略 window

    3.location对象

    常用属性

    • href 设置或返回地址栏中的url

    常用方法:

    • reload 重新加载当前页面

    4.history对象

    常用方法:

    方法名 含 义
    back() 后退,加载history列表中的上一个url
    forward() 前进,加载history列表中的下一个url

    九、数据校验

    1.正则表达式

    1.1 简介

    正则表达式是一门独立的语言,有自已的语法,用于检测指定字符串是否

    符合特定规则 正则表达式就是用来定义规则的,称为Regular Expresstion

    在JavaScript中提供了RegExp对象,表示正则表达式

    1.2 定义方式

    创建正则表达式对象,两种方式:

    • 使用字变量

      var reg = /pattern/attribute;

    • 使用构造函数

      var reg = new RegExp(pattern,attribute);

    说明:

    • pattern表示匹配模式,用于指定匹配规则,由元字符、量词、特殊符号组成
    • attribute 表示匹配特征,取值:i忽略大小写、g全局匹配、m多行匹配

    1.3 匹配规则

    元字符:具有特殊含义的字符

    符号 描述
    \s 匹配任何的空白字符
    \S 任何非空白字符
    \d 匹配一个数字字符,等价于[0-9]
    \D 除了数字之外的任何字符
    \w 匹配一个数字、下划线或字母字符
    \W 任何非单字字符,等价于匹配非数字、非下划线或非字母字符
    . 匹配除换行符之外的任意字符

    量词:指定字符出现的次数

    符号 描述
    {n} 匹配前一项的n次
    {n,} 匹配前一项n次,或者多次
    {n,m} 匹配前一项至少n次,但不超过m次
    * 匹配前一项0次或多次,等价于{0,}
    + 匹配前一项1次或多次,等价于{1,}
    ? 匹配前一项0次或1次,也就是说前一项是可选的,等价于{0,1}

    特殊符号:具有特殊含义的符号

    符号 含义
    /…/ 代表一个模式的开始和结束
    ^ 匹配字符串的开始,即表示行的开始
    $ 匹配字符串的结束,即表示行的结束
    [ ] 表示可匹配的列表
    ( ) 用于分组
    | 表示或者
    [^ ] 在[ ]中的脱字符表示非

    注: [\u4E00-\u9FA5] 用于匹配中文字符

    1.4基本用法

    使用正则表达式对象的test方法

    语法:

    var flag =reg.test(字符串);

    判断字符串是否符合正则表达式对象所指定的模式规是,返回true或false

    2.表单校验

    2.1 目的

    客户端表单校验的目的

    • 保证输入的数据符合要求
    • 减轻服务器的压力

    2.2 实现

    通过onsubmit事件绑定回调函数,判断表单数据是否符合要求

    • 如果不符合要求,则返回false
    • 如果符合要求,则返回true

    附件:https://share.weiyun.com/6GKjzjpt

    展开全文
  • Java知识点总结(一)语言基础

    千次阅读 2017-10-19 17:05:42
    (1)Java语言规范,API(应用程序接口)。JavaSE、JavaEE、JavaME。JDK。  .java编译为.class,Java虚拟机(JVM)执行。(每个类都被编译成一个独立的.class文件) (2)注释:// /**/ 文档注释:/** */ , ...
  • 微信小程序(优惠券)

    万次阅读 2019-01-29 10:58:17
    微信卡券 常见问题及文档: https://developers.weixin.qq.com/community/develop js sdk: ...
  • JAVA基础笔记

    千次阅读 2020-01-24 02:46:24
    第一章
  • 2016最新ssm面试题

    万次阅读 2017-12-06 11:17:58
    1.很新的面试题;2.很全的面试题;3.很重点的面试题框架;Struts2与Struts1的面试题;###1.Struts2与Struts1的联系与;struts1与struts2都是mvc框架的经;Struts2不是从Struts1升级而来,而是;区别:;...
  • 微信团队在2015年初改革了微信JS的API,本文主要详细说明其中用到的卡券领取功能. 微信卡券需要认证过的公众号才能申请开通,而且创建的卡券也是要审核才能投放的.微信的卡券对于用户体验上来说比较好,以前促销...
  • 我在CSDN参与的3000个帖子

    万次阅读 热门讨论 2006-11-17 16:42:00
    2:100分急求,随机输出十个小写字母,但是,要求这十个字母不相同 3:求Sn=a+aa+aaa+…+aaa…a(n个a)之值 4:数组题 望高手帮忙! 5:呵呵,来推荐一下我的网站,本站提供大量当今流行的免费的音乐和免费电影,...
  • 微信JS-SDK说明文档 ... 能调用微信扫一扫 ,那能不能让浏览器支持微信支付呢
  • Visual Studio:针对 Java 开发人员的 C# 编程语言发布日期: 7/23/2004 | 更新日期: 7/23/2004本文讨论 Java 和 C# 之间的异同点,目的在于当迁移到 .NET 时,让 Java 开发人员掌握所涉及的一些知识。...
  • 微信JSSDK说明文档

    万次阅读 2015-12-02 09:41:34
    http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E6.AD.A5.E9.AA.A4.E4.B8.80.EF.BC.9A.E7.BB.91.E5.AE.9A.E5.9F.9F.E5.90.8D 目录 1 概述 ...步骤一:绑定域名1.1
  • JavaScript高级程序设计零碎知识点

    千次阅读 2015-05-15 11:43:02
    2.现代Web应用程序一般都把JavaScript的引用放到元素中页面内容的后面,加快页面打开的速度。因为如果把元素按照传统放到标签中,意味着必须等到全部JavaScript代码都被下载解析和执行完成之后,才能开始呈现页面内容...
  • 微信JS-SDK说明文档

    千次阅读 2017-03-31 15:37:30
    微信JS-SDK说明文档 目录 1 概述 1.1 JSSDK使用步骤 1.1.1 步骤一:绑定域名 1.1.2 步骤二:引入JS文件 1.1.3 步骤三:通过config接口注入权限验证配置 1.1.4 步骤四:通过...1.2 接口调用说
  • PHP基础(必须熟练掌握的基础)

    万次阅读 2019-08-25 11:13:39
    <?php /** * 三元运算符的应用 */ /* $a = 10; $b = 15; echo $a > $b ? 1 : 0; */ // 注:php7新添加的运算符比较运算符x<=>y // 如果x和y相等,就返回0,如果x>y,就返回1,如果x的值小于y,就...*/...
  • FindBugs错误描述

    千次阅读 2017-06-08 11:01:13
    BC:Equals方法不应该假定它的参数类型 坏习惯 位:检查按位操作的符号 坏习惯 CN:类实现可克隆但不定义或使用克隆方法 坏习惯 CN:克隆方法不调用super.clone() 坏习惯 CN:类定义clone()但不实现...
  • 基于Hash摘要签名的公网URL签名验证设计与约定为什么要对url参数签名 在特定的环境下存在A系统页面打开B系统(不是同一个公司)的需求,由于B系统中不存在用户登陆,所以必须保证A通过URL调用带给B的参数是可信且...
  • Java基础知识(1)

    千次阅读 2010-06-18 22:02:00
    操作5.控制流程6.关键字清单1.概念以及提纲 Java技术是一种高级的面向对象的编程语言,也是一个平台,Java技术是基于Java虚拟机(Java Virtual Machine,JVM)的概念——这是语言和底层软件和硬件之间的一种转换...
  • C#概念系统总结

    千次阅读 2016-01-17 00:24:29
    .Net是由Microsoft推出的应用程序开发平台,可用来构建和运行新一代Microsoft Windows和Web应用程序。 2. .Net的核心技术 .Net Framework:.Net 平台核心中的核心,为.Net 平台下的应用程序的运行提供基本框架。 ...
1 2 3 4 5 ... 20
收藏数 1,448
精华内容 579
关键字:

webapi签名数组参数转义符问题