文章目录
HTML
系统结构
B/S 架构:Browser / Server,浏览器端/服务器端的交互形式。
-
优缺点:
升级方便,维护成本低(只需要升级和维护服务器端代码)
速度慢,体验差,不美观
-
支持的语言:
Browser:HTML、CSS、JavaScript……
Server:C、C++、Java、python……
C/S 架构:Client / Server,客户端/服务器端的交互形式。
基本概念
Hypertext Marked Language,超文本标记语言(不是编程语言),后缀名是 .htm 或 .html ,HTML 文档也叫做 web 页面,HTML 的运行使用浏览打开(HTML 运行在浏览器上,由浏览器来解析)。
VS 一般文本,一个 HTML 文件不仅包含文本内容,还包含一些 Tag(标记 / 标签 / 元素),通过 Tag 可以告知浏览器如何显示 HTML 文件,标记标签用来描述网页。
HTML 元素可以设置属性,属性可以在元素中添加附加信息,一般描述于开始标签。
Tag 通常成对出现(Opening Tag和Closing Tag),不区分大小写。
<html>
<head>
<title>Title of page</title>
</head>
<body>
This is my first homepage!
<b>This text is blod</b>
</body>
</html>
<html> 是第一个 Tag,告知用户浏览器只是 HTML 文件的头。
</html> 是最后一个 Tag,告知浏览器 HTML 文件到此结束。
<head> 和 </head> 之间的内容,是 Head 信息,头部信息主要是被浏览器所用,不显示(在用户浏览器里看不到)。但是不代表没有用,可以在 Head 信息里添加关键词,有助于搜索引擎搜索到该网页。
- 标题 title:不显示在 HTML 网页正文,显示在浏览器窗口最顶端的标题栏。
- 链接 link:建立与外部文件的链接。
- 样式 style:可以设置网页的内部样式表。
<title> 和 </title> 之间的内容,是文件的标题,是最常用的 head 信息,在用户浏览器最顶端的标题栏看到。
<body> 和 </body> 之间的内容,是正文。
<b> 和 </b> 之间的文字,用粗体(bold)表示。
HTML 元素:用来标记文本,表示文本的内容,如 title、body。
HTML 元素的属性:属性可以扩展 HTML 元素的能力,通常由属性名和值成对出现,就像 name=“value”,如<body bgcolor=“red”> 表示页面背景色为红色,background 属性设置页面背景图片,属性值就是图片路径。属性通常附加给 HTML 的 Opening Tag。
Tag
正文标题:HTML 用 <h1> 到 <h6> 定义正文标题,从大到小,每个标题自成一段。
<h1>
This is a heading!
</h1>
标题居中:<h1 align=“center”>标题名</h1>
段落划分:<p> </p>
换行:不新建段落的情况下换行,<br> 没有 Closing Tag
<p>
This
<br>is a para<br>
graph with line breaks
</p>
注释:<!- - This is a comment - ->
补充:HTML 文件会自动截去多余的空格,不管连续加多少空格都会被看作一个,一个空行也被看作一个空格。
加横线(分割线):<hr>
常用文本格式Tag:
Tag(成对) | Tag说明 |
---|---|
<b> | 粗体bold |
<i> | 斜体italic |
<del> | 文字当中划线表示删除 |
<ins> | 文字下划线表示插入 |
<sub> | 下标 |
<sup> | 上标 |
<blockquote> | 缩进表示引用 |
<pre> | 保留空格和换行 |
<code> | 表示计算机代码,等宽字体 |
看网页的 HTML 源代码:鼠标右键–> View Source。
HTML字符实体:要在网页中显示具有特殊含义的字符,如<,就要用到字符实体。字符实体由三部分组成:
- &
- 实体(Entity)名字或者是**#加上实体编号**
- ;
如要显示小于号:<;或者 <;
Entity Name | Entity Number | 显示结果 | 说明 |
---|---|---|---|
|   | 显示一个空格 | |
< | < | < | 小于 |
> | > | > | 大于 |
& | & | & | &符号 |
" | " | “ | 双引号 |
© | © | © | 版权 |
® | ® | ® | 注册商标 |
× | × | × | 乘号 |
÷ | ÷ | ÷ | 除号 |
超链接:<a href=“url”> </a>,href属性表示链接文件的路径。
target 属性:
- <a href=“url”_blank> </a>:表示点击链接时,会在一个新的窗口显示。
- <a href=“url” title=“name”> </a>:表示鼠标悬停在链接上时,会显示该超链接的文字注释。
相对路径:
- 同一个目录的文件引用,可直接写引用文件名。
- 不同目录下的文件引用,…/ 表示返回上级目录,…/…/ 表示返回上上级目录,返回两文件的同级目录,再进入引用文件目录,进入文件目录用 / 表示。
绝对路径:指带域名的文件的完整路径,如http://www.baidu.com。
表格:<table> </table>,表头<th>粗体显示。
设置表头(表名):<caption> </caption>
表格分行,每一行开始要用<tr>,结束用</tr>。
分单元格,每一个单元格开始要用<td>,结束用</td>。
在缺省情况下,不设置表格边界,默认不显示,同 <table border=“0”>。
用 colspan 属性表示包含多列的单元格,如 <th colspan=“2”>。
用 rowspan 属性表示包含多行的单元格,如 <th rowspan=“2”>。
表单:<form> </form> ,包含表单元素的区域,表单元素允许用户在表单中输入内容,比如:文本域(textarea)、下拉列表、单选框(radio-buttons)、复选框(checkboxes)等等。
多数情况下被用到的表单标签是输入标签 <input>,输入类型由类型属性 type 定义。
标签 | 描述 |
---|---|
<form> | 定义供用户输入的表单 |
<label> | 定义<input>元素的标签,一般为输入标题 |
<input> | 定义输入域 |
<textarea> | 定义文本域(可输入多行) |
<select> | 定义下拉选项列表 |
<option> | 定义下拉列表的选项 |
<button> | 定义点击按钮 |
<optgroup> | 定义选项组(给下拉列表的选项分组) |
列表:
有序:<ol> </ol> ,里面嵌套 <li> </li>表示定义列表项(1、2、……)。
无序:<ul> </ul>,嵌套 <li> </li>。
自定义:<dl> </dl>,里面嵌套<dt> </dt>表示列表项,里面再嵌套<dd> </dd>表示列表项里的内容。
字体大小:<p><font size=“2”> </font></p>。
字体风格:<p><font face=“arial”> </font></p>。
字体颜色:<p><font color="#FF0000"> </font></p>,表示这段字体颜色是红色。
注意:name、value、id
属性 name 相当于是一个变量名,value 相当于是一个变量的值,id 是用来唯一标识一个容器,来调节被 id 标识的容器的样式和动态效果。
常见页面错误
1×× | 信息提示,表示临时的响应 |
---|---|
2×× | 成功,表示服务器成功接收客户端的请求 |
200 | OK—客户端请求已成功 |
3×× | 重定向,客户端浏览器必须采取更多的操作来实现请求 |
302 | 重定向,对象已临时移动 |
304 | 自从上次请求后,请求的网页未修改过,一种很好的缓存手段 |
4×× | 客户端错误,请求有语法错误或请求无法实现 |
401 | Unauthorized,请求未经授权 |
403 | Forbidden,服务器收到请求,但拒绝处理 |
404 | Not Found,未找到,请求资源不存在 |
405 | 用来访问本页面的方法不被允许 |
5×× | 服务器错误,服务器未能实现合法请求 |
500 | INternal Server Error,内部服务器错误,服务器遇到错误不能完成该请求 |
503 | Server Unavailable,服务器目前无法处理请求 |
JavaScript 简单认识
JS 概述
JS(JavaScript)是一种直译式脚本语言,一种动态类型、弱类型(没有编译阶段,执行一行解释一行)、基于原型的语言。其解释器被称为 JavaScript 引擎,是浏览器的一部分,广泛应用于客户端的脚本语言,最早是在 HTML 网页上使用,目的是增加动态功能。
简单来说,JavaScript 是运行在浏览器上的脚本语言,语言的“目标程序”以普通本文形式(JSON)保存,作用是增强 HTML 页面的交互性。
JS 使用
语法:<script type=“text/javascript”> JS代码块 </script>
通过 <script> 标签在 HTML 页面中插入 JS 代码,<script type=“text/javascript”> 和 </script> 分别标记了 JavaScript 代码的开始和结束。
分号:JavaScript 也是用分号来结束一条语句,但一般情况下,分号只当一行有多条语句时才必须使用。
位置:
JS代码位置 | 作用 |
---|---|
head部分 | 将脚本中的函数插入 head 部分,确保函数在被调用之前就已经加载完成 |
body部分 | body 部分的脚本将在页面加载时被执行。在页面中插入脚本,脚本将伴随页面一起加载 |
外部脚本 | 调入外部脚本,将 JavaScript 写在一个外部文件中,并保存为以 .js 为扩展名的外部 JavaScript 文件,通过 src 属性调入 |
JS变量
-
JS 语言是弱类型语言,没有编译阶段,变量的数据类型由等于号右边的值决定,可以在脚本中改变。
变量是存储数据的容器。
-
语法格式:
- 变量声明:var 变量名;注意 JS 是区分大小写的。
- 变量赋值:变量名=变量值;如果没有手动赋值,那么系统默认赋值“undefined”。
-
变量作用域:
- 局部变量:在函数体内声明,函数执行时开辟内存空间,函数结束时释放内存。
- 全局变量:在函数体外声明,页面执行时开辟内存空间,页面关闭时释放内存。全局变量耗费内存空间,所以尽量使用局部变量。
注意:没有用 var 声明变量时,该变量无论在何处都属于全局变量。
JS 数据类型
-
原始类型:Undefined、Number、String、Null、Boolean
-
Undefined 类型只有一个值,就是系统默认赋值的undefined。
-
Number 类型范围:整数、负数、整数、小数、无穷大(Infinity)、无穷小(-Infinity)、不是数字(NaN–表示结果不是一个数字)
函数:
函数名 作用 isNaN() 判断是否为数字 parseInt() 将字符串转换成int类型 parseFloat() 将字符串转换成float类型 Math.ceil() 向上取整 -
String创建:
语法 父类 直接创建:str=“字符串” 原始类型 使用内置类:var str=new String(“字符串”) Object 注意:字符串既可以用单引号也可以用双引号表示,比较两个字符串使用 ==,不是 equals()。
函数:
函数名 作用 length 字符串长度 indexOf(String) 获取指定字符串 String 在当前字符串第一次出现的索引 lastIndexOf(String) 获取指定字符串 String 在当前字符串最后一次出现的索引 replace(String1,String2) 使用 String2 替换当前字符串与 String1 匹配的第一个子字符串 split(String) 使用 String 拆分当前字符串 subStr(startIndex,length) 从 startIndex 开始截取长度为 length 的子字符串 subString(startIndex,endIndex) 截取子字符串,从 startIndex 开始到 endIndex-1 结束 toLowerCase() 所有字符转换成小写 toUpperCase() 所有字符转换成大写 -
Null类型只有一个值:null
注意:typeof Null类型的变量 == “Object”。
typeof 是运算符,作用是在程序运行时动态获取变量的数据类型。语法:typeof 变量名
-
Boolean 变量的值:true 和 false。
-
null、NaN、undefined 的数据类型不一致,分别是 Object、Number、Undefined。
-
-
引用类型:Object 及其子类,Object 类型是所有类型的超类,自定义类型默认继承 Object 类。
JS条件语句
if、if …else…、if…else if…else、switch,语法都跟 Java 类似 。
JS 操作符
+ 、– 、*、/、%、++、– –、==、!=、>、<、>=、<=、&&、||、!、===(检查值和类型,全吻合才算相等)
两个字符串衔接在一起使用 +。
条件运算符:variablename = (condition) ? value1: value2;
JS 循环语句
for 循环:事先知道脚本应该执行几次
for…in:通过一组元素或对象属性进行循环,循环体针对每个元素/属性执行一次。
while 循环、do…while…循环,语法跟 Java 类似。
break、continue,用法同 Java。
JS 函数
实现某个特定功能的可重复利用的代码(等同于 Java 的方法),可以在事件触发或者被调用时来执行,可以在页面中的任何地方调用函数,还可以用外部 .js 文件的方式让其他页面也可以调用脚本。
函数在页面的开始部分(<head> 区域)定义。
如果想让浏览器在加载完页面后马上执行脚本文件,可以将脚本写入函数内。
语法:function 函数名(形参列表)
{
函数体;
}
- 注意:JS 函数在调用时,实际参数类型和个数没有限制,JS 函数不支持重载(后者覆盖前者)。由于 JS 没有指定类型,所以在可以在函数里 return 一切。
JS 弹出框
在 JS 里可以建立三种不同的弹出框
-
警示框:保证让用户的到信息(内容),用户必须按 OK 来继续。
语法:alert(“内容”);
-
确认框:用来让用户核实或接受一些信息,按 OK 返回真,按 Cancel 返回假。
语法:confirm(“内容”);
-
信息框:让用户在进入页面前输入内容,用户在输入值后,按 OK 返回输入的值,按 Cancel 返回空值 null。
语法:prompt(“内容”,”defaultvalue“);
JS 事件
通过 JS 我们能够建立动态的 web 页面,JS 能够察觉到时间有动作。We b页面中的每个元素都能出发 JS 函数的事件。
注意:事件通常是用函数来组合使用的,并且在事件发生前,函数是不会执行的!
可以插入 HTML 标签中来定义事件动作的属性:
事件 | 事件句柄(以属性的形式存在) | 说明 |
---|---|---|
blur | onblur | 元素失去焦点时 |
focus | onfocus | 元素获得焦点时 |
load | onload | 页面或图片加载完成时 |
change | onchange | 下拉列表选中项改变或者文本框内容改变时 |
select | onselect | 文本被选择时 |
reset | onreset | 重新点击鼠标按键时,表单重置 |
submit | onsubmit | 点击提交按钮时,表单提交 |
keydown | onkeydown | 按下键盘按键时 |
keyup | onkeyup | 放开键盘按键时 |
JSON 简单认识
-
JSON( JavaScript Object Notation)指 JavaScript 对象标记语言(表示法),是一种标准的轻量级数据交换格式的标记语言,基于 JavaScript 的一个子集,采用完全独立于语言的文本格式。
-
JSON 优点:
- JSON 格式数据容易处理,使用 Java 或 JavaScript 读写 JSON 格式数据较为容易。
- JSON 格式数据占用空间小,传输速度快,跟 XML 文件相比,XML 文件占用空间大且较难解析,但是 XML 更为严谨。
- JSON 是纯文本,有自我描述性(人可读),具有层级结构(值中存在值)。
- 可以通过 JavaScript 进行解析。
- 可以使用 Ajax 进行传输。
-
JSON 语法规则:
var jsonObj={“属性名”:属性值,“属性名”:属性值,……}
数据在名称/值对中(键值对),名称写在冒号前面(用双引号抱起来)值写在冒号后面(也用双引号引起来)。
数据由逗号分隔,一个花括号 {} 保存一个对象,方括号[]保存数组,数组中可以有多个对象。
值的类型:整数或浮点数、字符串(在” “中)、逻辑值(true、false)、数组(在[]中)、对象(在{}中)、函数、null。
两种数据的基本结构:
-
JSON 对象类型:JSONObject,key:value
如:“fruit”:{“foo”:”bar”}
-
JSON 数组类型:JSONArray,{key:value,key:value…}
如:”grade“:[1,2,3]
JSON 对象的属性值可以是任意类型,也被称为无类型对象。
-
-
补充
关于 eval() 函数:作用是将字符串当作一段 JS 代码解释并执行。
使用 eval() 函数的原因:
- Java 程序连接数据库获取到数据后,将其拼接成 JSON 格式字符串;
- Java 程序获得 JSON 格式字符串后,将其发送给浏览器;
- 浏览器获得 JSON 格式字符串后,调用 eval() 函数将其当作一段 JS 代码解释并执行。
Ajax 简单认识
-
JavaScript 的 Ajax 功能强大,制作网站的动态效果(动画、随鼠标移动/点击而改变)就是使用 JS 制作的,它比 JSP 更加灵活简单。
Ajax 全称 Asynchronous JavaScript And XML,译名为异步 JavaScript 和 XML,是指一种创建交互式网页应用的网页开发技术,用于创建快速动态网页。通过在后台与服务器进行少量数据交互,可以使网页实现异步更新,意味着可以在不重新加载整个页面(刷新页面)的情况下对网页的某部分进行更新。
Ajax 是利用现有的技术,实现局部刷新的方法,并非语言。其中 JavaScript 与 XML 是核心:
- JavaScript:负责创建异步对象,发送请求,操作 DOM(文档对象模型),更新页面的 DOM 对象;
- XML:负责规定数据在网络传播中的格式(现在 JSON 代替了 XML!)。
-
Ajax 的使用:
-
定义Ajax:要使用 Ajax 必须有下列代码,直接 copy,可以放在函数里:
<script type="text/javascript"> function 函数名() { if(window.XMLHttpRequest)//创建Ajax对象,直接copy {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } } </script>
-
定义消息传递方式:open 方法仅仅是定义消息传递方式,尚未把消息传递出去。
<script type="text/javascript"> function 函数名() { if(window.XMLHttpRequest)//创建Ajax对象,直接copy {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open(method,url,async);//规定请求的类型、url、以及是否异步处理请求 //method:请求的类型,post或get //url:文件在服务器上的位置,其中?表示后面要传递参数 //async:true异步,false同步 //例如:xmlhttp.open("get","demo.jsp?a=1&b=2",true); } </script>
-
设置回调函数,通过事件来触发:
<script type="text/javascript"> function 函数名() { if(window.XMLHttpRequest)//创建Ajax对象,直接copy {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open(method,url,async);//规定请求的类型、url、以及是否异步处理请求 //method:请求的类型,post或get //url:文件在服务器上的位置,其中?表示后面要传递参数 //async:true异步,false同步 //例如:xmlhttp.open("get","demo.jsp?a=1&b=2",true); xmlhttp.onreadystatechange=function () //直接copy { if (xmlhttp.readyState==4 && xmlhttp.status==200) { //回应本页面要执行的操作 /**例如: if(xmlhttp.responseText=="success") window.location.href="success.html"; else alert(xmlhttp.responseText); */ } } } </script>
onreadystatechange 事件:当请求被发送到服务器时,需要执行一些基于相应的任务,每当 readyState 改变时,就会触发 onreadystatechange 事件,readyState 属性存有 XMLHttpRequest 的状态信息。
XMLHttpRequest 对象的三个重要属性:
属性 描述 onreadystatechange 存储函数或函数名,每当 readyState 改变就会调用该函数 readyState 存有 XMLHttpRequest 的状态,从0到4发生变化:0—请求未初始化,1—服务器连接已建立,2—请求已接收,3—请求处理中,4—请求已完成且响应已就绪 status 200—“OK”,404—“NOT FIND” 在 onreadystatechange 事件中,规定当服务器响应已做好被处理的准备时,开始执行任务,即当 readyState 等于4 且 status 等于200时,表示响应已经就绪。
-
将请求发送到服务器,通过 send 方法来实现:
<script type="text/javascript"> function 函数名() { if(window.XMLHttpRequest)//创建Ajax对象,直接copy {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open(method,url,async);//规定请求的类型、url、以及是否异步处理请求 //method:请求的类型,post或get //url:文件在服务器上的位置,其中?表示后面要传递参数 //async:true异步,false同步 //例如:xmlhttp.open("get","demo.jsp?a=1&b=2",true); xmlhttp.onreadystatechange=function () //直接copy { if (xmlhttp.readyState==4 && xmlhttp.status==200) { //后端get或post方法执行后,回到前端这里,将要进行的相关处理,通过responseText获取后台servlet反馈的文本 /**例如: if(xmlhttp.responseText=="success") window.location.href="success.html"; else alert(xmlhttp.responseText); */ /**又如:理解 eval()函数 json=eval("("+xmlhttp.responseText+")") eval()函数可以把后端传向前端的 json字符串,转换成 js识别对象 这样我们就可以json.属性去访问内容 左右两边加括号是考虑了 json字符串是单个对象 的情况 */ } } xmlhttp.send();//若open中定义的方法是get,则send()形参列表为空 //若open中定义的方法是post,即需要像HTML表单那样post数据,那么需要在send方法前定义消息头,否则后端无法解析post请求 xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");//使用setRequestHeader()添加HTTP头 xmlhttp.send(String);//String就是希望发送给后端servlet的JSON数据 //例如:xmlhttp.send("sid="+sid+"&password="+password); } </script>
-
-
Ajax 基本原理
- 服务器响应:要获取服务器的响应,需要使用 XMLHttpRequest 对象的 responseText (获取字符串形式的响应数据,即 JSON 格式数据)或 responseXML (获取 XML 形式的响应数据,现在不用)属性。
- Ajax 异步的作用:局部刷新的核心对象是 XMLHttpRequest,异步对象存储在浏览器内存中,其创建和使用方法依赖 JavaScript 语法。
前后端分离
在 Web 开发中,我们一般想要使前后端分离,利用 Ajax 与 Servlet 接口实现前后端的数据交互,数据格式使用 JSON 格式。
-
前端传递 JSON 格式数据给 Servlet
使用 post 方法时,要传递的数据都写在 send 方法里。如:
var data={"name":"Evie","age":18}; xmlhttp.send(JSON.stringify(data));
-
Servlet 处理前端的请求
通过 HttpServletRequest 类,使用 get 请求方法时,查询字符串直接编码在请求的链接 url 中,Servlet 使用 getParameter() 来获取前端的数据。
-
后端将处理结果传递给前端
通过以下方法,输出数据到前台的 xhr.responseText
PrintWriter out = response.getWriter(); out.write();
通过 out.println() 输出页面。
XML 概述
XML 文件指可扩展标记语言(开发者在符合 XML 命名规则的基础上,可以根据自己的需求定义自己的标签),主要用来存储数据和配置文件信息,是纯文本。
Web Service 使用 XML 作为通用语言,实现了真正的跨平台、跨操作系统、跨语言的交互。
XML 文件严格区分大小写,属性值必须放在引号中,所有元素必须有关闭标签。
XML 文档形成一种树结构,必须包含根元素,是其他元素的父元素。
HTML VS XML:HTML 被设计用来显示数据,XML 被设计用来传输和存储数据。
引用场景:
- 作为系统或应用的配置文件使用,如 tomcat 中的 web.xml
- 作为应用程序的数据 / 日志存储文件
- 数据库功能之一,支持 XML 存储