javaweb

day01

1.      web概述:

1)       javaweb:使用java语言开发基于互联网的项目

2)       软件架构:

1.        c/s:客户端/服务器端

2.        b/s:浏览器/服务器端

2.      B/S架构详解:

1)       资源分类:

1.        静态资源:使用静态网页开发技术发布的资源

l  所有用户访问,得到的结果一样。如:图片、视频、HTML、JavaScript、CSS

l  用户请求静态资源,服务器直接将静态资源发送给浏览器。

l  浏览器内置了静态资源解析引擎,可展示静态资源

2.        动态资源:使用动态网页开发技术发布的资源

l  所有用户访问,得到的结果可能不一样。如:JSP/servlet、PHP、ASP

l  用户请求动态资源,服务器执行动态资源,转化为静态资源,发送给浏览器

3.      静态资源:

1)       HTML:用于搭建基础网页,展示页面的内容

2)       CSS:用于美化页面,布局页面

3)       JavaScript:控制页面元素,让页面有一些动态效果

4.      HTML:超文本标记语言

1)       围堵标签:<html></html>             自闭和标签:<br/>

2)       开始标签中可定义属性,属性由键值对构成,值要引号引起来

3)       文件标签:构成HTML最基本的标签

1.        html根标签、head头标签、title标题标签、body体标签、<!DOCTYPE html>类型定义

4)       文本标签:

1.        注释:<!-- 注释内容 -->

2.        <br/>:换行

3.        <h1>~<h6> :标题标签 (字体逐渐减小)

4.        <p>:段落标签

5.        <hr/>:水平线 

6.        <b>:字体加粗

7.        <i>:字体斜体

8.        <font>:字体标签 color/size/face

9.        <center>:居中

5)       图片标签:<img>

1.        位置:align   文本:alt      src:指定图片位置 

6)       列表标签:

1.        有序列表<ol> <li>:有编号      type=“A”:类型   start=“5”:起始位置 

l  <ol>

   <li></li>

   <li></li>

</ol>

2.        无序列表<ul> <li>:无编号

7)       链接标签:

1.        <a>:定义超链接   href:URL(网址/路径/maillto:邮箱)   target:_self _blank打开资源的方式

8)       语义化标签(仅提高程序可读性):<header>  <footer>

9)       表格标签:         

1.        <table>:定义表格    * border:边框

2.        <tr>:定义行

3.        <td>:定义单元格      * colspan:合并列       *rowspan:合并行

4.        <th>:定义表头单元格

5.        <caption>:表格标题

6.        <thead>/<tbody>/<tfoot>:类似语义化标签

10)    表单标签:(若想被提交,必须定义name属性)

1.        <form>:定义表单

l  action: 指定提 交数据的URL

l  method:指定提交方式(共7种,两种比较常用)

a)       get:请求参数在地址栏显示、限制参数长度、不太安全

b)       post:请求参数不在地址栏显示、不限制参数长度、较安全

2.        表单项标签:

l  input:可以通过type属性值,改变元素展示的样式

a)       text:文本输入框(默认)

b)       password:密码输入框

c)        radio:单选框  value指定被选中后提交的值、checked指定默认值

d)       checkbox:复选框 value指定被选中后提交的值、checked指定默认值

e)       placehoder: 输入框提示信息

f)         value:默认值

g)       file:文件选择框

h)       hidden:隐藏域,用于提交一些信息

i)         按钮:     submit:提交按钮,可以提交表单

button:普通按钮

image:图片按钮,src属性指定图片路径

j)   color:拾色器

l  select:下拉列表    * option:指定列表项

l  textarea:文本域    * rows:行数   * cols:每行字符数

l  lable: 指定输入项文字描述信息,一般lable的for属性与input的ID属性对应。若对应了,点击lable区域,会让input输入框获取焦点。

day02

1.      CSS(层叠样式表):页面美化和布局控制

1)       好处:

1.        功能强大

2.        将内容展示和样式控制分离:

l  降低耦合度:解耦

l  让分工协作更容易

l  提高开发效率

2)       使用:与HTML结合方式

1.        内联样式(不推荐):在标签内使用style属性指定CSS代码,不能解耦

2.        内部样式:在head标签内,定义style标签,标签体内容写CSS代码

l  <style>

l      div{

l        color:bule;

l      } 

l  </style>

l  <div> 内容 </div> 

3.        外部样式:定义CSS资源文件,在head标签内,定义link标签,引入外部资源文件

l  a.css文件:div{color:green;}

l  head内:<link rel=”stylesheet” href=”css/a.css”>   或者

l             <style> @import “css/a.css”; </style>

l  <div> 内容 </div>

3)       css语法:

1.        格式:选择器{属性名1:属性值1;属性名2:属性值2;……}

l  基本选择器:

a)       id选择器:选择具体id属性值的元素    #属性值{}

b)       元素选择器:相同标签名称的元素          标签名称{}

c)        类选择器:选择相同class属性值的元素  .class属性值{}

l  扩展选择器:

a)       选择所有元素:*{}

b)       并集选择器:选择器1,选择器2{}

c)        子选择器:选择器1 选择器2{}     (1下的2选择器)

d)       父选择器:选择器1>选择器2{}        (1为2父级)

e)       属性选择器(选择元素名称,属性名=属性值的元素):元素名称[属性名=“属性值”]{}

f)         伪类选择器:选择元素具有的状态    元素:状态{}

link:初始状态  hover:鼠标悬浮状态  active:正在访问  visited:被访问过状态

2.        属性:

l  字体、文本:font-size:字体大小、color:文本颜色、text-align:对齐、line-height:高

l  背景(复合属性):background

l  边框(复合属性):border

l  尺寸:weight、height

l  盒子模型:控制布局

a)       margin:外边距

b)       padding:内边距  默认影响盒子大小

                                                        i.            box-sizing:border-box;固定盒子大小

c)        float:浮动  left、right

day03

1.      JavaScript:客户端脚本语言(ECMAScript+BOM+DOM)

2.      ECMAScript:

1)       基本语法:

1.        与HTML结合方式:

l  内部JS:定义<script>,标签体内容为JS代码

l  外部JS:定义<script>,通过src属性引入外部的JS文件

a)       <script>可定义在任意位置,但会影响执行顺序

b)       <script>可定义多个

2.        数据类型:

l  原始数据类型(基本数据类型):

a)       number:数字。整数、小数、NaN(not a number 一个不是数字的数字类型)

b)       string:字符串。“ABC” ‘ABC’ ‘a’  无“字符”这个概念

c)        boolean:true、false

d)       null:一个对象为空的占位符

e)       undefined:未定义。一个变量没有初始化,默认赋值为undefined

l  引用数据类型:对象

3.        变量:

l  java为强类型语言,JavaScript为弱类型(定义变量时不定义数据类型)语言

l  语法: var 变量名 ;

l  typeof运算符:获取变量的类型。——null得到object

4.        运算符:

l  +为正号

a)       string转number:是数字自动转,不是则转为NaN

b)       boolean转number:true1,false2

l  ===  全等  不进行类型转换,类型不同直接false

5.        流程控制语句:

l  if…else…

l  switch:  

l  while:

l  for:

6.        输出语句:document.write();

7.        JS特殊语法(不建议):

l  var关键字可省略,有var为局部变量,无var为全局变量

l  一行只有一条语句,分号可省略

2)       基本对象:

1.        Function函数(方法)对象:

l  创建:function 方法名(形参列表){

方法体;

}

l  属性:length:形参个数

l  特点:

a)       实参可以比形参少

b)       方法定义时,形参类型、返回值类型不用写

c)        定义相同名称的方法会覆盖

2.        Array数组对象:

l  创建:

a)       var arr = new Array(元素列表);

b)       var arr = new Array(列表长度);

c)        var arr = [元素列表];

d)       var arr = new Array();

l  方法:

a)       join(分隔符):数组之间加分隔符合为字符串

b)       push():同 add

3.        Date日期对象:

l  创建:var date = new Date();

l  方法:

a)       tolocaleString():返回时间字符串按本地格式

b)       getTime():获取毫秒值

4.        Math数学对象:

l  创建:(不用创建,可直接使用 : Math.方法名();)

l  方法:

a)       random():返回[0.0~1.0)间的随机数

b)       ceil():向上取整

c)        floor():向下取整

d)       round():四舍五入

  属性:PI

5.        RegExp正则表达式对象:

l  正则表达式:定义字符串的组成规则。

a)       单个字符:[ ]  如:[a]     [ab]a或b    [a-zA-Z0-9]大小字母或小写字母或数字

1)       \d:单个数字字符[0-9]

2)       \w:单个单词字符[a-zA-Z0-9] 

b)       量词符号:

1)       ?:出现0或1次

2)       *:出现0或多次

3)       +:出现1或多次

4)       {m,n}:m<=数量<=n

1.        m缺省:{,n}:最多n次

2.        n缺省:{m,}:最少n次

c)        开始结束符号: 开始^  结束$

l  正则对象:

a)       创建:

1)       var reg = new RegExp(“正则表达式”);

2)       var reg = /正则表达式/;

b)       方法:

1)       test(): 验证指定的字符串是否符号正则定义的规范

6.        Global:

l  特点:全局对象,封装的方法不需要对象可直接调用。  方法名()

l  方法:

a)       encodeURL():URL编码     

b)       decodeURL():URL解码

c)        encodeURLComponent():URL编码 ,编码的字符更多

d)       decodeURLComponent():URL解码               

e)       parseInt():将字符串<起始位置的数字>转为数字

f)         isNaN():判断值是否为NaN

g)       eval():将JavaScript的字符串,作为脚本代码执行

3.      BOM:浏览器对象模型(将浏览器各个组成部分封装为对象)

1)       组成:

1.        window窗口对象:

l  特点:不需创建直接使用   [window.]方法名();

l  方法:

a)       与弹出框有关的方法

1)       alert():显示一段信息和确认按钮的警告框

2)       confirm():显示一段信息和确认取消按钮的对话框

3)       prompt():提示用户输入的对话框,返回值(用户输入的值)

b)       与打开关闭有关的方法:

1)       open():打开新的浏览器窗口

2)       close():关闭

c)        与定时器有关的方法:参数(代码、毫秒值)

1)       setTimeout()一次性定时器:在指定毫秒值后执行指定代码

2)       clearTimeout():取消一次性定时器

3)       setInterval()循环定时器:

4)       clearInterval():取消循环定时器

l  属性:

a)       获取其他BOM对象

b)       获取DOM对象:document      

2.        history历史记录对象:

3.        location:地址栏对象:

l  创建(获取):[window.]location()

l  方法:reload():刷新

l  属性:href:获取URL,更改URL

4.        navigator:浏览器对象:(了解)

5.        screen:显示器屏幕对象:(了解)

4.      DOM文档对象模型:(将标记语言文档各个组成部分封装为对象)

1)       Document文档对象:

1.        创建(获取):[window.]document

2.        方法:

l  获取element对象:getElementById()

l  创建其他DOM对象:createElement()

2)       Element元素对象:

1.        获取(创建):通过document

2.        方法:

l  removeAttribute():删除属性

l  setAttribute():设置属性

3)       nod节点对象:   

1.        特点:所有dom对象都可以被认为是一个节点

2.        方法:

l  CRUD dom树:

a)       appendChild():向节点的子节点列表结尾添加新的子节点

b)       removeChild():删除当前节点的指定子节点

c)        replaceChild():用新节点替换一个子节点

3.        属性:parentNode 返回节点的父节点。

5.      事件监听机制:某些组件被执行了某些操作后,触发某些代码的执行

1)       事件:某些操作(如单击,双击,按下键盘……)

2)       事件源:组件(如按钮、文本输入框……)

3)       监听器:代码

4)       注册监听:将事件、事件源、监听器结合。当事件源上发生了某个事件,则触发执行某个监听器代码

6.      常见的事件:

1)       点击事件:onclick单击事件、ondblclick双击事件

2)       焦点事件:onblur 失去焦点、onfocus获得焦点

3)       加载事件:onload完成加载

4)       鼠标事件

5)       键盘事件

6)       选择和改变

7)       表单事件

day04

       Bootstrap:

1.    概念: 一个前端开发的框架。Bootstrap 基于 HTML、CSS、JavaScript ,使得 Web 开发更加快捷。

              * 框架:一个半成品软件,开发人员可以在框架基础上,在进行开发,简化编码。

              * 好处:

1. 定义了很多的css样式和js插件。我们开发人员直接可以使用这些样式和插件得到丰富的页面效果。

                     2. 响应式布局:同一套页面可以兼容不同分辨率的设备。

2.    响应式布局:

       * 实现:依赖于栅格系统:将一行平均分成12个格子,可以指定元素占几个格子

       * 步骤:

              1. 定义容器。相当于之前的table

                     * 容器分类:

                            1. container:两边留白(xs占满)

                            2. container-fluid:每一种设备都是100%宽度

              2. 定义行。相当于之前的tr   样式:row

              3. 定义元素。指定该元素在不同的设备上,所占的格子数目。样式:col-设备代号-格子数目

                     * 设备代号:

                            1. xs:超小屏幕 手机 (<768px):col-xs-12

                            2. sm:小屏幕 平板 (≥768px)

                            3. md:中等屏幕 桌面显示器 (≥992px)

                            4. lg:大屏幕 大桌面显示器 (≥1200px)

              * 注意:

                     1. 一行中如果格子数目超过12,则超出部分自动换行。

                     2. 栅格类属性可以向上兼容。栅格类适用于与屏幕宽度大于或等于分界点大小的设备。

                     3. 如果真实设备宽度小于了设置栅格类属性的设备代码的最小值,会一个元素沾满一整行。

3.    CSS样式和JS插件

       1. 全局CSS样式:

              * 按钮:class="btn btn-default"

              * 图片:

                     *  class="img-responsive":图片在任意尺寸都占100%

                     *  图片形状

                            *  <img src="..." alt="..." class="img-rounded">:方形

                            *  <img src="..." alt="..." class="img-circle"> : 圆形

                            *  <img src="..." alt="..." class="img-thumbnail"> :相框

              * 表格

                     * table   

                     * table-bordered  边框

                     * table-hover  鼠标悬停

              * 表单

                     * 给表单项添加:class="form-control" 

       2. 组件:

              * 导航条

              * 分页条

       3. 插件:

              * 轮播图

day05

## XML:

       1. 概念:Extensible Markup Language 可扩展标记语言

              * 可扩展:全部标签都是自定义的。 <user>  <student>

              * 标记语言:拿标签写的

              * 功能:存储数据

                            1. 配置文件

                            2. 在网络中传输

              * xml与html的区别

                     1. xml标签都是自定义的,html标签是预定义。

                     2. xml的语法严格,html语法松散

                     3. xml是存储数据的,html是展示数据

              * w3c:万维网联盟产出的xml/html两兄弟

       2. 语法:

              * 基本语法:

                     1. xml文档的后缀名 .xml

                     2. xml第一行必须定义为文档声明

                     3. xml文档中有且仅有一个根标签

                     4. 属性值必须使用引号(单双都可)引起来

                     5. 标签必须正确关闭

                     6. xml标签名称区分大小写

              * 组成部分: 

                     1. 文档声明

                            1. 格式:<?xml 属性列表 ?>

                            2. 属性列表:

                                   * version:版本号,必须的属性

                                   * encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1

                                   * standalone:是否独立

                                          * 取值:

                                                 * yes:不依赖其他文件

                                                 * no:依赖其他文件

                     2. 指令(了解):结合css的

                            * <?xml-stylesheet type="text/css" href="a.css" ?> 

                     4. 属性:id属性值唯一

                     5. 文本:

                            * CDATA区:在该区域中的数据会被原样展示

                                   * 格式: <![CDATA[ 数据 ]]>

       

              * 约束:规定xml文档的书写规则

                     * 作为框架的使用者(程序员):

                            1. 能够在xml中引入约束文档

                            2. 能够简单的读懂约束文档

                     * 分类:

                            1. DTD:一种简单的约束技术

                            2. Schema:一种复杂的约束技术

                     * DTD:

                            * 引入dtd文档到xml文档中

                                   * 内部dtd:将约束规则定义在xml文档中

                                   * 外部dtd:将约束的规则定义在外部的dtd文件中

                                          * 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">

                                          * 网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">

                     * Schema:

                            * 引入:

                                   1.填写xml文档的根元素

                                   2.引入xsl前缀.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                                   3.引入xsi文件命名空间.  xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"

                                   4.为每一个xsd约束声明一个前缀,作为标识  xmlns="http://www.itcast.cn/xml" 

                            <students   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                                   xmlns="http://www.itcast.cn/xml"

                                   xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd">

       3. 解析:操作xml文档,将文档中的数据读取到内存中

              * 操作xml文档

                     1. 解析(读取):将文档中的数据读取到内存中

                     2. 写入:将内存中的数据保存到xml文档中。持久化的存储

              * 解析xml的方式:

                     1. DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树

                            * 优点:操作方便,可以对文档进行CRUD的所有操作

                            * 缺点:占内存

                     2. SAX:逐行读取,基于事件驱动的。

                            * 优点:不占内存。

                            * 缺点:只能读取,不能增删改

              

              * xml常见的解析器:

                     1. JAXP:sun公司提供的解析器,支持dom和sax两种思想

                     2. DOM4J:一款非常优秀的解析器

                     3. Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

                     4. PULL:Android操作系统内置的解析器,sax方式的。

              * Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

                     * 快速入门:

                            * 步骤:

                                   1. 导入jar包

                                   2. 获取Document对象

                                   3. 获取对应的标签Element对象

                                   4. 获取数据

              * 对象的使用:

                     1. Jsoup:工具类,可以解析html或xml文档,返回Document

                            * parse:解析html或xml文档,返回Document

                                   * parse​(File in, String charsetName):解析xml或html文件的。

                                   * parse​(String html):解析xml或html字符串

                                   * parse​(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象

                     2. Document:文档对象。代表内存中的dom树

                            * 获取Element对象

                                   * getElementById​(String id):根据id属性值获取唯一的element对象

                                   * getElementsByTag​(String tagName):根据标签名称获取元素对象集合

                                   * getElementsByAttribute​(String key):根据属性名称获取元素对象集合

                                   * getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合

                     3. Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用

                     4. Element:元素对象

                            1. 获取子元素对象

                                   * getElementById​(String id):根据id属性值获取唯一的element对象

                                   * getElementsByTag​(String tagName):根据标签名称获取元素对象集合

                                   * getElementsByAttribute​(String key):根据属性名称获取元素对象集合

                                   * getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合

                            2. 获取属性值

                                   * String attr(String key):根据属性名称获取属性值

                            3. 获取文本内容

                                   * String text():获取文本内容

                                   * String html():获取标签体的所有内容(包括字标签的字符串内容)

                     5. Node:节点对象

                            * 是Document和Element的父类

                     

              * 快捷查询方式:

                     1. selector:选择器

                            * 使用的方法:Elements    select​(String cssQuery)

                                   * 语法:参考Selector类中定义的语法

                     2. XPath:XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言

                            * 使用Jsoup的Xpath需要额外导入jar包。

                            * 查询w3cshool参考手册,使用xpath的语法完成查询

day06

## web相关概念回顾

       1. 软件架构

              1. C/S:客户端/服务器端

              2. B/S:浏览器/服务器端

       2. 资源分类

              1. 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源。静态资源可以直接被浏览器解析

                     * 如: html,css,JavaScript

              2. 动态资源:每个用户访问相同资源后,得到的结果可能不一样。称为动态资源。动态资源被访问后,需要先转换为静态资源,在返回给浏览器

                     * 如:servlet/jsp,php,asp....

                     

       3. 网络通信三要素

              1. IP:电子设备(计算机)在网络中的唯一标识。

              2. 端口:应用程序在计算机中的唯一标识。 0~65536

              3. 传输协议:规定了数据传输的规则

                     1. 基础协议:

                            1. tcp:安全协议,三次握手。 速度稍慢

                            2. udp:不安全协议。 速度快

## web服务器软件:

       * 服务器:安装了服务器软件的计算机

       * 服务器软件:接收用户的请求,处理请求,做出响应

       * web服务器软件:接收用户的请求,处理请求,做出响应。

              * 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目

              *  web容器

       * 常见的java相关的web服务器软件:

              * webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

              * webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

              * JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

              * Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范servlet/jsp。开源的,免费的。

       * JavaEE:Java语言在企业级开发中使用的技术规范的总和,一共规定了13项大的规范

       * Tomcat:web服务器软件

              1. 下载:http://tomcat.apache.org/

              2. 安装:解压压缩包即可。

                     * 注意:安装目录建议不要有中文和空格

              3. 卸载:删除目录就行了

              4. 启动:

                     * bin/startup.bat ,双击运行该文件即可

                     * 访问:浏览器输入:http://localhost:8080 回车访问自己

                                                   http://别人的ip:8080 访问别人

                     

                     * 可能遇到的问题:

                            1. 黑窗口一闪而过:

                                   * 原因: 没有正确配置JAVA_HOME环境变量

                                   * 解决方案:正确配置JAVA_HOME环境变量

                            2. 启动报错:

                                   1. 暴力:找到占用的端口号,并且找到对应的进程,杀死该进程

                                          * netstat -ano

                                   2. 温柔:修改自身的端口号

                                          * conf/server.xml

                                          * <Connector port="8888" protocol="HTTP/1.1"

                                    connectionTimeout="20000"

                                    redirectPort="8445" />

                                          * 一般会将tomcat的默认端口号修改为80。80端口号是http协议的默认端口号。

                                                 * 好处:在访问时,就不用输入端口号

              5. 关闭:

                     1. 正常关闭:

                            * bin/shutdown.bat

                            * ctrl+c

                     2. 强制关闭:

                            * 点击启动窗口的×

              6. 配置:

                     * 部署项目的方式:

                            1. 直接将项目放到webapps目录下即可。

                                   * /hello:项目的访问路径-->虚拟目录

                                   * 简化部署:将项目打成一个war包,再将war包放置到webapps目录下。

                                          * war包会自动解压缩

                            2. 配置conf/server.xml文件

                                   在<Host>标签体中配置

                                   <Context docBase="D:\hello" path="/hehe" />

                                   * docBase:项目存放的路径

                                   * path:虚拟目录

                            3. 在conf\Catalina\localhost创建任意名称的xml文件。在文件中编写

                                   <Context docBase="D:\hello" />

                                   * 虚拟目录:xml文件的名称                  

                     * 静态项目和动态项目:

                            * 目录结构

                                   * java动态项目的目录结构:

                                          -- 项目的根目录

                                                 -- WEB-INF目录:

                                                        -- web.xml:web项目的核心配置文件

                                                        -- classes目录:放置字节码文件的目录

                                                        -- lib目录:放置依赖的jar包

                     * 将Tomcat集成到IDEA中,并且创建JavaEE的项目,部署项目。

## Servlet:  server applet

       * 概念:运行在服务器端的小程序

              * Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。

              * 将来我们自定义一个类,实现Servlet接口,复写方法。

       * 快速入门:

              1. 创建JavaEE项目

              2. 定义一个类,实现Servlet接口

                     * public class ServletDemo1 implements Servlet{ }

              3. 实现接口中的抽象方法

              4. 配置Servlet

                      在web.xml中配置:

                  <!--配置Servlet -->

                  <servlet>

                      <servlet-name>demo1</servlet-name>

                      <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>

                  </servlet>

             

                  <servlet-mapping>

                      <servlet-name>demo1</servlet-name>

                      <url-pattern>/demo1</url-pattern>

                  </servlet-mapping>

       * 执行原理:

              1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径

              2. 查找web.xml文件,是否有对应的<url-pattern>标签体内容。

              3. 如果有,则在找到对应的<servlet-class>全类名

              4. tomcat会将字节码文件加载进内存,并且创建其对象

              5. 调用其方法

       * Servlet中的生命周期方法:

              1. 被创建:执行init方法,只执行一次

                     * Servlet什么时候被创建?

                            * 默认情况下,第一次被访问时,Servlet被创建

                            * 可以配置执行Servlet的创建时机。

                                   * 在<servlet>标签下配置

                                          1. 第一次被访问时,创建

                                     * <load-on-startup>的值为负数

                                 2. 在服务器启动时,创建

                                     * <load-on-startup>的值为0或正整数

                     * Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的

                            * 多个用户同时访问时,可能存在线程安全问题。

                            * 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值

              2. 提供服务:执行service方法,执行多次

                     * 每次访问Servlet时,Service方法都会被调用一次。

              3. 被销毁:执行destroy方法,只执行一次

                     * Servlet被销毁时执行。服务器关闭时,Servlet被销毁

                     * 只有服务器正常关闭时,才会执行destroy方法。

                     * destroy方法在Servlet被销毁之前执行,一般用于释放资源

       * Servlet3.0:

              * 好处:

                     * 支持注解配置。可以不需要web.xml了。

              * 步骤:

                     1. 创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml

                     2. 定义一个类,实现Servlet接口

                     3. 复写方法

                     4. 在类上使用@WebServlet注解,进行配置

                            * @WebServlet("资源路径")

## IDEA与tomcat的相关配置

       1. IDEA会为每一个tomcat部署的项目单独建立一份配置文件

              * 查看控制台的log:Using CATALINA_BASE:   " C:\Users\12488\.IntelliJIdea2019.3\system\tomcat\_untitled1"

       2. 工作空间项目 和 tomcat部署的web项目

              * tomcat真正访问的是“tomcat部署的web项目”,"tomcat部署的web项目"对应着"工作空间项目" 的web目录下的所有资源

              * WEB-INF目录下的资源不能被浏览器直接访问。

       3. 断点调试:使用"小虫子"启动 dubug 启动

day07

## Servlet:

       1. 概念

       2. 步骤

       3. 执行原理

       4. 生命周期

       5. Servlet3.0 注解配置

       6. Servlet的体系结构  

              Servlet -- 接口

                     |

              GenericServlet -- 抽象类

                     |

              HttpServlet  -- 抽象类

              * GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象

                     * 将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可

              * HttpServlet:对http协议的一种封装,简化操作

                     1. 定义类继承HttpServlet

                     2. 复写doGet/doPost方法

       7. Servlet相关配置

              1. urlpartten:Servlet访问路径

                    1. 一个Servlet可以定义多个访问路径 : @WebServlet({"/d4","/dd4","/ddd4"})

                     2. 路径定义规则:

                            1. /xxx:路径匹配

                            2. /xxx/xxx:多层路径,目录结构

                            3. *.do:扩展名匹配

## HTTP:

       * 概念:Hyper Text Transfer Protocol 超文本传输协议

              * 传输协议:定义了,客户端和服务器端通信时,发送数据的格式

              * 特点:

                     1. 基于TCP/IP的高级协议

                     2. 默认端口号:80

                     3. 基于请求/响应模型的:一次请求对应一次响应

                     4. 无状态的:每次请求之间相互独立,不能交互数据

              * 历史版本:

                     * 1.0:每一次请求响应都会建立新的连接

                     * 1.1:复用连接

       * 请求消息数据格式

              1. 请求行

                     请求方式 请求url 请求协议/版本

                     GET /login.html    HTTP/1.1

                     * 请求方式:

                            * HTTP协议有7中请求方式,常用的有2种

                                   * GET:

                                          1. 请求参数在请求行中,在url后。

                                          2. 请求的url长度有限制的

                                          3. 不太安全

                                   * POST:

                                          1. 请求参数在请求体中

                                          2. 请求的url长度没有限制的

                                          3. 相对安全

              2. 请求头:客户端浏览器告诉服务器一些信息

                     请求头名称: 请求头值

                     * 常见的请求头:

                            1. User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息

                                   * 可以在服务器端获取该头的信息,解决浏览器的兼容性问题

                            2. Referer:http://localhost/login.html

                                   * 告诉服务器,我(当前请求)从哪里来?

                                          * 作用:

                                                 1. 防盗链:

                                                 2. 统计工作:

              3. 请求空行

                     空行,就是用于分割POST请求的请求头,和请求体的。

              4. 请求体(正文):

                     * 封装POST请求消息的请求参数的

              * 字符串格式:

                     POST /login.html  HTTP/1.1

                     Host: localhost

                     User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0

                     Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

                     Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

                     Accept-Encoding: gzip, deflate

                     Referer: http://localhost/login.html

                     Connection: keep-alive

                     Upgrade-Insecure-Requests: 1

                     

                     username=zhangsan   

       * 响应消息数据格式

## Request:

       1. request对象和response对象的原理

              1. request和response对象是由服务器创建的。我们来使用它们

              2. request对象是来获取请求消息,response对象是来设置响应消息

       2. request对象继承体系结构: 

              ServletRequest(接口)

                     |      继承

              HttpServletRequest(接口)

                     |      实现

              org.apache.catalina.connector.RequestFacade (类,由Tomcat创建)

       3. request功能:

              1. 获取请求消息数据

                     1. 获取请求行数据

                            * GET /day14/demo1?name=zhangsan HTTP/1.1

                            * 方法:

                                   1. 获取请求方式 :GET

                                          * String getMethod()  

                                   2. 获取虚拟目录:/day14

                                          * String getContextPath()

                                   3. 获取Servlet路径: /demo1

                                          * String getServletPath()

                                   4. 获取get方式请求参数:name=zhangsan

                                          * String getQueryString()

                                   5. 获取请求URI:/day14/demo1

                                          * String getRequestURI():            /day14/demo1

                                          * StringBuffer getRequestURL()  :http://localhost/day14/demo1

                                          * URL:统一资源定位符 : http://localhost/day14/demo1中华人民共和国

                                          * URI:统一资源标识符 : /day14/demo1                             共和国

                                   6. 获取协议及版本:HTTP/1.1

                                          * String getProtocol()

                                   7. 获取客户机的IP地址:

                                          * String getRemoteAddr()

                     2. 获取请求头数据

                            * 方法:

                                   * String getHeader(String name):通过请求头的名称获取请求头的值

                                   * Enumeration<String> getHeaderNames():获取所有的请求头名称                            

                     3. 获取请求体数据:

                            * 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数

                            * 步骤:

                                   1. 获取流对象

                                          *  BufferedReader getReader():获取字符输入流,只能操作字符数据

                                          *  ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据

                                                 * 在文件上传知识点后讲解

                                   2. 再从流对象中拿数据

              2. 其他功能:

                     1. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数

                            1. String getParameter(String name):根据参数名称获取参数值    username=zs&password=123

                            2. String[] getParameterValues(String name):根据参数名称获取参数值的数组  hobby=xx&hobby=game

                            3. Enumeration<String> getParameterNames():获取所有请求的参数名称

                            4. Map<String,String[]> getParameterMap():获取所有参数的map集合

                            * 中文乱码问题:

                                   * get方式:tomcat 8 已经将get方式乱码问题解决了

                                   * post方式:会乱码

                                          * 解决:在获取参数前,设置request的编码request.setCharacterEncoding("utf-8");                                 

                     2. 请求转发:一种在服务器内部的资源跳转方式

                            1. 步骤:

                                   1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)

                                   2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response) 

                            2. 特点:

                                   1. 浏览器地址栏路径不发生变化

                                   2. 只能转发到当前服务器内部资源中。

                                   3. 转发是一次请求

                     3. 共享数据:

                            * 域对象:一个有作用范围的对象,可以在范围内共享数据

                            * request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据

                            * 方法:

                                   1. void setAttribute(String name,Object obj):存储数据

                                   2. Object getAttitude(String name):通过键获取值

                                   3. void removeAttribute(String name):通过键移除键值对

                     4. 获取ServletContext:

                            * ServletContext getServletContext()

Day08

1.会话技术:

1.会话:一次会话中包括多次请求和响应

2.功能:在一次会话范围内的多次请求间,共享数据

3.方式:

       1.客户端会话技术:Cookie

       2.服务器端会话技术:Session

2.Cookie:

       1.概念:客户端会话技术,将数据保存到客户端

       2.快速入门:

              1.创建Cookie对象,绑定数据  Cookie c = new Cookie(String name,String value);

2.发送Cookie对象  response.addCookie(Cookie cookie)

              3.获取Cookie对象,拿到数据  Cookie[ ] request.getCookies()

3.实现原理:

              基于响应头set-cookie和请求头cookie实现

       4.细节

              1.一次可以发送多个cookie

                     可以创建多个cookie对象,使用response多次调用addCookie方法发送cookie即可

              2.cookie存活时间:默认情况下,浏览器被关闭后,cookie数据被销毁

                     setMaxAge(int seconds)      

                            1.正数:将cookie数据写到硬盘中,持久化存储

                            2.负数:默认值

                            3. 0:删除cookie信息

              3.cookie在Tomcat8之后能存中文

              4.cookie共享问题:

                     1.一个Tomcat服务器中,部署的多个web项目的cookie默认不能共享

                            setPath(String path):设置cookie范围 ,共享需将path设为“/”

                     2.不同Tomcat服务器间cookie的共享:

                            setDomain(String path):如果设置一级域名相同,那多个服务器间cookie可共享

                            setDomain(“.baidu.com”),则tieba.baidu.com和news.baidu.com中cookie可共享

       5.特点和作用

              1.cookie存储数据在客户端浏览器    

              2.浏览器对单个cookie的大小有限制(4KB),对同一域名下cookie的数量有限制(20个)

              作用 1.cookie一般用于存储少量不太敏感的数据

                      2.在不登录的情况下,完成服务器对客户端的身份识别

                            

4.Session:

       1.概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HttpSession

       2.快速入门:

              1.获取HttpSession对象:

                     HttpSession session=request.getSession();

                     session.setAttribute(String name,Object value)

              2.使用HttpSession对象:

                     Objesc o = session.getAttribute(String name)

                     Sout(“o”);

              3.原理:Session的实现依赖于Cookie

              4.与cookie的区别:

                     1.session存储数据在服务器端,cookie在客户端

                     2.session没有数据大小限制,cookie有

                     3.session数据安全,cookie相对不安全             

              

Day09

1.JSP:  Java Server Pages,java服务器端页面,用于简化书写(可写HTML标签和java代码)

2.JSP本质是一个Servlet

3.JSP的脚本:JSP定义java代码的方式

       1.<%  代码  %>:

       2. <%!  代码  %>:定义成员变量、成员方法

       3. <%=  代码  %>:定义输出的内容

4.JSP的内置对象:在JSP页面中不需要获取和创建,可以直接使用的对象

       request

       response

       out:字符输出流对象,将数据输出到页面上

              out.write()在response.getWriter().write之后

5.JSP:

       1.指令:

              1.作用:用于配置JSP页面,导入资源文件

              2.格式:<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 … %>

              3.分类: 

                     1.page:配置JSP页面

                            1.contentType:设置响应消息体的MIME类型

                            2.import:导包

                            3.errorPage:当前页面发生异常后,会自动跳转到指定的错误页面

                            4.isErrorPage:标识当前页面是否为错误页面

                                   true:是,可以使用内置对象exception

                                   false:否,默认值,不可使用内置对象exception

                     2.include:页面包含的。导入页面的资源文件

                            <%@ include file=”top.jsp” %>

                     3.taglib:导入资源(标签库)

                            <%@ taglib prefix=”c”  url=”     ” %>    prefix:前缀,自定义的

       2.注释

              Html的注释<!--  -->,只能注释HTML的代码片段

              JSP的注释<%--  --%>:可以注释所有

       3.内置对象

              变量名                     真实类型                                          作用

              pageContext:            PageContext                                    当前页面数据共享,还可以获取其他八个内置对象

              request                        HttpServerRequest                           一次请求访问的多个资源(转发)

              session                        HttpSession                                      一次会话的多个请求间

              application                  ServletContext                                  所有用户间共享数据

              response                     HttpServerResponse                         响应对象

              page                           Object                                             当前页面(servlet)的对象  this

              out                              JSPWriter                                         输出对象,数据输出到页面上

              config                          ServletConfig                                    Servlet的配置对象

              exception                    Throwable                                        异常对象       

7.      MVC:开发模式(耦合性低、方便维护、利于分工协作、重用性高,但是使项目架构变复杂)           

1.model:模型    JavaBean

        完成业务操作,如查询数据库、封装对象

2.view:视图    JSP

        展示数据

3.controller:控制器    Servlet         

              获取用户的输入

              调用模型

              将数据交给视图进行展示

## EL表达式

       1.概念:Expression Language表达式语言

       2.作用:简化和代替jsp页面上的java代码

       3.语法:${表达式}

       4.注意:

              JSP默认支持el表达式,如果要忽略el表达式

                     1.设置jsp中Page指令:isELIgnored=”true”    :  忽略所有EL语句

                     2.\${表达式}   :  忽略单个EL语句

       5.使用:

              1.运算:

                     运算符:

                            1.算数运算符:+-*/(div )%(mod)

                            2.比较运算符:

                            3.逻辑运算符:&&(and) ||(or) !(not)

                            4.空运算符:empty

                                   *功能:用于判断集合、数组、字符串对象是否为null并且长度是否为0

                                   *${empty list}

              2.获取值:

                     1.el表达式只能从域对象中获取值

                     2.语法:       

                            1.${域名.键名}:从指定域中获取指定键的值

                                   域名:

1.        pageScope   --   PageContext

2.        requestScope   --   request

3.        sessionScope   --   session

4.        applicationScope   --   application(ServletContext)

举例:在request域中存储了name=张三

获取:${requestScope.name}    

                            2.${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止

                            3.获取对象、List集合、Map集合的值

                                   1.对象:${域名.键名.属性名}

                                   2.List集合:${域名.键名[索引]}

                                   3.Map集合:${域名.键名.key名称}

                     3.隐式对象:el表达式中有11个隐式对象

                            pageContext:获取jsp其他八个内置对象

                                   ${pageContext.request.contextPath}:动态获取虚拟目录

## JSTL

       1.概念:JSP标准标签库

       2.作用:简化和代替jsp页面上的java代码

       3.使用步骤:

              1.导入JSTL相关jar包

              2.引入标签库:taglib指令    <%@ taglib %>

              3.使用标签

       4.常用的JSTL标签

              1.if:相当于java代码的if语句

                     1.属性:test为必须属性,接收Boolean表达式(若为true,则显示if标签体内容)

                                   一般test属性值会结合el表达式一起使用

                     2.注意:c:if标签没有else情况,想要else情况,可以再定义一个c:if标签

              2.choose:相当于java代码的Switch语句

                     1.使用choose标签声明,相当于Switch声明

                     2.使用when标签做判断,相当于case

                     3.使用otherwise标签做其他情况的声明,相当于default

              3.foreach:相当于java代码的for循环语句

                     1.完成重复操作:for(int i=0;i<=10;i++){ }

                            属性:begin开始值、end结束值、var临时变量、step步长、varStatus循环状态对象、index索引、count循环次数

                     2.变量容器:List<User> list;

                                          for(User user:list){ }、

                            属性:items容器对象、var容器中元素的临时变量、varStatus循环状态对象、index索引、count循环次数

##三层架构:软件设计架构

      1.界面层(表示层/web层):接收用户参数,数据封装,调用业务逻辑层完成处理,转发jsp页面完成显示

      2.业务逻辑层(service层):将dao层简单的方法组合,形成复杂的功能

      3.数据访问层(dao层):定义了对数据库最基本的CRUD操作

Day10

1.Filter过滤器:一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤……

       1.概念:Web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截,完成一些特殊的功能。      

2.快速入门:

       1.定义一个类,实现Filter接口

       2.复写方法

       3.配置拦截路径

              1.web.xml

              2.注解

3.细节:

       1.过滤器执行流程:

              1.执行过滤器

              2.执行放行后的资源

              3.回来执行过滤器放行代码下的代码

              2.过滤器生命周期方法:

                     1.init:在服务器启动后,创建Filter对象,调用init方法。只执行一次,用于加载资源

                     2.doFilter:每次请求被拦截资源时会执行,执行多次

                     3.destory:服务器正常关闭,执行destory方法。只执行一次,用于释放资源

              3.过滤器链:

                     1.执行顺序: 过滤器1—过滤器2—资源执行—过滤器2—过滤器1

                     2.过滤器执行顺序:看类名字符串的大小

              4.过滤器配置详解:

                     * 拦截路径配置:

                            1.具体资源路径: /index.jsp   只有访问此资源你,过滤器才会执行

                            2.拦截目录:/user/*    访问/user下的所有资源时,过滤器都会被执行

                            3.后缀名拦截:*.jsp    访问所有后缀名为jsp的资源,都会执行、

                            4.拦截所有资源:/*

                     * 拦截方式配置:资源访问的方式

                            @WebFilter(value= “ ” , dispatcher=)

                            1.REQUEST:默认值。浏览器直接请求资源

                            2.FORWARD:转发访问资源

                            3.INCLUDE:包含访问资源

                            4.ERROR:错误跳转资源    

                            5.ASYNC: 异步访问资源

2.Listener:监听器

      1. 事件监听机制:

              1.事件:一件事情,如点击按钮

              2.事件源:事件发生的地方,如按钮

              3.监听器:一个对象

              4.注册监听:将事件、事件源、监听器绑定在一起。当事件源上发生某个事件后,执行监听器代码

      2. ServletContextListener:监听ServletContext对象的创建和销毁

              1.方法:

                     void contextDestoryed(ServletContextEvent sce):ServletContext对象被销毁前会调用该方法

                     void contextInitialized(ServletContextEvent sce):ServletContext对象创建后会调用该方法

              2.步骤:

                     1.定义一个类,实现ServletContextListener接口

                     2.复写方法

                     3.配置:注解:@WebListener

Day11

# JQuery 基础:

       1. 概念: 一个JavaScript框架。简化JS开发

              * JavaScript框架:本质上就是一些js文件,封装了js的原生代码而已

       2. 快速入门

              1. 步骤:

                     1. 下载JQuery

                     2. 导入JQuery的js文件:导入min.js文件

                     3. 使用

                            var div1 = $("#div1");

                          alert(div1.html());

       3. JQuery对象和JS对象区别与转换

              1. JQuery对象在操作时,更加方便。

        2. JQuery对象和js对象方法不通用的.

        3. 两者相互转换

            * jq -- > js : jq对象[索引] 或者 jq对象.get(索引)

            * js -- > jq : $(js对象)

       4. 选择器:筛选具有相似特征的元素(标签)

              1. 基本操作学习:

                     1. 事件绑定

                            //1.获取b1按钮

                   $("#b1").click(function(){

                       alert("abc");

                   });

                     2. 入口函数

                             $(function () {

                         

                        });

                             window.onload  和 $(function) 区别

                        * window.onload 只能定义一次,如果定义多次,后边的会将前边的覆盖掉

                        * $(function)可以定义多次的。

                     3. 样式控制:css方法

                             // $("#div1").css("background-color","red");

                    $("#div1").css("backgroundColor","pink");

              2. 分类

                     1. 基本选择器

                            1. 标签选择器(元素选择器)

                                   * 语法: $("html标签名") 获得所有匹配标签名称的元素

                            2. id选择器 

                                   * 语法: $("#id的属性值") 获得与指定id属性值匹配的元素

                            3. 类选择器

                                   * 语法: $(".class的属性值") 获得与指定的class属性值匹配的元素

                            4. 并集选择器:

                                   * 语法: $("选择器1,选择器2....") 获取多个选择器选中的所有元素

                     2. 层级选择器

                            1. 后代选择器

                                   * 语法: $("A B ") 选择A元素内部的所有B元素        

                            2. 子选择器

                                   * 语法: $("A > B") 选择A元素内部的所有B子元素

                     3. 属性选择器

                            1. 属性名称选择器 

                                   * 语法: $("A[属性名]") 包含指定属性的选择器

                            2. 属性选择器

                                   * 语法: $("A[属性名='值']") 包含指定属性等于指定值的选择器

                            3. 复合属性选择器

                                   * 语法: $("A[属性名='值'][]...") 包含多个属性条件的选择器

                     4. 过滤选择器

                            1. 首元素选择器 

                                   * 语法:$("div:first") : first 获得选择的元素中的第一个元素

                            2. 尾元素选择器 

                                   * 语法: :last 获得选择的元素中的最后一个元素

                            3. 非元素选择器

                                   * 语法: :not(selector) 不包括指定内容的元素

                            4. 偶数选择器

                                   * 语法: :even 偶数,从 0 开始计数

                            5. 奇数选择器

                                   * 语法: :odd 奇数,从 0 开始计数

                            6. 等于索引选择器

                                   * 语法: :eq(index) 指定索引元素

                            7. 大于索引选择器 

                                   * 语法: :gt(index) 大于指定索引元素

                            8. 小于索引选择器 

                                   * 语法: :lt(index) 小于指定索引元素

                            9. 标题选择器

                                   * 语法: :header 获得标题(h1~h6)元素,固定写法

                     5. 表单过滤选择器

                            1. 可用元素选择器 

                                   * 语法: :enabled 获得可用元素

                            2. 不可用元素选择器 

                                   * 语法: :disabled 获得不可用元素

                            3. 选中选择器 

                                   * 语法: :checked 获得单选/复选框选中的元素

                            4. 选中选择器 

                                   * 语法: :selected 获得下拉框选中的元素

       5. DOM操作

              1. 内容操作

                     1. html(): 获取/设置元素的标签体内容   <a><font>内容</font></a>  --> <font>内容</font>

                     2. text(): 获取/设置元素的标签体纯文本内容   <a><font>内容</font></a> --> 内容

                     3. val(): 获取/设置元素的value属性值

              2. 属性操作

                     1. 通用属性操作

                            1. attr(): 获取/设置元素的属性

                            2. removeAttr():删除属性

                            3. prop():获取/设置元素的属性

                            4. removeProp():删除属性

                            * attr和prop区别?

                                   1. 如果操作的是元素的固有属性,则建议使用prop

                                   2. 如果操作的是元素自定义的属性,则建议使用attr

                     2. 对class属性操作

                            1. addClass():添加class属性值

                            2. removeClass():删除class属性值

                            3. toggleClass():切换class属性

                                   * toggleClass("one"): 

                                          * 判断如果元素对象上存在class="one",则将属性值one删除掉。  如果元素对象上不存在class="one",则添加

                            4. css():

              3. CRUD操作:

                     1. append():父元素将子元素追加到末尾

                            * 对象1.append(对象2): 将对象2添加到对象1元素内部,并且在末尾

                     2. prepend():父元素将子元素追加到开头

                            * 对象1.prepend(对象2):将对象2添加到对象1元素内部,并且在开头

                     3. appendTo():

                            * 对象1.appendTo(对象2):将对象1添加到对象2内部,并且在末尾

                     4. prependTo():

                            * 对象1.prependTo(对象2):将对象1添加到对象2内部,并且在开头

                     5. after():添加元素到元素后边

                            * 对象1.after(对象2): 将对象2添加到对象1后边。对象1和对象2是兄弟关系

                     6. before():添加元素到元素前边

                            * 对象1.before(对象2): 将对象2添加到对象1前边。对象1和对象2是兄弟关系

                     7. insertAfter()

                            * 对象1.insertAfter(对象2):将对象2添加到对象1后边。对象1和对象2是兄弟关系

                     8. insertBefore()

                            * 对象1.insertBefore(对象2): 将对象2添加到对象1前边。对象1和对象2是兄弟关系

                     9. remove():移除元素

                            * 对象.remove():将对象删除掉

                     10. empty():清空元素的所有后代元素。

                            * 对象.empty():将对象的后代元素全部清空,但是保留当前对象以及其属性节点

Day12

1.Jquery高级:

       1.动画:

              1.三种方式显示和隐藏元素:

                     1.show([speed],[easing],[fn])

                            1.speed:动画的速度。三个预定义的值(“slow”,“normal”,“fast”)或表示动画时长的毫秒数值      (如:5000)

                            2.easing:指定切换效果,默认是“swing”,可用参数“linear”

                                   Swing:先慢、中间快、再慢

                                   Linear:匀速

                            3.fn:在动画完成时执行的函数,每个动画执行一次

                     2.hide([speed],[easing],[fn])

                     3.toggle([speed],[easing],[fn])

              2.滑动显示和隐藏的方式: 

                     1.slideDown([speed],[easing],[fn])

                     2.slideup([speed],[easing],[fn])

                     3.slideToggle([speed],[easing],[fn])

              3.淡入淡出显示和隐藏方式

                     1.fadeIn([speed],[easing],[fn])

                     2.fadeOut([speed],[easing],[fn])

                     3.fadeToggle([speed],[easing],[fn])

2.遍历:

       1.js的遍历方式

              for(初始化值,循环结束条件,步长)

       2.jQuery的遍历方式

              1.Jquery对象.each(callback)

                     Callback:回调函数。function

              2.$.each(object,[callback])

              3.for…of:jQuery3.0版本之后提供

3.事件绑定

       1.jQuery标准的绑定方式:

jQuery对象.事件方法(回调函数);       注:不传递回调函数,则会触发浏览器默认行为

              2.on绑定事件、off解除绑定

                     Jq对象.on(“事件名称”,回调函数)

                     Jq对象.off(“事件名称”)                如果off方法不传递任何参数,则将组件上所有事件全部解除

              3.事件切换:toggle

                     Jq对象.toggle(fn1,fn2…)

Day13

Maven

  1. 导jar包搜索:MySQL maven

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->

<dependency>

   <groupId>mysql</groupId>

   <artifactId>mysql-connector-java</artifactId>

   <version>8.0.16</version>

</dependency>

Day14

AJAX

  1. 概念:ASynchronous JavaScript And XML(异步的JavaScript和XML)
  1. 同步和异步:客户端和服务器端相互通信的基础上
  1. 同步:客户端必须等待服务器端的响应。在等待期间客户端不能做其他操作。
  1. 异步:客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他操作。
  1. 特点:
  1. 使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变的信息。
  1. 实现方式:
  1. 原生的JS实现方式(了解)
  1. jQuery实现方式
  1. $.ajax():语法:$.ajax({键值对})

//使用$.ajax()发送异步请求

$.ajax({

    url:"ajaxServlet",//请求路径

    type:"Post",//请求方式

//  data:"username=jack&age=23",//请求参数

    data:{"username":"jack","age":23},

    success:function (data){

       alert(data);

   },//响应成功后回调的函数

    error:function () {

       alert("出错了...")

   },//响应出错后回调函数

    data_type:"text",//设置接受到的响应数据的格式

})

  1. $.get():发送get请求
  1. $.get(url,[data],[callback],[type])
  1. url:路径
  1. data(选填):返回参数
  1. callback(选填):回调函数
  1. type(选填):响应结果的类型
  1. $.post():同get

JSON:

  1. 概念:JavaScript对象表示法
  1. Person p = new Person();
  1. p.setName("张三");
  1. p.setAge(23);
  1. var p = {"name"="张三","age"=23};
  1. JSON现多用于存储和交换文本信息的语法
  1. 进行数据的传输
  1. 比XML更小、更快、更易解析
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值