版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
JavaWeb學習筆記
目錄
一、概述1
1、javaweb項目目錄結構1
1.1、src目錄1
1.2、WebRoot目錄1
二、Servlet1
1、訪問Servlet的方式1
2、Servlet生命周期3
3、Servlet處理表單3
4、Servlet跳轉4
4.1、轉發(fā)與包含4
4.2、重定向4
5、狀態(tài)管理5
6、作用域對象6
三、JSP7
1、基本概念7
2、JSP元素7
2.1、腳本元素7
2.2、指令元素7
2.3、動作元素8
3、內置對象9
4、JSP注釋9
5、JavaWeb中的路徑問題9
四、過濾器11
五、監(jiān)聽器12
六、JavaBean組件13
七、MVC設計模式15
八、EL表達式15
8.1、概述15
8.2、EL內置對象16
8.3、EL運算符16
8.4、在頁面中禁止使用EL表達式17
九、JSP標簽18
9.1、自定義標簽18
9.2、JSTL標簽庫20
9.2.1、JSP標準標簽庫20
9.2.2、JSTL核心標簽庫20
一'概述
1、javaweb項目目錄結構
新建的JavaWeb項目初始目錄結構如圖所示:工程項目下有src和WebRoot兩個子目
錄,一般情況下用戶會根據(jù)具體業(yè)務需要,在遵照規(guī)范的目錄結構基礎上,為src和
WebRoot目錄合理地創(chuàng)建子目錄,設計好JavaWeb應用程序的目錄結構。
1.1、src目錄
src目錄存放實現(xiàn)業(yè)務邏輯、數(shù)據(jù)操作、控制程序執(zhí)行流程、描述實體對象、過濾器、監(jiān)聽
器以及系統(tǒng)公用類的Java源代碼文獻,此外還涉及資源文獻。
1.2、WebRoot目錄
新建項目初始目錄中WebRo0t目錄下就存在META—INF和WEB—INF兩個子目錄。
META-INF目錄用來存放包和擴展的配置數(shù)據(jù),如安全性、類加載器和版本信息。
WEB—INF目錄包含一個lib目錄和一個web.xml文獻。其中Iib目錄用來存放Web應
用中用到的第三方庫文獻(*.jar),例如數(shù)據(jù)庫驅動程序。web.xm1文獻是Web應用的
部署描述符文獻,應用的servlet、初始化參數(shù)、過濾器、監(jiān)聽器、應用默認頁面以及W
eb應用一些特殊設立都將在該文獻中配置。
用戶在進行JavaWeb應用開發(fā)時,在WebRoot目錄下創(chuàng)建一些子目錄用來存放JS
P文獻,HTML文獻,styIe文獻,圖片文獻以及JavaScript腳本等。例如,創(chuàng)建子目錄
use「Manager,sty1es,photos和scripts分別用來存放應用中用于實現(xiàn)用戶管理
模塊相關的jsp或者HTML頁面文獻,控制頁面顯示風格的CSS樣式文獻、頁面用到的圖
片文獻和頁面用到的腳本文獻。
二'ServIet
1、訪問Serv1et的方式
(1)、直接在瀏覽器地址欄中輸入訪問途徑來訪問Serv1et
(2)、通過超鏈接訪問Servlet
Servlet可以接受客戶端發(fā)來的請求,在HTML和JSP中經常使用超鏈接向Servlet發(fā)出
訪問請求。通過超鏈接訪問servlet可以在超鏈接的href屬性中指定值為Servlet的url-
pattern值,這種請求方式為GET,響應將執(zhí)行Servlet中的doGet()方法。
<head>
<title>Inserttitlehere</tit1e>
</head>
<body>
o<ahref=,rfirstServLetH>RunthrFirstServlet:10601:方法</8>
</body>
</html>
這樣運營該jsp文獻,將顯示RunthrFirstServ1etdoGet方法,此為超鏈接,點擊則進
入firstServlet的界面。
(3)、通過表單提交訪問Servlet
表單標記<form>有一個屬性method,當method的值為get時,則表單提交方式為G
ET,調用Servlet的doGet方法;當method的值為post時,則表單提交方式為POST,
調用Serviet的doPost方法。
<formaction="servLet/firstSerrLet“method="post〃>
。姓名:<inputtype=Htext"name=M1oginnamenxbr>
密碼:〈inputtype=Mpassword“name="p^d,z><br>
o<inputtype=,fsubmit"value="Login">
</form>
action的屬性值為serv1et/firstServIet,表達表單提交請求的目的資源為FirstSer
vlet,method屬性值為Post,表白表單提交方式為post,將執(zhí)行Servlet的doPost方
法。
Servlet通過請求對象(Request)獲得客戶端數(shù)據(jù),然后進行相關操作,獲得運營結果,通
過響應對象(Respose)設立響應參數(shù)并將結果返回到客戶端。
2、Servlet生命周期
Servlet容器創(chuàng)建Servlet對象,Servlet容器依次調用Servlet對象的init(ServletC
onfigconfig)和init()方法。然后調用service(ServletRequestrequest,Ser
vletResponseresponse)方法,該方法將ServletRequest類型的對象request和
ServletResponse類型的response對象轉化為相應的HttpServletRequest類型和Ht
tpServ1etResponse類型對象,然后調用service(HttpServletRequestrequest,H
ttpServ1etResponseresponse)方法,最后調用doGet(HttpServletRequest
request,HttpServletResponseresponse)或者doPost(HttpServletRequestre
quest,HttpServletResponseresponse)o事實上,不管是post方式還是get方式提
交請求,都會在service方法中解決。當web應用被終止的時候,Servlet容器會先調用Web
應用中所有的Serv1et對象的destroy()方法。
3、Servlet解決表單
<tab1e>是<tr>的上層標簽,<tr>必須在一個<table></table>里面,它不能單獨使用,相
稱于<table〉的屬性標簽。<table〉標示一個表格,<tr>標示這個表格中間的一個
行,<td>標示行中的一個列,需要嵌套在<trx/tr>中間。
<br>換行。
Servlet通過URL獲取參數(shù),這種參數(shù)傳遞方式為GET方式、通過request對象的getPa
rameter方法獲得相應的參數(shù)。
。pub1icvoiddoGet(HttpServletRequestrequest,HttpServletResp
onseresponse)
ooothrowsServletException,IOException{
。response.setContentType("text/html;charset=UTF-8");
Stringname=request.getParameter("name");
Stringpass=request.getParameter("pw");
PrintWriterout=response.getWriter();
oout.println("name:"+name);
oout.println("password:—pass);
}
http:〃1oca1host:8080/javaWebBook/servlet/urideliverparamServlet?name=j
iaminglei&pw=123這樣可以獲得輸出:
name:jiamingleipassword:123
4、Serv1et跳轉
4.1、轉發(fā)與包含
請求轉發(fā)是servlet(源組件)先對客戶端請求做一些預解決操作,然后把請求轉發(fā)給其
他Web組件(目的組件)來完畢生成響應結果在內的后續(xù)操作。
請求包含是Servlet(源組件)把其他Web組件(目的組件)生產的響應結果包含在自身生成
的響應結果中。
Java,servlet.RequestDispateher接口,定義了forward()和include()方法
分別實現(xiàn)了請求轉發(fā)和請求包含。調用這兩個方法的時候,把當前的Serv1etRequest對象
和Serv1etResponse對象作為參數(shù)傳給他們。兩種方式獲得RequestDispatcher對
象:ServletContext.getRequestDispatcher(Stringpath)或者調用ServletRe
quest.getRequestDispatcher(Stringpath)方法。前者path為絕對途徑,后者可以是絕對
途徑也可以是相對途徑。
方法示例:request.getRequestDispatcher("要跳轉的serv1et的url").forward
(request,reponse);
4.2、重定向
重定向是服務器對客戶端的請求作出響應,響應的結果是讓客戶端瀏覽器去重新發(fā)出對此
外一個URL的訪問請求。
sendRedirect()方法,源組件和目的組件使用各自不同的Serv1etRequest對象
和ServletResponse對象,源組件和目的組件屬于兩個獨立的訪問請求和響應過程。
方法示例:response.sendRedirect("要重定向的servIet的urP);
5、狀態(tài)管理
Cookie通過客戶端保持狀態(tài)。是Web服務器通過瀏覽器保存在客戶端硬盤上的一個文本
文獻,其中保存的是以名/值(name/va1ue)形式存車的文本信息。
Session可以用來記錄瀏覽器和服務器多次交互過程中需要記錄的狀態(tài)信息,信息以對象
的形式存放在服務器的內存中,并且session可存儲的類型豐富,數(shù)據(jù)量大。
示例代碼:
創(chuàng)建Cookie
Cookiecl=newCookie("username'\username);
Datedate=newDate();
。Cookiec2=newCookie("lastcall",date.toStrin
g());
。cl.setMaxAge(60*60*24?30);
。c2.setMaxAge(60*60*24*30);
?response.addCookie(cl);
response.addCookie(c2);
獲取Cookie
oCookie[]cookies=req.getCookies();
eCookiecookie=null;
ofor(inti=0;i<cookies.length;i++){
°cookie=cookies[i];
?o?if(cookie.getName().equals(nusername")){
。。oout.println("用戶名:n+cookie.getVa1ue()+"<br>");
00}
ooif(cookie.getName().equals("1astca11")){
。out.print1n("上次登錄時間:"+cookie.getValue()+"<b
r>");
}
。。}
6、作用域對象
ServletContext對象在web應用啟動時創(chuàng)建,web應用停止時銷毀,其中保存的信息存在
范圍為整個web應用。ServletContext對象對于一個web應用來說是唯一的,Serv1e
tContext對象中一般存放一些web應用中所有用戶都要使用,并且在整個web應用
運營過程中一直要使用的數(shù)據(jù)。
HttpSession對象在客戶端發(fā)起一個新的會話時創(chuàng)建,在會話結束時銷毀,其中保存的信息
存在范圍為整個會話中。HttpSession對象不宜存放過多數(shù)據(jù),在整個會話中經常需要使
用的數(shù)據(jù)以及在進行客戶端重定向時需要傳遞數(shù)據(jù)時,一般將數(shù)據(jù)放在HttpSessi0n對
象中。
ServletRequest對象在客戶端瀏覽器發(fā)起請求時創(chuàng)建,服務器向客戶端做出響應時結束,
其中保存的信息存在范圍為這次請求響應過程中。在進行服務器內部跳轉時,一般都會將
需要傳遞的數(shù)據(jù)放在ServletRequest對象中。
示例代碼:
。req.setAttribute("name",name);
HttpSessionsessi0n=request.getSession();
。session.setA11ribute("name",name):
??ServietContextsc=this.getserv1etContext();
。。sc.setAttribute("name",name):
?>Stringname=(String)request.getA11ribute("name");
Stringname=(String)session.getAttribute("name
");
??Stringname^(String)this.getServletContext().getAttribute("
name");
三、JSP
1、基本概念
JSP由HTML要素(靜態(tài)部分)、JSP元素(動態(tài)元素)和JSP注釋組成。JSP元素涉及腳
本元素、指令元素和動作元素。
2、JSP元素
2.1、腳本元素
聲明:用于在JSP頁面中聲明變量和定義方法。<%!%>,其中包含任意數(shù)量的合法
的JAVA聲明語句。例:<%!intcount=0;%>
聲明的變量僅在頁面第一次載入的時候由容器初始化一次,初始化后在后面的請求中一直保
持該值。
腳本:是嵌入在JSP頁面中的JAVA代碼段。<%%>
腳本在每次訪問頁面時都被執(zhí)行。
表達式:作為JAVA語言表達式的占位符。<%=….%>表達式的元素在運營后被自動轉
化為字符串,然后插入到這個表達式的JSP文獻的位置顯示,這個表達式的值己經轉化為
字符串,所以能在一行文本中插入這個表達式。表達式是一個簡化的out.printing...”),
表達式不能以分號結束,百分號和等號之間不能有空格。
2.2、指令元素
不是用來進行邏輯解決或者產生輸出代碼的,而是通過指令中的屬性配置向JSP客戶端發(fā)
出一些指示,從而控制JSP頁面的某些特性。
221、page指令
用于設立JsP頁面的屬性,用于和Web服務器通信,控制所生成的Servlet結
構。靦page屬性名="屬性值”屬性名="屬性值”...%
如errorPage屬性:
在test.jsp中page指令中設立errorPage="errorPage.jsp”
在erroPage,jsp中page指令中設立isErnorPage="true"java代碼中
exception.getMessage().
2.2.2、inc1ude指令
將file屬性指定頁面內容靜態(tài)包含到當前頁面。
<%@inc1udefile="xxx.jsp"%>
Include指令包含指定頁面的過程是在翻譯階段完畢的,也就是在JSP被轉化成Serv
let的階段進行的。
2.2.3、tag1ib指令
聲明用戶在當前JSP頁面使用JSTL標簽或者用戶自定義的標簽時使用taglib指令,
將標簽庫描述符文獻導入到JSP頁面。
<%@tagliburi=wtag1ibURL"prefix=MtagPrefixw%>
Uri:定位標簽庫描述符的位置,唯一標記和前綴相關的標簽庫描述符,可以使用絕對或
相對URL。
prefix:標簽的前綴,區(qū)分多個自定義標簽。
使用自定義標簽或者JSTL標簽的目的是消除JSP文獻中出現(xiàn)的JAVA腳本。
2.3、動作元素
(1)、<jsp:param>
用于指定參數(shù)以及與其相應的值,跳轉或者包含的頁面可以request對象來讀取這些參
數(shù)的值。
<jsp:paramname="參數(shù)名"value="參數(shù)值"/>
⑵、<jsp:forward>
用于實現(xiàn)請求的轉發(fā),轉發(fā)的目的組件可以是jsp文獻、HTML文獻或者servlet。
<jsp:forwardpage="轉發(fā)目的組件的絕對或相對URL"flush="true|f
alsew/>
⑶、<jsp:include>
將Page屬性指定內容動態(tài)包含到當前頁面。
<jsp:includepage="re1ativeURL“flushueIfalse”>
除上述介紹的,3SP動作元素尚有<jsp:useBean>、<jsp:setProperty>><j
sp:getProperty>
3、內置對象
request:獲得封裝的客戶端請求信息,然后做出響應。具有請求作用域。
Response:封裝了響應客戶請求的有關消息,具有頁面作用域。
session:客戶端與服務器的一次會話,從客戶端連到服務器的一個web應用開始,直到
客戶端和服務器斷開連接為止。
application:開始于服務器啟動,直到服務器關閉。
pageContext:pageContext對象提供了JSP頁面內所有的對象及名字空間的訪
問。
out:向客戶端輸出內容。
config:在一個servlet初始化時SP引擎向它傳遞信息用。
page:就是指向當前JSP頁面自身,類似于類中的this指針。
exception:例外對象,當一個頁面在運營過程中發(fā)送了例外,就產生了這個對象。
4、JSP注釋
涉及:HTML注釋,JAVA注釋,JSP注釋。
HTML注釋:<!--HTML注釋內容-一〉
Java注釋://或者/*Java注釋內容*/
JSP注釋:<%--JSP注釋內容--%>
5、JavaWeb中的途徑問題
/一一代表web應用的根目錄
./一一代表當前目錄
.代表當前目錄的上一級目錄
Javaweb中有幾個基本的目錄:
(1):Web服務器的根目錄:http://loca1host:8080/
(2):Web應用的根目錄:web應用webdemo的根目錄http:〃1ocalhost:80
80/webdemo/
(3):同級目錄:http://1ocaIhost:8080/webdemo/userManaper/addll
ser.jsp和
http://Iocalhost:8080/webdemo/userManager/upda
teUser.~jsp說明JSP頁面addUser,jsp和updatellser.jsp處在同級目錄
javaweb開發(fā)中涉及到的途徑問題:
(1):web.xml中的途徑:配置servlet映射Vur1—pattern>/***</ur1-p
attern>中/代表當前web應用的根目錄。
(2):轉發(fā)和重定向中的途徑:
1、假如途徑中不包含,如
request.getRequestDispatchen(rrindex.jsp").forward(request,re
sponse)和
response.sendRedirect("index.jsp")就表達在同級目錄中尋找inde.jsp文
獻。
1、假如途徑中包含(指途徑中第一個/)
a.轉發(fā),
request,getRequestDispatcher("/index.jsp").forward(re
quest,response)代表到web應用的根目錄下(“http://1ocalhost:8080
/webdemo/”)尋找index.jsp文獻。
b.重定向
response.sendRedirect("/index,jsp")代表到web服務器的根目錄下(上_
ttp://localhost:8080/)尋找index,jsp文獻。
2、表單和鏈接中的途徑:
<formaction:”/****”>或者<ahref="/****”>V/a>中的途徑,"/"代
表的是Web服務器的根目錄(http:〃1ocalhost:8。80/)。
3、page指令元素中errorPage屬性的途徑
errorPage屬性值假如以“/”開頭,表達相對于當前Web應用的根目錄,假如沒有
“/”開頭的途徑表達當前目錄。
四、過濾器
Servlet過濾器自身不產生請求和響應,它只提供過濾作用。當用戶發(fā)起Web請求時,W
eb服務器一方面判斷是否存在過濾器和這個請求的目的資源相關,假如存在關聯(lián),Web服
務器將把請求交給過濾器去解決,在過濾器中可以對請求的內容作出改變,然后再將請求轉
交給被請求的目的資源。當被請求的資源作出響應時,Web服務器同樣會將響應先轉發(fā)給
過濾器,在過濾器中可以對響應做出解決,然后再將響應發(fā)送給客戶端。
所有的Servlet過濾器類都必須實現(xiàn)javax.servlet.Fi1ter接口,定義了三個
過濾器必須實現(xiàn)的方法:publicvoidinit(FilterConfigfilterConfi
g);publievoiddoFilter(ServletRequestrequest,ServletResponse
response,Fi1terChainchain);publicvoiddestroy()
開發(fā)一個serv1et過濾器的環(huán)節(jié):
(1):創(chuàng)建一個實現(xiàn)了javax.servlet.FiIter接口的類
(2):重寫類中的init(FiIterConfigfi1terConfig)方法,一般編寫代碼為:
讀入為過濾器配置的初始化參數(shù),申請過濾器需要的資源。
(3):重寫類中的doFiIter(...)方法:從ServletRequest參數(shù)中得到所有的請求
信息,從ServletResponse參數(shù)中得到所有的響應信息。在方法代碼的最后需要調
用Filterchain對象的doFi1ter()方法,來激活下一■個相關的過濾器。假如不存在另
一個過濾器與目的Web組件(Servlet程序或者JSP頁面)關聯(lián),則Web組件將被激
活。
(4):重寫類中的destroy。方法,一般需要編寫實現(xiàn)資源釋放的代碼,通常對init()中
初始化資源執(zhí)行收尾工作,也可以完畢諸如關閉過濾器使用的文獻或者數(shù)據(jù)庫連接池等清除
任務。
(5):針對被訪問的目的Web組件(Servlet程序或者DSP頁面)注冊過濾器,在部
署web.xml中使用<fi1ter>和<filter-mapping>元素對過濾器進行配置。
運營過程是這樣的:有一個index.jsp界面,有一個LoginFilter.java(imp1eme
ntsFilter),同時該Fi1ter在web.xml中配置?!磃ilter>
。<filter-name>1oginFilter</fi1ter-name>
eo<filter-class>chapter5.LoginFiIter</filter-class>
。?!?filter>
o<filter—mapping>
。<filter-name>loginFilter</filter-name>
o<url-pattern>/index.jsp</ur1-pattern>
</filter-mapping>
意思是:以后訪問這個Vurl-pattern>指定的web組件的時候,必須一方面滿足過濾
器LoginFiIter的過濾條件。
五、監(jiān)聽器
是一個實現(xiàn)了某一個特定接口的普通Java類,該類專門用于監(jiān)聽某一特定Java對象的
方法調用或屬性改變事件,當被監(jiān)聽對象發(fā)生上述事件后,監(jiān)聽器某個方法將立即被執(zhí)行
而做出相應的動作或者反映。
用于監(jiān)聽的事件源分別為Serv1etContext,HttpSession和Serv1etRequesto
監(jiān)聽器開發(fā):
(1):創(chuàng)建相應的監(jiān)聽器類,根據(jù)實際需要實現(xiàn)相應的接口并覆蓋其中相應的抽象方法。例
如:定義一個監(jiān)聽器類XxxxxListener用來監(jiān)聽HttpSession對象的創(chuàng)建與銷
毀:
publicclassXxxxxxListenerimplementsHttpSessionListe
ner{
oopub1icvoidsessionCreated(HttpSessionEventarg0){
)
publicvoidsessionDestroyed(HttpSessionEventargl){
°...;
}
)
(2):在部署描述文獻web.xml中使用(listener>元素配置監(jiān)聽器(實現(xiàn)接口HttpS
essionBindingListener接口的監(jiān)聽器例外,不需要在u/eb.xml文獻中配置)。例
如,在web.xml文獻中配置環(huán)節(jié)(1)中定義的監(jiān)聽器類XxxxxListener,其配置代碼
如下:
o<listener>
。<1istener-class>
。xxxPackage.XxxxxListener?
o</1istener-class>
o</listener>
六、JavaBean組件
(1)、事實上就是一個JAVA類,在編寫JSP頁面時,對于一些常用的功能,可以將他們的
共同功能抽取出來,組織為JavaBean,當需要在某個頁面中使用該功能時,只要調用該
JavaBean中響應的方法即可。需要遵循以下規(guī)范:
(1):JavaBean必須是pub1ic類
(2):JavaBean必須具有一個無參的public構造方法,或者通過定義不帶參數(shù)的構造
方法或者使用默認的構造方法均可滿足這個規(guī)定。
(3):JavaBean屬性的訪問權限一般定義為private或protected,而不是定義
為public的。
(4):對每個屬性一般定義為兩個pubIic方法,一個是訪問屬性的方法,方法名應當定
義getXxx()格式;另一個是設立屬性的方法,方法應定義為setXxx(形式參數(shù))格
式。
(2)、JavaBean的使用
要在JSP中使用JavaBean組件,必須使用<jsp:useBean><jsp:setPro
perty>><jsp:getProperty>等JSP的操作指令。
a.<jsp:useBcan>用來在指定作用域中查找或創(chuàng)建一個bean實例。
<jsp:useBeanid=wbeanlnstanceName”
。scope="page|reques11sessionlapplication”
{class=^package.class^|type="package.classw|
class=wpackage.classtype=^package.class
beanName=J>{package.c1assI<%=expression%>"type="package.c1
ass”}
{/>|otherelements</jsp:useBean>
}
實例:Vjsp:useBeanid="book"scoppage"class="examp1e.B
ook”/>
在page范圍內即當前頁面查找指定名稱為book的對象,假如沒有找到,則使用exa叩
1e.Book類的無參構造方法創(chuàng)建book實例。
b?Vjsp:setProperty>用來指定DavaBean實例某個屬性的值。
<jsp:serPropertyname="beanInstanceName”
?{property=,JpropertyName”va1ue=w{String|<%=exception%>”|
property="propertyName”[param=,JparamName|
。property二
)/>
實例:<jsp:setPropertyname="book"property="name"va1ue
="西游記"/>
將b。ok對象的name屬性值設立為“西游記”。
o<jsp:setPropertyname="book"property=wname“param="book
Name”/)
。用請求參數(shù)bookName的值為book對象的name屬性賦值。
等同于
Book.setName(request.getParameter("bookName"));
。%>
o<jsp:setPropertyname="book"property="*"/>
使用請求參數(shù)的每個值為book對象的每個與請求參數(shù)同名的屬性賦值。
c.<jsP:getProperty》獲取DavaBean對象的屬性值。
<jsp:getPropertyname="bean工nstanceName“property=J>propertyNam
e”/>
七'MVC設計模式
MVC模型(Model):實現(xiàn)業(yè)務邏輯解決和數(shù)據(jù)庫操作,此外還涉及數(shù)據(jù)模型。(JavaB
ean)
視圖(View):實現(xiàn)數(shù)據(jù)顯示邏輯。負責與用戶交互,即接受用戶數(shù)據(jù)的輸入,顯示模型
返回的數(shù)據(jù)。(JSP)
控制器(Controller):實現(xiàn)程序執(zhí)行流程的控制,任務的分派。(Servlet)
八、EL表達式
8.1、概述
通過EL表達式可以獲得Pagecontext的屬性值、直接訪問JSP的內置對象,還可以
訪問作用域對象、集合對象等:${ELexpression},EL表達式可以通過點號運算
符”."和方括號“□”來訪問對象。
(1)、訪問作用域變量,${attr1}的作用是:一方面從page范圍查找屬性attr1,
假如找到了則返回并輸出當前范圍的變量的值;假如沒找到,則再從request范圍查找,
假如還沒有找到,則再從session范圍查找,假如沒找到,則再從app1ication范
圍找,假如還沒有找到,則不再查找直接返回并輸出空字符串。
(2)、訪問JavaBean屬性,${book.name}(name是book對象的一個屬性)
(3)、訪問集合元素,訪問數(shù)組、List、Map,對于數(shù)組,List:${ins[i]}實際調用
ins[i]或ins.get(i),對于Map3{ins[name]}實際調用ins.get("name").
8.2、EL內置對象
(1)>pageContext內置對象:取得與用戶請求或服務器端相關的信息,如${Pag
eContext.request?method]contextPath|remoteAddr}.
(2)、作用范圍相關的內置對象:pageScope,requestscope,sessionScope,
applicationScope,但是和JSP內置對象不同的是,這四個只能取得作用范圍中的值而
不能設立值。${requestScope.name}.注:未指定作用范圍默認是page作用范
圍。
(3)、與請求參數(shù)相關的內置對象:param"aramVaiues。param獲取傳遞過來的單
值參數(shù)的值,相稱于請求對象的getParameter()方法的執(zhí)行效果。paramVa1ues
獲取傳遞過來的多值參數(shù)的值(例如復選框,多選),相稱于請求對象的getPara
meterVa1ue()方法的執(zhí)行效果。
(4)>與請求頭相關的內置對象:header和headerVa1ues。header用來訪問HTT
P請求的一個具體的Header值,headervalues用來訪問所有HTTP請求的Header
值。假如頭中包含“-”,則訪問時要使用中括號運算符而不能使用點號運算符。
(5)、cookie內置對象:cookie相對于HttpServletRequest.getCookies()
的作用,表達式${cookie.username.value}表達返回coOkie中名稱為use
rname的值。
(6)、與初始化參數(shù)相關的內置對象:initParam用于獲取web.xml文獻中配置的初
始化參數(shù),相稱于ServletContext.getlnitParameter(Stringname)方法
的作用。
8.3、EL運算符
(1)、算術運算符:+-*/%并且${3/0}結果為Infinity,除數(shù)為。也進行了解
決。
(2)、關系運算符:<(lt),<=(le),>(gt),>=(ge),==(eq),!=(ne),比較結果
是布爾類型的值,不僅可以對數(shù)字進行比較,還可以對字符或者字符串進行比較。
(3)、邏輯運算符:&&(and)|I(or)!(not)
(4)、條件運算符:?:
(5)、empty運算符:${emptyexpression}用于判斷expression的值是否
為nul1,空字符串,空數(shù)組,空Map或空集合。如為空返回true,否則返回false.
8.4、在頁面中嚴禁使用EL表達式
(1)、在當前頁面中嚴禁使用EL表達式:
<@pageisELIgonored=',^{true|false}一%>(true表達禁用EL,fa1se表
達運營使用)
(2)、在多個頁面禁用EL表達式:
在web.xml中配置jsp—property-ground元素批量禁用EL
<jsp-config>
<jsp—property-group>
。<url-pattern>/files/*.jsp</url-pattern>
。<e1—ignored>true</e1-ignored>
3</jsp—property-group>
</jsp-config>
(3)、嚴禁在當前Web應用的所有jsp界面中使用EL表達式
將web.xml定義為2.3版本:(由于EL表達式是2.4版才開始支持的功能)
u
<!DOCTYPEweb—appPUBLIC-//Sun.Microsystems,Inc.//DTDWebApp
lication2.3//EN"
九'JSP標簽
9.1、自定義標簽
自定義標簽的開發(fā)涉及編寫標簽解決器類、編寫標簽描述符文獻和在3SP中使用標簽三
步。
(1):編寫實現(xiàn)了si叩leTag接口的標簽解決類,將JSP頁面中的Java代碼移植到標
簽解決類中。實際編程中,標簽解決類通常繼承SimpletTag接口的默認實現(xiàn)類Si叩
1eTagSupport,然后去覆蓋該類中的doTag()方法,實現(xiàn)標簽邏輯。
(2):編寫標簽描述符(*.t1d)文獻,在tId文獻中把標簽解決器類描述成一個標簽。
(3):在JSP頁面中通過tag1ib頁面指令元素引入標簽,然后通過tag1ib指令指定的
前綴名和tld文獻指定的標署名在JSP文獻中使用標簽。
示例代碼:
(1).packagecom.ch09;
importjava.io.IOException;
importjavax.servlet,jsp.JspException;
importjavax.serv1et.jsp.tagext.JspFragment;
importjavax.servlet.jsp.tagext.SimpleTagSupport;
pub1icclassMySimpleTa日1extendsSimpleTagSupport{
@Override
publicvoiddoTag()throwsDspException,IOException{
o//TODOAuto—generatedmethodstub
o。DspFragmentjs=this.getJspBody();
js.invoke(this,getJspContext().getOut());//由于
執(zhí)行了invoke方法,所有執(zhí)行了標簽體
o)
}
(2).<?xm1version="1.0"encoding="U丁尸-8"?>
<taglibxm1ns=""xm1ns:xsi=H"
xsi:schemaLocation="://Java.sun.com/xmL/ns/J2ee/web?j
sptagLibrary_2_0.xsd"
oversion=H2.0">
。<description>AtaglibraryexercisingSimp1eTaghandlers.</d
escription>
3<tlib—version>l.0</tlib—version>
。<short-name>Jmut</short-name>
<urix/uri>
o<tag>
<name>myTagl</name>
<tag-class〉com.ch09.MySimp1eTaRl</tag-class>
。。<body-contenscript1ccs</body-content>
。</tag>
</tag1ib>
(3).<%@pagelanguage="java"import="java.utiL.*〃contentTy
pe=ntext/htmL;cliarset=UTF-8〃%>
<%@taglibuprefix二"/nut“%>
<!DOCTYPEhtmlPUBLIC”-〃W3C//DTDHTML4.01Transitional/
/EN"MM>
<html>
<head>
<tit1e>控制標簽體是否執(zhí)行〈/title)
</head>
<body>
。<imut:myTagl>
oThisismyJSPpage.
</imut:myTagl>
</body>
</htm1>
9.2、JSTL標簽庫
9.2.1、JSP標準標簽庫
(JSPStandardTagLibrary,JSTL),為了簡化JSP頁面和Web應用程序功能而開發(fā)
的標簽庫。
提供了5種標簽庫:1、核心標簽庫:涉及通用解決的標簽;2、國際化和格式化庫:涉及國
際化和格式化標簽;3、XML標簽庫:涉及解析、查詢和轉換XML數(shù)據(jù)的標簽;4、SQL標簽
庫:涉及訪問關系數(shù)據(jù)庫的標簽;5、函數(shù)庫:涉及管理String和集合的標簽。
庫名稱uri前綴
核心標簽庫http://c
/jsp/js
t1/core
XML標簽庫http:〃~java.sun.coX
m/~jsp/jst//xml
國際化和格式化庫http://java,sfmt
/jsp/jstl/fmt
SQL標簽庫http://jasql
vv.suu.com/jsp/jstl/
sq1
函數(shù)庫http://java,su
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度廚房裝修工程竣工備案合同4篇
- 二零二五年度海鮮食材直采配送合同2篇
- 2025年度個人貸款擔保變更通知合同3篇
- 買賣房屋居間合同
- 2025年垃圾分類再利用合同
- 二零二五年度教育機構學生貸款合同范本6篇
- 二零二五版節(jié)電器銷售代理合同規(guī)范文本3篇
- 2025年度養(yǎng)老機構設施承包運營合同3篇
- 二零二五年度充電樁設備生產技術轉移合同4篇
- 2024年度黑龍江省公共營養(yǎng)師之三級營養(yǎng)師考前自測題及答案
- 2024年蘇州工業(yè)園區(qū)服務外包職業(yè)學院高職單招職業(yè)適應性測試歷年參考題庫含答案解析
- 人教版初中語文2022-2024年三年中考真題匯編-學生版-專題08 古詩詞名篇名句默寫
- 2024-2025學年人教版(2024)七年級(上)數(shù)學寒假作業(yè)(十二)
- 山西粵電能源有限公司招聘筆試沖刺題2025
- ESG表現(xiàn)對企業(yè)財務績效的影響研究
- 醫(yī)療行業(yè)軟件系統(tǒng)應急預案
- 使用錯誤評估報告(可用性工程)模版
- 2024年湖南高速鐵路職業(yè)技術學院單招職業(yè)技能測試題庫附答案
- 2024年4月浙江省00015英語二試題及答案含評分參考
- 黑枸杞生物原液應用及產業(yè)化項目可行性研究報告
- 2024年黑龍江省政工師理論知識考試參考題庫(含答案)
評論
0/150
提交評論