Java-EE技術(shù)課堂筆記_第1頁
Java-EE技術(shù)課堂筆記_第2頁
Java-EE技術(shù)課堂筆記_第3頁
Java-EE技術(shù)課堂筆記_第4頁
Java-EE技術(shù)課堂筆記_第5頁
已閱讀5頁,還剩164頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

JavaEE技術(shù)課堂筆記2015-9-5一、參考資料《設(shè)計(jì)模式》,GangofFour,theGOF二、學(xué)習(xí)方法1、動(dòng)手實(shí)踐2、學(xué)會(huì)學(xué)習(xí) (1)總結(jié) (2)對(duì)比 (3)學(xué)會(huì)使用搜索引擎,baidu,google3、團(tuán)隊(duì)合作精神:要有責(zé)任擔(dān)當(dāng),為團(tuán)隊(duì)貢獻(xiàn)自己的力量,為團(tuán)隊(duì)加分,即正能量。一、Web的概念及其發(fā)展1、WebHTML/JavaScript/CSS Web是一種應(yīng)用程序的框架,是Client/Server架構(gòu)的原型。C/S架構(gòu)的優(yōu)點(diǎn)和缺點(diǎn):在C/S架構(gòu)的基礎(chǔ)上,又提出一種的架構(gòu)Browser/Server。幾個(gè)關(guān)于Web的術(shù)語:超文本(HyperText):是一種全局性的信息結(jié)構(gòu),可以將文檔通過一些關(guān)鍵字建立鏈接(<ahref=”超鏈接地址”title=”提示信息”>關(guān)鍵字</a>)超媒體(HyperMedia):音頻、視頻、圖像、文本,一個(gè)文檔中不僅有超文本,還有上述信息,并且實(shí)現(xiàn)上述內(nèi)容的組合。WWW:萬維網(wǎng)(WorldWideWeb)是一種服務(wù),是一種以Internet為基礎(chǔ)的應(yīng)用服務(wù)。HTTP協(xié)議:超文本傳輸協(xié)議,是工作OSI-RM第7層的應(yīng)用層協(xié)議,實(shí)現(xiàn)服務(wù)器端與客戶端之間的數(shù)據(jù)傳輸。HTTP協(xié)議是一種請(qǐng)求(Request)-響應(yīng)(Response)式的服務(wù)。無狀態(tài)的協(xié)議。2、Web技術(shù)的發(fā)展W3C:(1)靜態(tài)頁面技術(shù):以HTML為基礎(chǔ)的技術(shù),缺乏用戶與服務(wù)器,或者用戶與用戶之間的溝通,即缺乏人機(jī)交互。更新與維護(hù)Web頁面任務(wù)繁重。(2)瀏覽器端與用戶交互技術(shù):依賴瀏覽器端與客戶交互。比如說出現(xiàn)了JavaScript、JavaApplet、GIF等技術(shù)。但也有一些缺點(diǎn):瀏覽器需要加載一些類庫如ActiveX,導(dǎo)致胖客戶端,程序運(yùn)行效率降低。不同的瀏覽器對(duì)JavaScript支持不一致。(3)服務(wù)器端與服務(wù)交互技術(shù):依賴服務(wù)器端技術(shù)實(shí)現(xiàn)人機(jī)交互。技術(shù)主要有:ASP(*.asp)/ASP.NET(*.aspx)、JSP(*.jsp)、PHP(*.php)幾種技術(shù)組合:Linux+Apache+MySQL+PHP(LAMP),免費(fèi)開源,主要用于中小型應(yīng)用開發(fā)Linux+Apache+MySQL+Java/JSP,免費(fèi)開源,收縮性強(qiáng),跨平臺(tái),用于大中型應(yīng)用開發(fā).Windows+IIS+SQLServer+.NET,主要用于微軟技術(shù)平臺(tái)。JSP技術(shù)實(shí)質(zhì)上以普通的HTML頁面為基礎(chǔ),在這些頁面上加入了一些Java代碼,便成為了JSP頁面。JSP頁面在運(yùn)行時(shí)將轉(zhuǎn)換為Servlet.這3種技術(shù)的缺點(diǎn):頁面中摻雜了Java等代碼,導(dǎo)致頁面結(jié)構(gòu)混亂,不利用人員分工。(4)基于Web的應(yīng)用階段出現(xiàn)了軟件分層結(jié)構(gòu),軟件之間的耦合降低了,代表技術(shù)有JavaEE(J2EE),.NET?;镜姆謱蛹軜?gòu)有3層,或者更多。三層結(jié)構(gòu)主要是表現(xiàn)層(視圖層View),模型層(Model)和控制層(Controller),即MVC模式。(5)Web2.0階段O’Relly提出的一個(gè)概念?,F(xiàn)有的相當(dāng)應(yīng)用有微博、社交網(wǎng)站,維基百科。特點(diǎn):提高用戶體驗(yàn)(UE,UserExperience)和人機(jī)交互。二、、JSP簡介 JavaServerPages,是一種基于Java技術(shù)的動(dòng)態(tài)網(wǎng)頁開發(fā)技術(shù)。它在傳統(tǒng)的HTML頁面中添加一些Java程序段和JSP標(biāo)記,從而構(gòu)成的一種頁面。<html><body>歡迎你,<%=username%><%out.print(“登錄時(shí)間為:”);java.util.Datenow=newjava.util.Date();out.print(now);%></body></html>http://localhost:8080/ch1/page/first.jsp:80/index.htm 保存成擴(kuò)展名為“.jsp”的名字即可。優(yōu)點(diǎn):它繼承了Java的所有特性。比如跨平臺(tái),安全性,支持多線程等。另外,要注意JSP程序運(yùn)行時(shí)必須依靠Web容器(WebContainer)、或者說是Web服務(wù)器(WebServer)三、Tomcat的安裝與配置 Tomcat是一種支持JSP/JAVAEE技術(shù)的Web容器。可以到網(wǎng)站上免費(fèi)下載,目前最新版為7.0。注意:安裝Tomcat之前,必須先安裝JDK。 一旦安裝了Tomcat,在Windows上便以Windows服務(wù)的形式存在。Tomcat服務(wù)的啟動(dòng):推薦以“手動(dòng)方式”啟動(dòng),可以在Windows服務(wù)中更改啟動(dòng)方式。Tomcat的目錄結(jié)構(gòu):bin:可執(zhí)行程序,Binary的縮寫。conf:Configuration的縮寫。該文件夾中放的都是Tomcat的配置文件,多以XML文件存在,如server.xml,web.xml。server.xml文件是有關(guān)Tomcat運(yùn)行的參數(shù)信息都在該文件中保存。web.xml文件是保存Web應(yīng)用程序運(yùn)行的參數(shù)信息。如應(yīng)用程序的首頁、Servlet,Session有效期等。lib:該目錄存放Tomcat的類庫log:存放運(yùn)行日志文件webapps:存放我們開發(fā)的應(yīng)用程序,ROOT目錄。work:存放我們開發(fā)的應(yīng)用程序編譯之后的字節(jié)碼文件和java源代碼,即.class文件和.java文件。驗(yàn)證Tomcat安裝是否正確:啟動(dòng)Tomcat服務(wù),然后在瀏覽器上輸入http://localhost:8080(:8080),如看到提示頁面,則安裝正確。:80創(chuàng)建Tomcat的虛擬目錄:在server.xml文件中,找到<Host>元素,然后在該元素中添加<Context>子元素,如: <Contextpath="test"docBase="g:/java"debug="0"reloadable="true"/>虛擬目錄的名稱為test,存放頁面的目錄為g:/java。此時(shí)訪問該目錄下second.jsp的路徑為:http://localhost:8080/test/second.jsp四、搭建JavaWeb開發(fā)環(huán)境Eclipse/MyEclipse+Tomcat+MySQLIDE:IntegratedDevelopmentEnvironment集成開發(fā)環(huán)境1、在Eclipse中創(chuàng)建JavaWeb項(xiàng)目的步驟(1)通過File->DynamicWebProject(2)集成Tomcat,主要指定Tomcat的安裝路徑,注意到Tomcat的根目錄即可。2、了解JavaWeb項(xiàng)目的目錄結(jié)構(gòu)src:存放我們編寫Java類WebContent:存放項(xiàng)目中的前臺(tái)資源:如HTML頁面、JSP頁面、JS文件、CSS文件、圖片等。WebContent/WEB-INF/lib:存放項(xiàng)目運(yùn)行需要的類庫(JAR文件)WebContent/WEB-INF/web.xml:本項(xiàng)目運(yùn)行的配置文件WebContent/META-INF:用來存放部署文件,Manifest.mf。注意:我們編寫的JSP等文件,必須放在WebContent的根目錄下面,或者可以WebContent目錄下面新建一些文件夾并放到這些文件夾里面(推薦)。切忌不能將JSP文件放到WEB-INF或者M(jìn)ETA-INF文件夾下。3、Eclipse的使用技巧通過window->preferences-jspfiles可以設(shè)置JSP頁面默認(rèn)的字符編碼,我們推薦使用UTF-8編碼4、JavaWeb的URL結(jié)構(gòu)http://localhost:8080/ch2/page/count.jspch2:是指我們開發(fā)的項(xiàng)目的虛擬目錄名稱,即<Context>元素的path屬性值。page:是指ch2項(xiàng)目的一個(gè)目錄名稱count.jsp:指存放在page目錄下的一個(gè)JSP頁面五、開發(fā)第一個(gè)JSP程序 參見第二部分中的代碼,注意有錯(cuò)誤,需糾正。六、JSP運(yùn)行原理首次運(yùn)行JSP程序時(shí),當(dāng)客戶端請(qǐng)求JSP頁面如first.jsp時(shí),要經(jīng)歷以下步驟:(1)tomcat引擎調(diào)用JSPParse將JSP頁面轉(zhuǎn)換為Java程序,如first_jsp.java;(2)Tomcat調(diào)用JDK的javac命令,將first_jsp.java編譯為first_jsp.class;(3)Tomcat調(diào)用JDK的java命令,執(zhí)行first_jsp.class程序(4)HTTP將程序的執(zhí)行結(jié)果以響應(yīng)的形式返送至客戶端。如以后再運(yùn)行時(shí),第(1)(2)步省略,因此JSP程序首次運(yùn)行時(shí)速度有些慢。幾個(gè)問題:(1)TOMCAT服務(wù)器啟動(dòng)(2)JSP頁面編碼問題(3)設(shè)置TOMCAT虛擬目錄與URL路徑2015-9-10JSP語法基礎(chǔ)HTTP協(xié)議/HTML回顧1、http協(xié)議的特點(diǎn)(1)請(qǐng)求-響應(yīng)式的協(xié)議(2)無狀態(tài)的協(xié)議,它不會(huì)保存用戶的狀態(tài)信息,保證用戶的數(shù)據(jù)安全(3)面向無連接Uri:url2、html4.0回顧HTML的頁面結(jié)構(gòu)<html> <head></head> <body></body></html>三要素:<html>標(biāo)識(shí)、頭部、主體2、HMTL的標(biāo)簽分類雙標(biāo)簽:有開始標(biāo)簽和閉合標(biāo)簽組成單標(biāo)簽:只有開始標(biāo)簽,沒有閉合標(biāo)簽,<br>、<img>、<hr>標(biāo)簽還可以有屬性:如<ahref=”url”title=””></a>HTML不區(qū)分大小寫的。推薦使用小寫。(1)<form> action屬性:指定表單提交后跳轉(zhuǎn)的目標(biāo)頁面。 method屬性:可選,缺省為GET,有兩個(gè)值可以使用GET|POST。一般來說,我們使用POST。Method屬性,有以下幾個(gè)地方需要關(guān)注表單的提交方式,如果是get方式,表單各個(gè)輸入域的值將會(huì)顯示到瀏覽器的地址欄上,而POST方式則不會(huì)。Servlet,如果要調(diào)用Servlet的doPost()方法,則表單的method屬性值必須為post,同理,要調(diào)用Servlet的doGet()方法,method屬性值必須為get。表單中的輸入域含有中文且出現(xiàn)亂碼,一般要求設(shè)置method屬性為post。 enctype屬性:可選,如果表單中有文件上傳時(shí),必須使用該屬性,而且屬性值應(yīng)multipart/form-data。另外,該屬性還可以是其他值,如text/plain。<formaction=”submit.jst”method=”post”enctype=”multipart/form-data”>…</form>(2)<input>該標(biāo)簽一般應(yīng)該嵌套放在<form>標(biāo)簽內(nèi)。使用該標(biāo)簽可以定義按鈕、提交按鈕、單行文本框、密碼框、單選框等。文本框:<inputtype=”text”name=”username”/>密碼框:<inputtype=”password”name=”pass”/>單選框:<inputtype=”radio”name=”sex”value=”male”>男</input>復(fù)選框:<inputtype=”checkbox”name=”hobby”value=”music”>音樂</input>文件上傳:<inputtype=”file”name=”upload”/>提交按鈕:<inputtype=”submit”/>重置按鈕:<inputtype=”reset”/>普通按鈕:<inputtype=”button”/>(3)<select>與<option>這兩個(gè)標(biāo)簽結(jié)合起來使用可以做下拉列表框<selectname=”usertype”> <optionvalue=”1”>One</option> <optionvalue=”2”>Two</option></select><select>元素的主要屬性:size:設(shè)置下拉列表框顯示的選項(xiàng)個(gè)數(shù)multiple:設(shè)置是否支持多選multiple=”multiple”(4)<optgroup> <selectname="number"> <optgrouplabel="數(shù)字"> <optionvalue="1">One</option> <optionvalue="2">Two</option> <optionvalue="3">Three</option> </optgroup> <optgrouplabel="顏色"> <optionvalue="Red">紅</option> <optionvalue="Yellow">黃</option> <optionvalue="Blue">藍(lán)</option> </optgroup> </select>(5)<div>是一個(gè)塊標(biāo)簽,用該標(biāo)簽可以代替<table>,使用<div>定位頁面中元素的位置。學(xué)號(hào)、姓名、性別、專業(yè)、籍貫、個(gè)人簡介<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd"><html><head><scripttype="text/javascript"> functionvalidateForm() { if(document.student.sno.value=="") { alert("學(xué)號(hào)不能為空!"); return; } if(document.student.sname.value=="") { alert("姓名不能為空!"); return; } }</script><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>添加學(xué)生信息</title></head><body><formaction="#"method="post"name="student"onSubmit="validateForm()"> <tablealign="center"> <tr><td>學(xué)號(hào)</td><td><inputtype="text"name="sno"/></td></tr> <tr><td>姓名</td><td><inputtype="text"name="sname"/></td></tr> <tr><td>性別</td> <td> <inputtype="radio"name="sex"value="male"/>男 <inputtype="radio"name="sex"value="female"/>女 </td></tr> <tr><td>專業(yè)</td> <td> <selectname="major"> <optgrouplabel=""> <optionvalue="公共管理">公共管理</option> <optionvalue="信息管理">信息管理</option> </optgroup> </select> </td> </tr> <tr><td>籍貫</td><td><inputtype="text"name="region"/></td></tr> <tr><td>簡介</td> <td> <textareaname="introduction"cols="40"rows="10"></textarea> </td></tr> <tr> <tdcolspan="2"align="center"><inputtype="submit"value="保存"/> <inputtype="reset"value="重置"/> </td> </tr> </table></form></body></html>JSP語法基礎(chǔ)JSP頁面結(jié)構(gòu)與語法一個(gè)JSP頁面中,一般可以包含以下5種元素。HTML元素注釋(1)XML&HTML注釋:<!--注釋-->JSP也支持HTML注釋,需要注意的是HTML注釋可以通過查看源代碼方式看到。(2)JSP注釋:<%--JSP注釋%-->,通過查看源代碼方式看不到。(3)JSP也支持Java注釋。<%放置Java代碼段//java注釋/**/%>腳本元素聲明語法格式:<%!聲明代碼%>注意:<,%,!之間不能有空格。作用:用來在JSP頁面聲明頁面級(jí)的成員變量和方法JSP賦值語法格式:<%=表達(dá)式%>注意:表達(dá)式后面不能有分號(hào)JSP代碼段語法格式:<%代碼段%>注意:在<%%>中間聲明的變量都是局部變量,作用域僅在指定的范圍內(nèi)有效。JSP指令page指令作用:指定JSP頁面的一些屬性,如采用的編程語言,字符編碼,導(dǎo)入的JAVA類,緩存大小,MIME類型,是否支持EL表達(dá)式等。語法格式:<%@page屬性名1=”屬性值1”屬性名2=”屬性值2page指令需要放在JSP首頁的第一行。屬性的作用:language:指定JSP頁面采用的編程語言,只能是javacontentType:指定該頁面的MIME類型,默認(rèn)為text/html;charset=ISO-8859-1pageEncoding:指定頁面采用的字符編碼import:指定JSP頁面需要導(dǎo)入的類庫,如果要導(dǎo)入多個(gè),中間使用逗號(hào)隔開。如:import="java.util.*,java.io.*"buffer:可選的,設(shè)置JSP頁面的緩存大小,默認(rèn)為8k。errorPage:指定錯(cuò)誤頁面。isErrorPage:可選,設(shè)置本頁面是否為錯(cuò)誤頁面,默認(rèn)為false。autoFlush:可選,設(shè)置是否自動(dòng)清除緩存,默認(rèn)為true。isELIgnored:可選,設(shè)置是否忽略EL表達(dá)式,默認(rèn)為falsesession:可選,設(shè)置是否支持會(huì)話,默認(rèn)為true。include指令作用:在一個(gè)JSP頁面中包含另外一個(gè)頁面,靜態(tài)文件包含。 語法格式:<%@includefile=“被包含的頁面”%> 注意:被包含的頁面和主頁面采用的字符編碼必須一致,否則運(yùn)行時(shí)將會(huì)出現(xiàn)錯(cuò)誤。NewFile.jsp<imgsrc=“image/Winter.jpg”/>taglib指令作用:在JSP頁面引入指定的標(biāo)簽庫,只有引入標(biāo)簽庫之后,才能在該JSP頁面中使用引入標(biāo)簽庫的標(biāo)簽。語法格式:<%@taglibprefix=”標(biāo)簽前綴”uri=”標(biāo)簽庫的路徑”/>如:<%@taglibprefix="s"uri="/struts-tags"%><s:textfield/><inputtype=”text”>JSP動(dòng)作(1)<jsp:include> 作用:動(dòng)態(tài)文件包含。 語法格式:語法1:<jsp:includepage=”包含的文件路徑”/>語法2:<jsp:includepage=”包含的文件路徑”></jsp:include> 與<%@include>指令的區(qū)別: 包含的時(shí)間不一樣。在編譯時(shí)<%@include>把包含的文件包含在主文件中,而<jsp:include>動(dòng)作是在程序運(yùn)行時(shí)才將包含文件包含在主文件中。 <jsp:include>可以包含文件包括HTML,JSP,甚至是txt文件。包含的內(nèi)容可以動(dòng)態(tài)更新。(2)<jsp:param> 作用:聲明參數(shù)名稱及對(duì)應(yīng)該參數(shù)的值。該動(dòng)作標(biāo)記不能單獨(dú)使用,必須與其他動(dòng)作標(biāo)記結(jié)合使用。 語法格式:<jsp:paramname=”參數(shù)名”value=“參數(shù)值”/> 示例:<jsp:includepage="copyright.jsp"> <jsp:paramname="author"value="zhangsan"/></jsp:include>2015-9-11(3)<jsp:forward>作用:實(shí)現(xiàn)頁面跳轉(zhuǎn),相當(dāng)于HTML<a>標(biāo)記語法格式:<jsp:forwardpage=”目標(biāo)頁面”|<%=表達(dá)式%>/><jsp:forwardpage=”目標(biāo)頁面”></jsp:forward>該動(dòng)作標(biāo)記將直接從源頁面跳轉(zhuǎn)到目標(biāo)頁面,用戶并不能看到源頁面的內(nèi)容。但是跳轉(zhuǎn)后,地址欄仍顯示源頁面的地址,不會(huì)更新至目標(biāo)的URL。示例:<jsp:forwardpage="target.jsp"> <jsp:paramname="param"value="200"/></jsp:forward>(4)<jsp:useBean>作用:在JSP頁面引用指定的JavaBean對(duì)象語法格式:格式一:<jsp:useBeanid=”Bean的代號(hào)”class=”JavaBean的包路徑”scope=”page|request|session|application”/>格式二:<jsp:useBeanid=”Bean的代號(hào)”class=”JavaBean的包路徑”scope=”page|request|session|application”></jsp:useBean>示例:<jsp:useBeanid="mybean"class="com.bean.MyBean"scope="request"/>(5)<jsp:setProperty>作用:為JavaBean的成員變量賦值語法格式:<jsp:setPropertyname=”useBean標(biāo)記中id屬性值”property=”JavaBean成員變量的名稱”value=”成員變量的值”/>(6)<jsp:getProperty>作用:獲取JavaBean成員變量的值語法格式:<jsp:getPropertyname=”useBean標(biāo)記中id屬性值”property=”JavaBean成員變量的名稱”/>內(nèi)置對(duì)象何謂內(nèi)置對(duì)象對(duì)象:按照某種類(class)實(shí)例化后的實(shí)例稱為對(duì)象。任務(wù)一種對(duì)象(變量)必須遵循先實(shí)例化后使用的原則。JSP提供的內(nèi)置對(duì)象,不用我們實(shí)例化就可以直接使用的對(duì)象,稱為內(nèi)置對(duì)象。request:javax.servlet.http.HttpServletRequestresponse:javax.servlet.http.HttpServletResponsesession:javax.servlet.http.HttpSessionpageContext:javax.servlet.PageContextpage:等價(jià)于this,java.lang.Objectapplication:javax.servlet.ServletContextconfig:javax.servlet.ServletConfigexception:java.lang.Throwableout:javax.servlet.jsp.JspWriterjava.io.PrintWriterout=request.getWriter();out.print(“Hello”);Servlet:javax.servlet.ServletHttpServlet:javax.servlet.http.HttpServletjavax.servletrequestrequest代表HTTP協(xié)議的一個(gè)請(qǐng)求對(duì)象。request對(duì)象可以獲取請(qǐng)求報(bào)文的長度,字符編碼,主機(jī)名稱,MIME類型,請(qǐng)求方式,請(qǐng)求參數(shù)等信息。getAttribute(Stringname)/setAttribute(Stringname,Objectvalue):獲取與設(shè)置屬性信息。removeAttribute(Stringname):刪除屬性信息。getCharacterEncoding()/setCharacterEncoding(Stringcode):獲取設(shè)置字符編碼getParameter(Stringname)/getParameterValues(Stringname):獲取請(qǐng)求的參數(shù)getMethod():獲取請(qǐng)求的方式getProtocol():獲取請(qǐng)求的協(xié)議,HTTP協(xié)議getQueryString():獲取查詢字符串getRemoteAddr():獲取客戶端的IP地址getSession():創(chuàng)建Session對(duì)象//創(chuàng)建session對(duì)象的HttpSessionsession=request.getSession();String[]getParameterValues(Stringname)EnumerationgetParameterNames(Stringname)getServerPort():獲取服務(wù)器端口getServletPath():獲取程序的地址getCookies():返回Cookie信息,返回值類型Cookie[]表單form.jsp<inputtype=”hidden”name=”data”value=”123”request.getParameter(“data”)=123<formaction="result.jsp"method="get">用戶:<inputtype="text"name="username"/><br/>密碼:<inputtype="password"name="password"/><br/>用戶類型:<inputtype="radio"value="admin"name="usertype">管理員</input><inputtype="radio"value="common"name="usertype">普通用戶</input><br/>愛好:<inputtype="checkbox"value="Reading"name="hobby">讀書</input><inputtype="checkbox"value="Sports"name="hobby">體育</input><inputtype="checkbox"value="Games"name="hobby">玩</input><br/><inputtype="submit"value="登錄"/></form>結(jié)果result.jsp用戶名:<%=request.getParameter("username")%><br/>密碼:<%=request.getParameter("password")%><br/>用戶類型:<%=request.getParameter("usertype")%>;愛好:<%String[]hobby=request.getParameterValues("hobby");for(Stringh:hobby)//foreach{ out.print(h); out.print("");}%>request對(duì)象的方法EnumerationgetAttributeNames();java.util.Enumeration與Iterator接口的功能類似,都是用來遍歷一個(gè)容器的。該接口有兩個(gè)方法:booleanhasMoreElements();EnextElement()Enumeratione=request.getAttributeNames();while(e.hasMoreElements()){ System.out.println(e.nextElement());}三、response response是HTTP響應(yīng)報(bào)文,請(qǐng)求狀態(tài)碼:404,405,500要知道它們的含義。 一個(gè)HTTP響應(yīng)報(bào)文包括,請(qǐng)求行,請(qǐng)求報(bào)頭,請(qǐng)求體。 response對(duì)象提供了一些方法,可以獲取請(qǐng)求行,請(qǐng)求報(bào)頭的信息,也可以設(shè)置這些信息。addCookie(Cookiecookie):向客戶端發(fā)送CookiegetBufferSize():獲取緩沖區(qū)的大小getCharacterEncoding()/setCharacterEncoding():獲取,設(shè)置響應(yīng)報(bào)文的字符編碼sendError(intstatus)/sendError(intstatus,Stringurl):設(shè)置狀態(tài)碼sendRedirect(Stringurl):重定向頁面setContentLength(intlength):設(shè)置請(qǐng)求的長度setHeader(Stringheader,Stringvalue):設(shè)置請(qǐng)求報(bào)頭。示例://隔5秒鐘自動(dòng)跳轉(zhuǎn)至url指定的頁面response.setHeader("Refresh","5;url=");//每隔5秒鐘刷新一次頁面response.setHeader("Refresh","5”http://localhost:8080/ch3/form.jsphttp://localhost:8080/ch3/count.jsp//頁面的重定向response.sendRedirect(“url”);注意:重定向是指把當(dāng)前用戶請(qǐng)求重新定向至另外一個(gè)請(qǐng)求。重定向?qū)嵸|(zhì)上是兩個(gè)請(qǐng)求。與<jsp:forward>的區(qū)別:(1)sendRedirect()方法頁面跳轉(zhuǎn)之后,地址欄的地址會(huì)更新至重定向的頁面地址。而<jsp:forward>則不會(huì)。(2)sendRedirect()方法可以跳轉(zhuǎn)至本項(xiàng)目以外其他頁面,而<jsp:forward>則不會(huì)。(3)<jsp:forward>的執(zhí)行效率比sendRedirect()高。RequestDispatcher:請(qǐng)求轉(zhuǎn)向//sendError發(fā)送錯(cuò)誤sendError(404);sendError(404,”form.jsp”);四、cookie(1)什么Cookie?Cookie就是服務(wù)器發(fā)送客戶端的一些用戶個(gè)人信息,并且這些信息將以文本形式保存在客戶機(jī)的某個(gè)目錄下,當(dāng)用戶下次訪問時(shí),瀏覽器將會(huì)把Cookie的信息再次發(fā)送服務(wù)器。Cookie是一個(gè)鍵值對(duì)key/valuename:zhangsangpassword:123(2)使用Cookie步驟第一步:創(chuàng)建Cookie對(duì)象。構(gòu)造方法:Cookie(Stringkey,Objectvalue)Cookiecookie=newCookie(“name”,”zhangsan”);第二步:使用response對(duì)象添加Cookieresponse.addCookie(cookie);第三步:設(shè)置Cookie的一些信息(可選的),如Cookie有效期,Cookie的保存路徑等。//設(shè)置Cookie的有效期3600s,以秒為單位cookie.setMaxAge(3600);cookie.setPath(“/”);第四步:服務(wù)器端讀取CookieCookie[]c=request.getCookies();for(Cookietemp:c){ Strings=temp.getName();//用來獲取鍵名key Stringp=(String)temp.getValue();//用來獲取鍵值value}2015-9-17五、session 代表一個(gè)HTTP會(huì)話,所謂會(huì)話由HTTPrequest與response組成。使用Session時(shí),要注意區(qū)分與request的作用域。Session可以跨越不同的頁面?zhèn)髦担鴕equest只能在當(dāng)前請(qǐng)求中傳值。 我們?cè)趹?yīng)用程序中使用session來跟蹤用戶的信息。getAttribute(Stringname)/setAttribute(Stringname,Objectvalue):獲取、設(shè)置會(huì)話屬性removeAttribute(Stringname):刪除指定會(huì)話屬性invalidate():取消所有的會(huì)話屬性setMaxInactiveInterval(inttime)/getMaxInactiveInterval():設(shè)置、獲取會(huì)話的最大時(shí)間間隔。在登錄頁面session.setAttribute(“name”,”zhangsan”);session.setAttribute(“test”,123);Strings=(String)session.getAttribute(“test”);session的作用范圍要比request的作用范圍大。此外,即使request與Session的屬性名稱一樣,但它們?nèi)允遣煌膶傩詫?duì)象。//讓所有的Session失效。session.invalidate();//設(shè)置Session的最大有效期為30分鐘session.setMaxInactiveInterval(30)//以分鐘為單位六、page 相當(dāng)于this關(guān)鍵字,即Object類,具有Object類的所有方法,如toString(),getClass(),clone(),equal()等方法。七、out 向JSP頁面中輸出指定的數(shù)據(jù)。 System.out.println()是向控制臺(tái)(Console)輸出指定的數(shù)據(jù)print()println()newline()out.print("<scripttype='text/javascript'>alert('hello')</script>");2012-9-17八、pageContext pageContext對(duì)象代表一個(gè)文件的上下文(Context),代表當(dāng)前頁面的一些屬性信息。使用pageContext對(duì)象可以獲取當(dāng)前頁面的一些其他內(nèi)置對(duì)象,如request,response,application、exception等。 getSession():獲取當(dāng)前頁面的Session對(duì)象; getOut():返回out對(duì)象; getResponse():返回response對(duì)象; getRequest():返回Request對(duì)象;getServletConfig():返回config對(duì)象;getServletContext():返回application對(duì)象;getAttribute():返回Attribute對(duì)象;forward():相當(dāng)于response.redirect()方法。九、exception 該對(duì)象代表當(dāng)前JSP頁面運(yùn)行時(shí)出現(xiàn)異常時(shí)的異常對(duì)象,相當(dāng)于java.lang.Throwable類。我們使用exception對(duì)象可以獲取當(dāng)前JSP頁面的異常。 e.printStackTrace()十、application 該對(duì)象代表應(yīng)用程序本身。 setAttribute()/getAttribute():用法與request、session的這兩個(gè)方法用法相同。區(qū)別在于application設(shè)置的屬性信息作用域范圍最大。作用域從大到小的次序?yàn)椋篴pplication,session,request。 在一個(gè)應(yīng)用系統(tǒng)中,session或者request中同名的屬性,如果是多用戶使用時(shí),每個(gè)用戶的屬性值是相互獨(dú)立的,它們值互不干涉。而在application中,每個(gè)用戶共享使用同名的屬性。類似static類型成員變量。publicstaticinta=100; 一般來說,使用Application對(duì)象作為應(yīng)用程序全局類型的變量時(shí)使用該對(duì)象。getServerInfo():獲取當(dāng)前Server的信息getMajorVersion():獲取當(dāng)前Servlet的主版本號(hào)getMinorVersion():次版本號(hào)getContext():獲取上下文信息getRealPath():獲取程序的路徑。getParameter():獲取參數(shù)值application.getContext("/ch3").getRealPath("/"):獲取當(dāng)前程序的真實(shí)路徑。十一、web.xml文件介紹(1)<error>元素作用:定義應(yīng)用程序統(tǒng)一的錯(cuò)誤處理頁面語法:<error> <error-code>response的狀態(tài)碼</error-code> <exception-type>異常類名稱</exception-type> <location>/錯(cuò)誤頁面的URL</location><error>注意:在同一個(gè)<error>元素中,<error-code>與<exception-type>元素只能定義其中的一個(gè)。<location>元素定義錯(cuò)誤頁面的路徑,必須以“/”開頭(2)<welcome-file-list>元素作用:定義應(yīng)用程序的首頁語法格式:<welcome-file-list> <welcome-file>頁面</welcome-file></welcome-file-list>(3)<servlet>元素作用:用來配置程序中對(duì)應(yīng)的Servlet程序及其信息語法格式:<servlet><description>描述該Servlet的信息</description><servlet-name>servlet的名稱</servlet-name><servlet-class>servlet具體的包路徑</servlet-class><load-on-startup>定義Servlet的加載次序</load-on-startup></servlet>(3)<servlet-mapping>元素作用:用來Servlet的映射信息,必須與<servlet>元素成對(duì)出現(xiàn),并且要放在<servlet>元素的后面。語法格式:<servlet-mapping> <servlet-name>與<servlet>元素中的同名Servlet值一致</servlet-name><url-pattern>定義該Servlet的url路徑</url-pattern></servlet-mapping>(4)<filter>元素作用:定義過濾器語法格式:<filter> <filter-name>MyFilter</filter-name> <filter-class>com.filter.MyFilter</filter-class></filter><filter-mapping> <filter-name>MyFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>“/*”為通配符,意思為當(dāng)訪問項(xiàng)目的任何一個(gè)頁面時(shí),都會(huì)啟動(dòng)本過濾器。(5)<listener>元素作用:定義監(jiān)聽器語法格式:<listener> <listener-class>監(jiān)聽器的包路徑</listener-class></listener>(6)<session-config>元素session.setMaxInactiveInterval()可以設(shè)置session的最大有效期。作用:設(shè)置程序中的Session的有效期語法格式:<session-config><session-timeout>20</session-timeout>//以分鐘為單位</session-config>十二、config 該對(duì)象代表JavaWeb應(yīng)用程序的配置信息,使用該對(duì)象一般用來獲取web.xml文件中的一些信息。getInitParameter():獲取web.xml文件中配置的參數(shù)值getInitParameterNames():返回web.xml文件中的參數(shù)名,注意返回是一個(gè)Enumeration對(duì)象。getServletContext():獲取Servlet的上下文信息getServletNames():返回當(dāng)前的Servlet名稱2015-9-25第四章JDBC1、MySQL2、JDBCAPI介紹importjava.sql.*;importjava.text.*;publicclassJDBCTest{ staticConnectionconn=null; staticStatements=null; publicstaticvoidmain(String[]args){ java.util.Datedate=newjava.util.Date(); SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); Stringsdate=sdf.format(date); Stringsql="INSERTINTOuser(sno,sname,sex,birthdate)VALUES('20100202','lisi','女','"+sdate+"')"; System.out.println(sql); try { Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/db","root","mysql"); s=conn.createStatement(); s.executeUpdate(sql); s.close(); conn.close(); }catch(Exceptione) { e.printStackTrace(); } }}一、Java程序連接數(shù)據(jù)庫的兩種方式:Java程序->JDBC–ODBCBridge->數(shù)據(jù)庫Java程序->JDBCPureDriver->數(shù)據(jù)庫Java應(yīng)用程序在操作數(shù)據(jù)庫之前,首先要確保有相關(guān)數(shù)據(jù)庫的JDBC驅(qū)動(dòng)。MySQL的地址表示方法:jdbc:mysql://localhost:3306/dbMySQL的使用的端口號(hào):3306MySQL加載驅(qū)動(dòng)的名稱:com.mysql.jdbc.DriverSQLServer的地址表示方法:jdbc:sqlserver://localhost:1433;DatabaseName=dbSQLServer的端口號(hào):1433SQLServer加載驅(qū)動(dòng)的名稱:com.microsoft.jdbc.sqlserver.SQLServerDriver類方法:方法有static修飾,調(diào)用方式:類名.方法名實(shí)例方法:沒有static修飾,調(diào)用方式:實(shí)例名.方法名Sqlserver:Selecttop10fromyourtableMysql:select*fromyourtablelimit10JDBCAPIDriverManager類staticConnectiongetConnection(Stringurl)staticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)創(chuàng)建一個(gè)數(shù)據(jù)庫連接對(duì)象。DriverManager.getConnection(“jdbc:mysql://localhost:3306/db”,“root”,“123”地址表示方法:jdbc:數(shù)據(jù)庫名稱://數(shù)據(jù)庫的IP地址:端口號(hào)/數(shù)據(jù)庫名DriverManager.getConnection(“jdbc:mysql://localhost:3316/db?user=root&password=123Connection接口close():關(guān)閉數(shù)據(jù)庫連接對(duì)象commit():提交事務(wù),一般事務(wù)自動(dòng)提交,故無需調(diào)用此方法createStatement():創(chuàng)建一個(gè)Statement對(duì)象prepareStatement():創(chuàng)建一個(gè)PreparedStatement對(duì)象preparecall():創(chuàng)建一個(gè)CallableStatement對(duì)象setAutoCommit(true/false):設(shè)置是否自動(dòng)提交事務(wù),默認(rèn)為true3、Statement接口:用來執(zhí)行普通的SQL語句executeUpdate():用來執(zhí)行INSERT/UPDATE/DELETE等SQL語句,返回int類型executeQuery():用來執(zhí)行SELECTSQL語句,返回ResultSet類型close():關(guān)閉Statement對(duì)象execute():用來執(zhí)行任何SQL語句,返回boolean4、PreparedStatement,用來執(zhí)行含有參數(shù)的SQL語句,是Statement的子接口 setXxx(inti,Objectx)方法:為SQL語句中第i個(gè)參數(shù)賦值。 CallableStatement,用來執(zhí)行存儲(chǔ)過程,是PreparedStatement的子接口。ResultSet:用來存儲(chǔ)SQL查詢的結(jié)果集next():判斷當(dāng)前結(jié)果集是否還有下一條記錄getXxx():獲取指定列的字段值。2015-10-8一、軟件開發(fā)的步驟(1)需求分析:確定系統(tǒng)的邊界,做什么用的,涉及到哪些對(duì)象(實(shí)體),需要哪些人員參與,各個(gè)對(duì)象之間的關(guān)系,業(yè)務(wù)流程,參與的人員具體的業(yè)務(wù)是什么的。需求分析說明書(2)技術(shù)上可行性分析:設(shè)計(jì)系統(tǒng)體系結(jié)構(gòu),數(shù)據(jù)庫的物理設(shè)計(jì)(表結(jié)構(gòu)設(shè)計(jì)),采用什么樣的技術(shù)組合。(3)設(shè)計(jì)系統(tǒng)原型,具體設(shè)計(jì)頁面風(fēng)格,公共類,關(guān)鍵算法設(shè)計(jì)(4)編碼(5)測(cè)試,單元測(cè)試,白盒測(cè)試,黑盒測(cè)試,壓力測(cè)試,性能測(cè)試。(6)編寫文檔,例如用戶使用說明書對(duì)于數(shù)據(jù)庫的操作步驟:第一步:加載JDBC驅(qū)動(dòng)Class.forName(“驅(qū)動(dòng)類名稱”);第二步:創(chuàng)建數(shù)據(jù)庫連接對(duì)象Connection,主要使用DriverManager類的getConnection()方法創(chuàng)建。Connectioncon=DriverManager.getConnection(url,user,password);第三步:創(chuàng)建一個(gè)操作SQL的對(duì)象Statement/PreparedStatement/CallableStatement(1)Statementst=con.createStatement();//普通SQL(2)PreparedStatementps=con.prepareStatement(sql);//動(dòng)態(tài)SQL(3)CallableStatementcs=con.prepareCall(sql);//存儲(chǔ)過程第四步:執(zhí)行SQL語句(1)st.executeUpdate(sql);//執(zhí)行UPDATE/DELETE/INSERT語句st.executeQuery(sql);//執(zhí)行SELECT語句ps.setXxx(index,Value);//用來為參數(shù)賦值ps.executeUpdate();或者ps.executeQuery();cs.setXxx(index,value);cs.executeUpdate();cs.executeQuery()若是執(zhí)行的SELECT語句,在執(zhí)行第五步之前,還要進(jìn)行數(shù)據(jù)的分析與獲取。Stringsql=select*fromperson;ResultSetrs=st.executeQuery(sql);while(rs.next()){ Stringname=rs.getString(“name”); ……}第五步:關(guān)閉對(duì)象st.close();con.close();2015-10-9第5章JavaBean1、認(rèn)識(shí)JavaBean2、編寫一個(gè)JavaBean3、JavaBean的應(yīng)用一、認(rèn)識(shí)JavaBean JavaBean是一個(gè)可復(fù)用的組件模型,最初發(fā)明時(shí)目的是應(yīng)用于JavaSwing(可視化組件)的開發(fā),相當(dāng)于微軟的一個(gè)組件技術(shù)Com技術(shù)。 但是,隨著JSP技術(shù)發(fā)展,JavaBean逐漸應(yīng)用于JavaWeb開發(fā)中(非可視化)。(1)JavaBean的優(yōu)勢(shì): JavaBean能夠?qū)崿F(xiàn)業(yè)務(wù)邏輯(JAVA代碼)與表現(xiàn)層(HTML)分離,提高程序的可讀性和復(fù)用性。 JavaBean便于開發(fā)與設(shè)計(jì)人員的分工。 JavaBean實(shí)質(zhì)上就是一個(gè)Java類,具有Java語言所有特性,例如跨平臺(tái),開源等。(2)JavaBean規(guī)范JavaBean必須是一個(gè)public類型的類;JavaBean的成員變量必須是private類型的(把成員變量隱藏起來,對(duì)于其他類來講,它的成員變量是不可見的);JavaBean為成員變量提供一對(duì)setter/getter方法,通過使用setter方法為成員變量賦值,通過getter方法訪問成員變量的值。如果成員變量是boolean類的類型,只需為該成變量定義一個(gè)isXxx()方法即可,不必再定義getter。setter/getter方法的格式為:setXxx()/getXxx(),例如一個(gè)JavaBean中有一個(gè)成員變量為privateStringname,那么name對(duì)應(yīng)的setter和getter方法為:privateStringname;publicvoidsetName(Stringvalue){ =value;}publicStringgetName(){ return;}JavaBean也可以構(gòu)造方法,但是至少提供一個(gè)無參的缺省構(gòu)造方法。編寫JavaBean應(yīng)用JavaBean<jsp:useBean>:在JSP頁面中聲明JavaBean,聲明之后方可在JSP頁面中調(diào)用JAVABEAN對(duì)象。<jsp:setProperty>:為JavaBean對(duì)應(yīng)的成員變量賦值,相當(dāng)于調(diào)用JavaBean對(duì)應(yīng)的setXxx()。等價(jià)于<%bean.setXxx();%><jsp:getProperty>:獲取JavaBean對(duì)應(yīng)的成員變量值,相當(dāng)于調(diào)用JavaBean相應(yīng)的getXxx()。等價(jià)于<%=bean.getXxx()%>JavaBean可以與表單中的輸入域關(guān)聯(lián)起來,主要依賴JavaBean的成員變量名稱與輸入域<inputname=”xxx”/>的name屬性值一致。 可以使用<jsp:setProppertyproperty=”*”name=”bean”/>將自動(dòng)與表單中的對(duì)應(yīng)輸入域進(jìn)行匹配。以下兩行聲明是錯(cuò)誤的:<jsp:useBeanid=”test”class=”bean.Test”scope=”session”/><jsp:useBeanid=”test”class=”bean.Bean”scope=”session”/>JavaBean的useBean標(biāo)記的作用域scope屬性,有四個(gè)取值,page/request/session/application,作用域依次增大。注意:在同一個(gè)范圍內(nèi),不能使用兩個(gè)JavaBean對(duì)象具有相同的id屬性。page代表聲明的JavaBean對(duì)象只在當(dāng)前頁面有效,是默認(rèn)的作用域。request代表聲明的JavaBean對(duì)象在同一個(gè)請(qǐng)求內(nèi)有效。session代表聲明的JavaBean對(duì)象在同一個(gè)會(huì)話中有效。application代表聲明的JavaBean對(duì)象在整個(gè)應(yīng)用程序中都有效。JavaBean的應(yīng)用場(chǎng)合:JavaBean主要以模型的形式存在,是應(yīng)用程序的數(shù)據(jù)模型,使用JavaBean獲取JSP頁面中表單中用戶輸入的數(shù)據(jù),JavaBean作為數(shù)據(jù)的中轉(zhuǎn)站(數(shù)據(jù)的暫存器),將從表單中獲取的數(shù)據(jù)傳送給我們的業(yè)務(wù)邏輯(Servlet)。JavaBean的設(shè)計(jì)原則: JavaBean中有哪些成員變量取決于我們的數(shù)據(jù)模型(表結(jié)構(gòu)),數(shù)據(jù)表中有哪些字段,就應(yīng)該在JavaBean中定義相應(yīng)數(shù)據(jù)類型的成員變量。第六章Servlet,F(xiàn)ilter和Listener1、Servlet的概念(什么是Servlet、工作原理、功能作用、生命周期等)2、如何編寫Servlet(一種特殊的Java類)3、掌握Servlet常用API4、應(yīng)用Servlet(調(diào)用、配置等)Servlet是運(yùn)行在服務(wù)器端的Java程序,它的運(yùn)行必須依賴于一種Web容器(如tomcat)。Servlet可以分為兩種,一種普通Servlet,另外一種是HttpServlet,它支持HTTP協(xié)議。因此我們編寫Servlet類必須繼承于上述兩種之一。有關(guān)Servlet的API全部在以下兩個(gè)包中:javax.servlet.*javax.servlet.http.*javax.servlet.http.HttpServlet在Servlet程序中,可以直接或者間接地使用JSP的內(nèi)置對(duì)象。Servlet程序可以生成一個(gè)網(wǎng)頁。javax.servlet.http.HttpServletRequest,requestpublicvoidservice(javax.servlet.http.HttpServletRequestrequest,javax.servlet.http.HttpServletResponseresponse)throwsIOException{ HttpSessionsession=request.getSession(); PrintWriterout=response.getWriter();}Applet是運(yùn)行在瀏覽器上的Java小程序。Java程序包括兩種:JavaApplication和JavaApplet。1、Servlet的生命周期Servlet的創(chuàng)建到銷毀要經(jīng)歷三個(gè)階段:初始化、執(zhí)行、銷毀初始化:一旦一個(gè)Servlet程序初裝入Web服務(wù)器(Web容器)之后,Servlet調(diào)用自身的init()方法,初始化相關(guān)信息(相當(dāng)于普通Java類的構(gòu)造方法,分配空間,初始化參數(shù))。在Servlet的整個(gè)生命周期中,初始化init()方法僅且執(zhí)行一次。執(zhí)行:當(dāng)有來自Web客戶端的請(qǐng)求時(shí),Servlet調(diào)用service()方法處理請(qǐng)求,把請(qǐng)求的結(jié)果以對(duì)應(yīng)的doXxx()方法響應(yīng)給客戶端。如果客戶端請(qǐng)求方式為Get方式時(shí),Servlet將以doGet()方法響應(yīng);如果客戶端請(qǐng)求方式為Post方式時(shí),Servlet將以doPost()方法響應(yīng)。service()可以執(zhí)行任意多次。銷毀:Servlet僅在Web服務(wù)器關(guān)閉時(shí),它才會(huì)銷毀。當(dāng)要銷毀時(shí),調(diào)用destroy()方法來執(zhí)行銷毀。在Servlet的生命周期中,僅且執(zhí)行一次。web.xml<servlet><description>Servlet配置</description<servlet-name>MyServlet</servlet-name><servlet-class>com.servlet.MyServlet</servlet-class><init-param> <param-name>p</param-name> <param-value>100</param-value></init-param></servlet><servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/MyServlet</url-pattern></servlet-mapping>http://localhost:8080/jdbc/service/MyServletServlet的配置支持兩種方式:xml方式,注解方式(Servlet3.0)2、ServletAPIjavax.servlet.Servlet接口,是所有Servlet程序的基礎(chǔ)。它提供了以下5個(gè)方法:init(ServletConfigconfig):初始化,可以使用config參數(shù)獲取Servlet的一些初始化參數(shù)(通過使用config.getInitParameter(“p”))。另外,自定義的Servlet如果說在初始化要完成一些特定的初始化工作,也應(yīng)該這些代碼放在init()方法執(zhí)行。service(ServletRequestrequest,ServletResponseresponse):一般來說用來接收用戶的請(qǐng)求。我們一般不會(huì)重寫該方法,我們重寫doGet/doPost方法。desotry():用來執(zhí)行銷毀,一般不用我們重寫。getServletInfo():用來獲取Servlet的一些自身信息,如版本號(hào),開發(fā)人員等。getServletConfig():返回一個(gè)Config對(duì)象,用來獲取Servlet啟動(dòng)和初始化的一些信息。doGet():用來處理客戶端GET方式的請(qǐng)求;doPost():用來處理客戶端POST方式的請(qǐng)求。如何調(diào)用Servlet使用表單調(diào)用<formaction=”Servlet的路徑”method=”get”>URL調(diào)用如:<ahref=”Servlet的路徑”>Servlet</a>http://localhost:8080/javabean/service/TriangleServlethttp://localhost:8080/javabean/triangle.jsp<formaction=”service/TriangleServlet”method=”post”>配置Servlettomcat7支持兩種方式配置Servlet,一種方式(新技術(shù))是使用注解方式配置,也是默認(rèn)的方式;另外一種方式是在web.xml文件中配置Servlet,在Tomcat6及以前的版本支持該方式。(1)注解方式語法格式:@WebServlet(….)位置:把注解放在類的聲明的前面。使用@WebServlet將一個(gè)繼承于javax.servlet.http.HttpServlet的類定義為Servlet組件。@WebServlet有很多的屬性:asyncSupported:聲明Servlet是否支持異步操作模式。description:

Servlet的描述。displayName:

Servlet的顯示名稱。initParams:

Servlet的init參數(shù)。name:

Servlet的名稱。urlPatterns:

Servlet的訪問URL,注意URL必須以“/”打頭。value:

Servlet的訪問URL。Servlet的訪問URL是Servlet的必選屬性,可以選擇使用urlPatterns或者value定義。像上面的TriangleServlet可以描述成@WebServlet(name="TriangleServlet",value="/TriangleServlet")。也定義多個(gè)URL訪問:@WebServlet(name="TriangleServlet",urlPatterns={"/TriangleServlet","/TriangleServlet2"})或者:@WebServlet(name="TriangleServlet",value={"/TriangleServlet","/TriangleServlet2"})(2)使用web.xml配置Servlet<servlet> <description>三角形</description> <servlet-name>TrinagleServlet</servlet-name> <servlet-class>com.servlet.TriangleServlet</servlet-class></servlet><servlet-mapping> <servlet-name>TrinagleServlet</servlet-name> <url-pattern>/service/TriangleServlet</url-pattern></servlet-mapping>Servlet的作用可以生成HTML頁面或者HTML頁面片段;可以利用Servlet實(shí)現(xiàn)業(yè)務(wù)流程控制;可以獲取表單中的數(shù)據(jù),也可以獲取查詢字符串;可以使用Java的其他API,例如JDBC;可以訪問其他資源,如數(shù)據(jù)庫服務(wù)器,Java應(yīng)用程序。在MVC模式中,我們使用Servlet完成C層(Controller,控制層)的功能。SUN公司曾經(jīng)提出兩種JAVA架構(gòu)模型:JSPMODEL1,JSPMODEL2Model1:JSP(View)+JavaBean(Model,Controller)Model2:JSP(View)+JavaBean(Model)+Servlet(Controller)在Servlet中如何創(chuàng)建和使用內(nèi)置對(duì)象out: PrintWriterout=response.getWriter();session: HttSessionsession=request.getSession();request/response: 在doGet()/doPost()方法中可以直接使用config: config內(nèi)置對(duì)象的具體類型:javax.servlet.ServletConfig類型在init(ServletConfigconfig)方法中可以直接使用。application: HttpSessionsession=request.getSession(); ServletContextapplication=session.getServletContext(); 如果,在servlet類中重寫了父類的service()方法,Servlet程序在執(zhí)行時(shí),將執(zhí)行service()方法,不再去調(diào)用doXxx()方法。所以說,一般情況下我們不重寫service()方法,而是重寫doXxx()方法。2015-10-15過濾器與監(jiān)聽器了解過濾器的工作原理創(chuàng)建與配置一個(gè)過濾器類過濾器常見API過濾器的工作原理Filter是Servlet2.3之后新增一個(gè)技術(shù),F(xiàn)ilter將會(huì)用戶的請(qǐng)求進(jìn)行過濾,滿足指定條件的請(qǐng)求才能訪問Web資源;如果不滿足條件,那么該請(qǐng)求將被過濾,Web服務(wù)器是不會(huì)請(qǐng)求的內(nèi)容響應(yīng)給客戶端。在客戶端與Web服務(wù)器中間增加了一個(gè)環(huán)節(jié),通過該環(huán)節(jié)對(duì)用戶的請(qǐng)求和響應(yīng)進(jìn)行分析過濾。過濾器的主要作用:(1)在servlet被調(diào)用之前截獲;

(2)在servlet被調(diào)用之前檢查servlet

request;

(3)根據(jù)需要修改request頭和request數(shù)據(jù);

(4)根據(jù)需要修改response頭和response數(shù)據(jù);

(5)在servlet被調(diào)用之后截獲。

過濾器的主要應(yīng)用:如用戶權(quán)限控制、修改用戶的請(qǐng)求格式等。二、創(chuàng)建與配置Filter(1)創(chuàng)建(略),參見教材;(2)配置Filter,兩種方式。方式一:使用注解方式(僅tomcat7支持) 語法格式:@WebFilter(屬性名=屬性值,…)主要有3個(gè)屬性filterName:可選,用來定義filter的名稱;urlPatterns:必選,用來定義filter被調(diào)用的路徑,也是必須以“/”打頭。如/*,代表當(dāng)該訪問Web應(yīng)用的任何資源時(shí),該Filter都會(huì)被調(diào)用,并且執(zhí)行該過濾器的doFilter()。initParams:可選,用來定義過濾器的初始化參數(shù)。如:initParams={ @WebInitParam(name="param",value="100") } 如果說兩個(gè)可選屬性都省略時(shí),注解可以簡化為@WebFilter(“url”) 注意:注解必須放在過濾器類的定義的上面,緊跟在類定義之前。方式二:使用web.xml方式(tomcat7/tomcat6及早期版本)<filter> <filter-name>SecondFilter</filter-name> <filter-class>com.filter.SecondFilter</filter-class> <init-param> <param-name>param</param-name> <param-value>100</param-value> </init-param></filter><filter-mapping> <filter-name>SecondFilter</filter-name> <url-pattern>/*<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論