JavaWeb随手笔记
HTML
規(guī)范:
①<html> ————html標(biāo)簽,整個(gè)頁(yè)面的開(kāi)始
? ②<head> ————頭標(biāo)簽(title標(biāo)題,css樣式,js代碼)
? <title>標(biāo)題</title> ————標(biāo)題
? ②</head>
? ③<body> ————內(nèi)容標(biāo)簽
? 主體內(nèi)容
? ③</body>
①</html> ————整個(gè)頁(yè)面的結(jié)束
- <html lang="zh_CN">:表示頁(yè)面顯示中文
- ②內(nèi):<meta charset="UTF-8">:當(dāng)前頁(yè)面的字符編碼格式
標(biāo)簽特性
標(biāo)簽大小寫(xiě)不敏感
標(biāo)簽擁有兩種屬性
①基本屬性:如bgcolor="name":設(shè)置頁(yè)面顏色
②事件屬性:如onclick="alect('內(nèi)容')":單擊顯示alect警告框函數(shù)內(nèi)的信息
標(biāo)簽兩種分類
①單標(biāo)簽:如<br/>:換行、<hr/>:水平線
②雙標(biāo)簽:如<button>文本</button>:按鈕、<b>文本</b>:加粗
標(biāo)簽語(yǔ)法
常用標(biāo)簽
字體標(biāo)簽
<font>文本</font>
-
屬性:
color:顏色
face:字體
size:大小
-
大小范圍為1~7,超出的話以7顯示
特殊字符
-
<:<
-
>:>
-
(空格):
標(biāo)題
<h1>文本</h1>
-
屬性:
align:標(biāo)題的對(duì)其方式
- left:左對(duì)齊,默認(rèn)
- right:右對(duì)齊
- center:居中
-
h1表示標(biāo)題大小為1(最大),其范圍為1~6,超出的話以文本顯示
超鏈接
<a>文本</a>
-
屬性:
href:表示鏈接的地址(http://localhost:8080/工程名/可省略)
target:打開(kāi)鏈接的方式
- _self:當(dāng)前頁(yè)面打開(kāi),默認(rèn)
- _blank:新頁(yè)面打開(kāi)
- name:根據(jù)窗口的名字,用窗口打開(kāi)
列表標(biāo)簽
<ul>
? <li>文本1</li>
? <li>文本2</li>
</ul>
-
屬性:
type:修改列表項(xiàng)前面的符號(hào)
- none:無(wú)符號(hào)
-
ul是無(wú)序列表,ol是有序列表,li是列表項(xiàng)
圖片
<img/>
-
屬性:
src:圖片的路徑
-
相對(duì)路徑:相對(duì)路徑是根據(jù)當(dāng)前頁(yè)面地址欄中的地址來(lái)跳轉(zhuǎn)的
.:當(dāng)前文件所在目錄
..:當(dāng)前文件的上一級(jí)目錄
文件名:當(dāng)前文件所在目錄下的文件,相當(dāng)于./
-
絕對(duì)路徑:
http://ip:port/文件目錄/文件名
width:圖片的寬度
height:圖片的高度
border:圖片的邊框大小
alt:找不到圖片的文本提示
-
表格
<table>
? <tr>
? <td>文本</td>
? </tr>
</table>
-
屬性:
①table屬性
? align:表格相對(duì)于頁(yè)面的對(duì)其方式
? border:表格的邊框
? width:表格的寬度
? height:表格的高度
? cellspacing:單元格與單元格間的間距
②td屬性
? align:內(nèi)容相當(dāng)于單元格的對(duì)其方式
? clospan:跨列數(shù)
? rowspan:跨行數(shù)
-
th相當(dāng)于<td align="center"><b>文本</b></td>,即文本加粗且居中
-
tr是行,td是單元格
窗口
<iframe></iframe>
-
屬性:
src:圖片路徑
width:窗口寬度
height:窗口高度
name:窗口名稱
表單
<form>
? <input/>
? <select>
? <option>文本</option>
? </select>
? <textarea>默認(rèn)值</textarea>
</form>
-
屬性:
①form屬性
? action:表單數(shù)據(jù)提交的地址
? method:表單數(shù)據(jù)提交的方式
-
get(默認(rèn)):
- 地址格式:action屬性值+?+請(qǐng)求參數(shù)
- 請(qǐng)求參數(shù)格式:name=value&…
不安全,有數(shù)據(jù)長(zhǎng)度限制
表單提交的form連接中,get不能帶參數(shù),只能使用隱藏域
-
-
post:
- 地址格式:action屬性值
較安全,無(wú)長(zhǎng)度限制
? enctype:POST請(qǐng)求時(shí),請(qǐng)求體的編碼方式
- application/x-www-form-urlencoded(默認(rèn)):
- 表示用&分隔參數(shù),用=分隔鍵值對(duì),字符要用URL編碼方式進(jìn)行編碼
- multipart/form-data
- 文件上傳必須使用的編碼方式
②input屬性
? type:類型
? value:初始值、修改值、提交數(shù)據(jù)
? name:分類、提交數(shù)據(jù)
? checked="checked":默認(rèn)值
- text:文本輸入框,可用value設(shè)置初始內(nèi)容
- password:密碼輸入框,可用value設(shè)置初始內(nèi)容
- radio:單選框,可用name將多個(gè)單選框分為一類,可用checked選定某一組分類下的單選框?yàn)槟J(rèn)值,提交數(shù)據(jù)時(shí)需要額外用value來(lái)傳值
- checkbox:復(fù)選框,可用checked選定一個(gè)或多個(gè)復(fù)選框?yàn)槟J(rèn)值,被選中的復(fù)選框的值為true,提交數(shù)據(jù)時(shí)需要額外用value來(lái)傳值
- reset:重置按鈕,可用value修改按鈕名稱
- submit:提交按鈕,可用value修改按鈕名稱
- button:按鈕,可用value修改按鈕名稱
- file:文件上傳
- hidden:隱藏域
③select屬性
? name:用于提交數(shù)據(jù)
? multiple="multiple":可多選
④option屬性
? selected="selected":設(shè)置下拉列表框的某個(gè)選項(xiàng)為默認(rèn)值
? value:用于提交數(shù)據(jù)
⑤textarea屬性
? rows:多行文本輸入框的行數(shù)
? cols:多行文本輸入框每行顯示的字符數(shù)量
? name:用于提交數(shù)據(jù)
form是向服務(wù)器提交數(shù)據(jù),input type設(shè)置各種表單類型,select設(shè)置下拉框,textarea設(shè)置多行文本輸入框
表單提交時(shí),數(shù)據(jù)發(fā)送給服務(wù)器的三個(gè)要求:
其他
<div>文本</div>:文本獨(dú)占一行
<span>文本</span>:所占長(zhǎng)度與文本長(zhǎng)度相等
<p>文本</p>:在上方或下方空出一行,空行則不操作
<button>文本</button>:設(shè)置一個(gè)按鈕,在表單提交中在不指明其屬性type的值時(shí),默認(rèn)為submit
- onclick="函數(shù)":可用此來(lái)綁定單擊事件
CSS
標(biāo)簽名選擇器
選擇器調(diào)用的方式:
1)在標(biāo)簽內(nèi)使用style屬性:
<標(biāo)簽名 style="樣式1;樣式2...">文本</標(biāo)簽名>
- 只對(duì)該標(biāo)簽有用
2)在<head>中使用style type="text/css":
<style type="text/css">
? 選擇器{
? 樣式1;樣式2...
}</style>
- 對(duì)當(dāng)前頁(yè)面有效
3)引用.css文件:
<link type="text/css" rel="stylesheet" href="文件名.css"/>
- 只對(duì)調(diào)用了該文件的頁(yè)面有效
- 修改的樣式由文件內(nèi)容中的選擇器定義樣式?jīng)Q定
標(biāo)簽選擇器
<style type="text/css">
? 標(biāo)簽名{
}</style>
- 對(duì)當(dāng)前頁(yè)面所有的標(biāo)簽有效
id選擇器
<style type="text/css">
? #idxxx{
}</style>
- xxx為id編號(hào)
- 調(diào)用的標(biāo)簽通過(guò)id="idxxx"即可調(diào)用該樣式
class選擇器
<style type="text/css">
? .classxxx{
}</style>
- xxx是class編號(hào)
- 調(diào)用的標(biāo)簽通過(guò)class="classxxx"即可調(diào)用
組合選擇器
<style type="text/css">
? 選擇器1,選擇器2,...{
}</style>
- 標(biāo)簽可以通過(guò)任意一個(gè)選擇器調(diào)用該代碼
常用樣式
- 各樣式間用,隔開(kāi),樣式有多個(gè)值的用 (空格)隔開(kāi)
color:設(shè)置字體顏色
border:設(shè)置邊框像素、顏色、線條(solid)
border-collapse:collapse:表格邊框合并
width:設(shè)置邊框?qū)挾?#xff08;px)
height:設(shè)置邊框高度(px)
background-color:設(shè)置背景顏色
font-size:設(shè)置字體大小(px)
margin-left:auto、margin-right:auto:設(shè)置整體頁(yè)面居中
text-align:設(shè)置字體位置
text-decoration:去超鏈接下劃線(none)
list-style:設(shè)置列表符號(hào)為空(none)
display:設(shè)置顯示(none)
left:x軸
top:y軸
樣式操作
addClass():添加樣式
removeClass():刪除樣式,且會(huì)刪除對(duì)應(yīng)的class屬性值
toggleClass():有就刪除,沒(méi)有就添加樣式
offset():獲取或設(shè)置元素坐標(biāo)
JavaScript
1)
<script type="text/javascript">
? 內(nèi)容;
</script>
2)調(diào)用文件
<script type="text/javascript" src="文件名.js"></script>
- 兩種方法不能在同一個(gè)定義中同時(shí)調(diào)用
語(yǔ)法
變量
1)類型:
? ①數(shù)值類型:number
? ②字符串類型:string
? ③對(duì)象類型:object
? ④布爾類型:boolean
? ⑤函數(shù)類型:function
2)值:
? ①u(mài)ndefined:未定義,所有未賦初始值的變量,默認(rèn)都是undefined
? ②null:空值
? ③NAN:非數(shù)字,非數(shù)值(有undefined參與運(yùn)算的值為NAN)
3)定義變量格式:
? ①var 變量名
? ②var 變量名=值
運(yùn)算符
1)關(guān)系運(yùn)算:
? ①==:比較兩者的字面值
? ②===:比較兩者的字面值以及兩者的數(shù)據(jù)類型
2)邏輯運(yùn)算:
- 0、null、undefined、""(空串)為false,其他都為true
- &&與||都有短路效果
? ①&&且:
? ②||或:
數(shù)組
? ①var 變量名=[]:空數(shù)組
? ②var 變量名=[值1,值2,...]:定義時(shí)賦值
- 通過(guò)數(shù)組下標(biāo)給數(shù)組元素賦值時(shí),最大的下標(biāo)就是數(shù)組的長(zhǎng)度(下標(biāo)從0開(kāi)始),數(shù)組的長(zhǎng)度與讀取時(shí)的最大下標(biāo)無(wú)關(guān),超出時(shí)為undefined
- 未被賦值的數(shù)組元素值為undefined
函數(shù)
- 函數(shù)不允許重載
- 當(dāng)調(diào)用的函數(shù)與聲明的函數(shù)參數(shù)列表不一致時(shí),會(huì)調(diào)用隱形函數(shù),參數(shù)列表為arguments的數(shù)組,數(shù)組長(zhǎng)度與最大賦值下標(biāo)有關(guān)
1)
? ①無(wú)參:
? function 函數(shù)名(){ 函數(shù)體 }
? ②有參:
? function 函數(shù)名(num1,num2,...){ 函數(shù)體 }
? ③有返回值:
? function 函數(shù)名(){ return 返回值 }
2)
? ①無(wú)參:
? var 函數(shù)名=function(){ 函數(shù)體 }
? ②有參:
? var 函數(shù)名=function(num1,num2,...){ 函數(shù)體 }
? ③有返回值:
? var 函數(shù)名=function(){ return 返回值 }
對(duì)象
1)
? ①定義:
? var 變量名=new Object():空對(duì)象(對(duì)象實(shí)例)
? 變量名.屬性名=值:定義屬性
? 變量名.函數(shù)名=function(){}:定義函數(shù)
? ②調(diào)用:
? 變量名.屬性名、變量名.函數(shù)名()
2)
? ①定義:
? var 變量名={
? 屬性名:值,
? 函數(shù)名:function(){}
? }
? ②調(diào)用:
? 變量名.屬性名、變量名.函數(shù)名()
事件
靜態(tài)綁定:在作用的標(biāo)簽內(nèi)作為屬性出現(xiàn)
動(dòng)態(tài)綁定:
? ①window.onload=function(){
? ②var 對(duì)象名=document.getElementById("id屬性值");
? ③對(duì)象名.事件名=function(){}
? }
? ①保證代碼在頁(yè)面加載完成后才會(huì)執(zhí)行
? ②通過(guò)id屬性獲取標(biāo)簽的對(duì)象,document為當(dāng)前這個(gè)頁(yè)面信息的對(duì)象
? ③通過(guò)標(biāo)簽的對(duì)象名.事件名=function(){}注冊(cè)事件
1)onload:加載完成事件,瀏覽器解析完頁(yè)面后就會(huì)自動(dòng)觸發(fā)的事件
2)onclick:單擊事件,常用于按鈕點(diǎn)擊后做出響應(yīng)
3)onblur:失去焦點(diǎn)事件,常用于輸入框失去焦點(diǎn)后進(jìn)行校驗(yàn)
4)onchange:內(nèi)容發(fā)生改變事件,常用于下拉列表或輸入框發(fā)生改變時(shí)
5)onsubmit:表單提交事件,常用于提交表單前驗(yàn)證其合法性
- 當(dāng)返回return false時(shí),則取消提交
- return 方法名()
正則表達(dá)式
正則表達(dá)式兩種創(chuàng)建方式:
①var 變量名=new RegExp("規(guī)則")
②var 變量名=/規(guī)則/
/x/:字符串中是否包含字符x
/[xyz]/:字符串中是否包含字符x或字符y或字符z
/[a-z]/:字符串中是否包含任意小寫(xiě)字母
/[A-Z]/:字符串中是否包含任意大寫(xiě)字母
/[0-9]/:字符串中是否包含任意數(shù)字
/\w/:字符串中是否包含任意字母、數(shù)字或下劃線
/x+/:字符串中是否包含至少1個(gè)字符x
/x*/:字符串中是否包含0個(gè)或多個(gè)字符x
/x?/:字符串中是否包含0個(gè)或1個(gè)字符x
/x{m}/:字符串中是否包含連續(xù)m個(gè)字符x
/x{m,n}/:字符串中是否包含至少m個(gè)、至多n個(gè)的連續(xù)的字符x
/x{m,}/:字符串中是否包含至少m個(gè)連續(xù)的字符x
/x$/:字符串是否以字符x結(jié)尾
/^x/:字符串是否以字符x開(kāi)頭
DOM
獲取節(jié)點(diǎn)的方式
document.getElementById("id屬性值"):返回當(dāng)前頁(yè)面中指定id的標(biāo)簽的對(duì)象
document.getElementsByName("name屬性值"):返回當(dāng)前頁(yè)面中所有指定name的標(biāo)簽的對(duì)象集合,該集合操作方式與數(shù)組相似
document.getElementsByTagName("標(biāo)簽名"):返回當(dāng)前頁(yè)面中所有指定的標(biāo)簽的對(duì)象集合,該集合操作方式與數(shù)組相似
document.createElement("標(biāo)簽名"):根據(jù)標(biāo)簽名創(chuàng)建了一個(gè)節(jié)點(diǎn),并返回標(biāo)簽名節(jié)點(diǎn)的對(duì)象
document.createTextNode("文本"):根據(jù)文本創(chuàng)建并返回一個(gè)文本節(jié)點(diǎn)對(duì)象
document.body:獲取body節(jié)點(diǎn)對(duì)象
- window.onload=function(){}該代碼在頁(yè)面加載完成時(shí)才執(zhí)行
方法
getElementsByTagName("標(biāo)簽名"):獲取當(dāng)前節(jié)點(diǎn)的指定標(biāo)簽的子節(jié)點(diǎn)
appendChild(子節(jié)點(diǎn)名):為當(dāng)前節(jié)點(diǎn)添加一個(gè)子節(jié)點(diǎn)
attr:獲取對(duì)象的屬性值
1)增刪改
①內(nèi)部增:
? x.appendTo(y):將x元素添加成為所有y的子元素中的最后一個(gè)元素
? x.prependTo(y):將x元素添加稱為所有y的子元素中的第一個(gè)元素
②外部增:
? x.insertAfter(y):將x元素添加到所有y元素的后面
? x.insertBefore(y):將x元素添加到所有y元素的前面
③替換:
? x.replaceWith(y):用y將所有的x替換掉
? x.replaceAll(y):用x將所有的y替換掉,兩者都要存在
④刪除:
? a.remove():刪除a標(biāo)簽
? a.empty():清空a標(biāo)簽的內(nèi)容
屬性
childNodes:獲取當(dāng)前節(jié)點(diǎn)的所有子節(jié)點(diǎn)
firstChild:獲取當(dāng)前節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn)
lastChild:獲取當(dāng)前節(jié)點(diǎn)的最后一個(gè)子節(jié)點(diǎn)
parentNode:獲取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)
nextSibling:獲取當(dāng)前節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)
previousSibling:獲取當(dāng)前節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)
className:獲取或設(shè)置當(dāng)前節(jié)點(diǎn)的標(biāo)簽的class屬性值
innerHTML:查看或修改當(dāng)前節(jié)點(diǎn)的標(biāo)簽的起始標(biāo)簽和結(jié)束標(biāo)簽間的內(nèi)容
innerText:查看或修改當(dāng)前節(jié)點(diǎn)的標(biāo)簽的起始標(biāo)簽和結(jié)束標(biāo)簽間的文本內(nèi)容
defaultValue:默認(rèn)的value值
其他對(duì)象
location:地址欄對(duì)象(常用來(lái)調(diào)用Servlet程序)
- href:可獲取瀏覽器地址欄中的地址,該屬性可讀可寫(xiě)
jQuery
- 使用前必須導(dǎo)入js文件
- 或者直接調(diào)用官方鏈接:https://code.jquery.com/jquery-1.7.2.js
$( )
1)傳入?yún)?shù)為函數(shù)時(shí),會(huì)在頁(yè)面加載完成之后才執(zhí)行函數(shù)
2)傳入?yún)?shù)為標(biāo)簽字符串時(shí),會(huì)自動(dòng)創(chuàng)建返回一個(gè)該標(biāo)簽的jQuery對(duì)象
- 每個(gè)標(biāo)簽間要用""隔開(kāi)表示,并用+連接為一個(gè)完整的標(biāo)簽
3)傳入?yún)?shù)為選擇器字符串時(shí),查詢并返回選擇器屬性值所對(duì)應(yīng)的標(biāo)簽的對(duì)象或?qū)ο蠹?/p>
4)傳入為dom對(duì)象時(shí),會(huì)將dom對(duì)象轉(zhuǎn)換為jQuery對(duì)象并返回
- 若要取出jQuery數(shù)組中的dom對(duì)象,只需要通過(guò)根據(jù)對(duì)應(yīng)的下標(biāo)即可取出
選擇器
基本選擇器
$("#id屬性值"):查詢指定id屬性值的標(biāo)簽
$(".class屬性值"):查詢指定class屬性值的標(biāo)簽
$("標(biāo)簽名"):查詢指定標(biāo)簽名的標(biāo)簽
$("*"):查詢所有的標(biāo)簽
$("選擇器1,選擇器2"):獲查詢含有選擇器1或選擇器2的標(biāo)簽
層級(jí)選擇器
$("x y"):查詢父標(biāo)簽x內(nèi)的所有的后代標(biāo)簽y
$("x>y"):查詢父標(biāo)簽x內(nèi)的所有的子代標(biāo)簽y
$("m+n"):查詢m標(biāo)簽后面的一個(gè)n標(biāo)簽
$("m~n"):查詢與m標(biāo)簽同級(jí)的所有n標(biāo)簽
基本過(guò)濾選擇器
:first:查詢第一個(gè)標(biāo)簽
:last:查詢最后一個(gè)標(biāo)簽
:not(標(biāo)簽名):查詢非該標(biāo)簽的標(biāo)簽
:even:查詢索引為偶數(shù)的標(biāo)簽,索引從0開(kāi)始
:odd:查詢索引為奇數(shù)的標(biāo)簽,索引從0開(kāi)始
:eq(索引):查詢指定索引的標(biāo)簽
:gt(索引):查詢大于該索引的標(biāo)簽
:lt(索引):查詢小于該索引的標(biāo)簽
:header:查詢標(biāo)題標(biāo)簽
:animated:查詢正在執(zhí)行動(dòng)畫(huà)的標(biāo)簽
內(nèi)容過(guò)濾選擇器
:contains("文本"):查詢包含指定文本的標(biāo)簽
:empty:查詢不包含子元素或文本的空標(biāo)簽
:parent:查詢包含子元素或文本的標(biāo)簽
:has(標(biāo)簽x):查詢含有標(biāo)簽x的標(biāo)簽
屬性過(guò)濾選擇器
[屬性名]:查詢包含指定屬性的標(biāo)簽
[屬性名=值]:查詢包含指定屬性名和屬性值的標(biāo)簽
[屬性名!=值]:查詢不含指定屬性或指定屬性的值不等于特定的值的標(biāo)簽
[屬性值^=值]:查詢包含指定屬性的以指定屬性值開(kāi)頭的標(biāo)簽
[屬性值$=值]:查詢包含指定屬性的以指定屬性值結(jié)尾的標(biāo)簽
[屬性值*=值]:查詢包含指定屬性的包含指定屬性值的標(biāo)簽
[...][...]...:同時(shí)滿足多個(gè)過(guò)濾器的標(biāo)簽
表單過(guò)濾選擇器
:text:查找所有的文本輸入框
:password:查找所有的密碼輸入框
:radio:查找所有的單選框
:checkbox:查找所有的復(fù)選框
:submit:查找所有的提交按鈕
:reset:查詢所有的重置按鈕
:button:查詢所有的按鈕
:hidden:查找所有的隱藏元素(type為hidden或display為none)
表單屬性過(guò)濾選擇器
:enabled:查詢可選的元素
:disabled:查詢不可選的元素
:checked:查詢選中的元素(單選框、多選框等,不包含下拉框)
:selected:查詢option中選中的元素
方法
- 在function(){}函數(shù)中,有一個(gè)this對(duì)象,該this對(duì)象是正在響應(yīng)的事件的dom對(duì)象
eq(索引):獲取指定索引的元素
first():獲取第一個(gè)元素
last():獲取最后一個(gè)元素
filter(值):獲取與值匹配的元素
is(值):只有要一個(gè)值與其匹配,返回true
has(值):獲取含有該值的元素
not(值):獲取非該值的元素
children(值):獲取指定值的子元素
find(值):獲取指定值的后代元素
next():獲取當(dāng)前元素的下一個(gè)元素
nextAll():獲取當(dāng)前元素后的所有元素
nextUntil(值):獲取從當(dāng)前位置到指定值間的所有元素
parent():獲取父元素
prev():獲取當(dāng)前元素的上一個(gè)元素
prevAll():獲取當(dāng)前元素前面所有的元素,按逆序存入數(shù)組
prevUntil(值):獲取當(dāng)前元素至指定值間的所有元素
siblings():獲取當(dāng)前元素前后的所有元素
add(值):將指定值添加進(jìn)當(dāng)前元素中
trim():去除首尾空格
confirm():確認(rèn)提示框函數(shù),參數(shù)為提示內(nèi)容,返回值為boolean類型。
- 有兩個(gè)按鈕,“確定”按鈕返回值為true,“取消”按鈕返回false
屬性操作
html():設(shè)置和獲取起始標(biāo)簽和結(jié)束標(biāo)簽中的內(nèi)容
text():設(shè)置和獲取起始標(biāo)簽和結(jié)束標(biāo)簽中的文本內(nèi)容
val():設(shè)置和獲取表單項(xiàng)的value屬性值
val(["值1","值2",...]):根據(jù)標(biāo)簽的value可批量默認(rèn)選擇單選框、多選框等
attr("屬性名","值"):2個(gè)參數(shù)時(shí),設(shè)置指定屬性的值,1個(gè)參數(shù)時(shí),獲取屬性值
- 對(duì)于checked、readOnly、selected、disabled,推薦使用prop()
- 能自定義屬性和屬性值
動(dòng)畫(huà)操作
- 參數(shù)1:動(dòng)畫(huà)執(zhí)行時(shí)長(zhǎng),以毫秒為單位
- 參數(shù)2:擁有回調(diào)函數(shù)(動(dòng)畫(huà)執(zhí)行完自動(dòng)調(diào)用的函數(shù))
1)基本動(dòng)畫(huà):
show():將隱藏的元素顯示
hide():將可見(jiàn)的元素隱藏
toggle():可見(jiàn)就隱藏,不可見(jiàn)就顯示
2)淡入淡出動(dòng)畫(huà):
fadeln():淡入
fadeOut():淡出
fadeToggle():淡入淡出間切換
fadeTo(t,x):指定時(shí)長(zhǎng)t內(nèi),修改透明度至x,0為透明,1為完全顯示
事件
- 在綁定事件的function(){}中,若使用參數(shù)event,此刻的event即為事件的對(duì)象,可由此獲取到事件的類型type、x坐標(biāo)pageX、y坐標(biāo)pageY
click():單擊事件,可綁定事件,也可觸發(fā)事件
mouseover():鼠標(biāo)移入對(duì)象時(shí)觸發(fā)事件
mouseout():鼠標(biāo)移出對(duì)象時(shí)觸發(fā)事件
mousemove:鼠標(biāo)在對(duì)象內(nèi)移動(dòng)時(shí)觸發(fā)事件
bind("事件1 事件2 ...",function(){}):可以給一個(gè)元素同時(shí)綁定多個(gè)事件
unbind():效果與bind相反,解除事件的綁定,不傳參時(shí)解除所有綁定事件
one():效果與bind類似,但所有事件只會(huì)響應(yīng)一次
live():效果與bind類似,但用live綁定的一個(gè)或多個(gè)事件,由同樣選擇器創(chuàng)建的新的元素,也會(huì)具有綁定效果
change():內(nèi)容發(fā)生修改時(shí)觸發(fā)事件
blur():失去焦點(diǎn)時(shí)觸發(fā)事件
XML
元素(標(biāo)簽):
解析XML
- element("子類標(biāo)簽名"):通過(guò)標(biāo)簽名查找指定的標(biāo)簽,返回一個(gè)Element類的標(biāo)簽對(duì)象
- elements("子類標(biāo)簽名"):通過(guò)標(biāo)簽名查找指定的標(biāo)簽,返回一個(gè)list<Element>類的標(biāo)簽集合對(duì)象
elementText("標(biāo)簽名"):獲取指定標(biāo)簽名的文本內(nèi)容,返回一個(gè)String類型
attributeValue("屬性名"):獲取指定屬性名的屬性值,返回一個(gè)String類型
asXML():將標(biāo)簽對(duì)象轉(zhuǎn)換為標(biāo)簽字符串
思路:
①加載配置文件,獲取document對(duì)象
②獲取根元素
③獲取根元素下的每個(gè)標(biāo)簽中的子標(biāo)簽或?qū)傩曰蛭谋?/p>
TomCat
1)啟動(dòng):
? ①:bin目錄下的startup.bat文件
? ②:命令行輸入cd bin文件目錄—>轉(zhuǎn)盤(pán)符—>輸入catalina run
2)測(cè)試:http://localhost:8080、http://127.0.0.1:8080
3)關(guān)閉:
? ①:直接關(guān)閉窗口
? ②:在窗口界面按ctrl+c
? ③:bin目錄下的shutdown.bat文件
4)修改端口號(hào):conf目錄下的server.xml配置文件中的Connector標(biāo)簽,修改port屬性值(端口號(hào)范圍:1~65535),改完需重啟TomCat服務(wù)器
- http協(xié)議默認(rèn)端口號(hào):80
5)部署Web工程:
? ①將工程目錄拷貝進(jìn)webapps目錄下即可
- 訪問(wèn):http://ip地址:服務(wù)器端口號(hào)/工程名/訪問(wèn)的文件名
? ②conf/Catalina/localhost目錄下,創(chuàng)建一個(gè)xml文件
- 文件格式:<Context path="xml文件名" docBase="工程目錄" />
- 訪問(wèn):http://ip地址:服務(wù)器端口號(hào)/xml文件名/訪問(wèn)的文件名
6)注意點(diǎn):
Servlet
Servlet程序?qū)崿F(xiàn)
方式一:
編寫(xiě)一個(gè)類實(shí)現(xiàn)Servlet接口,實(shí)現(xiàn)所有方法
實(shí)現(xiàn)Service方法,用于處理請(qǐng)求,并響應(yīng)數(shù)據(jù)
配置web.xml文件
<servlet>:配置Servlet程序
- <servlet-name>:為Servlet程序起別名(常為類名)
- <servlet-class>:Servlet程序的全類名
- (可選)<init-param>:初始化參數(shù)
- <param-name>:初始化參數(shù)的名字
- <param-value>:初始化參數(shù)的值
<servlet-mapping>:配置訪問(wèn)Servlet程序的地址
-
<servlet-name>:明確配置的地址給指定的哪個(gè)Servlet程序使用
-
<url-pattern>:/自定義地址
/解析時(shí)代表:http://ip地址:服務(wù)器端口號(hào)/工程名
/自定義地址:即訪問(wèn)到Servlet程序的地址
(可選)<context-param>:
- <param-name>:key
- <param-value>:value
方式二:
生命周期:
①執(zhí)行Servlet構(gòu)造方法
②執(zhí)行init方法進(jìn)行初始化
③執(zhí)行service方法
④執(zhí)行destroy進(jìn)行銷(xiāo)毀
- ①②在創(chuàng)建Servlet程序時(shí)會(huì)調(diào)用,③是每次訪問(wèn)網(wǎng)址時(shí)調(diào)用,④在停止web工程服務(wù)時(shí)調(diào)用
Servlet中的類
1)Selvice類:將service方法中ServletRequest類型的形參向下轉(zhuǎn)型為HttpServletRequest類型,調(diào)用其對(duì)象的getMethod(),可以獲取發(fā)送數(shù)據(jù)請(qǐng)求的為get還是post類型
2)ServletConfig類:Selvlet程序的配置信息類,可獲取程序別名、初始化參數(shù)、ServletContext對(duì)象
? ①調(diào)用init方法中ServletConfig類型的形參的方法:
? ②繼承HttpServlet的類中重寫(xiě)的doGet或doPost方法后:
- 每個(gè)ServletConfig只對(duì)唯一的Servlet程序有效
- 若該類重寫(xiě)了init方法,需要顯示調(diào)用super.init(config),否則會(huì)報(bào)空指針異常
3)ServletContext類:表示Selvlet上下文,是一個(gè)接口,一個(gè)工程中只會(huì)有一個(gè)ServletContext對(duì)象的實(shí)例,且該對(duì)象是一個(gè)域?qū)ο?/p>
- 先調(diào)用getServletContext()獲取一個(gè)ServletContext類型的變量
4)HttpServletRequest類:Tomcat服務(wù)器將每次發(fā)送請(qǐng)求的Http協(xié)議信息封裝到此類的對(duì)象中并作為doGet和doPost方法中的參數(shù)供我們調(diào)用,可獲取所有的請(qǐng)求信息
- 地址要以/開(kāi)頭,即訪問(wèn)的是必須是http://ip:port/工程名/下的(webapp目錄下)的資源,地址欄地址不變
- 請(qǐng)求的轉(zhuǎn)發(fā) 的地址 可以訪問(wèn)到WEB-INF目錄下
5)HttpServletResponse類:同樣是Tomcat服務(wù)器創(chuàng)建的對(duì)象,表示的是發(fā)送請(qǐng)求后所有的響應(yīng)信息,可以用來(lái)設(shè)置返回給客戶端的信息(流的方式)
- 兩個(gè)流不能同時(shí)使用
- 調(diào)用getWriter()后返回PrintWriter類的對(duì)象,調(diào)用該對(duì)象的write("str")直接返回給客戶端指定字符串
- 返回中文字符串時(shí),可能出現(xiàn)中文亂碼,需要將服務(wù)器編碼集和瀏覽器編碼集設(shè)為一致(要在獲取流對(duì)象前設(shè)置)
- Content-Type,text/html;charset=UTF-8:設(shè)置瀏覽器編碼集為UTF-8
- 絕對(duì)路徑:/工程名/資源名
HTTP
請(qǐng)求
1)客戶端–>服務(wù)器:請(qǐng)求
- 請(qǐng)求:GET、POST
GET請(qǐng)求:
form標(biāo)簽中使用method=get、a標(biāo)簽、link標(biāo)簽引入css、Script標(biāo)簽引入js文件、img標(biāo)簽引入圖片、iframe標(biāo)簽引入html頁(yè)面、瀏覽器輸入地址后回車(chē)
? ①請(qǐng)求行
? ②請(qǐng)求頭:key:value(不同的鍵值對(duì)表示不同含義)
- en-US(英語(yǔ))、zh-CN(漢語(yǔ))
- Keep-Alive:回傳數(shù)據(jù)后不要馬上關(guān)閉連接,維持一段時(shí)間
- Closed:馬上斷開(kāi)連接
POST請(qǐng)求:
form標(biāo)簽中使用method=post
? ①請(qǐng)求行:請(qǐng)求方式(POST)、請(qǐng)求的資源路徑、請(qǐng)求的協(xié)議和版本號(hào)
? ②請(qǐng)求頭
- application/x-www-form-urlencoded:表示提交的數(shù)據(jù)格式是name=value&name=value,然后對(duì)其進(jìn)行url編碼
- multipart/form-data:表示以多段的形式提交數(shù)據(jù)給服務(wù)器(以流的形式提交,用于上傳)
- no-cache:不緩存
(空格一行)
? ③請(qǐng)求體:發(fā)送給服務(wù)器的數(shù)據(jù)
響應(yīng)
2)服務(wù)器–>客戶端:響應(yīng)
? ①響應(yīng)行
? ②響應(yīng)頭
- MIME:大類型/小類型
(空格一行)
? ③響應(yīng)體:回傳給客戶端的數(shù)據(jù)
JSP
jsp頭部的page指令
language:表示jsp翻譯后為什么語(yǔ)言的文件(目前只支持Java)
contentType:表示返回的數(shù)據(jù)類型
pageEncoding:表示當(dāng)前jsp頁(yè)面的字符集
import:導(dǎo)包、導(dǎo)類
autoFlush:(out輸出流專用)設(shè)置輸出流緩沖區(qū)滿了之后是否自動(dòng)刷新緩沖區(qū)(默認(rèn)為true)
buffer:(out輸出流專用)設(shè)置輸出流緩沖區(qū)的大小,默認(rèn)為8kb
errorPage:設(shè)置jsp頁(yè)面出錯(cuò)時(shí)自動(dòng)跳轉(zhuǎn)去的錯(cuò)誤頁(yè)面路徑
isErrorPage:設(shè)置當(dāng)前jsp頁(yè)面是否為錯(cuò)誤信息頁(yè)面(默認(rèn)是false,true的話會(huì)生成異常類捕獲異常信息)
session:設(shè)置訪問(wèn)當(dāng)前jsp頁(yè)面是否會(huì)創(chuàng)建HttpSession對(duì)象(默認(rèn)是true)
extends:設(shè)置jsp文件被Java翻譯出來(lái)后默認(rèn)繼承的類
腳本
1)聲明腳本:
<%! java代碼 %>
2)表達(dá)式腳本:用于在頁(yè)面上輸出數(shù)據(jù)
<% =表達(dá)式 %>
3)代碼腳本:
<% java代碼 %>
EL表達(dá)式
使用
- 用于替換表達(dá)式腳本,主要用于輸出jsp頁(yè)面中的數(shù)據(jù)(特別時(shí)域?qū)ο笾斜4娴臄?shù)據(jù))
${ 表達(dá)式 }
-
當(dāng)域?qū)ο笾卸加邢嗤膋ey時(shí),會(huì)按照域的從小到大范圍進(jìn)行輸出
-
在輸出null值時(shí),輸出的為空串
-
在輸出自定義類的對(duì)象時(shí),直接調(diào)用對(duì)象的toString()
在輸出自定義類對(duì)象的屬性值(對(duì)象.屬性名)時(shí),實(shí)質(zhì)上調(diào)用的是對(duì)應(yīng)屬性名的get()(獲取屬性值)
不同類型屬性輸出值不同:
- 變量:值
- 數(shù)組:數(shù)組地址,根據(jù)數(shù)組[下標(biāo)]找對(duì)應(yīng)值
- 集合List:集合全部元素,根據(jù)集合[下標(biāo)]找對(duì)應(yīng)值
- 集合Map:集合全部元素,根據(jù)集合.key值找對(duì)應(yīng)value值
運(yùn)算符
①關(guān)系運(yùn)算符:== / eq(等于)、!= / ne(不等于)、< / lt(小于)、> / gt(大于)、<= / le(小于等于)、>= / ge(大于等于)
②邏輯運(yùn)算符:&& / and(與)、|| / or(或)、| / not(非)
③算術(shù)運(yùn)算:+(加)、-(減)、*(乘)、/ / div(除)、% / mod(取余)
④empty運(yùn)算${empty 表達(dá)式}:判斷數(shù)據(jù)是否為空,如果為空,返回true
⑤三元運(yùn)算:條件 ? 表達(dá)式1 : 表達(dá)式2
⑥[]運(yùn)算符:Map['帶有特殊符號(hào)的key的值']
- 輸出指定下標(biāo)的數(shù)組或List集合中的值
- 輸出Map集合中含有特殊字符的key所對(duì)應(yīng)的value值
⑦.運(yùn)算:調(diào)用get方法
隱含對(duì)象
①PageContextImpl pageContext:獲取jsp頁(yè)面中的九大內(nèi)置對(duì)象
- ${pageContext.九大內(nèi)置對(duì)象}即可獲取九大內(nèi)置對(duì)象,也可以.方法名直接調(diào)用對(duì)象所擁有的方法(.調(diào)用的是方法名所對(duì)應(yīng)的get方法,與調(diào)用get方法輸出屬性值類似)
②Map<String,Object> pageScope:獲取pageContext域中的數(shù)據(jù)
③Map<String,Object> requestScope:獲取request域中的數(shù)據(jù)
④Map<String,Object> sessionScope:獲取session域中的數(shù)據(jù)
⑤Map<String,Object> applicationScope:獲取servletContext域中的數(shù)據(jù)
⑥ Map<String,String> param:獲取jsp請(qǐng)求頁(yè)面中請(qǐng)求參數(shù)的值
⑦M(jìn)ap<String,String[]> paramValues:獲取jsp頁(yè)面中請(qǐng)求參數(shù)的值(?name=value & name=value),在有多個(gè)值時(shí)使用
⑧Map<String,String> header:獲取請(qǐng)求頭的信息
⑨Map<String,String[]> headerValues:獲取請(qǐng)求頭的信息,多個(gè)值時(shí)使用
⑩Map<String,Cookie> cookie:獲取當(dāng)前請(qǐng)求的Cookie的信息,可通過(guò)該Cookie獲取到指定的Key或其對(duì)應(yīng)的Value值
?Map<String,String> initParam:獲取在web.xml中配置的<context-param>上下文參數(shù)
九大內(nèi)置對(duì)象
HttpServletRequest類:request:請(qǐng)求對(duì)象(域?qū)ο?#xff0c;一次請(qǐng)求內(nèi)有效)
- getScheme():獲取請(qǐng)求的協(xié)議
- getServerName():獲取請(qǐng)求的服務(wù)器的IP地址或域名
- getServerPort():獲取請(qǐng)求的服務(wù)器的端口號(hào)
- getContextPath():獲取當(dāng)前工程路徑(相對(duì))
- getMethod():獲取請(qǐng)求的方式(GET或POST)
- getRemoteHost():獲取客戶端的IP地址
response:響應(yīng)對(duì)象
PageContextImpl類:pageContext:jsp的上下文對(duì)象(域?qū)ο?#xff0c;當(dāng)前jsp頁(yè)面范圍內(nèi)有效)
HttpSession類:session:會(huì)話對(duì)象(域?qū)ο?#xff0c;一個(gè)會(huì)話范圍內(nèi)有效(打開(kāi)瀏覽器訪問(wèn)服務(wù)器,直到關(guān)閉瀏覽器))
- getID():獲取會(huì)話的唯一標(biāo)識(shí)
ServletContext類:application:ServletContext對(duì)象(域?qū)ο?#xff0c;整個(gè)web工程內(nèi)有效(web不停止,數(shù)據(jù)就在))
config:ServletConfig對(duì)象
out:jsp輸出流對(duì)象
page:指向當(dāng)前jsp的對(duì)象
exception:異常對(duì)象
- out.wirte()、out.print()和response.getWriter().write()都可以用來(lái)輸出數(shù)據(jù)給客戶端
- jsp頁(yè)面中的所有代碼執(zhí)行完后,會(huì)執(zhí)行一下兩個(gè)操作:
- 執(zhí)行out.flush(),將out緩沖區(qū)的數(shù)據(jù)追加寫(xiě)入到response緩沖區(qū)中
- response執(zhí)行刷新操作,將數(shù)據(jù)寫(xiě)給客戶端
- out.print():可用于輸出任意類型數(shù)據(jù)(會(huì)先將任意類型數(shù)據(jù)先轉(zhuǎn)化為字符串后再調(diào)用write())
- out.write():可輸出字符串(會(huì)將任意類型數(shù)據(jù)先轉(zhuǎn)化為char類型再輸出)
常用標(biāo)簽
1)靜態(tài)包含:
<%@ include file="/jsp頁(yè)面路徑" %>
- 實(shí)質(zhì)上是將被包含的jsp文件的代碼拷貝到包含的位置處 調(diào)用out.write()輸出
2)動(dòng)態(tài)包含:
<jsp:include page="/jsp文件路徑" >
? (可選)<jsp:param name="參數(shù)名" value="參數(shù)值">
</jsp:include>
- 實(shí)質(zhì)上是執(zhí)行了JspRuntimeLibrary(requesst,response,"/剪視頻文件路徑",out,false)代碼去調(diào)用jsp頁(yè)面
- 該方法共用了九大內(nèi)置對(duì)象
- 可選部分為傳遞參數(shù),可用request.getParameter("name")獲取值
3)請(qǐng)求轉(zhuǎn)發(fā):
<jsp:forward page="/跳轉(zhuǎn)路徑"></jsp:forward>
- 與調(diào)用request.getRequestDispatcher("/跳轉(zhuǎn)路徑").forward(request,response)效果完全一樣
監(jiān)聽(tīng)器
- 三大組件:Servlet程序、Filter過(guò)濾器、Listener監(jiān)聽(tīng)器
- 接口,監(jiān)聽(tīng)某事物的變化,通過(guò)回調(diào)函數(shù),反饋給客戶(程序)去做對(duì)應(yīng)的處理
ServletContextListener監(jiān)聽(tīng)器:監(jiān)聽(tīng)ServletContext對(duì)象的創(chuàng)建(web工程創(chuàng)建時(shí))和銷(xiāo)毀(web工程停止時(shí))
- contextInialized(ServletContextEvent sce):在ServletContext對(duì)象創(chuàng)建后調(diào)用,做初始化
- contextDestroyed(ServletContextEvent sce):在ServletContext對(duì)象銷(xiāo)毀后調(diào)用
使用步驟:
編寫(xiě)一個(gè)類實(shí)現(xiàn)ServletContextListener接口
調(diào)用其兩個(gè)回調(diào)方法
web.xml中配置監(jiān)聽(tīng)器
-
<listener>
? <listener-class> </listener-class>
</listener>
JSTL標(biāo)簽庫(kù)
- 替換代碼腳本
1)導(dǎo)入標(biāo)簽庫(kù)的jar包:taglibs-standard-impl.jar、taglibs-standard-spec.jar
2)使用taglib指令引入標(biāo)簽庫(kù):
CORE標(biāo)簽庫(kù):<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
XML標(biāo)簽庫(kù):<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
FMT標(biāo)簽庫(kù):<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fml" %>
SQL標(biāo)簽庫(kù):<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
FUNCTIONS標(biāo)簽庫(kù):<%@ taglib="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
3)常用標(biāo)簽:
? ①<c:set />:往域中保存數(shù)據(jù)
- scope:設(shè)置保存的域
- page:PageContext域(默認(rèn))
- request:Request域
- session:Session域
- application:ServletContext域
- var:設(shè)置key值
- value:設(shè)置value值
②<c:if></c:if>:判斷
- test:test內(nèi)的El表達(dá)式成立,則輸出標(biāo)簽間的內(nèi)容
③<c:choose>:多情況判斷
? <c:when test="表達(dá)式"></c:when>:當(dāng)test表達(dá)式的值為true,執(zhí)行when標(biāo)簽
? <c:otherwise></c:otherwise>:相當(dāng)于switch-case的default
</c:choose>
- 標(biāo)簽內(nèi)只能使用jsp注釋
- when的父標(biāo)簽一定是choose
- otherwise標(biāo)簽內(nèi)可以嵌套choose-when
④<c:forEach></c:forEach>:遍歷
- begin:遍歷開(kāi)始索引
- end:遍歷結(jié)束索引
- var:當(dāng)前正在遍歷的數(shù)據(jù)
- items:遍歷的數(shù)據(jù)(集合(Map為鍵值對(duì))、數(shù)組等)
- step:遍歷時(shí)的步長(zhǎng)(迭代時(shí)的步長(zhǎng))
- varStatus:當(dāng)前遍歷到的數(shù)據(jù)的狀態(tài)
- current:獲取當(dāng)前所遍歷的數(shù)據(jù)
- index:獲取遍歷的索引
- count:當(dāng)前是遍歷的第幾個(gè)
- first:當(dāng)前遍歷的數(shù)據(jù)是否位于第一條
- last:當(dāng)前遍歷的數(shù)據(jù)是否位于最后一條
- begin:獲取begin屬性值
- end:獲取end屬性值
- step:獲取step屬性值
使用begin-end,var則代表從索引開(kāi)始到結(jié)束
使用items,var則代表items所要遍歷的數(shù)據(jù)
使用EL表達(dá)式${}獲取域中的數(shù)據(jù)作為items所要遍歷的數(shù)據(jù)
使用EL表達(dá)式${}獲取var的值
獲取到Map的鍵值對(duì)后可通過(guò).key或.value獲取對(duì)應(yīng)的key或value
文件上傳與下載
1)上傳文件:(post)
要有form標(biāo)簽,屬性值method=post,enctype=multipart/form-data
- get有數(shù)據(jù)大小限制,所以選用post
- enctype=multipart/form-data表示提交的數(shù)據(jù)以多段(每個(gè)表單項(xiàng)為一個(gè)數(shù)據(jù)段)的形式進(jìn)行拼接,然后以二進(jìn)制流的形式發(fā)送給服務(wù)器
- 請(qǐng)求頭中Content-Type表示提交的數(shù)據(jù)類型
- boundary是系統(tǒng)每次隨機(jī)生成的數(shù)據(jù)段分隔符,分隔符末尾帶--是數(shù)據(jù)的結(jié)束標(biāo)記
- 每段數(shù)據(jù)以分隔符開(kāi)始,最后以分隔符結(jié)束,數(shù)據(jù)段以分隔符開(kāi)始后,包含:①對(duì)數(shù)據(jù)的描述 ②空行 ③上傳的數(shù)據(jù)
使用<input type="file" name=""/>提交需要上傳的文件
在Servlet程序中對(duì)數(shù)據(jù)進(jìn)行解析和保存(先導(dǎo)包)
先ServletFileUpload.isMultipartContent(req)判斷上傳的數(shù)據(jù)是否是多段
通過(guò)new DiskFileItemFactory()創(chuàng)建一個(gè)FileItemFactory工廠的實(shí)現(xiàn)類對(duì)象,將其作為參數(shù)創(chuàng)建一個(gè)ServletFileUpload(FileItemFactory)工具類的對(duì)象
調(diào)用工具類對(duì)象的parseRequest(req)來(lái)解析上傳的數(shù)據(jù),得到一個(gè)封裝了每一個(gè)表單項(xiàng)的List<FileItem>集合
循環(huán)遍歷(增強(qiáng)for循環(huán))獲取每一個(gè)FileItem類型的表單項(xiàng),調(diào)用表單項(xiàng)對(duì)象的isFormField()判斷每一個(gè)表單項(xiàng)是普通數(shù)據(jù)類型,還是上傳的文件
普通表單項(xiàng):
- 調(diào)用表單項(xiàng)對(duì)象的getFiledName()來(lái)獲取表單項(xiàng)的name屬性值
- 調(diào)用表單項(xiàng)對(duì)象的getString("UTF-8")來(lái)獲取表單項(xiàng)的value屬性值
上傳的文件:
- 調(diào)用表單項(xiàng)對(duì)象的getName()獲取上傳的文件名
- 調(diào)用表單項(xiàng)對(duì)象的write(new File("path"+"name"))將指定名字的文件保存在指定路徑的位置處
2)下載文件:(get)
獲取要下載的文件名fileName
在下載前需要先知道下載的文件類型(不同文件下載后的格式不一樣)
-
調(diào)用getServletContext()獲取ServletContext對(duì)象
-
調(diào)用ServletContext對(duì)象的getMimeType("path"+fileName)獲取要下載的文件的數(shù)據(jù)類型(返回String類型對(duì)象)
- /映射到當(dāng)前工程目錄的web下
-
調(diào)用resp.setContentType(數(shù)據(jù)類型),通過(guò)響應(yīng)頭告訴客戶端返回的數(shù)據(jù)類型
-
調(diào)用resp.setHeader("Content-Disposition","attachment;filename="+fileName),設(shè)置并通過(guò)響應(yīng)頭告訴客戶端這個(gè)數(shù)據(jù)是用于下載的
-
Content-Disposition響應(yīng)頭,表示收到的數(shù)據(jù)的處理方式
attachment:表示數(shù)據(jù)為附件,下載使用
filename:表示所下載的文件的名
- 若下載的文件名為中文,需要調(diào)用URLEncoder.encode("filename","UTF-8")轉(zhuǎn)換為UTF-8編碼集的樣式,否則會(huì)出現(xiàn)亂碼
-
讀取要下載的文件內(nèi)容
- 調(diào)用ServletContext對(duì)象的getResourceAsStream("path"+fileName)獲取要下載的文件的一個(gè)InputStream流
將要下載的文件內(nèi)容回傳給客戶端
- 調(diào)用resp.getOutputStream()獲取響應(yīng)給客戶端的輸出流
- 若已導(dǎo)入commons-io.jar,直接調(diào)用IOUtils.copy(InputStream,OutputStream)將文件的輸入流內(nèi)容復(fù)制給客戶端的輸出流
3)解析上傳的數(shù)據(jù):
- 導(dǎo)入jar包:commons-io.jar、commons-fileupload.jar
ServletFileUpload類:用于解析上傳的數(shù)據(jù)
FileItem類:表示每個(gè)表單項(xiàng)
- boolean ServletFileUpload.isMultipartContent(HttpServletRequest request):判斷上傳的數(shù)據(jù)是否為多段數(shù)據(jù)
- public List<FileItem> parseRequest(HttpServletRequest request):解析上傳的數(shù)據(jù)
- boolean FileItem.isFormField():判斷表單項(xiàng)是否為普通的表單項(xiàng)還是文件類型,true則是普通表單項(xiàng)
- String FileItem.getFieldName():獲取表單項(xiàng)的name屬性值
- String FileItem.getString():獲取表單項(xiàng)的值,可傳參數(shù)"UTF-8"來(lái)防止出現(xiàn)亂碼
- String FileItem.getName():獲取上傳的文件名
- void FileItem.write(file):將上傳的文件寫(xiě)入到file所指向的硬盤(pán)位置
Cookie
創(chuàng)建Cookie:
- 通過(guò)響應(yīng)頭Set-Cookie通知客戶端保存Cookie(Set-Cookie:key=value)
- 在收到Set-Cookie響應(yīng)頭時(shí),會(huì)先查看有無(wú)該Cookie,沒(méi)有則創(chuàng)建,有則修改
- 可以一次性保存多個(gè)Cookie,一個(gè)Cookie的大小不能超過(guò)4kb
獲取Cookie:
調(diào)用request對(duì)象.getCookies(),返回一個(gè)Cookie[]數(shù)組
- 客戶端通過(guò)請(qǐng)求頭Cookie:key=value把Cookie信息發(fā)送給服務(wù)器
要獲取指定key的Cookie時(shí),只能循環(huán)遍歷,判斷Cookie的key與所要的是否相同
Cookie對(duì)象.getName():獲取Cookie的key
Cookie對(duì)象.getValue():獲取Cookie的value
修改Cookie:
①調(diào)用構(gòu)造器:
②調(diào)用方法:
- 中文等會(huì)亂碼,需要用Base64編碼
設(shè)置Cookie存活時(shí)間:
調(diào)用cookie對(duì)象.setMaxAge(s)設(shè)置
-
s為存活的秒數(shù)
s為負(fù)數(shù)時(shí)(默認(rèn)),為會(huì)話級(jí)別,退出瀏覽器時(shí)銷(xiāo)毀Cookie
s為0時(shí),立即刪除Cookie
s為正數(shù)時(shí),在s秒后刪除Cookie
設(shè)置Cookie有效路徑:
- 該路徑及該路徑下所有的子路徑在請(qǐng)求時(shí)都會(huì)發(fā)送該Cookie
Session
創(chuàng)建Session:
- 第一次調(diào)用時(shí)是創(chuàng)建Session,之后調(diào)用是調(diào)用創(chuàng)建好的Session
- session對(duì)象.isNew()可以判斷是否為新創(chuàng)建的Session,返回boolean值
- 每個(gè)Session會(huì)有一個(gè)唯一的ID
Session中存取數(shù)值:
設(shè)置和獲取Session的超時(shí)時(shí)長(zhǎng):
調(diào)用session對(duì)象.setMaxInactiveInterval(s)設(shè)置Session的超時(shí)時(shí)長(zhǎng)
-
s為存活的秒數(shù)
-
當(dāng)s為正數(shù)時(shí),設(shè)置s秒后銷(xiāo)毀Session,當(dāng)s為負(fù)數(shù)時(shí),設(shè)置為永不銷(xiāo)毀
-
s的默認(rèn)時(shí)長(zhǎng)為30(分鐘),在Tomcat服務(wù)器配置文件web.xml中有設(shè)定,可以在工程的web.xml中配置以下:
<session-config>
? <session-timeout>存活分鐘</session-timeout>
</session-config>
調(diào)用session對(duì)象.getMaxInactiveInterval()獲取Session的超時(shí)時(shí)長(zhǎng)
- Session超時(shí)時(shí)長(zhǎng)為:客戶端兩次請(qǐng)求間的間隔時(shí)長(zhǎng)
調(diào)用session對(duì)象.invalidate()讓當(dāng)前Session立即失效
Filter過(guò)濾器
①請(qǐng)求攔截、響應(yīng)過(guò)濾
②權(quán)限配置(實(shí)現(xiàn)doFilter方法)
③使用Filter過(guò)濾器統(tǒng)一處理事務(wù)
- web.xml中配置url為/*可以確保所有的請(qǐng)求都會(huì)經(jīng)過(guò)Filter過(guò)濾器處理,若在執(zhí)行的所有路徑中有可能有異常的進(jìn)行拋出,并由doFilter()進(jìn)行異常的捕獲,最后判斷是否提交或回滾,由此來(lái)實(shí)現(xiàn)事務(wù)的管理
(一)web.xml文件配置:
<filter>
? <filter-name>名稱</filter-name>
? <filter-class>實(shí)現(xiàn)的類的全類名</filter-class>
? <init-param>(可選、可多選)
? <param-name> name </param-name>
? <param-value> value </param-value>
? </init-param>
</filter>
<filter-mapping>
? <filter-name>對(duì)應(yīng)名稱</filter-name>
? <url-pattern> 攔截的目標(biāo) </url-pattern>(可多選)
-
攔截的三種目標(biāo):
/ :http://localhost:8080/工程路徑/
- /資源名:精確匹配,攔截所有想訪問(wèn)指定資源的程序
- /目錄/*:目錄匹配,攔截所有想訪問(wèn)指定目錄下的資源的程序
- *.文件類型:后綴名匹配,攔截所有想訪問(wèn)相關(guān)后綴名的文件的程序
</filter-mapping>
(二)實(shí)現(xiàn)步驟:
①實(shí)現(xiàn)javax.servlet.Filter下的Filter接口(需導(dǎo)包)
②根據(jù)實(shí)現(xiàn)Filter的類來(lái)配置web.xml文件,限制訪問(wèn)哪些資源需要經(jīng)過(guò)doFilter過(guò)濾
③將需要進(jìn)行請(qǐng)求攔截的內(nèi)容在doFilter()內(nèi)實(shí)現(xiàn)
- ServletRequest類要強(qiáng)轉(zhuǎn)為HttpServletRequest類才能獲取session域
④調(diào)用參數(shù)的方法filterChain.doFilter(servletRequest,servletResponse)實(shí)現(xiàn)請(qǐng)求的放行
- 缺少該步驟的話,即使檢查通過(guò),也不會(huì)訪問(wèn)到目標(biāo)資源
(三)Filter過(guò)濾器的生命周期
①構(gòu)造器、init()初始化:在Filter過(guò)濾器創(chuàng)建時(shí)執(zhí)行
②doFilter():每次攔截時(shí)執(zhí)行
③destroy():web服務(wù)停止時(shí)執(zhí)行銷(xiāo)毀
(四)Filter過(guò)濾器參數(shù)中的類
FilterConfig類:
- getFilterName():獲取web.xml文件中所對(duì)應(yīng)的的文本值
- getInitParameter("name"):獲取web.xml文件中下的下的name所對(duì)應(yīng)的value值
- getServletContext():獲取ServletContext對(duì)象
FilterChain過(guò)濾器鏈:
-
doFilter():若有多個(gè)Fliter過(guò)濾器,執(zhí)行下一個(gè)過(guò)濾器,否則訪問(wèn)目標(biāo)資源
-
Filter過(guò)濾器的執(zhí)行順序是按Filter在web.xml中的配置順序執(zhí)行的
-
默認(rèn)情況下所有Filter過(guò)濾器及目標(biāo)資源處在同一線程
-
多個(gè)Filter過(guò)濾器及目標(biāo)資源共享一個(gè)request對(duì)象
-
執(zhí)行順序:(假設(shè)兩個(gè)過(guò)濾器)
filter1前——doFilter1——filter2前——doFilter2——目標(biāo)資源——filter后2——filter后1
- 若其中任意過(guò)濾器執(zhí)行完后無(wú)doFilter,則會(huì)直接返回(不會(huì)訪問(wèn)目標(biāo)資源)
(五)ThreadLocal
- 每個(gè)線程中可以為其關(guān)聯(lián)一個(gè)數(shù)據(jù),可以使用ThreadLocal來(lái)關(guān)聯(lián)數(shù)據(jù)
- 其關(guān)聯(lián)方式類似于Map(其key值為String類型,存放當(dāng)前線程名,value值存放想要在該線程中所相關(guān)聯(lián)的數(shù)據(jù)的值)
- 其作用是為了解決線程安全問(wèn)題(比如事務(wù)回滾問(wèn)題(保存同一個(gè)Connection對(duì)象)(用后記得將保存的ThreadLocal值remove()))
- 創(chuàng)建的ThreadLocal對(duì)象一般為static修飾
- 調(diào)用ThreadLocal對(duì)象的set(數(shù)值)來(lái)存儲(chǔ)關(guān)聯(lián)的值(每個(gè)ThreadLocal對(duì)象只能關(guān)聯(lián)一個(gè)數(shù)據(jù)值,本質(zhì)是根據(jù)線程名來(lái)存儲(chǔ))
- 調(diào)用ThreadLocal對(duì)象的get()來(lái)獲取關(guān)聯(lián)的值(本質(zhì)是根據(jù)線程名來(lái)獲取)
JSON
-
本質(zhì)是一個(gè)對(duì)象
-
有兩種存在形式:對(duì)象(常用于操作JSON中的數(shù)據(jù))、字符串(常用于獲取JSON中的數(shù)據(jù))
-
JSON.stringify(JSON對(duì)象):將JSON對(duì)象轉(zhuǎn)換為字符串形式
JSON.parse(JSON對(duì)象):將JSON對(duì)象轉(zhuǎn)換為對(duì)象形式
-
(一)客戶端:(javascript下)
變量:
var 變量名={
? "key1" : 值1 ,
? "key2" : 值2 ,
? …
}
取值:
變量名.key
- 數(shù)組的話可根據(jù)下標(biāo)獲取指定的值,否則打印數(shù)組內(nèi)全部數(shù)據(jù)
- JSON內(nèi)可嵌套JSON
(二)服務(wù)器:(導(dǎo)包:gson.jsp)
JavaBean中:
List、Map中:(list與map方法類似)
創(chuàng)建一個(gè)Gson對(duì)象
調(diào)用Gson對(duì)象.toJson(list對(duì)象)可將list對(duì)象轉(zhuǎn)換為JSON字符串類型對(duì)象(返回類型為String類型)
調(diào)用Gson對(duì)象.fromJson(JSON對(duì)象,TypeOfT)可將JSON對(duì)象轉(zhuǎn)換為list集合對(duì)象
-
TypeOfT是一個(gè)Type類型 ,獲取方法:
創(chuàng)建一個(gè)(匿名)類,該類繼承了TypeToken<集合類型<泛型類型>>,最后調(diào)用該類的getType()即可獲取
-
建議直接使用匿名子類(new TypeToken<集合類型<泛型類型>>(){}的方式調(diào)用getType())
AJAX
特點(diǎn):局部更新、異步請(qǐng)求與響應(yīng)
(一)請(qǐng)求與響應(yīng):(JavaScript下)
- true:異步
(二)Jquery中使用AJAX:
①$.ajax({ })
url:請(qǐng)求地址
data:請(qǐng)求參數(shù)(key=value)
type:請(qǐng)求方式
success:function(變量名){}:請(qǐng)求后的響應(yīng)事件
- 變量名:響應(yīng) 的對(duì)象
dataType:決定響應(yīng)對(duì)象的類型
-
text:text純文本
xml:xml文本的數(shù)據(jù)格式
json:JSON對(duì)象類型的對(duì)象
②$.get("url地址","請(qǐng)求參數(shù)","請(qǐng)求響應(yīng)后的響應(yīng)事件","響應(yīng)對(duì)象的類型")
- 請(qǐng)求方式已確定為get請(qǐng)求
③$.post("url地址","請(qǐng)求參數(shù)","請(qǐng)求響應(yīng)后的響應(yīng)事件","響應(yīng)對(duì)象的類型")
- 請(qǐng)求方式已確定為post請(qǐng)求
④$.getJSON("url地址","請(qǐng)求參數(shù)","請(qǐng)求響應(yīng)后的響應(yīng)事件")
- 請(qǐng)求方式已確定為get請(qǐng)求,響應(yīng)對(duì)象的類型確定為JSON對(duì)象類型
⑤$("選擇器").serialize():獲取表單提交的全部數(shù)據(jù)
- 數(shù)據(jù)的格式為key=value&key=value所拼接
- 在請(qǐng)求轉(zhuǎn)發(fā)到servlet程序時(shí),確保在data(請(qǐng)求參數(shù))中添加&才能獲取到請(qǐng)求參數(shù)
i18n
思路:
- baseName:共有、通用的名字
- localName:指定地區(qū)語(yǔ)言的名字
- 配置文件內(nèi)以key=value的形式保存,key為英文,value為對(duì)應(yīng)的地區(qū)的語(yǔ)言
- Locale.getDefault():獲取當(dāng)前系統(tǒng)默認(rèn)的地區(qū)語(yǔ)言的locale對(duì)象
- Locale.getAvailableLocales():獲取集合全部的地區(qū)語(yǔ)言的locale對(duì)象
- Locale.CHINA():獲取zh_CN的locale對(duì)象
- Locale.US():獲取en_US的locale對(duì)象
(一)請(qǐng)求頭方式實(shí)現(xiàn)網(wǎng)頁(yè)語(yǔ)言的國(guó)際化
<%
%>
之后在所有用到多種語(yǔ)言的文本處,使用
<%= ResourceBundle對(duì)象.getString("baseName",locale對(duì)象) %>
來(lái)表示文本,當(dāng)瀏覽器默認(rèn)語(yǔ)言不同時(shí),就會(huì)自動(dòng)更改網(wǎng)頁(yè)的語(yǔ)言
(二)根據(jù)用戶選擇實(shí)現(xiàn)網(wǎng)頁(yè)語(yǔ)言的國(guó)際化
(三)使用JSTL標(biāo)簽庫(kù)實(shí)現(xiàn)網(wǎng)頁(yè)語(yǔ)言的國(guó)際化
零碎知識(shí)點(diǎn)
JS和jQuery的頁(yè)面加載完成之后
-
JS:window.onload=function(){}
-
jQuery:$(function(){})、$(document).ready(function(){})
1)觸發(fā)時(shí)間:
JS:頁(yè)面加載好后,創(chuàng)建所有標(biāo)簽的DOM對(duì)象,并將標(biāo)簽顯示內(nèi)容加載完成
jQuery:頁(yè)面加載好后,創(chuàng)建所有標(biāo)簽的DOM對(duì)象后就執(zhí)行
2)執(zhí)行次數(shù):
JS:只會(huì)執(zhí)行最后一次賦值的函數(shù)
jQuery:執(zhí)行所有的function函數(shù),按順序執(zhí)行
base標(biāo)簽
相對(duì)路徑在跳轉(zhuǎn)時(shí)會(huì)根據(jù)當(dāng)前頁(yè)面地址欄中的地址進(jìn)行跳轉(zhuǎn),使用base標(biāo)簽可以設(shè)置跳轉(zhuǎn)時(shí)的相對(duì)路徑
<base href="絕對(duì)路徑"/>
- href的屬性值變成 相對(duì)路徑前的地址,當(dāng)頁(yè)面以相對(duì)路徑進(jìn)行跳轉(zhuǎn)時(shí),會(huì)在該地址的基礎(chǔ)上進(jìn)行跳轉(zhuǎn)
- 絕對(duì)路徑下的資源名可以省略(跳轉(zhuǎn)是在目錄的基礎(chǔ)上跳轉(zhuǎn)(/、..),與資源名無(wú)關(guān))
web中/的不同意義
被瀏覽器解析:http://ip:port
被服務(wù)器解析:http://ip:port/工程名
response.sendRediect("/"):將/發(fā)送給瀏覽器解析,得到http://ip:port
BeanUtils工具類
- 將客戶端的表單信息快速封裝進(jìn)自定義類中
導(dǎo)包:commons-logging.jar、commons-beanutils.jar
- Object為要將數(shù)據(jù)封裝進(jìn)去的類(先獲取name屬性值,再將值封裝進(jìn)Object類中)
- 可調(diào)用req.getParameterMap(),獲取客戶端的表單信息并封裝進(jìn)一個(gè)Map集合中,作為populate的另一個(gè)參數(shù)
- 本質(zhì)是獲取name與其值后,調(diào)用類中同名的set方法
表單重復(fù)提交
①在用戶提交表單后,因?yàn)闉g覽器會(huì)記錄下最后一次請(qǐng)求的信息,服務(wù)器若使用請(qǐng)求轉(zhuǎn)發(fā)進(jìn)行頁(yè)面跳轉(zhuǎn),當(dāng)用戶按功能鍵(Ctrl+F5)刷新時(shí),會(huì)重新發(fā)起瀏覽器的最后一次請(qǐng)求。
- 解決方法:改用請(qǐng)求轉(zhuǎn)發(fā)為重定向
②用戶提交表單,但可能出現(xiàn)網(wǎng)絡(luò)延遲,導(dǎo)致用戶多次提交表單
- 解決辦法:使用驗(yàn)證碼
③用戶提交表單,服務(wù)器也正常跳轉(zhuǎn),但提交完成后,用戶在瀏覽器頁(yè)面下進(jìn)行回退,重新提交表單
- 解決辦法:使用驗(yàn)證碼
請(qǐng)求轉(zhuǎn)發(fā)與重定向
1)請(qǐng)求轉(zhuǎn)發(fā):
- 客戶端向服務(wù)器發(fā)送一個(gè)請(qǐng)求,(客戶端發(fā)送的)請(qǐng)求地址沒(méi)有變化,服務(wù)器調(diào)用內(nèi)部方法將請(qǐng)求轉(zhuǎn)發(fā)到新地址進(jìn)行處理,處理完后將結(jié)果返回給客戶端
- 請(qǐng)求轉(zhuǎn)發(fā)的方式只會(huì)有一次客戶端對(duì)服務(wù)器的請(qǐng)求,服務(wù)器對(duì)客戶端的響應(yīng),因此瀏覽器地址欄顯示的依舊為第一次訪問(wèn)的原地址(request對(duì)象保持不變)
- 請(qǐng)求轉(zhuǎn)發(fā)只能訪問(wèn)當(dāng)前工程web下的資源,但可以訪問(wèn)WEB-INF下的資源,且request.setAttribute()域內(nèi)保存的數(shù)據(jù),新頁(yè)面可以獲取
2)重定向:
- 客戶端向服務(wù)器發(fā)送一個(gè)請(qǐng)求,(客戶端發(fā)送的)請(qǐng)求地址已發(fā)生了變化,服務(wù)器向客戶端發(fā)送了一個(gè)全新的地址,此刻客戶端會(huì)自動(dòng)訪問(wèn)新的地址,服務(wù)器將新的地址內(nèi)容返回給客戶端
- 客戶端發(fā)起了兩次請(qǐng)求,服務(wù)器進(jìn)行了兩次響應(yīng),且瀏覽器地址欄顯示的為第二次請(qǐng)求訪問(wèn)的新地址(request對(duì)象發(fā)生了改變)
- 重定向可以訪問(wèn)其他工程下的資源,但不可訪問(wèn)WEB-INF下的資源,且request.setAttribute()域內(nèi)保存的數(shù)據(jù),新頁(yè)面獲取不到
驗(yàn)證碼
導(dǎo)入谷歌驗(yàn)證碼jar包kaptcha.jar
配置web.xml文件用于生成驗(yàn)證碼的Servlet程序
<servlet-class>
? com.google.code.kaptcha.servlet.KaptchaServlet
</servlet-class>
在表單中使用img標(biāo)簽引用到servlet地址處并獲取到驗(yàn)證碼圖片
服務(wù)器中獲取谷歌生成的驗(yàn)證碼并和客戶端發(fā)送的驗(yàn)證碼進(jìn)行比較
- 使用request對(duì)象.getSession().getAttribute(KAPTCHA_SESSION_KEY)獲取Session中的驗(yàn)證碼
- 獲取到驗(yàn)證碼、保存到String中后應(yīng)立即調(diào)用request對(duì)象.getSession().removeAttribute(KAPTCHA_SESSION_KEY)銷(xiāo)毀驗(yàn)證碼
綁定單擊事件,使用this.src="絕對(duì)路徑?time="+new Date()直接訪問(wèn)web.xml下kaptcha的servlet程序,可以起到單擊圖片切換驗(yàn)證碼的效果,且由于有參數(shù)Date的作用,因此不會(huì)因?yàn)榫彺娑袚Q不了驗(yàn)證碼
異常處理
步驟:配置web.xml文件,設(shè)計(jì)好跳轉(zhuǎn)的頁(yè)面,并將異常往外拋出,由Tomcat服務(wù)器捕獲
<error-page>
? <error-code> 錯(cuò)誤碼 </error-code>
? <location> 跳轉(zhuǎn)的頁(yè)面地址 </location>
- / :http://localhost:8080/工程名/
</error-page>
BindException
netstat -ano|findstr 端口號(hào):查看占用端口的程序
taskkill /F /PID 端口id:結(jié)束端口占用
請(qǐng)求頭
- req.getHeader():可以獲取對(duì)應(yīng)的請(qǐng)求頭
Referer:獲取發(fā)起請(qǐng)求的絕對(duì)路徑(可用于購(gòu)物車(chē)添加后返回原頁(yè)面)
總結(jié)
以上是生活随笔為你收集整理的JavaWeb随手笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python中赋值语句和判断语句结合_P
- 下一篇: java美元兑换,(Java实现) 美元