JavaWeb知識點總結

》一:javascript

建立Web項目
項目說明:
一、java Resources:java源文件
二、WebContent:網頁內容
html、css、js、jsp、資源、配置文件等css


HTML:Hyper Text Markup Language超文本標記語言
做用:
標記描述網頁內容
語法規則:
一、不區分大小寫
二、固定標籤
三、標籤成對出現,單標籤
四、標籤能夠嵌套使用
五、屬性的值必須使用雙引號html


HTML中屬性,通常不建議使用
屬性名稱固定,屬性的值都須要使用雙引號前端

網頁中顏色:
一、rgb(r,g,b)
二、#xxxx
三、英文單詞
網頁中單位:
一、數字或數字px
二、數字%:佔用屏幕的比例
網頁中註釋
<!--註釋內容-->
路徑:
一、相對路徑
不帶盤符的路徑,相對,通常都是相對當前項目
二、絕對路徑
帶盤符的路徑,又叫物理路徑java


1、文檔標籤:
一、<!DOCTYPE> 該標籤告知瀏覽器文檔所使用的 HTML 規範
二、<html>標籤告知瀏覽器這是一個 HTML 文檔。
html 元素是 HTML 文檔中最外層的元素。
html 元素也可稱爲根元素
三、<head>不會出如今網頁正文中
四、<meta>出如今<head>能夠標記編碼格式、刷新、做者、描述、搜索關鍵字等
五、<body>網頁正在內容
經常使用標籤都是出如今<body>中mysql


2、文字標籤
一、<title>出如今<head>中,網頁標題
二、<h1>-<h6>標題,從1-到6逐漸變小
三、<font> 規定文本的字體、字體尺寸、字體顏色web

3、列表標籤
一、<ul>無序標籤,前面沒有序號,屬性:type:能夠更改列表簽名的符號
二、<li>列表中元素標籤
三、<ol>有序標籤,前面有序號,屬性:start:起始的值,type:類型,數字、字母等ajax

4、塊標籤
一、<span>行內塊標籤
二、<p>段落,默認換行
三、<div>塊,將網友分割成若干部分,經常使用屬性:align:對齊方式,left\right\center正則表達式

5、表格標籤
一、<table>表格,通常有行和列組成
經常使用屬性:
一、width:寬度
二、border:邊框的寬度
三、bgcolor:背景色
四、cellspacing:表格之間的間距--外邊距
五、cellpadding:表格內容的間距--內邊矩
二、<tr>:行,內部只能出現<th>或<td>
經常使用屬性:
一、align:對齊方式,內部元素的對齊
三、<th>列的標題,出如今tr中,表頭單元格
四、<td>列,數據單元格
經常使用屬性:
一、colspan:跨列,切記要包含本身
二、rowspan:跨行
th和td的區別?
th就是內部文字:加粗、居中
td內部文字正常。居左算法

五、<caption>表格的標題
六、<thead>表格的頭部,通常內部存放<th>
七、<tbody>表格的內容,通常存儲數據
八、<tfoot>表格的底部

6、表單標籤
一、<form>:表單標籤,能夠蒐集用戶的信息並提交給指定的服務器
二、<input>:用戶輸入標籤
經常使用屬性:
一、type:類型
取值:
text:文本框
password:密碼框
checkbox:複選框,能夠選擇多個
radio:單選框,只能選擇其一,可是要求擁有相同的name
button:按鈕
submit:提交,結合<form>表單,將表單內的數據提交給action
reset:重置,結合<form>表單,清空表單的內容

二、name:爲當前的標籤命名,未來獲取標籤數據時,會用到
三、class:爲當前標籤起個類名,主要用在CSS中
四、value:值,標籤的值,主要用在按鈕上
五、checked:是否選中,h4支持checked,h5支持true或false
三、<select>:下拉框,實現多個元素的單選或複選,須要結合<option>使用
經常使用屬性:
multiple:是否多選
name:名稱
disabled:是否可用
四、<textarea>文本域,能夠輸入多行和多列數據
經常使用屬性:
一、rows:行數
二、cols:列數

7、圖像&超連接標籤
一、<img>圖片
經常使用屬性:
一、alt:鼠標進入時的文字
二、src:加載的圖片路徑
三、width:設置圖片的寬度
四、height:設置圖片的高度
二、<a>超連接標籤,能夠跳轉到指定的url
經常使用屬性:
一、href:要打開的路徑
二、name:名稱

8、框架標籤
一、<frameset>框架集合標籤,主要用來包括框架的標籤
經常使用屬性:
一、cols:內部框架按照寬進行排布
二、rows:內部框架按照高度進行排布
二、<frame>框架,引用其餘網頁
經常使用屬性:
一、src:要加載的路徑
二、scrolling:滾動條的樣式,取值:yes 、no 、auto

9、HTML的特殊字符
一、< &lt;
二、> &gt;
三、空格 &nbsp;
四、版本編號 &copy;

10、H5新增標籤
一、<video>視頻,能夠在網頁播放視頻
格式:
<video src="movie.ogg" controls="controls">
</video>
二、<audio>音頻
三、<canvas>畫布
能夠繪製2d或3d圖
切記畫布須要結合js使用

 

form表單的get提交和post提交的區別
HTTP協議的get請求和postde 區別
get:獲得,將傳遞的參數隨着url進行傳輸
特色:
一、大小有限制
二、不安全,拼接url
三、中文亂碼,url編碼爲ISO-8859-1(不支持中文)
四、效率高
post:傳輸,將傳遞的參數以流的形式傳輸
特色:
一、大小無限制
二、安全
三、亂碼好解決
四、效率低

 

11、其餘標籤
一、<br/>換行
二、<hr/>分割線
三、&nbsp;一個空格

 

》二 CSS

HTML:超文本標記語言
描述內容顯示在網頁中
語法規則:
不區分大小寫
標籤成對,可是單標籤
屬性值必須雙引號
標籤固定
標籤嵌套使用

經常使用標籤:
meta
title
div
p
span
a:href
img:src
input
select
textarea
form:action&method
table:border

get和post

 

MIME類型:
就是標記文檔的類型
格式:大類型/小類型
css:text/css
js:text/javascript
圖片:image/jpg
全部圖片:image/*

 

一、CSS是什麼?
層疊樣式表 (Cascading Style Sheets)
定義如何顯示HTML元素的樣式
二、CSS的做用是什麼?
一、提升工做效率
二、多樣式層疊
三、提升了內容和樣式的分離

就是美化HTML顯示的內容

三、CSS的語法規則
規則:
選擇器{屬性名稱:值;屬性名稱:值}
eg:
h1{color:red;}
CSS不區分大小寫,可是id和class選擇器區分大小寫

四、CSS的引入方式有多少?
一、內嵌樣式
Html元素都有一個屬性:style,直接在html元素內使用
eg:
<h1 style="font-size:20px">今天好好聽課</h1>
二、內部樣式
在html文檔的<head>標籤中使用
<style type="text/css">
選擇器{屬性名稱:值}
</style>
三、外部樣式表
建立css文件,在網頁中的<head>中經過<link>標籤引用
eg:
<link rel="stylesheet" type="text/css" href="theme.css" />
rel:文本類型,告知引用的類型
type:MIME類型
href:外部樣式文件所在路徑
四、導入式外部樣式
@import url("外部樣式文件路徑")
不推薦使用,主要針對IE老版本

樣式做用的優先級:
內嵌->內部->外部
就近原則

五、CSS的選擇器
一、標籤選擇器
格式:HTML標籤名稱{屬性名:值}
二、類選擇器
要求html的標籤使用class屬性命名類名
格式:.類名{屬性名:值}
HTML標籤能夠擁有同一個class
三、ID選擇器
要求HTML的標籤使用id屬性名稱,id名不可重複
格式:#id名稱{屬性名:值}
四、派生選擇器
規則:選擇器(標籤、類、id) 內部標籤名稱{屬性名:值}
就是經過標籤的內部嵌套來修改指定標籤的樣式
五、屬性選擇器
規則:標籤名稱(能夠省略)[屬性名稱="值"]{屬性名:值}
就是經過標籤的屬性名稱來修改指定標籤的樣式

六、僞類選擇器
規則:標籤名稱:僞類名稱{屬性名:值}
經常使用的僞類:
:active 向被激活的元素添加樣式。 1
:focus 向擁有鍵盤輸入焦點的元素添加樣式。 2
:hover 當鼠標懸浮在元素上方時,向元素添加樣式。 1
:link 向未被訪問的連接添加樣式。 1
:visited 向已被訪問的連接添加樣式。 1
:first-child 向元素的第一個子元素添加樣式。 2
:lang 向帶有指定 lang 屬性的元素添加樣式。
:first-letter 向文本的第一個字母添加特殊樣式。 1
:first-line 向文本的首行添加特殊樣式。 1
:before 在元素以前添加內容。 2
:after 在元素以後添加內容。


六、CSS的屬性
一、背景屬性
background:背景色/圖
background-color:背景色
background-image:背景圖
圖片太小,標籤過大默認會出現背景重複
background-repeat:設置重複樣式
取值:
repeat 默認。背景圖像將在垂直方向和水平方向重複。
repeat-x 背景圖像將在水平方向重複。
repeat-y 背景圖像將在垂直方向重複。
no-repeat 背景圖像將僅顯示一次。
background-position:定位,顯示的位置
取值:
left
right
top
bottom
center
具體數值
background-attachment:設置背景圖是否跟着一塊兒動
取值:
scroll 默認值。背景圖像會隨着頁面其他部分的滾動而移動。
fixed 當頁面的其他部分滾動時,背景圖像不會移動。
二、文本屬性
一、text-indent:縮進
二、text-align:對齊方式
三、letter-spacing: 字母的間距
四、word-spacing:單詞的間距
五、text-transform:變換,大小寫轉換
取值:
none
uppercase
lowercase
六、 text-decoration:文本裝飾
取值:
none 默認。定義標準的文本。
underline 定義文本下的一條線。
overline 定義文本上的一條線。
line-through 定義穿過文本下的一條線。
blink 定義閃爍的文本。
七、direction: 文本方向
取值:
ltr 默認。文本方向從左到右。
rtl 文本方向從右到左。
三、字體屬性
一、font-family:字體類型
楷體、黑體、宋體等
二、font-style:設置是否傾斜
三、font-weight:設置字體的粗細
取值:
[100,900]
正常:400
加粗:700
四、font-size:字體大小
四、列表屬性(不經常使用)
一、list-style-image 將圖象設置爲列表項標誌。
二、list-style-type 設置列表項標誌的類型

五、表格屬性
一、width:寬
二、height:高
三、border:邊框
四、text-align 屬性設置水平對齊方式,好比左對齊、右對齊或者居中
五、vertical-align 屬性設置垂直對齊方式,好比頂部對齊、底部對齊或居中對齊:

六、輪廓屬性(不經常使用)
一、outline-color 設置輪廓的顏色。
二、outline-style 設置輪廓的樣式。
取值:
none 默認。定義無輪廓。
dotted 定義點狀的輪廓。
dashed 定義虛線輪廓。
solid 定義實線輪廓。
double 定義雙線輪廓。雙線的寬度等同於 outline-width 的值。
groove 定義 3D 凹槽輪廓。此效果取決於 outline-color 值。
ridge 定義 3D 凸槽輪廓。此效果取決於 outline-color 值。
inset 定義 3D 凹邊輪廓。此效果取決於 outline-color 值。
outset 定義 3D 凸邊輪廓。此效果取決於 outline-color 值。

三、outline-width 設置輪廓的寬度。

 

七、CSS新增屬性

CSS的註釋方式:
在<style>標籤下使用
/*註釋內容*/
文字的尺寸
em:自動適應尺寸,方便字體的放大或縮小
1em=16px
0.75em=12px

默認字體大小16px
px:像素,表達字體大小,縮放的時候有點很差用
爲了網頁的實用性,推薦字體大小單位em
%:百分比表達字體大小
italic和oblique的區別?
體(italic)是一種簡單的字體風格,對每一個字母的結構有一些小改動,來反映變化的外觀。
與此不一樣,傾斜(oblique)文本則是正常豎直文本的一個傾斜版本。
一般狀況下,italic 和 oblique 文本在 web 瀏覽器中看上去徹底同樣。

 

》三HTML+CSS綜合案例

 

網頁中:多個空格會起到一個空格的做用,換行也會起到一個空格的做用

註釋:
java中的註釋:
一、單行註釋 eg://註釋
二、多行註釋 eg:/*多行註釋*/
三、文檔註釋 eg:/**文檔註釋*/
HTML中的註釋:
一、<!--html的註釋-->
CSS中的註釋:只出如今<style>或css文件中
一、/*CSS註釋*/
JavaScript中的註釋:只出如今<script>或js文件中
一、單行註釋 eg://單行註釋
二、多行註釋 eg:/*多行註釋*/

 

一、JS是什麼?
JavaScript:腳本語言,運行瀏覽器
讓HTML進行交互

JAVA和JS沒任何關係

二、JS的做用是什麼?
一、獲取和設置HTML元素
二、動態改變頁面
三、校驗、檢測、對事件作出響應等
四、獲取瀏覽器、Cookie等信息


三、JS的引用方式?
一、在<head>引用
<head>
<script type="text/javascript">

</script>
二、在<body>引用
eg:
<body>
<script type="text/javascript">

</script>
</body>
</head>
三、引用外部js文件
<script type="text/javascript" src="js文件路徑"/>

js寫在head和body的區別?
head中,獲取不到HTML元素,由於此時HTML還未加載完成(函數外)
body中,能夠獲取HTML元素


四、JS的數據類型
java的數據類型:
一、基本數據類型:byte short int long float double char boolean
二、引用數據類型:數組、枚舉、類、集合、接口等

JS的數據類型:
一、原始數據類型
Undefined 、number、boolean、string、NULL
原始就是聲明以後直接賦值而不經過new來建立
var v=12;
var v=true;
var v="aaa";
二、引用數據類型
Number\Boolean\String\內置類型
就是經過new 建立的額類型都屬於引用類型

js中的typeof&instanceof 區別?
typeof:主要用來顯示原始類型,若是顯示引用類型不管什麼類型都爲Object
格式:typeof 變量名稱
eg: typeof v1

instanceof:主要用來驗證引用類型,返回值爲boolean類型
格式: 變量名稱 instanceof 引用數據類型 返回true或flase
eg: v1 instanceof Boolean

例如:
<body>
<script type="text/javascript">

var v1=new Number(2);

document.write("<br/>類型:"+(typeof v1));//類型:object
document.write("<br/>類型:"+(v1 instanceof Boolean));//類型:false

</script>
</body>

五、JS的基本語法

JS的語法規則:
一、區分大小寫
二、變量能夠聲明也能夠不聲明
三、出如今<script>標籤內部或js文件中
四、定義函數須要使用關鍵字function
五、函數能夠有參數和返回值
六、JS內置了不少對象能夠直接使用


一、變量
格式:var 變量名稱[=值]
js的變量能夠不聲明直接使用
var v;
v=12;
t=11;

變量命名規則:
一、變量對大小寫敏感(y 和 Y 是兩個不一樣的變量)
二、變量必須以字母或下劃線開始
三、不能是關鍵字


JS中的變量
全局變量:聲明在函數外的變量或者是函數內不帶var的變量
局部變量:聲明在函數內的變量且帶有var,做用域在函數內部

變量若是在函數內部不使用var進行聲明,那麼默認爲全局變量
若是使用var進行聲明那麼就屬於局部變量

二、運算符
java的運算符:算術、比較、賦值、邏輯、位、三目、字符串鏈接運算符
JS運算符差很少
須要特別注意的:
一、==和===的區別
==只比較內容(number)
===比較內容和類型

例:
x=5;
運算符 描述 例子
== 等於 x==8 爲 false
=== 全等(值和類型) x===5 爲 true;x==="5" 爲 false

1.1 邏輯運算符&&和||和!
邏輯運算符
邏輯運算符用於測定變量或值之間的邏輯。

給定 x=6 以及 y=3,下表解釋了邏輯運算符:

運算符 描述 例子
&& and (x < 10 && y > 1) 爲 true
|| or (x==5 || y==5) 爲 false
! not !(x==y) 爲 true


二、js也支持三目運算符
X?Y:Z

程序結構:
一、順序結構
二、分支結構
三、循環結構
三、分支語句
一、if(條件)
二、switch

四、循環
4.1for語句
格式:for(表達式1;表達式2;表達式3)
{循環體}
執行過程:
先執行表達式1再驗證表達式2true則執行循環體接着執行表達式3再執行表達式2true繼續false結束
4.2while語句
格式:while(表達式)
{
循環體;
}
4.3do/while語句
格式:do{
循環體;
}while(表達式);

 


六、JS的消息框
js主要提供了三種消息框
一、普通警告框
alert("內容");
二、確認框
confirm("內容")
會返回一個boolean值,若是點擊"肯定"返回true,反之false
三、提示框
prompt("提示內容","默認值");
會返回提示框中的輸入框的內容

七、JS函數
也就是java中的方法
提升代碼的複用
格式:

function 函數名稱([參數名]) {

//代碼塊
[return 返回值] //return 返回值 可有可沒有
}

例:
<head>
<script type="text/javascript">

function show1(){
document.write("OK<br/>");
}
</script>
</head>

八、JS事件
就是HTML的事件屬性
事件屬性的值通常都是JS函數
經常使用事件:
onclick 單擊
ondblclick 雙擊
onkeydown:鍵盤鍵按下
onmouseout 鼠標移出
onmouseover 鼠標進入
onblur 失去焦點
onfocus 獲取焦點
onchange 內容變化
onselect 選擇
onsubmit 提交-表單
onload 加載完

 

 


九、JS經常使用對象

 

十、JS之Window、History 、Location

 

十一、JS的DOM

二級聯動

 

十二、JS綜合案例
點名、抽獎、貪吃蛇、瀑布流等

 

》四

 

註釋:
java中的註釋:
一、單行註釋 eg://註釋
二、多行註釋 eg:/*多行註釋*/
三、文檔註釋 eg:/**文檔註釋*/
HTML中的註釋:
一、<!--html的註釋-->
CSS中的註釋:只出如今<style>或css文件中
一、/*CSS註釋*/
JavaScript中的註釋:只出如今<script>或js文件中
一、單行註釋 eg://單行註釋
二、多行註釋 eg:/*多行註釋*/

 

一、JS是什麼?
JavaScript:腳本語言,運行瀏覽器
讓HTML進行交互

JAVA和JS沒任何關係

二、JS的做用是什麼?
2.一、獲取和設置HTML元素
2.二、動態改變頁面
2.三、校驗、檢測、對事件作出響應等
2.四、獲取瀏覽器、Cookie等信息


三、JS的引用方式?
3.一、在<body>引用
eg:
<body>
<script type="text/javascript">

</script>
</body>
3.二、在<head>引用
<head>
<script type="text/javascript">

</script>
</head>
3.三、引用外部js文件
<script type="text/javascript" src="js文件路徑"/>

js寫在head和body的區別?
head中,獲取不到HTML元素,由於此時HTML還未加載完成(函數外)
body中,能夠獲取HTML元素


四、JS的數據類型
java的數據類型:
一、基本數據類型:byte short int long float double char boolean
二、引用數據類型:數組、枚舉、類、集合、接口等

JS的數據類型:
一、原始數據類型
Undefined 、number、boolean、string、NULL
原始就是聲明以後直接賦值而不經過new來建立
var v=12;
var v=true;
var v="aaa";
二、引用數據類型
Number\Boolean\String\內置類型
就是經過new 建立的額類型都屬於引用類型

js中的typeof&instanceof 區別?
typeof:主要用來顯示原始類型,若是顯示引用類型不管什麼類型都爲Object
格式:typeof 變量名稱
instanceof:主要用來驗證引用類型,返回值爲boolean類型
格式: 變量名稱 instanceof 引用數據類型 返回true或flase

五、JS的基本語法

JS的語法規則:
一、區分大小寫
二、變量能夠聲明也能夠不聲明
三、出如今<script>標籤內部或js文件中
四、定義函數須要使用關鍵字function
五、函數能夠有參數和返回值
六、JS內置了不少對象能夠直接使用


一、變量
格式:var 變量名稱[=值]
js的變量能夠不聲明直接使用
var v;
v=12;
t=11;

變量命名規則:
一、變量對大小寫敏感(y 和 Y 是兩個不一樣的變量)
二、變量必須以字母或下劃線開始
三、不能是關鍵字


JS中的變量
全局變量:聲明在函數外的變量或者是函數內不帶var的變量
局部變量:聲明在函數內的變量且帶有var,做用域在函數內部
變量若是在函數內部不使用var進行聲明,那麼默認爲全局變量
若是使用var進行聲明那麼就屬於局部變量

二、運算符
java的運算符:算術、比較、賦值、邏輯、位、三目、字符串鏈接運算符
JS運算符差很少
須要特別注意的:
一、==和===的區別
==只比較內容(number)
===比較內容和類型
二、js也支持三目運算符
X?Y:Z

程序結構:
一、順序結構
二、分支結構
三、循環結構
三、分支語句
一、if(條件)
二、switch

四、循環
4.1for語句
格式:for(表達式1;表達式2;表達式3)
{循環體}
執行過程:
先執行表達式1再驗證表達式2true則執行循環體接着執行表達式3再執行表達式2true繼續false結束
4.2while語句
格式:while(表達式)
{
循環體;
}
4.3do/while語句
格式:do{
循環體;
}while(表達式);

 


六、JS的消息框
js主要提供了三種消息框
6.一、普通警告框
alert("內容");
6.二、確認框
confirm("內容")
會返回一個boolean值,若是點擊"肯定"返回true,反之false
6.三、提示框
prompt("提示內容","默認值");
會返回提示框中的輸入框的內容

七、JS函數
也就是java中的方法
提升代碼的複用
格式:
function 函數名稱([參數名]) {

//代碼塊
[return 返回值]
}

 

八、JS事件
就是HTML的事件屬性
事件屬性的值通常都是JS函數
經常使用事件:
onclick 單擊
ondblclick 雙擊
onkeydown:鍵盤鍵按下
onmouseout 鼠標移出
onmouseover 鼠標進入
onblur 失去焦點
onfocus 獲取焦點
onchange 內容變化
onselect 選擇
onsubmit 提交-表單
onload 加載完

 

 


九、JS經常使用對象
JS是面向對象的編程語言
9.1Date日期類
獲取瀏覽器的時間(本地電腦的時間)
經常使用方法:
getDate() 從 Date 對象返回一個月中的某一天 (1 ~ 31)。 1 3
getDay() 從 Date 對象返回一週中的某一天 (0 ~ 6)。 1 3
getMonth() 從 Date 對象返回月份 (0 ~ 11)。 1 3
getFullYear() 從 Date 對象以四位數字返回年份。 1 4
getYear() 請使用 getFullYear() 方法代替。 1 3
getHours() 返回 Date 對象的小時 (0 ~ 23)。 1 3
getMinutes() 返回 Date 對象的分鐘 (0 ~ 59)。 1 3
getSeconds() 返回 Date 對象的秒數 (0 ~ 59)。 1 3
getMilliseconds() 返回 Date 對象的毫秒(0 ~ 999)。

 

JS中的定時器:
一、setTimeout:設置延遲執行的方法和延遲時間
參數說明:
一、要重複執行的方法
二、延遲的時間,毫秒
返回值:
一、當前定時器的標記(爲了中止)
二、clearTimeout:中止重複執行的方法
參數說明:
一、定時器開始的標記
重複間隔執行方法、計時器、定時刷新等
9.2Number數字
原始類型數字對應的引用類型
經常使用方法:
valueOf 返回一個 Number 對象的基本數字值。
toFixed 把數字轉換爲字符串,結果的小數點後有指定位數的數字。
toString 把數字轉換爲字符串,使用指定的基數。
9.3Math算術運算類
經常使用的算術運算
經常使用方法:
abs(x) 返回數的絕對值。
floor(x) 對數進行下舍入。
pow(x,y) 返回 x 的 y 次冪。
random() 返回 0 ~ 1 之間的隨機數。 1 3
round(x) 把數四捨五入爲最接近的整數。
9.4String字符串類
經常使用的字符串的引用類型
經常使用屬性:
length 字符串的長度
經常使用方法:
charAt() 返回在指定位置的字符。 1 3
charCodeAt() 返回在指定的位置的字符的 Unicode 編碼。
concat() 鏈接字符串。
substr() 從起始索引號提取字符串中指定數目的字符。 1 4
substring() 提取字符串中兩個指定的索引號之間的字符。
toLowerCase() 把字符串轉換爲小寫。 1 3
toUpperCase() 把字符串轉換爲大寫。
split() 把字符串分割爲字符串數組。
indexOf() 檢索字符串。
lastIndexOf() 從後向前搜索字符串。
match() 找到一個或多個正在表達式的匹配。 1 4
replace() 替換與正則表達式匹配的子串。 1 4
search() 檢索與正則表達式相匹配的值。

 

String的substr()和substring的區別?
在截取的起始索引都爲正數或0的話,沒有區別
若是截取的開始索引爲負數,那麼substr從要截取的字符串.length+負數索引處開始
而substring則把負數做爲0處理
簡而言之:substr負數的話倒着截取,substring從0截取

9.5Array數組類
存儲多個變量的引用類型,且長度可變
9.1數組的使用:
9.1.一、建立數組對象三種方式:
9.1.1.1:new Array();
9.1.1.2:new Array(長度);
9.1.1.3:new Array(元素);
9.2經常使用屬性
length:獲取數組的長度
9.3經常使用方法
concat() 鏈接兩個或更多的數組,並返回結果。 1 4
join() 把數組的全部元素放入一個字符串。元素經過指定的分隔符進行分隔。 1 4
pop() 刪除並返回數組的最後一個元素 1 5.5
push() 向數組的末尾添加一個或更多元素,並返回新的長度。 1 5.5
reverse() 顛倒數組中元素的順序。 1 4
shift() 刪除並返回數組的第一個元素 1 5.5
slice() 從某個已有的數組返回選定的元素 1 4
sort() 對數組的元素進行排序
splice() 刪除元素,並向數組添加新元素。


注意:
一、java中的數組和JS中數組不同
二、JS中數組的sort方法按照字母的升序進行排列,若是是數字進行排序須要定義排序函數(2個參數)
三、slice方法,
參數說明:
第一個參數:指定索引,刪除和新增的索引
第二個參數:刪除的元素個數 能夠爲0
第三個參數:新增的元素內容,能夠有多個

9.6Regexp正則類
校驗、匹配、替換等字符串的操做
JS中的正則語法:/正則語法/屬性
9.6.1正則中的語法
9.6.1.1:正則語法
跟java中同樣
. + * ? [] {} \d \D \w \D \b \B等
9.6.1.2:正則屬性
i 執行對大小寫不敏感的匹配。
g 執行全局匹配(查找全部匹配而非在找到第一個匹配後中止)。
m 執行多行匹配。
9.6.2正則類的經常使用方法
一、exec:執行正則驗證,返回匹配的內容,字符串索引停留在最後一次匹配的索引處
二、test:執行正則驗證,返回true(驗證成功)或flase
9.6.3String類中支持正則驗證的方法
一、match:匹配,支持全局匹配(能夠返回匹配到的全部的內容)
二、search:查找,從前日後查找是否符合正則的內容(不支持全局,第一次出現的)
三、replace:替換,參數說明:第一個參數:字符串或正則表達式,第二個參數:字符串、規定的符合、函數
四、split:切割




十、JS的全局函數
能夠在任何一個網頁中直接使用
經常使用函數:
isNaN() 檢查某個值是不是數字。 1 3
Number() 把對象的值轉換爲數字。 1
parseFloat() 解析一個字符串並返回一個浮點數。 1 3
parseInt() 解析一個字符串並返回一個整數。 1 3
String() 把對象的值轉換爲字符串。
encodeURI() 把字符串編碼爲 URI。
decodeURI() 解碼某個編碼的 URI。



十、JS的DOM
Document:文檔
經過DOM能夠獲取並操做HTML的元素
10.1DOM獲取HTML標籤對象的方式
10.1.1:經過ID
返回的是一個HTML元素對象
document.getElementById("id值");
10.1.2:經過name
返回的是網頁網頁中全部此name值的HTML元素數組
document.getElementsByName("name值");
10.1.3:經過HTML標籤名稱
返回的是網頁中全部此標籤的元素數組
document.getElementsByTagName("name值");
10.2DOM建立HTML元素
10.2.一、經過元素的innerHTML屬性添加
10.2.二、經過document的createElement方法建立並經過appenChild添加到指定元素下
方法說明:
一、createElement:建立元素,參數說明:一、元素名稱
二、appenChild:添加子元素,參數說明:一、要添加的子元素的對象

10.3DOM設置HTML屬性
一、經過對象的style類設置
二、經過對象的setAttribute設置
setAttribute方法說明
參數:
一、屬性名稱
二、屬性的值


十一、JS之BOM
瀏覽器對象,操做瀏覽器
Window、History 、Location
11.1Window窗口
一、open方法,建立或打開新的窗口
open(URL,name,features,replace):
參數說明:
一、要打開的url
二、名稱,標記窗口
三、窗口特徵屬性,經常使用的值:width\height\left\top等
四、替換,boolean類型,true:在當前窗口打開,false新建一個窗口
11.2History瀏覽器的歷史記錄
經常使用屬性:length:歷史記錄的數量
經常使用方法:
back() 加載 history 列表中的前一個 URL。
forward() 加載 history 列表中的下一個 URL。
go() 加載 history 列表中的某個具體頁面。 須要參數:要打開的歷史記錄的網頁

11.3Location網址信息
經常使用方法:
一、assign() 加載新的文檔。
二、reload() 從新加載當前文檔。
三、replace() 用新的文檔替換當前文檔。
注意:
assign和replace的區別?
assign只是在當前窗口中打開新的網址,因此能夠後退
replace將當前顯示的網頁的內容替換爲新的內容
11.4Navigator獲取瀏覽器信息
經常使用屬性:
appName 返回瀏覽器的名稱。
appVersion 返回瀏覽器的平臺和版本信息。


JS重點:
一、函數
二、事件
三、對象
四、DOM

 

 


JS綜合:
一、驗證碼
二、註冊頁面校驗
三、浮動窗
四、二級聯動
五、貪吃蛇
六、點名


H5的面板
canvans繪製流程:
一、獲取對應的<canvans>對象
var cvn=document.getElementById("id名稱");
二、獲取Context對象
var cn=cvn.getContext("2d");
三、設置樣式
cn.fileStyle="顏色";
四、繪製
cn.fillRect(x,y,width,height):繪製矩形
參數說明:
4.1x:左上角的x座標
4.2y:左上角的y座標
4.3width:寬度
4.4height:高度
moveTo:移動
lineTo:繪製線
arc:繪製圓

Web前端:
HTML:描述網頁
特色:
固定標籤
不區分大小寫
屬性的值必須雙引號

網頁:
<html>
<head></head>
<body></body>
</html>

重點記憶的標籤:
form表單
div
a\img\textarea\hr\ol\ul\table

H5:
video
audio
canvas
離線數據庫(SQLITE)
CSS:樣式表
美化網頁的
一、引用方式:內嵌、內部、外部
二、格式:選擇器{屬性名稱:值}
三、選擇器:標籤、類(.)、id(#)、派生、屬性
四、經常使用的屬性:背景、字體、文字、盒子(邊框、外邊距、內邊距)、列表、浮動、定位
JS:瀏覽器腳本語言
動態交互HTML和CSS
一、基本語法
二、內置對象:Array\String\Math\Date\RegExp
三、函數:function 函數名稱([參數]){ [return 返回值]}
四、屬性事件:onclick\onchange\onsubmit\onmouseover\onmouseout
五、JS之DOM:getElementById/getElementsByName/getElementsByTagName/createElement
六、JS之BOM:Window\History\Location

 

》五MySQL

數據存儲的方式:
一、非持久性存儲
就是會隨着程序的關閉而消失的存儲
存儲在內存中
數組和集合
二、持久性存儲
就是存儲在硬盤上
IO流和數據庫


1、數據庫:存儲數據的倉庫
好處:
一、效率高
二、容差率低
三、穩定性
四、備份和恢復

2、數據庫涉及的概念:
數據庫:DataBase,db文件,存儲在磁盤上,按照必定的規則進行數據的處理,可讓用戶共享
數據管理系統:DataBase Management System,DBMS就是操做數據庫的軟件

市場主流數據流:SQL Server、Oracle、MySQL、DB2等,移動端數據庫:SQLITE

3、數據庫的安裝與卸載
MySQL的安裝:
按照圖解,無腦下一步
MYSQL的卸載:
一、打開服務,中止mysql的服務
二、打開控制面板->程序->mysql卸載
三、在C盤和安裝盤下,搜索mysql,將搜索到的刪除
四、打開註冊表,搜索mysql,將找到的所有刪除

4、打開數據的方式
打開:
一、開始-全部程序-mysql
直接輸入密碼
二、在系統變量path上添加mysql的安裝目錄(C:\Program Files\MySQL\MySQL Server 5.5\bin)
先打開cmd
再輸入:mysql [-h主機地址] -u 用戶名 -p
會提示輸入密碼:

5、MySQL數據庫的組成
5.1數據庫服務器
就是數據庫安裝所在的機器,能夠供別人訪問
5.2數據庫
通常來講一個應用程序對應一個數據庫
切記:進入數據庫軟件以後,要選擇數據庫或建立數據庫
5.3表---對應的是類
一個數據庫會對應多個表,表是存儲數據
表的組成:
一、表名
同一個數據庫的表名不能重複
二、字段:域、屬性、表頭、列名
規定該列表示的意思
同一表中列名不可重複
三、數據
表中記錄的一條條數據

my.ini:MySQL的配置信息
6、SQL
SQL:Structure Query Language:結構化查詢語言
專門用在操做關係型數據庫的語言
任何關係型數據庫都支持SQL,可是每門數據庫都有細微的差異

SQL語句分類:
DDL(*)(Data Definition Language):數據定義語言,用來定義數據庫對象:庫、表、列等;
DML(**)(Data Manipulation Language):數據操做語言,用來定義數據庫記錄(數據);增刪改
DCL(Data Control Language):數據控制語言,用來定義訪問權限和安全級別;
DQL(*****)(Data Query Language):數據查詢語言,用來查詢記錄(數據)。查詢(select)
注意:SQL語句必須以;結尾

7、SQL語句
sql語句不區分大小寫
7.1DDL數據定義語句
包含的關鍵字:
7.1 CREATE:新建
能夠新建數據庫、表
7.1.1建立數據庫格式:
CREATE database [ if NOT EXISTS] 名稱 [CHARACTER SET 編碼格式] [COLLATE 比較方式];

建立一個編碼格式爲utf8的數據庫
create database db_study01 ;//默認編碼格式
create database db_study02 character set utf8 collate utf8_general_ci;//建立數據庫編碼格式utf8比較方式對應的

7.1.2建立表的格式:
CREATE table [ if NOT EXISTS] 名稱 (字段名稱 數據類型,……) [CHARACTER SET 編碼格式] [COLLATE 比較方式];

建立一張user表
create table user (id int,name varchar(20),age int);


7.2ALTER:修改
能夠修改數據庫的編碼和表的字段
7.2.1修改數據庫格式:ALTER database 名稱 [character set 編碼][cllate 比較格式];

修改數據庫mydb2的編碼格式爲gbk
alter database mydb2 character set gbk;
7.2.2修改數據庫表的格式:
ALTER table 名稱 [ADD|CHANGE|DROP|MODIFY] 字段名稱 [新名稱] [數據類型]

爲user表新增一個字段password 字符串32
alter table user add password varchar(32);
alter table user add test varchar(32);
爲user表中的name字段重命名爲username
alter table user change name username varchar(20);
刪除user表中的test字段
alter table user drop test;
修改user表中username字段的長度爲30
alter table user modify username varchar(30);


修改user的表名爲user1
rename table user to user1;

7.3DROP刪除
能夠刪除數據庫或表
7.3.1刪除數據庫格式:
DROP database [ if EXISTS] 名稱;
7.3.2刪除數據表格式:
DROP table 名稱;

刪除數據庫mydb4
drop database if exists mydb4;
刪除test3表
drop table if exists test3;


DML語句:主要是對錶中的數據進行新增、修改、刪除操做
7.4INSERT新增語句
格式:INSERT INTO 表名[(字段名稱)] values(值1,值2);

爲user表新增數據
insert into user (id,username,password) values(2,'賈金山','8888');
insert into user (id,username,password,flag) values(5,'戰旗','838',1);
insert into user (id,username,password,flag) values(6,'戰旗','838',1);
insert into user (id,username,password,flag) values(7,'戰旗','838',1);
insert into user (id,username,password,flag) values(8,'戰旗','838',1);
//簡寫形式
insert into user values(4,'曹怡',"123456");
insert into user(username,id,password) values('王星',5,"123");
7.5UPDATE修改語句
格式:UPDATE 表名 SET 字段名稱=值[多個字段] [where 條件]

修改id爲2的用戶名字爲金星
update user set username='金星' where id=2;
修改id爲3的用戶的名字和密碼
update user set username='網警',password="654321" where id=3;
修改user中全部的密碼爲123456
update user set password='123456';

 

7.6DELETE刪除語句
刪除表中的數據
格式:DELETE FROM 表名 [where 條件];

刪除user中名稱爲王星的人
delete from user where username='王星';

開發中的刪除:
一、真刪除
直接使用delete語句刪除指定的數據
二、假刪除
使用update 修該指定字段

爲user表新增一字段,flag標記是否有效,0有效1刪除
alter table user add flag int;
update user set flag=0;
select * from user where flag=0;
update user set flag=1 where id=4;

DQL語句:數據查詢語句,關鍵字:select
7.7SELECT查詢語句
主要用來查詢數據
格式:SELECT *|字段名稱|函數 from 表名 [where 條件] [order by 字段名稱] [group by 字段名稱][having 條件][limit 限制]

7.7.1*
*在查詢語句中表示當前表的全部字段(順序爲建表時字段順序)
7.7.2where條件:
經常使用的條件符合:
一、=、<、>、!=、<>、<=、>=
二、and:而且,同時知足
三、or:或者,知足其一
四、in (值,……):對應的字段的值再()裏,通常不連續的多個值
五、between A and B:在A和B之間,[A,B]
六、IS NULL:爲空
七、NOT:不
八、子查詢

查詢user表中全部信息
select * from user;
等價於
select id,username,password,flag from user;
查詢有效的名字
select username from user where flag=0;
查詢id大於1小於6的人
select * from user where id<6 and id>1;
等價
select * from user where id between 2 and 5;
查詢id爲4或者id爲8
select * from user where id=4 or id=8;
查詢id不爲6的人
select * from user where id!=6;
等價
select * from user where id<>6;
查詢id爲2或5或6的人
select * from user where id=2 or id=5 or id=6;
等價
select * from user where id in (2,5,6);

8、數據庫的備份和恢復
8.1數據的備份
在cmd中,輸入:mysqldump -u 用戶名 -p 要備份的數據庫 >路徑/文件名稱.sql
8.2數據的恢復
須要進入到Mysql
建立數據庫
並使用數據庫
source 要恢復的sql文件的路徑;

 

 

查看當前的全部數據庫:
show databases;
查看指定數據庫的建立語句
show create database 數據庫名稱;
查看數據庫的編碼格式
show variables like 'character%';
查看mySQL的支持的編碼
show character set;
查看對應編碼的比較集
show collation;
查看數據庫的全部表名
show tables;
查看數據庫中建表語句
show create table 表名;

MySQL數據類型:
INT 數字類型(4個字節)
SMALLINT 數字(2個字節)
BIGINT 數字(4個字節)
DATE 日期
TIME 時間
DATETIME 日期時間
VARCHAR(長度) 字符串
TEXT 文本
BLOB 二進制
FLOAT 浮點型
DOUBLE 雙精度

 


數據庫基本操做:
一、建立數據庫(create)
二、選擇數據(use)
三、建立表(create)
四、操做表數據(insert\delete\update\select)

 

》六

 

where 條件:
=\<\>\<>\!=\>=
or:或者
and:而且
between A and B:在A和B之間
in (值):在……內部
is null:爲null
not:不
select的標準格式:select *|字段列表|聚合函數 from 表名 [where 條件] [group by 字段] [having 字段][order by 字段 ASC|DESC][limit 起始索引,數量]]

1、模糊查詢
like:模糊查詢的關鍵字
_:1個字符
%:任意個字符

1.1以XX開頭
格式:select *|字段 from 表名 where 字段 like 'XX%';

查詢商品表中名字以華爲開頭的
select * from goods where name like '華爲%';
查詢商品表中名字以華爲開頭的且後面就一個字符的商品
select * from goods where name like '華爲_' ;

1.2以XX結尾
格式:select *|字段 from 表名 where 字段 like '%XX';

查詢商品表中價格以9結尾的
select * from goods where price like '%9';
查詢商品表中價格爲三位數且以9結尾
select * from goods where price like '__9';
等價於
select * from goods where price like '%9' and price >99 and price <1000;

1.3包含XX
格式:select *|字段 from 表名 where 字段 like '%XX%';

查詢商品表中名字包含o的商品
select * from goods where name like '%o%';


建立一個商品表:
create table goods(id int,name varchar(50),address varchar(50),price int);
新增數據
insert into goods(id,name,address,price) values(1,'華爲手機P9',"河南",3999);
insert into goods(id,name,address,price) values(2,'華爲手機P10',"河南",2999);
insert into goods(id,name,address,price) values(3,'蘋果7',"天津",999);
insert into goods(id,name,address,price) values(4,'蘋果7s',"北京",30999);
insert into goods(id,name,address,price) values(5,'小米6',"河南",9999);
insert into goods(id,name,address,price) values(6,'三星note7',"河南",99);
insert into goods(id,name,address,price) values(7,'三星note8',"首爾",999);
insert into goods(id,name,address,price) values(8,'中興G7',"山東",888);
insert into goods(id,name,address,price) values(9,'oppoR9',"河北",7777);


2、字段控制查詢

2.1查詢結果去重
distinct:對查詢結果去重

//查詢goods表中全部數據並去除重複的
select DISTINCT * from goods;

2.2對null值轉換
ifnull(字段名稱 , 待轉換的值):標記某個字段爲null的話轉換爲指定的數據參與運算
查詢goods表中id和price的和
select id+price from goods;
null值和任何類型的數據運算結果都是null

select id+ifnull(price,10000) from goods;

2.3別名
能夠爲運算的結果起別名: as 別名
也能夠爲表起別名,as能夠省略

查詢goods表中id和價格的和,要求價格爲null則做爲10000處理
select id+ifnull(price,10000) as total from goods;
等價於
select id+ifnull(price,10000) total from goods;

查詢goods表名價格小於100的商品
select * from goods where price <100;
等價於
select * from goods where goods.price <100;
等價於
select * from goods g where g.price <100;

 

3、排序
order by 字段 排序方式,……
排序方式:ASC:升序(默認排序),DESC:降序

查詢goods表中按照價格升序排列
select * from goods order by price;
等價於
select * from goods order by price ASC;

查詢goods表中按照價格降序排列
select * from goods order by price DESC;

查詢goods表中按照價格降序排列,若是價格相同按照id進行升序排列
select * from goods order by price DESC, id asc;

4、聚合函數
COUNT:計數,計算指定列不爲null的數量
MAX:計算指定列的最大值
MIN:計算指定列的最小值
SUM:計算指定列的總和
AVG:計算指定列的平均值

 

查詢goods表中的數據的數量
//查詢goods表中price不爲null的數據行
select count(price) from goods;
//查詢goods表中id不爲null的數據行
select count(id) from goods;
//查詢goods表中的數據行
select count(1) from goods;

查詢goods表中全部price的總和
select sum(price) from goods;
查詢goods表中價格最高和和最低的商品
select MAX(price) maxp,min(price) minp from goods;
查詢goods表中的評價價格
select avg(price) from goods;


5、分組
group by 字段名稱 [having 條件]


create table student (no int ,name varchar(5),sex varchar(2),age int);
insert into student values(17000501,'桑曉東','男',18);
insert into student values(17000502,'張文秀','男',18);
insert into student values(17000503,'曹怡','女',16);
insert into student values(17000504,'楊海婷','女',12);
insert into student values(17000505,'賈金山','女',16);
insert into student values(17000506,'盧林','男',28);
insert into student values(17000506,'盧林','男',28);

查詢學生表中男女的數量
select sex,count(no) from student group by sex;
查詢學生表中男女的平均年齡
select sex,avg(age) from student group by sex;
查詢每一個年齡的學生的數量
select age,count(no) from student group by age;
查詢學生表中每一個年齡的人數而且,人數等於的1

select age,count(no) ct from student group by age having ct=1;

where和having的區別
where:用在表名後,進行條件的篩選,主要用在分組前
having:用在group by以後,主要對分組的數據進行篩選


6、limit分頁
格式:limit 行索引,數量:從指定的行索引開始查詢,查詢指定的數量

查詢學生表中前三條數據
select * from student limit 0,3;
查詢學生表中第三條到底五條的學生
select * from student order by no limit 2,3;

分頁:每頁顯示2條數據,請查詢第三頁的數據
select * from student order by no limit 4,2;
//分頁算法
int count=2;int page=3;
select * from student order by no limit (page-1)*count,count;

查詢的順序:from-->where--->group by --->having--->order by --->limit

7、數據完整性
約束條件:
主鍵、惟一約束、自增、不爲null、默認值、外鍵等

7.1主鍵:惟一標記,不可爲null,不能重複
任何表必須有主鍵

添加主鍵的方式:
一、create table (字段 primary key)
二、create table (字段,primary key(字段名稱,字段名稱))
三、alter table 表名 add primary key(字段名稱);

//delete from student where no =(select no from student limit 5,1);

delete from student where no=17000506;
//添加主鍵爲no
alter table student add primary key(no);

create table grade(id int,name varchar(20),primary key(id));

7.2unique:惟一約束 ,不能重複,能夠爲null(多個)
create table test1(id int unique );

7.3auto_increment:自動增加,每次遞增1,通常主鍵使用
create table test2(id int primary key auto_increment,msg varchar(20) unique);

7.4not null:不爲null

create table test3(id int not null);

7.5default:默認值
create table test4(id int primary key auto_increment,psw varchar(6) not null default '123456');
insert into test4(psw) values(default);
insert into test4(psw) values(null);

7.6FOREIGN KEY :外鍵
外鍵:一個表中的某個字段的值必須爲另張表中的主鍵的值,這時咱們可使用外鍵約束
做用:當新增數據時,若是當前的外鍵的值在另張表的主鍵的值不存在,就報錯
CONSTRAINT 外鍵名稱(外鍵表中的名稱) foreign key(當前表中的外鍵) references 另張表名稱(主鍵名稱)
外鍵的添加方式:
一、create table 表名(字段,外鍵,CONSTRAINT 外鍵名稱(外鍵表中的名稱) foreign key(當前表中的外鍵) references 另張表名稱(主鍵名稱));
二、ALTER TABLE 表名ADD CONSTRAINT 外鍵名稱FOREIGN KEY(當前表中的外鍵) REFERENCES 另張表名稱(主鍵名稱));

create table student (sid int primary key auto_increment,name varchar(20),
fk_cid int,
CONSTRAINT fk_student_cid foreign key(fk_cid) references class (cid));
insert into student(name,fk_cid) values('小賈',1);


8、多表關係:
8.1一對一
2表數據一一對應
8.2一對多
2表數據,存在一對多
8.3多對多
2表數據,存在多對多的關係

9、三大範式
闡述如何建立表並定義之間聯繫
9.1第一大範式:
肯定列的原子性
就是每列的內容各不相同,要劃分爲最小單元
9.2第二大範式
確保有主鍵
主要用於區分每條數據,並定位
9.3第三大範式
表與表之間經過主鍵關聯
主鍵惟一

功能單一原則:表描述的或存儲的數據單一
關聯經過主鍵

10、多表查詢
主要用來查詢多張表
一、合併結果集
UNION :合併2個查詢的結果,要求2個查詢的列的個數和列的數據類型必須相同,會消除重複的數據
UNION ALL:合併2個查詢的結果,要求2個查詢的列的個數和列的數據類型必須相同,不會消除重複的數據

二、內部鏈接查詢
inner join on:內部鏈接
格式:select * from 表1 inner join 表2 on 表1字段=表2字段
查詢2個表的數據,內部鏈接的形式
select * from mytest1 inner join mytest2 on mytest1.id=mytest2.id2;

三、外部鏈接查詢
左外聯:left outer join on
格式:select * from 表1 left join 表2 on 表1字段=表2字段
左聯就是表1爲主表,表一數據都有,表2有就顯示,沒有就是顯示爲null
右外聯:right outer join on
格式:select * from 表1 left join 表2 on 表1字段=表2字段
右聯就是表2爲主表,表二數據都有,表1有就顯示,沒有就顯示爲null


左聯查詢2表
select * from mytest1 t1 left join mytest2 t2 on t1.id=t2.id2;
右聯查詢2表
select * from mytest1 t1 right join mytest2 t2 on t1.id=t2.id2;
等價於
select * from mytest2 t2 left join mytest1 t1 on t1.id=t2.id2;

四、鏈接查詢
查詢2個表中全部數據的組合結果
select * from mytest1,mytest2;
產生的結果集:笛卡爾積
結果的數量:表1的數量*表2的數量


11、內置函數
abs:取絕對值
bin:十進制轉換二進制
ceiling:向上取整
floor:向下取整
rand:隨機數:0.0-1.0(不包含)
now:如今日期+時間
current_date:如今的日期
current_time:如今時間
instr(字符串,要查找的內容):查詢對應的索引
ucase:轉換爲大寫
lcase:轉換爲小寫
replace(字符串,原來的值,新的值):替換
substring(字符串,開始索引,長度):截取

12、雜談
一、索引:
提升查詢的效率
經過索引快速進行查詢,速度會提升
二、視圖:
爲比較複雜的結果集建立一個虛擬的表
格式:create view 名稱 as select * from 表名;
三、觸發器:
一張表操做時,會對另外的表頁進行操做
格式:
delimiter $修改當前的結束符爲$(默認的結束;)
create trigger 觸發器名稱 before|after insert|delete|update on 表名主
for each row
begin
要執行的sql語句
例如:
insert into 表名被(字段名稱) values(new.表名主字段);
end $


有2張表,user和mylog
如今要求:新增用戶時,默認會記錄一條日誌

delimiter $
create trigger t_test after insert on user for each row
begin
insert into myLog(msg,time) values(new.name,current_date());
end $

四、快速備份新表
create table 新表名稱 select * from 舊錶

其餘數據庫:
select * into 新表名 from 舊錶;可是MySQL不支持

 

MySQL:
數據庫重點內容:
1、七大SQL語句
一、CREATE
二、ALTER
三、DROP
四、INSERT
五、UPDATE
六、DELETE
七、SELECT
where\group by \having\order by \limit
2、約束條件
主鍵、惟1、非null、default、自增、外鍵
3、多表查詢:
內聯、外聯、合併
4、聚合函數
AVG\MAX\MIN\SUM\COUNT

根據我的狀況進行記憶:
一、內置函數
now\rand\floor\substring\ifnull
二、索引
索引提升操做數據庫的效率
三、觸發器
爲某張表加自動操做

 

》七

 

1、JDBC:Java Data Base Connectivity java語言操做數據庫的API
是由類和接口組成的,而後交給數據庫廠商來實現的,因此想操做數據庫,
須要下載對應數據庫的驅動jar

JDBC涉及的類和接口:
一、DriverManager:驅動管理器
二、Connection:鏈接接口
三、Statement:操做SQL接口
四、ResultSet:結果集
五、PreparedStatement:操做SQL類,防止SQL注入,推薦使用

2、使用JDBC的步驟:
一、導入jar
二、動態加載驅動(註冊驅動)
Class.forName("com.maysql.jdbc");
三、獲取鏈接對象
Connection conn=DriverManager.getConnection("JDBC:mysql://主機IP:3306/數據庫名稱",用戶名,密碼);
四、獲取操做SQL對象
Statement stmt=conn.createStatement();
五、執行SQL
stmt.execute(SQL);//執行任何SQL語句。返回boolean類型,是否爲select語句
stmt.executeUpdate(SQL);//執行非select語句,返回受影響的行數
stmt.executeQuery(SQL);//執行select語句,返回查詢的結果集ResultSet
六、獲取結果集
ResultSet rs=stmt.executeQuery(sql);
七、關閉
rs.close();
stmt.close();
conn.close();

3、JDBC類或接口的說明:
3.1DriverManager:驅動管理類
管理數據庫驅動
經常使用方法:
static Connection getConnection(String url)
創建到給定數據庫 URL 的鏈接。
static Connection getConnection(String url, Properties info)
創建到給定數據庫 URL 的鏈接。
static Connection getConnection(String url, String user, String password)
創建到給定數據庫 URL 的鏈接。


3.2Connection:數據庫鏈接接口
附加鏈接到指定的數據庫
經常使用方法:
createStatement:獲取Statement對象

3.3Satement:操做SQL接口
將指定的sql語句發送到數據庫,並獲取結果
經常使用方法:
一、boolean execute(sql)
執行任何SQL語句,返回值true:select語句,這時能夠經過getResultSet(),false:非select語句
二、int executeUpdate(sql)
執行非select語句,返回操做的行數,若是爲DDL語句返回0
三、ResultSet executeQuery(sql)
執行select語句,返回結果集
四、ResultSet getResultSet()
獲取查詢的結果,配合execute使用

3.4ResultSet:結果集
記錄查詢的結果數據
經常使用方法:
一、boolean next:獲取下一行數據 ,返回值:true:下一行有數據,false:沒數據
二、first:返回到第一行
三、last:返回最後一行
四、getInt:獲取整型
五、getLong:獲取長整型
六、getFloat:獲取浮點型
七、getDouble:獲取雙精度浮點型
八、getString:獲取字符串
九、getBytes:獲取二進制
十、getDate:獲取日期
十一、getTime:獲取時間

注意:getXXX方法爲獲取指定列索引或列名稱的值
切記列索引從1開始
3.5PreparedStatement:防止SQL注入的操做SQL對象
防止SQL注入,效率高
經常使用方法:
setXXX(index,value):設置對應sql語句的第index個參數對應的值爲value
executeQuery:執行select語句
接收的SQL語句:
sql語句 where 字段=?


4、封裝數據庫操做
一、在src下建立xxx.properties
將須要用到的變量存儲
鍵值對形式
二、建立工具類
實現對數據庫的操做:增刪改查
三、使用

5、SQL注入
就是sql語句根據輸入進來的數據進行拼接,經過sql關鍵字形成不正確的結果
例如:' or 1=1 or '
如何防止這種行爲出現呢,就是使用PreparedStatement代替Statement
PreparedStatement的好處:
一、防止SQL注入
二、優化查詢
三、減小查詢次數,Statement會頻繁的查詢數據庫,可能會形成緩衝區的溢出


額外:
一、JAVASE加載第三方jar:
一、建立文件夾lib
二、拷貝jar到lib文件夾
三、build path將對應的jar加載到應用程序
二、HashTable和HashMap的區別?
一、父類不同
HashMap基於Map<K,V>
HashTable基於陳舊的Dictionary<K,V>
二、contains方法不同
HashMap:containsKey,containsValue
HashTable:contains---等價於containsValue
三、線程安全
HashMap:不安全,不能用在多線程併發中,效率高
HashTable:安全,效率低


三、Properties:持久性屬性集類
主要用來存儲和讀取配置文件,以.properties結尾

自學Properties類的使用

四、單元測試
@Test:標記這是一個測試方法
測試方法要求:
一、public修飾
二、無返回值
三、無參數

五、工具類設計原則
方便別人,麻煩本身
內部方法通常都是靜態方法
考慮儘可能全面

六、可變參數
格式:數據類型... 參數名稱、
參數能夠有0個或多個
出如今方法的聲明中,只能在參數末尾
在方法內部,看成數組使用

 

@Override:標記這個方法爲重寫

 

》八

 

溫故:
Web項目使用JDBC
Web項目導入jar包的方式:直接將jar複製到WebContent\WEB-INF\lib

經過jdbc建立如下表:
b_account:帳戶表
id 帳號 16位,字符串
name 姓名 50位
money 餘額
createtime 開戶時間
updatetime 最後一次更新時間

b_log:流水日誌表
id 序號
a_id 帳號
money 錢 存錢,取錢-
msg 備註信息
time 交易時間
type 類型 1:開戶 2:存錢 3:取錢 4:測試
注意:數據庫設計的時候,最好寫出一份設計文檔,標記表的意義

1、Transaction:事務
1.1事務是什麼?
事務就是保證多條數據操做要麼都成功,要麼都失敗,確保數據的完整性
其實就是將一組相同邏輯的操做放在一塊兒進行操做,所有都成功或都失敗
主要用在:多條數據的操做的一致性

1.2事務如何使用?
(***重要,記住)數據庫指令:
一、start transaction:開啓事務
二、rollback:回滾,取消本次操做
三、commit:提交,肯定本次操做
JAVA代碼中使用:JDBC
一、經過connection.setAutoCommit(false)設置開啓事務,true不開啓,false開啓事務
二、在try語句塊的結尾:connection.commit:提交
三、在catch中connection.rollback:回滾事務
練習:
一、請本身建立任意表,經過JDBC實現事務的操做

 


1.3事務的特性(ACID)
原子性(Atomicity) 原子性是指事務是一個不可分割的工做單位,事務中的操做要麼都發生,要麼都不發生。(例:所有發生或所有不發生) 
一致性(Consistency) 事務必須使數據庫從一個一致性狀態變換到另一個一致性狀態。(例:從一塊兒生到一塊兒死)
隔離性(Isolation) 事務的隔離性是多個用戶併發訪問數據庫時,數據庫爲每個用戶開啓的事務,
不能被其餘事務的操做數據所幹擾,多個併發事務之間要相互隔離。(例:犯錯誤被關進不一樣的小黑屋)
持久性(Durability) 持久性是指一個事務一旦被提交,它對數據庫中數據的改變就是永久性的,
接下來即便數據庫發生故障也不該該對其有任何影響。(例:淘寶買東西確認付款,一旦確認付款就沒法退錢)
(助記: 一位科學家偷了國家的「原子彈」(例:所有發生或所有不發生),領導開會「一致」(例:從一塊兒生到一塊兒死)贊成將他逮捕,警察抓到他把他進行「隔離」(例:犯錯誤被關進不一樣的小黑屋),法院判處他「持久性」(例:淘寶買東西確認付款,一旦確認付款就沒法退錢)蹲監)

1.4事務的隔離性
隔離性就是設置多個線程併發訪問數據時的一種權限
若是沒有隔離性:可能會引發:髒讀、不可重複讀、虛讀

SQL事務的隔離級別:
一、Serializable:可避免髒讀、不可重複讀、虛讀狀況的發生。(串行化)
二、Repeatable read:可避免髒讀、不可重複讀狀況的發生。MySQL默認
三、Read committed:可避免髒讀狀況發生。SQL Server |Oracle
四、Read uncommitted:最低級別,以上狀況均沒法保證。(讀未提交)
設置事務的隔離性:
set transaction isolation level 設置事務隔離級別
查詢當前數據庫的事務的隔離性:
select @@tx_isolation 查詢當前事務隔離級別

串行化:按照一個個的事務的前後順序執行

 

類和對象
類方法和實例方法
全局變量和局部變量

變量的生命週期
一、類變量--靜態屬性:類第一次加載就聲明,類銷燬的時候跟着銷燬
二、成員變量--實例屬性:對象建立的時候,對象被銷燬的時候
三、局部變量--定義在代碼塊內部的就是局部變量,做用域:當前代碼塊
java中括號:
{}:代碼塊,類的內容、方法、靜態代碼塊、構造等
[]:數組
():方法
<>:泛型

方法的定義和調用
接口和類的區別

 

》九

 

1、鏈接池
1.1鏈接池是什麼?
鏈接池就是管理數據庫鏈接對象
保證鏈接對象的數量,進而提高操做數據庫的效率

主要是併發訪問時,會產生n個鏈接對象,
這些都會對數據庫服務器產生很大的壓力,
因此須要合理的使用數據庫鏈接池,以減輕這種壓力

1.2鏈接池的工做原理
集合存儲鏈接對象,根據須要進行鏈接對象的建立、獲取、銷燬

1.3DBCP鏈接池
經常使用類:
BasicDataSourceFactory.createDataSource(Properties):經過配置文件獲取鏈接池對象
使用時,須要導入jar和對應的配置文件

1.4C3P0鏈接池
經常使用類:
ComboPooledDataSource:這是DataSource的子類,直接建立該類對象獲取數據庫鏈接池,加載默認配置文件

使用時,須要導入jar和對應的配置文件

2、JDBC工具類Dbutils
2.1QueryRunner:執行數據庫的增刪改查
經常使用方法:
一、update:執行非select語句
二、batch:批處理,同時處理多條相同的語句
三、query:執行SELECT語句

query方法都須要ResultSetHandler<T>接口對象
該接口就一個方法:
handle:轉換,參數:查詢結果集,返回值類型:泛型

通常經常使用默認的實現類:
一、ArrayHandler:將查詢結果的第一行數據,的每一個字段存儲到數組中並返回
二、ArrayListHandler:把結果集中的每一行數據都轉成一個數組,再存放到List中。
三、BeanHandler:將結果集中的第一行數據封裝到一個對應的JavaBean實例中
四、BeanListHandler:將結果集中的每一行數據都封裝到一個對應的JavaBean實例中,存放到List裏
五、ColumnListHandler:將結果集中某一列的數據存放到List中。
六、KeyedHandler(name):將結果集中的每一行數據都封裝到一個Map<列名,列值>裏,再把這些map再存到一個map裏,其key爲指定的key


3、特殊的數據類型的對應:
PreparedStatement ps;
1.DATA,TIME,TIMESTAMP date,time,datetime
存:ps.setDate(i,d); ps.setTime(i,t); ps.setTimestamp(i, ts);
取:rs.getDate(i); rs.getTime(i); rs.getTimestamp(i);
2.CLOB  text
存:ps.setCharacterStream(index, reader, length);
ps.setString(i, s);
取:reader = rs. getCharacterStream(i);
reader = rs.getClob(i).getCharacterStream();
string = rs.getString(i);
3.BLOB  blob
存:ps.setBinaryStream(i, inputStream, length);
取:rs.getBinaryStream(i);
rs.getBlob(i).getBinaryStream();
Project項目,通常都會框架
三層架構:
一、顯示層---H5或JSP
二、業務邏輯層---Servlet
三、數據層----實體類和數據庫

外到內:
一、顯示層:前端、Swing、main
二、邏輯層:service:處理業務邏輯
三、數據層:
一、entity/model:實體映射類
二、dao:操做數據庫


Bean類:
一、私有屬性
二、公有get和set方法
三、無參構造函數


3、JDBC&數據庫

獲取剛剛自增的id值:
select last_insert_id()

4、Properties:持久性屬性集類
主要用來存儲或加載配置信息

經常使用方法:
一、load:加載指定的配置文件
二、store:存儲配置信息
三、setProperties:設置要存儲的屬性
四、getProperties:獲取配置的屬性的值


一、前端
二、MySQL
三、Servlet
四、Ajax+JQuery

 

》十

 

1、Web
程序的分類:
一、C/S:Client/Server:客戶端服務器
請求流程:客戶端程序--->服務器--->數據庫服務器
二、B/S:Browser/Server:瀏覽器服務器
請求流程:瀏覽器---服務器----數據庫服務器

經常使用服務器:
一、Tomcat:免費,開源APACHE公司
二、WebLogic:BEA公司支持JAVAEE標準規範
三、WebSphere:IBM公司支持JAVAEE標準規範

 

2、Tomcat
目錄:都是英文目錄
1.1TomCat:服務器
APACHE:一家強大公司
基本上提供了web開發的一整套工具
TomCat服務器就是Apache下的一個服務器
特色:
一、開源
二、免費
三、兼容性

1.2TomCat目錄:
bin:可執行
webApps:發佈項目
work:運行的工做目錄
docs:文檔

1.3運行TomCat:
一、在bin目錄下找到startup.bat啓動服務器
二、在瀏覽器輸入:localhost:8080,能打開就是啓動成功

1.4在Eclipse中配置Tomcat
window-->preferences-->server-->runtime Environments->add->選擇TomCat安裝目錄->完成

1.5發佈項目到TomCat中
一、選擇項目,右鍵export
二、選擇war,選擇導出的路徑和名稱
三、將war文件放到TomCat的WebApps下
四、啓動Tomcat
五、訪問:localhost:8080/war文件名/

2、Servlet
2.1Servlet是什麼?
Servlet就是sun提供的運行在服務器上的API
每個Servlet都是獨立的應用
能夠實現:獲取Web瀏覽器或客戶端發送來的信息而且響應信息

2.2Servlet的使用
建立方式:
一、實現Servlet接口
須要實現方法:
一、init:初始化
二、service:服務
三、destroy:銷燬
四、servletConfig:獲取默認配置
五、servletInfo:獲取Servlet信息

二、繼承GenericServlet類
須要實現的方法:
一、service:服務
三、繼承HttpServlet類---直接new Servlet
須要實現的方法:
一、doGet:處理get請求
二、doPost:處理post請求

Servlet若是想讓外界使用,必須註冊(配置註冊仍是註解註冊)


2.3Servlet生命週期
生命週期:
一、init:初始化
初始化一些默認信息
二、service:服務
獲取請求和響應
三、destroy:銷燬
銷燬一些信息
Servlet的生命主要是爲了服務器優化


Thread生命週期:
一、新建
二、就緒
三、運行
四、阻塞
五、死亡

 


2.3Servlet的註冊:
Servlet能夠設置外界訪問的名稱
一、xml中註冊(Servlet3.0以前)
在項目的web.xml中使用固定標籤:
//標記這是一個Servlet
<servlet>
<servlet-name>外界訪問的名字</servlet-name>
<servlet-class>Servlet實現類名稱</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>外界訪問的名字</servlet-name>
<url-pattern>/匹配</url-pattern>
</servlet-mapping>
二、註解進行註冊(Servlet3.0(包含)以後)
@WebServlet("/外界訪問名字")


<!--配置Servlet,通常是在Servlet3.0以前需求配置 -->
<servlet>
配置外界訪問的名稱
<servlet-name>MyS2</servlet-name>
配置Servlet的類名
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
配置外界訪問的名稱
<servlet-name>MyS2</servlet-name>
<url-pattern>/*.do</url-pattern>
</servlet-mapping>

 

2.4Servlet的線程安全
Servlet引擎採用多線程進行對用戶的處理
併發時,存在線程安全。
儘可能使用局部變量,非得是全局時,注意加鎖

SingleThreadModel:單線程模型
對於Servlet採用單線程進行。可是會產生多個Servlet對象
在Servlet2.4以後都已通過時

2.5ServletConfig配置信息
獲取Servlet的配置信息
經常使用方法:
一、getInitParameter:獲取配置信息
二、getServletContext:獲取Web全局對象

ServletContext:Web應用對象
能夠設置過濾器、事件、Servlet、路徑等
getRealPath:獲取真實路徑,發佈路徑

 


Eclipse和MyEclipse

 

》十一

 

1、Request:請求
獲取客戶端或瀏覽器的請求內容
1.1HttpServletRequest
Http協議的請求對象
服務器會爲每一次的請求建立對應的request和response對象
請求對象包含的信息:
一、請求行
二、請求頭
三、消息正文
想要獲取客戶端信息,那麼就使用request

1.2請求行
能夠獲取請求的方法、查詢的內容、協議、資源等
經常使用方法:
getMethod方法返回HTTP請求消息中的請求方式。
getRequestURI方法返回請求行中的資源名部分。
getQueryString 方法返回請求行中的參數部分。
getServletPath方法返回Servlet的名稱或Servlet所映射的路徑。

1.3請求的網絡信息
能夠獲取遠程或服務器或本機的網絡信息
經常使用方法:
getRemoteAddr方法返回發出請求的客戶機的IP地址
getRequestURL方法返回客戶端發出請求時的完整URL

1.4請求頭信息
獲取header數據
經常使用方法:
getHeader:獲取指定key的值
getHeaderNames:獲取header的全部的鍵名稱
getContentType:獲取內容的類型MIME類型
getContentLength:獲取內容的長度
getCharacterEncoding:獲取編碼格式

referer:請求頭屬性
記錄上一次的網址

1.5請求方法:
一、get:請求,獲取
特色:
一、效率高
二、大小限制,通常爲1kb
三、不安全,參數信息隨着url進行傳輸
四、中文亂碼,參數隨着url傳輸
而url編碼格式爲ISO8859-1(不支持中文)

get亂碼產生緣由:
首先輸入的內容會按html頁面的編碼格式進行
在進行傳輸的時候url傳輸,而url編碼格式iso8859-1
因此內容由頁面的編碼格式轉換爲iso8859-1
get亂碼的解決:
在doGet方法中
首先將內容按照iso8859-1轉換爲字節數組
而後再經過HTML頁面的編碼格式將字節數組轉換爲字符串
String msg=request.getParameter("name");
if(msg!=null){
msg=new String(msg.getBytes("ISO8859-1"),"UTF-8");
}

對安全性要求不高就推薦使用Get
若是對安全性要求較高,推薦使用post

二、post:請求,發送
通常是傳遞數據到服務器
特色:
一、效率低
二、大小無限制
三、安全性相對較高,參數以流的形式
四、中文亂碼好解決

默認請求爲get請求

1.6獲取表單內容
表單的內容想提交到服務器,須要爲標籤設置name屬性,其中name的值就是鍵
<input>\<textarea>\<select>等都是能夠提交的

隱藏域:<input type="hidden"/>用戶看不見,可是能夠提交數據
圖片:<input type="image"/>能夠提交點擊的座標,並且還能默認提交
下拉框<select>也是能夠傳遞

表單提交時,防止用戶操做太快,通常會進行提交校驗,只讓提交一次

1.7獲取參數信息
獲取表單請求的參數信息
經常使用方法:
一、getParameter:獲取指定key的值
二、getParameterValues:獲取指定key的多個值(多選)
三、getParameterNames:獲取全部的參數名稱
四、getParameterMap:獲取全部的參數值

RandomAccessFile:隨機讀取文件類
惟一一個具備讀取和寫入的類

 

 

2、Response:響應
對客戶端或瀏覽器進行數據的響應

2.1響應狀態碼
就是服務響應的狀態碼
2開頭:成功 200所有成功,206部分紅功
3開頭:重定向 須要請求另外的網址
4開頭:錯誤,客戶端或瀏覽器錯誤
5開頭:錯誤,服務端錯誤

2.2設置消息頭
設置響應的消息頭
經常使用方法:
一、setHander:設置消息頭
二、addHander:添加消息頭
三、setContentType:設置正文類型
四、setCharacterEncoding:設置響應的編碼格式

2.3響應內容
向客戶端或瀏覽器回覆信息
經常使用方法:
一、getWriter:打印輸出字符流 print或println
二、getOutputStream:輸出字節流,非文本內容



2.4跳轉
經常使用跳轉分爲2種:
一、重定向
客戶端跳轉
response.sendRedirect("跳轉的網址");
特色:
一、能夠跳轉到任何一個網頁
二、地址欄改變
三、不可攜帶request和response
四、客戶端進行2次請求

二、轉發
服務端跳轉
request.getRequestDispatcher("當前Web的網頁").forward(request, response);
request.getRequestDispatcher("當前Web的網頁").include(request, response);

特色:
一、只能跳轉到當前項目的網頁
二、地址欄不變
三、能夠攜帶request和response
四、客戶端請求1次
forward&include的區別?
forward:能夠對Response進行修改狀態碼和消息頭
include:不能夠

 

》十二

 

數據交互格式:
一、HTML
二、JSON
三、XML
都是跨平臺、跨網絡、跨編程語言

1、XML
1.1Extensible Markup Language:可擴展的標記語言
是一種通用型數據交互的格式

與HTML的區別?
HTML:
不一樣點:
一、固定標籤
二、語法不嚴謹:能夠有結束,也能夠沒有
三、不區分大小寫

相同點:
四、屬性的值必須使用雙引號
五、標籤能夠嵌套
XML:
不一樣點:
一、自定義標籤
二、語法嚴謹:標籤有開始就必須有結束
三、區分大小寫

相同點:
四、屬性的值必須雙引號
五、標籤能夠嵌套

1.2XML語法

XML具備嚴謹的語法
語法規則:
一、自定義標籤
二、區分大小寫
三、標籤有開始必須有結束
四、只有一個根節點
五、標籤能夠嵌套
六、標籤命名,以字母、數字、下劃線組成,以字母開頭
七、屬性的值必須使用雙引號

1.3XML組成
xml由2部分組成
一、前導區
固定格式:<?xml version="1.0" encoding="編碼格式" ?>
描述此文檔爲xml文檔,標記版本號,編碼格式
二、數據區
只能以根標籤和結尾
根標籤:惟一
<老邢>
<子標籤></子標籤>
<子標籤></子標籤>
<子標籤></子標籤>
<子標籤></子標籤>
<子標籤></子標籤>
</老邢>
1.4XML解析
目前經常使用解析:
一、dom:標準,java支持
二、sax:java支持
三、dom4j:民間方式,第三方jar
四、pull:谷歌
五、xpath:對xml元素進行查詢

1.4.1DOM解析XML
java支持,將整個文檔讀取完只會再開始解析
解析步驟:
一、建立解析工廠
二、建立解析器
三、設置解析文檔並獲取文檔對象
四、獲取根節點
五、依次獲取子節點並遍歷


xml中的節點和元素
Node:xml中的任何內容
主要包括:
標籤(文檔標籤、元素標籤)、文本內容
Element:元素
繼承的Node
就是能夠擁有子標籤和屬性、值的節點

元素就是對象
節點就是屬性

 

 

1.4.2SAX解析
實時解析,邊讀取邊解析
使用步驟:
一、建立DeafultHander的子類:定義解析模板
二、建立解析工廠
三、建立解析器
四、設置解析文檔並開始解析
五、獲取解析結果

建立自定義的DeafultHander
須要注意的方法:
一、startDocument:開始文檔,無參
二、endDocument:結束文檔,無參
三、startElement:開始標籤
參數說明:
一、命名空間
二、本地名稱
三、標籤名稱
四、屬性集
四、endElement:結束標籤
參數說明:
一、命名空間
二、本地名稱
三、標籤名稱
五、character:文本內容
參數說明:
一、字符數組
二、起始索引
三、長度
1.3Dom for Java
Dom4J:解析xml的方式
使用步驟:
一、建立解析器
SAXReader reader=new SAXReader();
二、設置解析文件並獲取文檔對象
Document document=reader.read("students.xml");
三、獲取根元素
Element root=document.getRootElement();
四、依次獲取全部的子元素
elements
五、獲取元素的屬性或內容
element.attributeValue("屬性名稱"):獲取屬性的內容
element.getStringValue():獲取元素的內容
六、獲取結果
Entity
List<T>
1.4XPATH
主要用來進行查詢xml文檔的節點信息
也能夠用來解析

2、JSON
2.1JSON目前互聯網使用最爲普遍的一種數據交互的格式
跨平臺、跨網絡、跨編程語言

json語法符合:
{}:對象
[]:數組
:鏈接屬性名稱和值的
""屬性名稱或字符串類型的值
,多個屬性或元素
JSON就是由上述的語法符合組成的字符串
JSON能夠用來描述數組或對象

{"no":1,"name":"張三"}
{"stu":{"no":1,"name":"張三"}}
[{"no":1,"name":"張三"}]
[1,2,3]
{"list":[{"no":1,"name":"張三"},{"no":1,"name":"張三"}]}

2.2解析方式
一、JSON官方
JSONArray:解析數組 []
經常使用方法:
length:元素個數
getXXX(index):獲取指定索引的元素對象

JSONObject:解析對象 {}
經常使用方法:
keys:獲取全部的屬性名稱
getXXX:獲取指定屬性名稱的值
optXXX:獲取指定屬性名的值
putXXX:添加指定的屬性
遇到{用JSONObject,遇到[用JSONArray

二、Gson谷歌
要求JSON字符串的數據關係必須爲類的映射
其實就是一個{}就是一個類
Gson:類
formJson:解析對應的json字符串
解析對象:fromjson(json,類.class)
解析數組:fromjson(json,new TypeToken<List<類>>)(){}.getType())

三、FASTJSON快速解析
要求類與json字符串相匹配
JSON:工具類
靜態方法:
一、parserObject(json,類.class):解析對象
二、parserArray(json,類.class):解析數組

注意:
Gson、fastjson
都是對類的要求:字符串中有幾個{}就有幾個類,({}中有幾個屬性類就幾個屬性)

 


XML會解析
JSON會解析

 

》十三

 

流按照功能劃分:
一、節點流:直接操做數據的流
文件流、內存流
二、過濾流:操做流的流

1、導入文件內容到數據庫
一、經過流獲取要導入的內容
二、獲取數據,並按照格式進行切割
三、添加到數據庫

create table citycode(id int primary key auto_increment,code int unique,name varchar(20),s_name varchar(20),f_name varchar(20),time datetime);

 

2、JSP
2.1JSP:Java Server Pages
就是一個頁面:能夠寫HTML標籤還能夠java代碼

簡化的Servlet
彌補Servlet的不足

JSP最終就會轉換爲Servlet
JSP頁面中寫的HTML標籤或JSP語法最終都是在對應的餓service方法經過輸出流寫出

JSP語法:
<%! %>:定義方法、建立全局變量等,這裏面的代碼最終在jsp對應的類中,方法外部起做用
<% %>:調用內置對象,java語句等代碼,這裏的代碼最終在jsp對應的類的service方法中
<%= %>:顯示對應變量的值

2.2JSP的組成:
一、JSP模板元素:就是jsp頁面的HTML
二、JSP表達式:主要就是在界面顯示數據,切記不可有;
格式:<%= 變量|表達式|方法%>
三、JSP腳本片斷:只能出現java代碼,嚴格準守java語法規則,能夠調用內置對象、輸出內容、建立局部變量等
格式:<% 片斷; %>
四、JSP聲明:聲明全局變量或方法,這裏的代碼塊會出如今service方法的外部,類的內部
格式:<%! 聲明屬性或方法 %>
五、JSP註釋:JSP的註釋並不就會輸出到頁面
格式:<%--JSP註釋--%>

 

三指

九對
四域
2.3三大指令
指令:告訴JSP引擎頁面的信息
格式:<%@ 指令名稱 屬性名稱="值" %>
2.3.1page
告訴JSP引擎當前頁面的信息
格式:<%@ page 屬性=值 %>
經常使用屬性:
language:語言
import:導包
contentType:正文類型,MIME類型和編碼格式
session:會話 值爲boolean類型,true:有,false:沒有
errorPage:錯誤頁 值:爲錯誤頁面的url
isErrorPage:是否須要異常對象
2.3.2include
加載其餘html\文件、jsp等
格式:<%@ include file="路徑" %>
這種加載稱爲靜態加載

2.3.4taglib
引用標籤庫,經常結合着JSTL使用
格式:<%@ taglib uri="標籤庫地址" prefix="名稱" %>
做用:在JSP頁面中導入JSTL標籤庫。替換jsp中的java代碼片斷。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

2.4九大隱式對象
九大隱式對象就是根據配置會默認建立的對象
如下爲經常使用內置對象:
2.4.1request:請求對象---HttpServletRequest
2.4.2response:響應對象--HttpServletResponse
2.4.3session:會話---HttpSession
2.4.4out:輸出字符流對象---PrintWriter
2.4.5pagecontext:頁面域對象---PageContext
2.4.6page:this---當前jsp產生的Servlet對象
2.4.7application:全局域對象---ServletContext
2.4.8execption:異常----Throwable
2.4.9config:配置----ServletConfig

2.5域
域就是根據做用域不一樣而劃分的對象,能夠攜帶屬性數據
經常使用的域:
一、application:全局,整個Web應用,建議少用
存儲的生命週期最爲悠久,只有網站中止運行才銷燬
二、session:會話,每個用戶的訪問都是一個會話
使用最爲普遍,通常用來作,存儲登錄信息、購物車
三、pagecontext:頁面對象,整個頁面有效,用的很少
四、request:每次請求
主要記錄請求的信息,使用最爲普遍
通常使用域
setAttribute(key,value):設置屬性,對應的key存在就修改,不存在就是添加 value:能夠是自定義類對象
getAttribute(key):獲取指定key的值

 

》十四

 

1、JSP元素
也稱爲JSP動做
格式:<jsp:動做名稱 屬性名稱="值"/>
經常使用:
一、include
做用:動態包含其餘頁面,能夠傳遞參數
格式:<jsp:include page="包含的文件路徑" flush="是否刷新"></jsp:include>

動態包含和靜態包含的區別?
動態包含:jsp元素
一、格式:<jsp:include page>
二、加載時機,運行到此處的時候加載,每一個jsp都會產生java文件
三、傳遞參數
靜態包含:jsp指令
一、格式:<%@ include file%>
二、剛開始就加載,只會產生當前的java文件,其餘是將最後的靜態頁面加載到當前頁面
三、不傳遞參數

注意:若是一個jsp頁面被加載到其餘頁面使用,建議直接寫標籤或jsp語法

二、forward
做用:實現頁面的跳轉,其實就是請求轉發
格式:<jsp:forward page="要跳轉的頁面路徑"></jsp:forward>
能夠攜帶參數
注意:部分狀況該標籤雙標籤,必須有參數,單標籤不須要
三、param
做用:在使用include或forward時傳遞出參數
格式:<jsp:param name="key" value="value"/>

 

2、EL
EL:Expression Language:EL表達式,簡化JSP表達式
格式:${域中的屬性名稱|param.參數名稱|cookie.名稱}
顯示結果
開發經常使用EL作如下事情:
一、獲取請求參數的值:${param.參數名稱}
二、獲取域中屬性的內容:${XXXScope.屬性名稱}
三、獲取Cookie中的內容:${cookie.名稱}

${dog.name}
${dog["name"]}

3、JSTL
JSTL:Java Server Pages Standard Tag Library:JSP標準標籤庫
在Eclipse中須要導入jar包
myEclipse不須要

使用步驟:
一、導入jar包
二、在JSP文檔使用
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
三、在文檔中使用JSTL標籤
直接<c:out>

經常使用標籤:
<c:out value="輸出的內容">
<c:set >
<c:remove>
<c:if>
<c:choose>
<c:forEach>


4、Cookie
會話狀態,存儲HTTP請求或響應過程的信息
將信息保存在客戶端的磁盤

獲取Cookie:request.getCookies
新增Cookie:response.addCookie

5、Session

 


6、回顧
Servlet:java運行在服務器的api
主要功能:獲取瀏覽器或客戶端的請求,迴應數據

Servlet的建立方式:
一、HttpServlet
二、GeneralServlet
三、Servlet
Servlet的生命週期:
一、init:初始化
二、service:服務
三、destroy:銷燬
Servlet的註冊方式:
一、使用註解@WebServlet
二、使用xml配置
Servlet使用步驟:
一、建立Servlet類
二、重寫對應的方法doGet、doPost、service
三、註冊 註解的形式
四、運行在服務器
五、訪問

HttpServletRequest:請求

HTTP協議的消息組成:
一、請求行:獲取方式、協議類型、路徑等
二、請求頭:獲取正文類型、編碼格式、刷新等
三、請求內容:參數或屬性

請求屬性:能夠存儲各類數據類型
getAttribute:獲取指定key的屬性值
setAttribute:設置屬性
removeAttribute:移除屬性

請求參數:只能存儲字符串
getParameter:獲取指定參數的值
getParameterValues:獲取指定參數的全部值。checkbox

跳轉:
經常使用的跳轉方式:
一、客戶端跳轉:重定向
response.sednRect("頁面路徑")
不可傳遞request
二、服務端跳轉:請求轉發
request.getRequestDispatcher("頁面路徑").forward(request,response);
request.getRequestDispatcher("頁面路徑").include(request,response);


中文亂碼:
get若是亂碼:iso8859-1---->utf-8

 

HttpServletResponse:響應

回覆信息:
一、response.getWriter:字符流
二、response.getOutputStream:字節流

設置消息頭:
一、setContentType("text/html;charset=utf-8")
二、setContentLength:設置內容的大小
設置狀態響應碼:
一、setStatue()

經常使用的網絡數據交互格式:
一、HTML
二、XML
三、JSON

JSON解析:
{}:對象
[]:數組

根據對應的json字符串建立類,從裏往外創
經常使用解析技術:
一、JSON源生
JSONObject:
getXXX(key)

JSONArray:
getXXX(index)
length():長度

二、Gson
gson.fromJson(json,Class):解析對象
gson.fromJson(json,new TypeToken<List<T>>(){}.getType()):解析數組
三、FastJson
JSON.parserObject(json,Class)
JSON.parserArray(json,Class)


XML:可擴展的標記語言
經常使用解析:
一、DOM
區分:Node和Element
二、SAX
自定義DefaultHandler
三、DOM4J
SAXReader
四、XPATH
selectNodes/selectSingleNode

 

JSP:Java Server Page
就是HTML和Servlet的組合

重點:
<%! %>:聲明
<% %> :操做
<%= %> :顯示

1、JSP語法:
一、<%! 聲明方法、屬性 %>:定義屬性、方法
二、<% 代碼塊,運行在_jspService %>:操做內置對象
三、<%=變量|表達式 %>:顯示數據

2、JSP組成:
一、JSP模板元素:HTML標籤
二、JSP代碼片斷:<% %>
三、JSP表達式:<%= %>
四、JSP聲明:<%! %>
五、JSP註釋:<%-- --%>
3、JSP的指令:就是JSP引擎起做用的時就加載
一、page:頁面信息
二、include:加載其餘頁面
三、taglib:使用JSTL表達式
格式:<%@ 指令名稱 屬性名稱="值" %>
4、JSP內置對象:
一、request:請求對象
二、response:響應對象
三、session:會話
四、application:全局
五、pageContext:當前頁面信息
六、exception:異常
七、out:輸出
八、page:當前對應的Servlet對象
九、config:servlet配置信息
5、JSP域對象
各個對象的做用域不一樣
從大到小:
一、application:整個Web應用
二、session:會話,一個客戶端的
三、request:請求
四、pageContext:當前頁面

6、EL表達式
簡化的JSP表達式
格式:${名稱}
做用:
一、獲取請求參數
二、獲取域的內容
三、獲取cookie的內容

7、JSTL
JSP標準標籤庫
結合指令<%@ taglib prefix="前綴" uri="資源"%>


分類:
一、核心庫
二、格式化庫
三、數據庫
四、函數庫
五、XML庫

經常使用:
核心庫:
經常使用標籤:
<c:out>:輸出
<c:set>:設置
<c:remove>:移除
<c:if>:條件
<c:choose>:多條件
<c:forEach>:循環


Web中的狀態:
一、Cookie:本地狀態
是將信息存儲到本地
Cookie ck=new Cookie(key,v);
ck.setMaxAge(秒):有效期:0刪除
ck.setPath("/"):當前Web

response.addCookie()//添加Cookie
request.getCookies:獲取Cookie

能夠記錄用戶名或免登錄等
二、Session:會話服務器狀態
是將信息存儲到服務器內存
JSP:session內置對象
Servlet:
HttpSession session=request.getSession();
session.setAttribute():存儲數據
session.getAttribute:獲取數據
session.setMaxInactiveInterval:設置Session最大空閒時間

 

Lambda表達式
簡化格式:接口就一個方法的實現類的簡化
格式:(須要從新的抽象方法的參數)->代碼塊

本週重點:
會用Servlet進行獲取數據和響應數據
會解析XML\JSON
會使用JSP
會使用Cookie\Session

 

》十五

 

回顧:
Tomcat:服務器
Servlet:java語言運行在服務器的api
做用:
一、獲取瀏覽器或客戶端的請求信息
二、對瀏覽器或客戶端進行信息的響應
HttpServletRequest:請求
getXXXX:獲取
HttpServletResponse:響應
setXX:設置
getOutputStream:獲取輸出字節流
getWriter:輸出字符流

JSP:Java對Servlet和HTML的整合頁面

符號:
<%! %>聲明
<% %>使用
<%= %>顯示

 


三大指令:
page\include\taglib
<%@ 指令名稱%>
四大域:
就是根據做用域的不一樣而區分,主要存儲數據
從大到小:application--->session---->request---->pageContext
九大對象:
request
response
session
page
pageContext
application
exception
config
out
三元素
include\forward\param
<jsp:元素名稱>

EL:表達式----代替<%= %>
做用:
一、獲取請求參數
二、獲取域中屬性
三、獲取cookie
格式:${ }

JSTL:標準標籤庫----代替<% %>
使用步驟:
一、導入jar包
二、在jsp使用taglib標記
三、使用標籤

核心庫:c
<c:out>
<c:set>
<c:remove>
<c:if>
<c:choose>
<c:forEach>


JSP和Servlet區別?
開發中:
JSP主要用來接收服務器數據並顯示
Servlet主要用來進行邏輯處理


三跨數據格式:
HTML
XML
JSON

Cookie
Session

 

內容:
1、反射
反射:就是程序運行時,動態獲取類的信息的行爲

反射做用:
一、獲取類的屬性、方法、註解等
二、執行私有的屬性或方法

Class:字節碼類

Class對象的建立方式:
一、類名.class
二、對象名.getClass
三、Class.forName(類名全稱)

經常使用方法:
getFields:獲取全部public字段
getDeclaredFields:獲取本類的全部字段不包含繼承
getDeclaredField:獲取指定字段名稱的字段對象
getMethods:獲取全部的public方法
getDeclaredMethods:獲取本類全部的方法,不包含繼承
getDeclaredMethod:獲取指定方法名稱,形式參數的方法對象
getDeclaredAnnotations() :獲取當前類的註解
newInstance:建立對應類的對象


Method類:
經常使用方法:
getAnnotations:獲取方法上的註解
invoke:執行方法
setAccessible:設置是否忽略訪問校驗
Filed類:
經常使用方法:
set:設置屬性的值
get:獲取屬性的值
setAccessible:設置是否忽略訪問校驗
getAnnotations:獲取字段上的註解


Object

2、註解
註解就是爲機器添加的註釋,主要爲了簡化開發

元註解:就是修飾註解的註解
開發中定義註解的時候會使用元註解
四大元註解:
@Target 表示該註解用於什麼地方,可能的值在枚舉類 ElemenetType 中
設置註解的使用範圍
@Retention 表示在什麼級別保存該註解信息。可選的參數值在枚舉類型 RetentionPolicy 中
@Documented 將此註解包含在 javadoc 中 ,它表明着此註解會被javadoc工具提取成文檔。在doc文檔中的內容會由於此註解的信息內容不一樣而不一樣。至關與@see,@param 等
@Inherited 容許子類繼承父類中的註解

建立註解步驟:
一、建立註解對象,@interface
一、標記註解的使用範圍和有效期
二、定義屬性,記錄註釋內容
二、使用註解
一、要在註解的使用範圍以內使用
三、解析註解
一、經過反射獲取註解的內容使用

開發中主要是使用別人家的註解


三、泛型
就是引用類型的佔位符,避免了轉型
jdk5.0以後出現的

26個大寫字母均可以

記住:泛型不管在哪使用,都必須聲明
格式:<字母>
使用:字母

使用方式:
一、泛型類或接口
類名<字母>
二、泛型方法
<字母> 返回值 方法名稱(形式參數)
{


}

主要用來開發工具類、框架

基本要求:
反射:會獲取類中的信息
註解:使用註解時,能夠大概猜出源碼流程
泛型:要求會使用


開發實例:
一、模擬Gson解析
二、模擬QueryRunner的查詢

 

》十六

 

1、文件上傳
用戶經過網頁將選擇的圖片上傳到服務器
一、Servlet
負責接收請求來的文件信息並保存到服務器
二、HTML/JSP
負責用戶選擇文件並上傳到對應的Servlet

服務器將文件存儲在
META-INF
WEB-INF
這些下面的時候,瀏覽器沒法訪問
若是存在WebContent下能夠訪問

使用Apache的jar包實現文件的上傳

文件上傳步驟:
一、建立jsp或html頁面
注意使用表單,必定要設置表單的enctype="multipart/form-data屬性
表示是文件上傳的表單
二、建立Servlet
三、重寫doPost方法
四、運行

涉及到的類:
一、DiskFileItemFactory:文件工廠,主要用來建立上傳對象
經常使用方法:
setRepository:設置上傳的臨時文件夾

二、ServletFileUpload:上傳類
靜態方法:isMultipartContent驗證是否有file標籤
經常使用實例方法:
setHeaderEncoding:設置編碼格式
setFileSizeMax:設置文件總大小
setSizeMax:設置總大小
parseRequest:獲取當前請求中的全部參數信息

三、FileItem:文件對象
經常使用方法:
一、isFormField:驗證是否爲非file標籤
二、getName:獲取文件名稱
三、getInputStream:獲取文件內容

2、文件下載
不須要任何jar包

主要記憶的是如下消息頭:
一、user-agent:獲取瀏覽器類型
二、content-disposition:設置文件名稱,值:ttachment;filename=文件名
三、setContentType:設置正文內容的MIME類型
四、setContentLengthLong:設置正文的字節個數

使用步驟:
一、獲取要下載的文件路徑
二、驗證文件是否存在
三、設置消息頭
四、建立流,讀取內容並返回
五、運行

3、事件
事件:就是一組行爲
實現了事件接口的類就叫監聽器
事件的使用步驟:
一、建立類實現對應的xxxListener
二、重寫方法
三、配置事件
四、運行

註冊事件的方式:
一、xml配置
在web.xml中使用
<listener>
<listener-class>監聽器的類名</listener-class>
</listener>
二、註解配置
在監聽器的類上使用
@WebListener就能夠

建立方式:
一、自定義類,實現接口,配置事件
二、直接new Listener


經常使用事件:
一、ServletContext:
ServletContextListener:監聽建立或銷燬
ServletContextAttributeListener:監聽屬性的新增、修改、刪除

二、HttpSession:
HttpSessionListener:監聽建立或銷燬
HttpSessionAttributeListener:監聽屬性的新增、修改、刪除
HttpSessionBindingListener:監聽屬性爲對象的新增、刪除

三、ServletRequest:
ServletRequestListener:監聽建立、銷燬
ServletRequestAttributeListener:監聽屬性的新增、修改、刪除

 

12306的Session失效的效果
10秒無交互,失效

思路:
要不要保存全部的Session
保存在什麼地方
怎麼驗證失效
定時驗證

 

重點:文件上傳&下載

 

》十七

 

File類:
FileNameFilter
FileFilter


Listener:監聽,域的變化

Servlet過濾器Filter接口:會對每一次的請求進行過濾
使用步驟:
一、建立Filter類
二、重寫對應的方法
三、配置


Filter接口中的方法:
一、init:初始化
參數說明:
FilterConfig:過濾器的配置信息
經常使用方法:
getInitParameter:獲取配置的參數的值

二、doFilter:過濾
重要方法,進行條件的篩選,是否容許放行
參數說明:
一、request:請求對象
二、response:響應對象
三、chain:過濾器通行對象

三、destroy:銷燬


FilterChain:就是調用下一個鏈

經常使用方法:
doFilter:繼續請求
參數說明:
一、request:請求對象
二、response:響應對象


Filter的註冊方式:
一、xml配置
在web.xml下使用
<!--配置過濾器 -->
<!--filter:讓服務器建立過濾器對象 -->
<filter>
<filter-name>myf1</filter-name>
<filter-class>org.qf.study1.MyFilter2</filter-class>

</filter>
<!--filter-mapping:設置當前過濾對象的過濾原則 -->
<filter-mapping>
<filter-name>myf1</filter-name>
<url-pattern>/MyServlet1</url-pattern>
</filter-mapping>

二、註解
@WebFilter:配置過濾器
註解的經常使用屬性:
一、urlPatterns:設置要過濾的資源 /* 全部 /Servlet名稱 /xxx.jsp
二、initParams:設置過濾器的配置信息

註解註冊和xml註冊的區別?
一、註解方便,xml麻煩
二、註解沒法設置過濾器的順序(是根據過濾器的名稱的字符串順序進行的)
xml配置能夠設置,是根據<filter-mapping>的前後順序進行加載的

在開發中,get傳遞中文,通常都亂碼
url編碼爲ISO8859-1,而這種編碼不支持中文

過濾器的經常使用:
一、使用過濾器實現get的自動轉碼
步驟:
一、建立過濾器
二、在doFilter的方法中驗證請求方式
三、get請求須要將請求參數的內容的編碼格式都轉換
重寫請求對象的參數內容:HttpServletRequestWrapper
四、重寫獲取參數值的方法
一、getParameter
二、getParameterMap
三、getParameterValues

二、自動登陸

 

 

具備登陸功能的網頁
設計數據庫
搭框架

 

Md5:加密,不可逆
目前使用最普遍,由於簡單

 

Ajax
JQuery
項目

 

》十八

 

同步:單線程:代碼會從上到下進行,會引發阻塞
異步:多線程:開啓多個線程,各個互不影響


2個子線程分別運行。如何在主線程中獲取2個子線程的結束?


1、Ajax:Asynchronous JavaScript And XML
局部刷新網頁的技術

一、核心對象:XMLHttpRequest
獲取方式:
//根據瀏覽器的不一樣建立Ajax對象
function getXMLRequest(){
var xttp;
if(window.XMLHttpRequest){//當前瀏覽器支持直接建立ajax對象
xttp=new XMLHttpRequest();
}else{//支持IE5\6
xttp=new ActiveXObject("Microsoft.XMLHTTP");
}
return xttp;
}

二、經常使用屬性:
readyState:類型short;只讀
取值說明:
就緒狀態碼 說 明
0 XMLHttpRequest對象沒有完成初始化即:剛剛建立。
1 XMLHttpRequest對象開始發送請求調用了open方法,但尚未調用send方法。請求尚未發出
2 XMLHttpRequest對象的請求發送完成send方法已經調用,數據已經提交到服務器,但沒有任何響應
3 XMLHttpRequest對象開始讀取響應,尚未結束收到了全部的響應消息頭,但正文尚未徹底收到
4 XMLHttpRequest對象讀取響應結束一切都收到了

responseText:類型String;只讀,服務器返回內容:通常爲普通字符串或json字符串
responseXML:類型Document;只讀,服務器返回內容:xml文檔格式
status:類型short;只讀,服務器的狀態響應碼
經常使用取值說明:
狀態碼 說 明
200 服務器響應正常
400 沒法找到請求的資源
403 沒有訪問權限
404 訪問的資源不存在
500 服務器內部錯誤


通常都須要驗證readyState=4 而且 status=200
三、經常使用方法:
open(method,URL,async) 創建與服務器的鏈接method參數指定請求的HTTP方法,典型的值是GET或POST,URL參數指請求的地址,async參數指定是否使用異步請求,其值爲true或false
send(content) 發送請求content參數指定請求的參數
setRequestHeader(header,value) 設置請求的頭信息

四、事件屬性:
onreadystatechange:指定回調函數,獲取服務器響應內容的函數
值爲函數,用來處理服務器響應內容

五、使用步驟:
一、獲取XMLHttpRequest對象------new XMLHttpRequest()
二、設置回調函數-------onreadystatechange
三、打開鏈接-----------open
四、設置請求頭---------setRequestHeader
五、發送---------------send

 

登錄

練習:

一、開發註冊頁面
要求:
一、本身寫Servlet(2個,一個負責驗證用戶名是否存在,另外一個負責添加用戶)
http://localhost:8080/Web_Day18_AutoLogin/checkname
http://localhost:8080/Web_Day18_AutoLogin/register
二、寫一個HTML頁面,完成註冊功能。
就是普通的html頁面,沒有使用表單
三、Ajax實現用戶名是否存在,實現註冊
經過Ajax傳輸數據並接受



二、分頁
步驟:
一、完成Servlet,接受當前頁碼和每頁顯示的數據
二、經過Ajax請求Servlet


JS解析JSON數據:
一般使用JSON.parse進行解析
有點相似JSON源生解析

 

三、搜索
根據商品名稱實現模糊搜索
只需在Servlet添加參數,商品名稱
html中經過JS控制

 

》十九

 

1、jQuery
簡化JS的使用
jQuery:就是一個輕量級的JS庫
簡化JS的使用
目的:寫的更少,作的更多

須要引入jQuery庫
免費、開源

1.2jQuery的格式:$("選擇器").行爲(參數);
解釋:
一、$:jQuery的標記
二、選擇器:相似CSS選擇器
三、行爲:操做對知道的元素進行的操做


頁面加載完成以後,調用
$(document).ready(function(){

});
等價於:
window.onload=function(){


}

1.3jQuery的選擇器:
經常使用選擇器:
一、標籤選擇器:直接寫HTML標籤名稱
二、class:爲HTML標籤使用class屬性的值,.類名
三、id:爲HTML標籤使用id屬性的值,#id名

注意:選擇器能夠混合使用,只需記得每種的格式

1.4jQuery的行爲/操做
行爲能夠是事件、文檔、樣式、屬性、效果

1.4.1事件:對應的就是HTML標籤的事件屬性
事件的的參數都是函數
經常使用事件:
ready:加載完觸發
click:點擊觸發
change:內容改變觸發
blur:失去焦點觸發
focus:獲取焦點觸發
dblclick:雙擊觸發

1.4.2文檔
操做Html的內容,參數通常爲要設置的文本內容,不帶參數就是獲得
html:內部的HTML內容----innerHTML
val:input標籤的value屬性
append:追加,在當前的選擇器的元素內部追加
after:添加,在當前選擇器元素的後面添加
before:添加,在當前選擇器元素的前面添加
remove:移除

1.4.3樣式
就是爲HTML元素設置CSS屬性
經常使用行爲:
css:設置對應標籤的屬性
參數:
一、css屬性敏成功
二、css屬性的值
取值說明:
一、沒有:獲取屬性的中
二、具體的值:設置屬性的值
三、函數:必須返回當前屬性的值


1.4.4屬性
改變HTML的標籤屬性
經常使用:
attr():設置或獲取對應的屬性
toggleClass:新增或刪除class屬性,不存在就新增,存在就刪除
removeAttr:移除屬性


1.4.5效果
特效
一、顯示和隱藏
hide:隱藏
參數說明:
一、沒有參數:就是當即執行
二、1個參數:就是在指定的毫秒以內隱藏完畢
三、2個參數:就是在指定的毫秒以內隱藏完畢,並回調指定的函數

show:顯示
參數說明:
一、沒有參數:就是當即執行
二、1個參數:就是在指定的毫秒以內顯示完畢
三、2個參數:就是在指定的毫秒以內顯示完畢,並回調指定的函數
toggle:顯示或隱藏
參數說明:
一、沒有參數:就是當即執行
二、1個參數:就是在指定的毫秒以內執行完畢
三、2個參數:就是在指定的毫秒以內執行完畢,並回調指定的函數


二、透明度
就是可見的清晰度
範圍:[0.0,1.0]
其中:0.0看不見
1.0徹底可見
經常使用:
fadeTo:改變透明度
參數說明:
一、速度
二、透明度
三、回調函數

三、自定義動畫
能夠本身指定屬性的變化
經常使用:
animate:設置動畫
參數說明:
一、屬性內容:json數據,能夠同時設置多個屬性變化
二、動畫持續時間



1.5jQuery的Ajax
就是jQuery對象Ajax技術進行了封裝,簡化
經常使用:
一、load:
使用方式:
$(選擇器).load(url,data,callback)
通常都是直接使用
會默認將返回結果設置到對應的選擇器

二、ajax:
使用方式:
$.ajax(json格式數據):參數爲{屬性名稱:值}
經常使用的名稱:
url:要請求的路徑
data:參數
method:方式
success:成功的回調方法
error:錯誤的回調方法
三、get:get請求
使用方式:
$.get(url,data,callback)
四、post:post請求
使用方式:
$.post(url,data,callback)

 

 

 

練習:使用jQuery對輸入框的內容進行校驗

 

課下:
設計模式:建造者模式
鏈式編程

 

 


2、總結

一、前端
HTML:超文本標記語言
在瀏覽器中顯示數據
格式:<標籤名稱></標籤名稱>

語法格式:
一、固定標籤
二、標籤嵌套
三、屬性的值必須雙引號
四、成對出現
五、不區分大小寫

經常使用標籤:
div\form\p\a\img\input\ul\ol\select\textarea\hr\br\table\tr\td\th\span\h1\label\frameset\frame
經常使用屬性:
width\height\src\href\border\align\style\id\class\name\action\method\enctype\checked\disabled
經常使用事件:
onload\onclick\ondblclick\onfocus\onblur\onchange\onmouseout\onmouseover\onsubmit\onselect

CSS:層疊樣式表
美化HTML

格式:選擇器{屬性名稱:值}

引用方式:
一、外部:link
三、內部:在head使用<style>
四、內嵌:在標籤中使用style屬性

選擇器:
一、標籤:標籤名稱{}
二、class::.類名
三、id:#id名稱
四、屬性:[屬性名稱=值]

經常使用屬性:
一、背景:backgroundXXX
二、文本:textXXX
三、字體:fontXXX
四、盒子模型
一、borderXXX:邊框
二、marginXXX:外邊距
三、paddingXXX:內邊距
五、列表:list-style-type
六、位置:
一、float:浮動
二、position:定位

JS:JavaScript:瀏覽器腳本語言
動態交互HTML

引用方式:
一、外部js文件:<script src="路徑"/>
二、head內部:<script>
三、body內部:<script>

JS語法:
一、數據類型:
原始類型:字符串、數字、boolean
引用類型:
二、變量:可變的量
格式:var 變量名稱[=值];

js的變量能夠不聲明直接使用

三、運算符:算術、比較、賦值、邏輯、位、三目、字符串鏈接

四、分支語句
if else
switch

break
return
五、循環語句
for
for in
while
do\while

六、函數
格式:function 函數名稱(參數名稱){

[return 返回值]
}

七、全局函數
一、isNaN
二、Number
三、String
四、parseInt
五、parseFloat

八、內置對象
一、Number
二、String
三、Math:
floor
random
round
四、Array
建立數組
能夠改變長度
經常使用屬性:
length
經常使用方法:
sort:排序

五、Regex
正則表達式
以/正則規則/
Regex
Pattern

經常使用字符串的:
matchs:匹配
split:切割
replace:替換

六、window
七、Date

九、document
經常使用方法:
一、getElementById
二、getElementsByTagName
三、getElementsByName
四、createElement
五、setAttribute
六、appendChild


value
src
innerHTML
href



二、數據庫
MySQL:數據庫
存儲數據的倉庫
SQL:結構化查詢語言
分類:
一、DDL:數據庫定義語言:create\drop\alter
二、DML:數據庫操做語言:insert\update\delete
三、DCL:數據庫控制語言:用戶、安全等
四、DQL:數據庫查詢語言:select

七大語句:
create table/database
alter table/database
drop table/database

insert into 表名(字段) values(值)
update 表名 set
delete from 表名
select 字段 from 表名 [where] [order by] [group by] [having] [limit]

約束條件:
一、主鍵
二、惟一
三、非null
四、默認
五、外鍵

條件:
and\or
= != >=
like
in
between and
IS NULL
IS NOT NULL


聚合函數:
MAX
MIN
SUM
AVG
COUNT

函數:
now
random
md5

多表操做:
一、內聯:inner join
二、左外連:left out join
三、右外連:right out join
四、笛卡爾積:select * from 表1,表2

觸發器:自動新增、修改、刪除等


事務:保證操做的一致性
start transaction:開啓事務
commit:提交事務
rollback:回滾事務

事務特性:
A原子性
C一致性
I隔離性
防止髒讀、幻度、虛度等
D持久性

JDBC:java操做數據庫的接口

使用步驟:
一、導入數據庫驅動jar
二、動態加載
三、鏈接
四、獲取操做SQL對象
五、執行SQL
六、銷燬

DriverManager:驅動管理
Connection:鏈接
Statement:操做SQL
PreparedStatement:防SQL注入操做SQL
ResultSet:結果集


鏈接池:存儲數據庫鏈接的池子
管理數據庫的鏈接

經常使用的數據庫鏈接池:
一、C3P0
二、DBCP


QueryRunner:工具類
經常使用方法:
一、update
二、query

BeanHander:將結果從ResultSet中轉換爲實體對象
BeanListHander:將結果從ResultSet中轉換爲list


三、後端
Tomcat:服務器
免費、不要錢

目錄:
bin:可執行
lib:第三方jar
config:配置文件
webapps:發佈的Web應用
work:工做空間
temp:臨時文件
log:日誌

能夠運行咱們的Servlet&JSP

 

Servlet:java語言編寫的運行在服務器的api
獲取請求數據
響應數據
Servlet建立方式:
一、實現Servlet接口
重寫方法:
init
destroy
service
二、繼承GenericServlet
重寫:
service
三、繼承HttpServlet
重寫:
doGet
doPost


配置Servlet:
一、xml配置
在web.xml下使用:
<servlet>
<servlet-name>名稱</servlet-name>
<servlet-class>類名</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>名稱</servlet-name>
<url-pattern>匹配規則</url-pattern>
</servlet-mapping>

二、註解
@WebServlet()

使用步驟:
一、建立Servlet
二、重寫方法doGet、doPost
三、配置
四、發佈

Request:請求

經常使用方法:
getParameter:獲取指定key的值
getParameterValues:獲取指定key的全部值
getParameterNames:獲取全部的Key
getParameterMap:獲取全部的Key和對應的值
getAttribute:獲取指定Key的屬性
setAttribute:新增屬性或修改屬性
removeAttribute:移除屬性
getMethod:獲取請求方式
getRemoteAddr:獲取遠程IP


屬性和參數的區別?
屬性能夠存儲對象
參數不能夠

Response:響應
經常使用:
getOutputStream:獲取輸出字節流:響應數據
getWriter:獲取輸出字符流:響應數據
setCharacterEncoding:設置內容的編碼格式
setContentType:設置內容的類型
setHeader:設置消息頭

跳轉:
一、客戶端跳轉
重定向
二、服務端的跳轉
請求轉發

請求行:自動攜帶
消息頭:瀏覽器、服務器識別

請求的組成:
請求行
請求消息頭
請求內容

 

JSP:Java Server Page
java根據Servlet和HTML結合建立
能夠在瀏覽器直接訪問,底層運行轉化爲誒Servlet

符號:
<%! %>:聲明
<% %>:操做
<%= %>:顯示

<%--註釋--%>


三大指令:
格式:<%@ 指令名稱 屬性=值 %>
一、page:導入包、標記文檔類型等
二、include:靜態加載其餘頁面
三、taglib:標記JSTL標籤庫

 

九大對象:
內置,默認建立
一、request
二、response
三、application
四、session
五、page
六、pageContent
七、out
八、exception
九、config

 


四大域:
application----ServletContext
做用域:整個Web範圍
session----HttpSession
做用域:客戶訪問產生,默認30分鐘無響應銷燬
request---HttpServletRequest
做用域:發起請求默認產生,也能夠轉發
pageContext---ServletContent
做用域:當前頁面


都有如下方法:
getAttribute
setAttribute
removeAttribute

三元素:
一、include:動態加載其餘頁面
二、forward:跳轉其餘頁面
三、param:攜帶參數

 


EL表達式:簡化jsp <%= %>
格式:${域中屬性名稱|param.參數名稱|cookie}

 


JSTL:標準標籤庫
簡化jsp-- <% %>
c:out
c:set
c:forEach
c:choose
c:if
c:remove


Cookie:將信息保存在客戶的電腦上,硬盤

request.getCookies:獲取全部Cookie
response.addCookie:添加Cookie

記住帳號

Session:將信息保存在服務器,內存

request.getSession

保存登陸帳號等

數據格式:
特色:三跨:跨平、跨網絡、跨編程語言

一、HTML:瀏覽器
二、JSON:
[]數組
{}對象
經常使用解析:
一、JSON源生
JSONObject:解析對象
JSONArray:解析數組
二、Gson
gson.fromJson:解析json數據
gson.toJson:將對象轉換爲JSON字符串
三、fastjson
JSON.parseObject:解析對象
JSON.parseArray:解析數組
三、XML

做用:
一、配置文件
二、傳送數據

經常使用解析:
一、Dom源生解析
區分元素和節點
二、SAX
自定義DeafultHeader
三、DOM4j
SAXReader
四、XPATH
查詢

四、技術

一、註解反射泛型
註解:爲代碼添加的註釋
通常爲解決特殊狀況準備的
好比:json特殊的屬性名稱

 

建立註解:
一、建立@interface
二、建立屬性
三、使用註解
四、解析註解

反射:
動態獲取類的信息

做用:
一、獲取類的信息:屬性、方法、註解、構造器等
二、執行私有屬性或方法


Class類

泛型:
用來佔位的字母

引用類型佔位,避免轉型

結合反射使用

切記:泛型也得先聲明纔可使用
<字母>這就是聲明


文件上傳&下載
文件上傳使用第三方:
一、頁面須要有file標籤
二、設置表單的enctype="muilpart/form-data"
三、在對應的Servlet獲取FileItem
四、建立保存路徑
五、流的讀取和寫出


Listener:事件
就是獲取application\session\request等變化的接口

註冊方式:
一、xml
<listener>
<listener-class></listener-class>
</listener>
二、註解
@WebListener

監聽器:就是實現了Listener接口的類
建立或銷燬、屬性內容的變化


Filter:過濾器
能夠對每一次的請求和響應做出過濾

註冊方式:
一、xml
在web.xml下使用:
<filter>
<filter-name>名稱</filter-name>
<filter-class>類名</filter-class>
</filter>
<filter-mapping>
<filter-name>名稱</filter-name>
<url-pattern>匹配規則</url-pattern>
</filter-mapping>

二、註解
@WebFilter(ulrPatterns={})

註解的執行順序按照字符串順序
xml是按照<filter-mapping>前後順序執行


生命週期:
一、init
二、doFilter
繼續必須使用chain.doFilter

三、destroy


做用
一、自動轉碼
二、自動登陸

 

Ajax:異步局部刷新
能夠對網頁的局部內容進行請求服務器病顯示返回結果

結果數據格式:
一、字符串
二、JSON
三、xml

 

XMLHttpRequest:Ajax的核心對象
new XMLHttpRequest();


經常使用屬性:
一、readyState:讀取狀態
0初始化
1打開連接
2發生請求
3未接收徹底
4所有OK
二、status:服務器返回的狀態響應碼
200:OK
404:未發現:要麼服務器宕機、要麼服務器將頁面刪除了、要麼url路徑寫錯了
403:沒有權限
500:服務器錯誤

事件屬性:
onreadystatechange:讀取狀態變化事件
對應的值:回調函數

經常使用方法:
一、open:打開連接
二、setRequestHeader:設置消息頭
三、send:發送

 

使用步驟:
一、建立XMLHttpRequest對象
二、設置回調函數
三、打開連接
四、設置請求頭
五、發送信息


jQuery:簡化JS
就是對JS進行了封裝

詳情看上面

相關文章
相關標籤/搜索