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
- 导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
- 概念:ASynchronous JavaScript And XML(异步的JavaScript和XML)
- 同步和异步:客户端和服务器端相互通信的基础上
- 同步:客户端必须等待服务器端的响应。在等待期间客户端不能做其他操作。
- 异步:客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他操作。
- 特点:
- 使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变的信息。
- 实现方式:
- 原生的JS实现方式(了解)
- jQuery实现方式
- $.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",//设置接受到的响应数据的格式
})
- $.get():发送get请求
- $.get(url,[data],[callback],[type])
- url:路径
- data(选填):返回参数
- callback(选填):回调函数
- type(选填):响应结果的类型
- $.post():同get
JSON:
- 概念:JavaScript对象表示法
- Person p = new Person();
- p.setName("张三");
- p.setAge(23);
- var p = {"name"="张三","age"=23};
- JSON现多用于存储和交换文本信息的语法
- 进行数据的传输
- 比XML更小、更快、更易解析