JSP內(nèi)置對象課件_第1頁
JSP內(nèi)置對象課件_第2頁
JSP內(nèi)置對象課件_第3頁
JSP內(nèi)置對象課件_第4頁
JSP內(nèi)置對象課件_第5頁
已閱讀5頁,還剩93頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

內(nèi)置對象JSP內(nèi)置對象

有些成員變量不用聲明就可以在JSP頁面的腳本(Java程序片和Java表達式)中使用,這就是所謂的內(nèi)置對象。主要的內(nèi)置對象有:resquestresponsesessionoutApplicationpageJSP內(nèi)置對象(1)request

request包含了來自瀏覽器請求的相關(guān)信息,并且提供了獲取Cookie、header和請求相關(guān)的參數(shù)值等數(shù)據(jù)的有效方法。request對象封裝了用戶提交的信息,通過調(diào)用該對象相應(yīng)的方法可以獲取用戶提交的信息。(2)response

response主要將JSP處理后的結(jié)果傳回到客戶端(如Cookie、header信息等),它提供了將數(shù)據(jù)送回瀏覽器的方法。JSP內(nèi)置對象(3)out

out對象用于向瀏覽器回送輸出結(jié)果。(4)pageContextpageContext對象存儲當前JSP頁面相關(guān)信息,如屬性、內(nèi)建對象等。(5)session

session對象用于存儲每一個用戶的狀態(tài)信息,以便跟蹤用戶的會話狀態(tài),直到客戶端與服務(wù)器斷開連接為止,可用來識別每個用戶。JSP內(nèi)置對象(6)applicationapplicaton負責提供應(yīng)用程序在服務(wù)器中運行的全局信息,當應(yīng)用程序在服務(wù)器中啟動時該對象就一直存在,直到服務(wù)器關(guān)閉為止,所有客戶共享這個內(nèi)置的application對象。applicaton可用來在所有用戶間共享信息,并可以在Web應(yīng)用程序運行期間持久地保持數(shù)據(jù)。JSP內(nèi)置對象1.1request對象

內(nèi)置對象request對象是實現(xiàn)了ServletRequest接口類的一個實例.當客戶端請求一個JSP頁面時,JSP容器會將客戶端的請求信息包裝在這個request對象中。請求信息的內(nèi)容包括請求的頭信息(Header)、系統(tǒng)信息(比如:編碼方式)、請求的方式(比如:GET或POST)、請求的參數(shù)名稱和參數(shù)值等信息。

JSP內(nèi)置對象1.1.1獲取客戶提交的信息request對象代表的是來自客戶端的請求,例如:我們在FORM表單中填寫的信息等,是最常用的對象。獲取查詢字符串中的變量值①getParameter(

)②getParameterValues(

)復(fù)選框用③getParameterNames(

)通過調(diào)用這幾個方法來獲取請求對象中所包含的參數(shù)的值。JSP內(nèi)置對象request對象示例<html><body>

<formaction="./Hello_req.jsp">

姓名

<input

type="text"name="UserName">

<input

type="submit"value="提交">

</form></body></html>JSP內(nèi)置對象request對象示例(Hello_req.jsp)<%@pagecontentType="text/html;Charset=gb2312"%><%@pageimport="java.util.*"%><HTML><BODY>你好,<%!StringName;%><%Name=request.getParameter("UserName");%><%=Name%>,今天是<%Datetoday=newDate();%><%=today.getDate()%>號,星期<%=today.getDay()%></BODY></HTML>JSP內(nèi)置對象request對象示例(輸出結(jié)果)<HTML><BODY>

你好,獨孤求敗,

今天是

9號,星期1</BODY></HTML>JSP內(nèi)置對象example4_1.jsp<%@pagecontentType="text/html;Charset=GB2312"%><%@taglibtagdir="/WEB-INF/tags"prefix="com"%><HTML><BODYbgcolor=cyan><FONTsize=3><FORMaction=""method=postname=form><INPUTtype="text"name="number"><INPUTTYPE="submit"value="提交"name="submit"></FORM><%StringtextContent=request.getParameter("number");if(textContent==null){out.println("請在文本框中輸入數(shù)字,按提交按鈕");}else{%><p>調(diào)用Computer.tag文件負責計算平方根<com:Computernumber="<%=textContent%>"/><%}%></FONT></BODY></HTML>JSP內(nèi)置對象Compter.tag<%@attributename="number"%><%try{doublen=Double.parseDouble(number);if(n>=0){doubler=Math.sqrt(n);out.print("<BR>"+n+"的平方根:");out.print("<BR>"+r);}else{out.print("<BR>"+"請輸入一個正數(shù)");}}catch(NumberFormatExceptione){out.print("<BR>"+"請輸入數(shù)字字符");}%>JSP內(nèi)置對象得到Form表單的信息一通常我們用得最多的就是客戶端請求的參數(shù)名稱和參數(shù)值信息。得到某參數(shù)值的語法為:request.getParameter(”param1“)也可以通過request對象的getParameterNames()方法得到客戶端傳遞過來的所有參數(shù)名字。如:Enumerationparams=request.getParameterNames();JSP內(nèi)置對象得到Form表單的信息二案例名稱:HTML表單程序名稱:4-14.html<HTML><BODY><FORMACTION="4-15.jsp"METHOD="POST"><P>姓名:<INPUTTYPE="TEXT"SIZE="20"NAME="UserID"></P><P>密碼:<INPUTTYPE="PASSWORD"SIZE="20"NAME="UserPWD"></P><P><INPUTTYPE="SUBMIT"VALUE="提交"></P></FORM></BODY></HTML>JSP內(nèi)置對象

案例2-2:表單信息的提交與獲?。?)input.jsp<%@pagecontentType="text/html;Charset=GB2312"%><HTML><BODYbgcolor=cyan><Fontsize=3><FORMaction="receive.jsp"method=postname=form><P>請輸入下列信息:<BR>輸入您的姓名:<INPUTtype="text"name="name"value="張三"></BR><BR>選擇性別:<INPUTtype="radio"name="R"value="男"checked="default">男<INPUTtype="radio"name="R"value="女">女</BR><BR>選擇您喜歡的歌手:<inputtype=“checkbox”name=“superstar”value=“張歌手”>張歌手JSP內(nèi)置對象

<inputtype="checkbox"name="superstar"value="李歌手">李歌手<inputtype="checkbox"name="superstar"value="劉歌手">劉歌手<inputtype="checkbox"name="superstar"value="王歌手">王歌手</BR><INPUTTYPE="hidden"value="這是隱藏信息"name="secret"><INPUTTYPE="submit"value="提交"name="submit"></FORM></FONT></BODY></HTML>JSP內(nèi)置對象(2)receive.jsp<%@pagecontentType="text/html;Charset=GB2312"%><HTML><BODYbgcolor=cyan><Fontsize=3><%StringyourName=request.getParameter("name");//獲取text提交的值StringyourSex=request.getParameter("R");//獲取radio提交的值StringsecretMess=request.getParameter("secret");//獲取hidden提交的值StringpersonName[]=request.getParameterValues("superstar");//獲取checkbox提交的值out.println("<P>您的姓名:"+yourName+"</P>");out.println("<P>您的性別:"+yourSex+"</P>");out.println("<P>您喜歡的歌手:");JSP內(nèi)置對象if(personName==null){out.print("一個都不喜歡");}else{for(intk=0;k<personName.length;k++){out.println(""+personName[k]);}}out.println("<P>hidden提交的值:"+secretMess);%></FONT></BODY></HTML>JSP內(nèi)置對象4.1.2處理漢字信息

當利用request.getParameter得到Form中元素的時候,默認的情況字符編碼為ISO-8859-1,這種編碼不能正確的顯示漢字。目前有兩種解決方法,一種是在執(zhí)行操作之前,設(shè)置page指令<%@pagecontentType=“text/html;Charset=GB2312”>

另一種方法是轉(zhuǎn)換字符編碼<%Stringstr=request.getParameter(“girl");byteb[]=str.getBytes("ISO-8859-1");str=newString(b);%>JSP內(nèi)置對象example4_2.jsp<%@pagecontentType="text/html;Charset=GB2312"%><HTML><BODYbgcolor=cyan><FORMaction="showMessage1.jsp"method=postname=form><INPUTtype="text"name="boy"><INPUTTYPE="submit"value="提交給showMessage1.jsp"name="submit"></FORM><FORMaction="showMessage2.jsp"method=postname=form><INPUTtype="text"name="boy"><INPUTTYPE="submit"value="提交給showMessage2.jsp"name="submit"></FORM></BODY></HTML>JSP內(nèi)置對象showMessage1.jsp<%@pagecontentType="text/html;Charset=GB2312"%><MHML><BODY><P>獲取文本框提交的信息:

<%StringtextContent=request.getParameter("boy");%><BR><%=textContent%><P>獲取按鈕的名字:

<%StringbuttonName=request.getParameter("submit");%><BR><%=buttonName%></BODY></HTML>JSP內(nèi)置對象showMessage2.jsp<%@pagecontentType="text/html;charset=GB2312"%><MHML><BODY><P>獲取文本框提交的信息:

<%StringtextContent=request.getParameter("boy");byteb[]=textContent.getBytes("ISO-8859-1");textContent=newString(b);%><BR><%=textContent%><P>獲取按鈕的名字:

<%StringbuttonName=request.getParameter("submit");bytec[]=buttonName.getBytes("ISO-8859-1");buttonName=newString(c);%><BR><%=buttonName%></BODY></HTML>JSP內(nèi)置對象1.1.3request對象的常用方法getProtocol():獲取請求使用的通信協(xié)議,如http/1.1等。getServletPath():獲取請求的JSP頁面所在的目錄。getContentLength():獲取HTTP請求的長度。getMethod():獲取表單提交信息的方式,如POST或GET。getHeader(Strings):獲取請求中頭的值。getHeaderNames():獲取頭名字的一個枚舉。getHeaders(Strings):獲取頭的全部值的一個枚舉。JSP內(nèi)置對象1.1.3request對象的常用方法getRemoteAddr():獲取客戶的IP地址。getRemoteHost():獲取客戶機的名稱(如果獲取不到,就獲取IP地址)。getServerName():獲取服務(wù)器的名稱。getServerPort():獲取服務(wù)器的端口號。getParameterNames():獲取表單提交的信息體部分中name參數(shù)值的一個枚舉JSP內(nèi)置對象example4_3.jsp<%@pagecontentType="text/html;Charset=GB2312"%><%@pageimport="java.util.*"%><MHML><BODYbgcolor=cyan><Fontsize=3><FORMaction=""method=postname=form><INPUTtype="text"name="boy"><INPUTTYPE="submit"value="enter"name="submit"></FORM><tableborder=1><%Stringprotocol=request.getProtocol();Stringpath=request.getServletPath();Stringmethod=request.getMethod();Stringheader=request.getHeader("accept");%>JSP內(nèi)置對象<tr><td>客戶使用的協(xié)議是:</td><td>"<%=protocol%>"</td></tr><tr><td>用戶請求的頁面所在位置:</td><td>"<%=path%>"</td></tr><tr><td>客戶提交信息的方式:</td><td>"<%=method%>"</td></tr><tr><td>>獲取HTTP頭文件中accept的值(瀏覽器支持的MIME類型):</td><td>"<%=header%>"</td></tr></table>JSP內(nèi)置對象<BR>獲取客戶端提交的所有參數(shù)的名字:<%EnumerationenumName=request.getParameterNames();while(enumName.hasMoreElements()){Strings=(String)enumName.nextElement();out.println(s);}%><BR>獲取頭名字的一個枚舉:<%EnumerationenumHeaded=request.getHeaderNames();while(enumHeaded.hasMoreElements()){Strings=(String)enumHeaded.nextElement();out.println(s);}%>JSP內(nèi)置對象<BR>獲取頭文件中指定頭名字的全部值的一個枚舉:<%EnumerationenumHeadedValues=request.getHeaders("cookie");while(enumHeadedValues.hasMoreElements()){Strings=(String)enumHeadedValues.nextElement();out.println(s);}%><P>文本框text提交的信息:<%StringtextContent=request.getParameter("boy");if(textContent==null){textContent="";}intlength=textContent.length();out.println(textContent);out.println("文本框中字符的個數(shù):"+length);%></Font></BODY></HTML>JSP內(nèi)置對象1.2response對象

response對象是一個javax.servlet.http.HttpServletResponse類的子類的對象.response對象對客戶的請求做出響應(yīng),向客戶端發(fā)送數(shù)據(jù).JSP內(nèi)置對象1.2.1改變contentType屬性的值當請求一個JSP頁面的時候,如果該頁面用page指令設(shè)置頁面的contentType屬性的值是text/html,那么服務(wù)器將把靜態(tài)頁面部分發(fā)送給客戶端。也可以設(shè)置為其他一些相應(yīng)類型,如:text/plain(文本文件)、application/x-msexcel(Excel文件)和application/msword(Word文件)等。JSP內(nèi)置對象顯示為Word文檔案例名稱:顯示為Word文檔程序名稱:4-11.jsp<%@pagecontentType="text/html;charset=GBK"%><HTML> <BODY> <P>response對象<BR>setContentType方法

<P>將當前頁面保存為word文檔嗎

<% response.setContentType("application/msword;charset=GB2312"); %> </BODY></HTML>JSP內(nèi)置對象example4_4.jsp<%@pagecontentType="text/html;Charset=GB2312"%><HTML><BODYbgcolor=cyan><Fontsize=2><P>在學習response對象的setContentType方法

<FORMaction=""method="post"name=form><P>將當前頁面用MS-Word顯示嗎?

<INPUTTYPE="submit"value="MS-Word顯示"name="submit">

<P>將當前頁面用MS-Powerpoint顯示嗎?

<INPUTTYPE="submit"value="MS-Powerpoint顯示"name="submit"></FORM>

JSP內(nèi)置對象<%Stringstr=request.getParameter("submit");if(str==null){str="";}if(str.equals("MS-Word顯示")){response.setContentType("application/msword");}elseif(str.equals("MS-Powerpoint顯示")){response.setContentType("application/vnd.ms-powerpoint");}%></FONT></BODY></HTML>JSP內(nèi)置對象1.2.2設(shè)置響應(yīng)HTTP頭可以利用JSP動態(tài)改變客戶端的響應(yīng),使用的語法是“response.setHeader()”,比如讓客戶端自動每隔5秒刷新一次。4-5.jsp<%@pagecontentType="text/html;charset=GBK"%><%@pageimport="java.util.*"%><P>現(xiàn)在的時間是:<BR><%out.println(""+newDate());response.setHeader("Refresh","5");%>JSP內(nèi)置對象1.2.3重定向?qū)τ趓esponse對象,最常用到的是sendRedirect()方法,可以使用這個方法將當前客戶端的請求轉(zhuǎn)到其它頁面去。相應(yīng)的代碼格式為:response.sendRedirect("URL地址");與<jsp:forward>指令的最大區(qū)別就是:只能使用<jsp:forward>在本網(wǎng)站內(nèi)跳轉(zhuǎn),但我可以使用response.sendRedirect跳轉(zhuǎn)到任何一個地址的頁面JSP內(nèi)置對象example4_6.jsp<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODY><P>填寫姓名:<BR><FORMaction="form.jsp"method="post"name=form><INPUTTYPE="text"name="boy"><INPUTTYPE="submit"value="Enter"></FORM></BODY></HTML>JSP內(nèi)置對象form.jsp<%@pagecontentType="text/html;Charset=GB2312"%><HTML><BODY>

<%Stringstr=null;str=request.getParameter("boy");if(str.length()==0){response.sendRedirect("example4_6.jsp");}else{out.print("歡迎您來到本網(wǎng)頁!");out.print(str);}%></BODY></HTML>JSP內(nèi)置對象1.2.4狀態(tài)行1yy:主要是實驗性質(zhì)的2yy:表明請求成功3yy:表明在請求滿足之前應(yīng)采取進一步的行動4yy:當瀏覽器無法滿足請求時,返回該狀態(tài)碼5yy:表示服務(wù)器出現(xiàn)問題具體如表4.1所示。JSP內(nèi)置對象1.2.4狀態(tài)行example4_7.jsp<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODYbgcolor=cyan><Fontsize=2><P>點擊下面的超鏈接:<BR><AHREF=“welcome1.jsp”>welcome1.jsp歡迎你嗎?

<BR><AHREF="welcome2.jsp">welcome2.jsp歡迎你嗎?

<BR><AHREF="welcome3.jsp">welcome3.jsp歡迎你嗎?</FONT></BODY></HTML>JSP內(nèi)置對象welcome1.jsp<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODY><%response.setStatus(404);out.print("能看到本頁面嗎?");%></BODY></HTML>JSP內(nèi)置對象welcome2.jsp<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODY><%response.setStatus(200);out.println("這是welcome2,能看到welcome2.jsp頁面嗎?");%></BODY></HTML>welcome3.jsp<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODY><%response.setStatus(500);%></BODY></HTML>JSP內(nèi)置對象1.3session對象內(nèi)置對象session由Tomcat服務(wù)器負責創(chuàng)建,session是實現(xiàn)了HttpSession接口類的一個實例。它表示當前的用戶會話信息。在session中保存的信息,當前用戶連接的所有頁面中都是可以被訪問到??梢允褂肧ession對象存儲用戶登錄網(wǎng)站時候的信息。當用戶在頁面之間跳轉(zhuǎn)時,存儲在Session對象中的變量不會被清除。JSP內(nèi)置對象1.3.1session對象的ID

session對象被分配了一個String類型的ID,Tomcat服務(wù)器將ID發(fā)送到客戶端,存放在客戶的Cookie中。同一用戶在同一Web服務(wù)目錄中的各個頁面的session是相同的.不同用戶的session對象互不相同,具有不同的ID。JSP內(nèi)置對象對session的理解案例名稱:使用ID屬性程序名稱:4-22.jsp<%@pagecontentType="text/html;charset=GBK"%><HTML><BODY><% Strings=session.getId();%>你的sessionID:<%=s%></BODY></HTML>JSP內(nèi)置對象first.jsp<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODY><P><%Stringid=session.getId();out.println("您的session對象的ID是:<br>"+id);%><P>輸入你的姓名連接到second.jsp<FORMaction="tom/second.jsp"method=postname=form><INPUTtype="text"name="boy"><INPUTTYPE="submit"value="送出"name=submit></FORM></BODY></HTML>JSP內(nèi)置對象second.jsp<%@pagecontentType="text/html;Charset=GB2312"%><HTML><BODY><P>我是second.jsp頁面

<%Stringid=session.getId();out.println("您的session對象的ID是:<br>"+id);%><P>點擊超鏈接,連接到third.jsp的頁面。

<AHREF="/chaper4/jerry/third.jsp">歡迎去third.jsp頁面!</A></BODY></HTML>JSP內(nèi)置對象third.jsp<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODY><P>我是third.jsp頁面

<%Stringid=session.getId();out.println("您的session對象的ID是:<br>"+id);%><P>點擊超鏈接,連接到first.jsp的頁面。<AHREF="/chaper4/first.jsp">歡迎去first.jsp!</A></BODY></HTML>JSP內(nèi)置對象session對象的常用方法session對象表示目前用戶的會話狀態(tài),用來識別每個用戶,與之相關(guān)的常用方法如下。(1)ObjectgetAttribute(Stringname)

獲取與指定名字相關(guān)聯(lián)的session屬性值。(2)EnumerationgetAttributeNames(

)

取得session內(nèi)所有屬性的集合。(3)longgetCreationTime(

)獲取session的創(chuàng)建時間,最小單位為千分之一秒。JSP內(nèi)置對象(4)StringgetId(

)

獲取session標識。此方法返回惟一的標識,這些標識為每個session而產(chǎn)生。當只有一個單一的值與一個session聯(lián)合時,或當日志信息與先前的sessions有關(guān)時,它被當做鍵名用。(5)longgetLastAccessedTime(

)

獲取與當前session相關(guān)的客戶端最后一次訪問的時間,由1970-01-01算起,單位為毫秒。JSP內(nèi)置對象(6)intgetMaxInactiveInterval(intinterval)

獲取總時間,以秒為單位,表示session的有效時間。?1為永不過期。(7)voidinvalidate(

)銷毀session對象。(8)booleanisNew(

)

判斷一個session是否由服務(wù)器產(chǎn)生,但是客戶端并沒有使用。JSP內(nèi)置對象(9)voidsetAttribute(Stringname,Stringvalue)

設(shè)置指定名稱的session屬性值,會替換掉任何以前同一用戶的同名值。(10)voidsetMaxInactiveInterval(intinterval)

設(shè)置session的有效期。(11)voidremoveAttribute(Stringname)

移除指定名稱的session屬性。JSP內(nèi)置對象1.3.2session對象存儲數(shù)據(jù)

(1)publicvoidsetAttribute(Stringkey,Objectobj)session對象可以調(diào)用該方法將參數(shù)Object指定的對象obj添加到session對象中,并為添加的對象指定了一個索引關(guān)鍵字,如果添加的兩個對象的關(guān)鍵字相同,則先前添加的對象被清除。(2)publicObjectgetAttibute(Stringkey)獲取session對象含有的關(guān)鍵字是key的對象。由于任何對象都可以添加到session對象中,因此用該方法取回對象時,應(yīng)強制轉(zhuǎn)化為原來的類型。JSP內(nèi)置對象(3)publicEnumerationgetAttributeNames()session對象調(diào)用該方法產(chǎn)生一個枚舉對象,該枚舉對象使用nextElemets()遍歷session中的各個對象所對應(yīng)的關(guān)鍵字。(4)publicvoidremoveAttribute(Stringname)session對象調(diào)用該方法移掉關(guān)鍵字key對應(yīng)的對象。JSP內(nèi)置對象main.jsp<%@pagecontentType="text/html;Charset=GB2312"%><HTML><BODYbgcolor=yellow><FONTSize=2><P>歡迎來到本頁面,請輸入您的姓名

<FORMaction=""method=postname=form><INPUTtype="text"name="name"><INPUTTYPE="submit"value="送出"name=submit></FORM><%Stringname=request.getParameter("name");if(name==null){name="";}else{session.setAttribute("customerName",name);}%>JSP內(nèi)置對象<%if(name.length()>0){%><P>點擊超鏈接,連接到food.jsp的頁面,去采購食品。

<AHREF="food.jsp">歡迎去食品柜臺!</A><%}%><FONT></BODY></HTML>JSP內(nèi)置對象food.jsp<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODYbgcolor=cyan><FONTSize=3><P>點擊超鏈接,連接到main.jsp的頁面,去修改姓名。

<AHREF="main.jsp">歡迎去main.jsp!</A><P>這里是食品柜臺,請選擇您要購買的食品:

<FORMaction=""method=postname=form><inputtype="checkbox"name="choice"value="香腸">香腸

<inputtype="checkbox"name="choice"value="蘋果">蘋果

<inputtype="checkbox"name="choice"value="醬油">醬油

<inputtype="checkbox"name="choice"value="飲料">飲料

</BR><INPUTTYPE="submit"value="提交"name="submit"></FORM></FONT>

JSP內(nèi)置對象<%StringfoodName[]=request.getParameterValues("choice");if(foodName!=null){for(intk=0;k<foodName.length;k++){session.setAttribute(foodName[k],foodName[k]);}}%><P>點擊超鏈接,連接到count.jsp的頁面,去查看購物車中的商品。

<AHREF="count.jsp">歡迎去count.jsp!</A></BODY></HTML>JSP內(nèi)置對象count.jsp<%@pagecontentType="text/html;Charset=GB2312"%><%@pageimport="java.util.*"%><HTML><P>這里是結(jié)帳處,您的姓名以及選擇的商品:<%StringpersonName=(String)session.getAttribute("customerName");out.println("<br>您的姓名:"+personName);EnumerationenumGoods=session.getAttributeNames();out.println("<br>購物車中的商品:<br>");while(enumGoods.hasMoreElements()){Stringkey=(String)enumGoods.nextElement();Stringgoods=(String)session.getAttribute(key);if(!(goods.equals(personName)))out.println(goods+"<br>");}%>JSP內(nèi)置對象<P>

點擊超鏈接,連接到food.jsp的頁面,購買食品。

<AHREF="food.jsp">歡迎去food.jsp!</A><P>點擊超鏈接,連接到main.jsp的頁面,去修改姓名。

<AHREF="main.jsp">歡迎去main.jsp!</A></FONT></BODY></HTML>JSP內(nèi)置對象簡易session版購物車利用session保存用戶選購的商品信息,本購物車程序包含三個程序:(1)buy1.jsp:購物網(wǎng)頁一。(2)buy2.jsp:購物網(wǎng)頁二。(3)display.jsp:查看購物車程序。JSP內(nèi)置對象簡易session版購物車案例名稱:購物網(wǎng)頁一程序名稱:buy1.jsp案例名稱:購物網(wǎng)頁二程序名稱:buy2.jsp案例名稱:顯示購物車程序程序名稱:display.jspJSP內(nèi)置對象1.3.3session對象的生存周期

一個用戶在某個WEB服務(wù)目錄的session對象的生存期限依賴于客戶是否關(guān)閉瀏覽器。如果用戶關(guān)閉瀏覽器,那么用戶session會消失,如果長時間不關(guān)閉瀏覽器,用戶的session也可能消失。這是因為Tomcat服務(wù)器允許的最長的”發(fā)呆”狀態(tài)時間為30分鐘。JSP內(nèi)置對象

可以修改Tomcat服務(wù)器下的web.xml重新設(shè)置“發(fā)呆”時間。<session-config><session-timeout>30</session-timeout></session-config>JSP內(nèi)置對象example4_10.jsp<%@pagecontentType="text/html;Charset=GB2312"%><%@pageimport="java.util.*"%><HTML><BODYbgcolor=yellow><FONTSize=3><%session.setMaxInactiveInterval(20);booleanboo=session.isNew();out.println("<br>如果你第一次訪問當前web服務(wù)目錄,您的會話是新的");out.println("<br>如果你不是首次訪問當前web服務(wù)目錄,您的會話不是新的");out.println("<br>會話是新的嗎?:"+boo);out.println(“<br>歡迎來到本頁面,您的session允許的最長發(fā)呆時間為"+session.getMaxInactiveInterval()+"秒");out.println("<br>您的session的創(chuàng)建時間是"+newDate(session.getCreationTime()));<FONT></BODY></HTML>JSP內(nèi)置對象out.println("<br>您的session的Id是"+session.getId());LonglastTime=(Long)session.getAttribute("lastTime");if(lastTime==null){longn=session.getLastAccessedTime();session.setAttribute("lastTime",newLong(n));}else{longm=session.getLastAccessedTime();longn=((Long)session.getAttribute("lastTime")).longValue();out.println("<br>您的發(fā)呆時間大約是"+(m-n)+"毫秒,大約"+(m-n)/1000+"秒");session.setAttribute("lastTime",newLong(m));}%>JSP內(nèi)置對象1.3.4session對象與URL重寫

session對象能和客戶建立起一一對應(yīng)的關(guān)系依賴于客戶的瀏覽器是否支持Cookie。如果不支持,則客戶在不同網(wǎng)頁之間的session可能是不同的。如果瀏覽器不支持Cookie,可以通過URL重寫來實現(xiàn)session對象的唯一性。如:

Stringstr=response.encodeRedirectURL(“jerry.jsp”);JSP內(nèi)置對象first.jsp<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODY><P><%Stringid=session.getId();out.println("您的session對象的ID是:<br>"+id);Stringstr=response.encodeRedirectURL("tom/second.jsp");%><P>輸入你的姓名連接到second.jsp<FORMaction="<%=str%>"method=postname=form><INPUTtype="text"name="boy"><INPUTTYPE="submit"value="送出"name=submit></FORM></BODY></HTML>JSP內(nèi)置對象second.jsp<%@pagecontentType="text/html;Charset=GB2312"%><HTML><BODY><P>我是second.jsp頁面

<%Stringid=session.getId();out.println("您的session對象的ID是:<br>"+id);Stringstr=response.encodeRedirectURL("/chaper4/jerry/third.jsp");%><P>點擊超鏈接,連接到third.jsp的頁面。<AHREF="<%=str%>">歡迎去third.jsp頁面!</A></BODY></HTML>JSP內(nèi)置對象third.jsp<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODY><P>我是third.jsp頁面

<%Stringid=session.getId();out.println("您的session對象的ID是:<br>"+id);Stringstr=response.encodeRedirectURL("/chaper4/first.jsp");%><P>點擊超鏈接,連接到first.jsp的頁面。<AHREF="<%=str%>">歡迎去first.jsp!</A></BODY></HTML>JSP內(nèi)置對象1.3.5記數(shù)器

helloOne.jsp

<%@pagecontentType="text/html;Charset=GB2312"%><HTML><BODY><P>Welcome歡迎您訪問本站<%!intsumcount=0;%>

JSP內(nèi)置對象<%Stringstr=(String)session.getAttribute("count");if(str==null){sumcount++;StringpersonCount=String.valueOf(sumcount);session.setAttribute("count",personCount);}%><P>您是第<%=(String)session.getAttribute("count")%>

個訪問本網(wǎng)站的客戶。

<Ahref="helloTwo.jsp">歡迎去helloTwo.jsp參觀</A></BODY></HTML>JSP內(nèi)置對象helloTwo.jsp<%@pagecontentType="text/html;Charset=GB2312"%><HTML><BODY><P>Welcome歡迎您訪問本站

<%!intsumcount=0;%><%Stringstr=(String)session.getAttribute("count");if(str==null){sumcount++;StringpersonCount=String.valueOf(sumcount);session.setAttribute("count",personCount);}%><Ahref="helloOne.jsp">歡迎去helloOne.jsp參觀</A></BODY></HTML>JSP內(nèi)置對象文件:count.tag<%@tagimport="java.io.*"%><FONTSize=4><%!intnumber=0;File("count.txt");synchronizedvoidcountPeople()//計算訪問次數(shù)的同步方法{if(!()){number++;try{();out=new("count.txt");DataOutputStreamdataOut=newDataOutputStream(out);dataOut.writeInt(number);out.close();dataOut.close();}catch(IOExceptionee){}}JSP內(nèi)置對象else{try{in=new("count.txt");DataInputStreamdataIn=newDataInputStream(in);number=dataIn.readInt();number++;in.close();dataIn.close();out=new("count.txt");DataOutputStreamdataOut=newDataOutputStream(out);dataOut.writeInt(number);out.close();dataOut.close();}catch(IOExceptionee){}}}%>JSP內(nèi)置對象<%Stringstr=(String)session.getAttribute("count");if(str==null){countPeople();StringpersonCount=String.valueOf(number);session.setAttribute("count",personCount);}%><P><P>您是第<%=(String)session.getAttribute("count")%>個訪問本網(wǎng)站的客戶。</Font>JSP內(nèi)置對象1.4out對象

out對象是javax.servlet.jsp.JspWriter類的一個子類的對象,它的作用是把信息發(fā)送到客戶端的瀏覽器中。在out對象中,最常用的方法就是print()println()在使用print()或println()方法時,由于客戶端是瀏覽器,因此向客戶端輸出時,可以使用HTML中的一些標記。例如:out.println(”<h1>Hello,JSP</h1>“);JSP內(nèi)置對象example4_13.jsp<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="java.util.*"%><HTML><BODY><%inta=2200;longb=3456;booleanc=true;out.println(a);out.println(b);out.print("<br>");out.println(c);%><Left><p><Fontsize=2>以下是一個表格</Font><%out.print("<Fontface=隸書size=2>");out.println("<tableBorder=1>");out.println("<tr>");out.println("<thwidth=80>"+"姓名"+"</th>");out.println("<thwidth=60>"+"性別"+"</th>");out.println("<thwidth=200>"+"出生日期"+"</th>");JSP內(nèi)置對象out.println("</tr>");out.println("<tr>");out.println("<td>"+"張三"+"</td>");out.println("<td>"+"男"+"</td>");out.println("<td>"+"1988年5月"+"</td>");out.println("</tr>");out.println("<tr>");out.println("<td>"+"李四"+"</td>");out.println("<td>"+"男"+"</td>");out.println("<td>"+"1987年10月"+"</td>");out.println("</tr>");out.println("</Table>");out.print("</Font>");%></Center></BODY></HTML>JSP內(nèi)置對象1.4out對象

(1)voidclear(

)

清除輸出緩沖區(qū)的內(nèi)容,但是不輸出到客戶端。(2)voidclearBuffer(

)清除輸出緩沖區(qū)的內(nèi)容,并輸出到客戶端。(3)voidclose(

)關(guān)閉輸出流,清除所有內(nèi)容。在調(diào)用close(

)方法后,out對象輸出的流就不會發(fā)送到客戶端。JSP內(nèi)置對象(4)voidflush(

)輸出緩沖區(qū)里面的數(shù)據(jù),然后清空緩沖區(qū)。與clearBuffer(

)不同的是,flush(

)方法將在屏幕上輸出數(shù)據(jù)后再清空緩沖區(qū)。(5)intgetBufferSize(

)

獲取以KB為單位的目前緩沖區(qū)的大小。(6)intgetRemaining(

)

獲取以KB為單位的緩沖區(qū)中空閑空間的大小。(7)voidnewLine(

)輸出一個換行符。JSP內(nèi)置對象(8)voidprint(data)將指定類型的數(shù)據(jù)輸出到HTTP流中,不換行。print方法可用于多種類型的數(shù)據(jù),包括:boolean、char、char[

]、double、float、int、long、Object、String等。(9)voidprintln(data)與print相似,println也用于將指定類型的數(shù)據(jù)輸出到HTTP流中,與print不同的是它將在結(jié)尾多輸出一個換行符。(10)booleanisAutoFlush(

)確定是否自動刷新緩沖區(qū),結(jié)果取決于page指令的AutoFlush屬性。下面是有關(guān)out對象的一個簡單示例。JSP內(nèi)置對象使用out對象案例名稱:使用out對象程序名稱:4-09.jsp<%@pagecontentType="text/html;charset=GBK"%><% out.println("hello"); out.newLine(); out.write("hello");%><%="hello"%><%out.close();%>JSP內(nèi)置對象

我們已經(jīng)知道,不同的用戶session對象互不相同。但有時用戶之間可能需要共享一個對象,這時就可用application對象。站點所有的用戶公用一個application對象,當站點服務(wù)器開啟的時候,application就被創(chuàng)建,直到網(wǎng)站關(guān)閉。利用application這一特性,可以方便地創(chuàng)建聊天室和網(wǎng)站計數(shù)器等常用站點應(yīng)用程序。1.5application對象

JSP內(nèi)置對象1.5.1applicaton對象的常用方法application對象的常用方法(1)publicvoidsetAttribute(Stringkey,Objectobj)application對象可以調(diào)用該方法將參數(shù)Object指定的對象obj添加到application對象中,并為添加的對象指定了一個索引關(guān)鍵字,如果添加的兩個對象的關(guān)鍵字相同,則先前添加對象被清除。(2)publicvoidremoveAttribue(Stringkey)從當前application對象中刪除關(guān)鍵字是key的對象。JSP內(nèi)置對象(3)publicEnumerationgetAttributeNames()application對象調(diào)用該方法產(chǎn)生一個枚舉對象,該枚舉對象使用nextElemets()遍歷application中的各個對象所對應(yīng)的關(guān)鍵字。(4)publicObjectgetAttibue(Stringkey)

獲取application對象含有的關(guān)鍵字是key的對象。由于任何對象都可以添加到application對象中,因此用該方法取回對象時,應(yīng)強制轉(zhuǎn)化為原來的類型。JSP內(nèi)置對象1.5.2用applicaton對象制作留言板submit.jsp<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODY><FORMaction="messagePane.jsp"method="post"name="form"><P>輸入您的名字:

<INPUTtype="text"name="peopleName"><BR>輸入您的留言標題:

<INPUTtype="text"name="Title"><BR>輸入您的留言:

<BR><TEXTAREAname="messages"ROWs="10"COLS=36WRAP="physical"></TEXTAREA>

JSP內(nèi)置對象<BR><INPUTtype="submit"value="提交信息"name="submit"></FORM><FORMaction="showMessage.jsp"method="post"name="for

溫馨提示

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

評論

0/150

提交評論