久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

JSP內置對象講解教案

時間:2019-05-12 23:33:46下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《JSP內置對象講解教案》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《JSP內置對象講解教案》。

第一篇:JSP內置對象講解教案

第5章 JSP內置對象

在JSP中預先定義好了一些常用的對象,在Web應用中可以直接使用這些對象。內置對象的應用大大簡化了Web開發工作。

5.1 JSP內置對象概述

因為java是區分大小寫的,所以在JSP中對象名要注意字母的大小寫。

JSP內置對象有9個 ? request對象 ? response對象 ? out對象 ? session對象 ? application對象 ? exception對象 ? page對象

? pageContext對象 ? config對象

5.2 request對象

? request對象用于接收客戶端通過HTTP協議傳送給服務器端的數據。

? 而response對象主要用來向客戶發送信息,它包含了Web服務器對客戶的響應信息。

? request和response對象是JSP中很重要的兩個內置對象,是實現客戶端和服務器交互的基礎。

5.2.1 request對象的功能

? request對象用來接收客戶端提交的請求

例如:接收用戶提交的表單信息

在xxx.jsp文件中需要用request對象接收表單信息。request對象用的比較多的方法是getParameter()方法

5.2.2 getParameter方法

? request對象的getParameter()方法根據指定的參數,獲取客戶端提交的信息。? 其語法規則如下:

<% String name=request.getParameter(“txtName”)%>

其中,name是一個字符串變量。txtName是客戶端提交信息中的一個字段名。

5.2.3獲取客戶提交信息案例 【例5.1】 request對象應用。

? 提交頁面上有兩個文本框,在文本框中輸入姓名和電話號碼,單擊“提交”按鈕后,由服務器端應用程序接收提交的表單信息并顯示出來。

? 其中的infoInput.html為用戶的輸入頁面,提交的信息由服務器端的文件infoReceive.jsp接收并顯示。

infoInput.html頁面主要代碼:

姓名:


電話:


infoReceive.jsp代碼

<% String str1=request.getParameter(“RdName”);%> <% String str2=request.getParameter(“PhName”);%> 您輸入的信息為:
姓名: <%=str1%>

電話: <%=str2%>
5.2.4 request對象常用方法

? 在客戶訪問頁面時,向服務器的JSP引擎提交一個HTTP請求,該請求包含一個請求行、主機頭和上載信息。例如:

? POST /chapt5/infoReceive.jsp HTTP/1.1

//請求行 ? Host localhost

//頭,host是頭名字

? request對象也提供了一些其他方法,用來獲得客戶傳來信息的其他部分。? request對象常用方法:

1.getProtocol():獲取客戶端向服務器端傳送數據所使用的協議名稱和版本號 2.getServerName():獲得服務器的名字

3.getServerPort():獲得服務器所使用的端口號。4.getRemoteAddr():獲得客戶端的IP地址。

5.getRemoteHost():獲得客戶端主機的名字,若失敗,則返回客戶端的IP地址。6.getMethod():返回客戶端向服務器端傳送數據的方法,一般方法為get或post。

7.getCookies():返回客戶端的cookie對象,結果是一個cookie數組。如果客戶端沒有發送cookie,則返回空值。

8.getSession(boolean create):返回和當前客戶端請求相關聯的HttpSession對象,如果當前客戶端請求沒有和任何HttpSession對象關聯,那么當create變量為true,則創建一個HttpSession對象并返回;反之,返回null。9.getHeader(String name):獲得http協議定義的傳送文件頭信息。

10.getAttribute(String name):返回name指定的屬性值,若不存在指定的屬性,就返回null。

11.getAttributeNames():返回request對象所有屬性的名字,結果集是一個Enumeration(枚舉)類的實例。12.getHeaderNames():返回所有request header的名字,結果集是一個Enumeration(枚舉)類的實例。

13.getHeaders(String name):返回指定名字的request header的所有值,結果集是一個Enumeration(枚舉)類的實例。

14.getParameter(String name):以字符串的形式返回客戶端傳來的某一個請求參數的值,該參數名由name指定。當傳遞給此方法的參數名沒有實際參數與之對應時,返回null。通常是表單中的參數.15.getParameterNames():返回客戶端傳送給服務器端的所有的參數名,結果集是一個Enumeration(枚舉)類的實例。當傳遞給此方法的參數名沒有實際參數與之對應時,返回null。

16.getParameterValues(String name):以字符串數組的形式返回指定參數所有值。

17.getQueryString():返回查詢字符串,該字符串由客戶端以GET方法向服務器端傳送。18.getRequestURI():獲得發出請求字符串的客戶端地址

19.getServletPath():獲得客戶端所請求的腳本文件的文件路徑。

20.setAttribute(String name,Java.lang.Object o):設定名字為name的request參數值,該值由Object類型的o指定。

21.getContentLength():以字節為單位返回客戶端請求的大小。如果無法得到該請求的大小,則返回-1。22.getContentType():獲取客戶端請求的MIME類型。如果無法得到該請求的MIME類型,那么返回-1。23.getInputStream():以二進制的形式將客戶端的請求以一個ServletInputStream的形式返回。使用此方法可以獲得客戶端的multipart/form-data數據,可以實現文件上傳。

24.isSecure():如果客戶機是通過一個安全的訪問方式訪問的,就返回true;反之,返回false。25.getDateHeader():返回一個long類型的數據,表示客戶端發送到服務器的頭信息中的時間信息。26.getInitHeader():獲取客戶端發送到服務器端的頭信息中的某一個特定的信息,并轉換為int類型。27.getContextPath():返回環境路徑.對于JSP來說,一般是當前Web應用程序的根目錄。

28.isRequestedSessionIdValid():返回一個指示客戶端請求發送Session ID是否仍然有效的布爾值。

29.isRequestedSessionIdFromCookie():返回一個指示客戶端請求發送Session ID是否存在于Cookie中的布爾值。

30.isRequestedSessionIdFromURL():返回一個指示客戶端請求發送Session ID是否存在于URL中的布爾值。

5.2.5 request對象常用方法應用案例

【例5.2】 使用request對象的常用方法,獲取客戶端提交信息的不同部分。

本例中的用戶輸入頁面infoInput2.html只需要把例5.1的文件infoInput.html的form的action屬性值改為infoReceive2.jsp即可。infoReceive2.jsp主要代碼

<%

out.println(“姓名文本框提交信息:” + request.getParameter(“RdName”)+ “
”);out.println(“電話文本框提交信息:” + request.getParameter(“PhName”)+ “
”);out.println(“客戶端協議名和版本號:” + request.getProtocol()+ “
”);out.println(“客戶機名:” + request.getRemoteHost()+ “
”);out.println(“客戶機的IP地址:” + request.getRemoteAddr()+ “
”);out.println(“客戶提交信息的長度:” + request.getContentLength()+ “
”);

%> out.println(“---------
”);

out.println(“getContextPath:” +request.getContextPath()+ “
”);out.println(“requestURI=” + request.getRequestURI()+ “
”);out.println(“requestURL=” + request.getRequestURL()+ “
”);out.println(“servletPath=” + request.getServletPath()+ “
”);// getServletPath 不建議使用 因為當servlet映射成/*時 無法獲得

String uri = request.getRequestURI();String servletPath = uri.substring(request.getContextPath().length());out.println(“servletPath=” + servletPath + “
”);總結:

request.getRequestURI()與request.getRequestURL()與request.getServletPath()區別

a)getRequestURI()獲得的信息:/day6/servlet/RequestServlet b)getRequestURL()獲得的信息:http://localhost/day6/servlet/RequestServlet c)getServletPath()獲得的信息: servlet/RequestServlet

getServletPath 不建議使用

因為當servlet映射成/*時 無法獲得。

d)request.getContextPath()獲得的信息: /day6

那如何獲取serverpath String uri = request.getRequestURI();

// /day06aaa/servlet/RequestDemo1

String servletPath = uri.substring(request.getContextPath().length());

System.out.println(“servletPath=” + servletPath);5.3 response對象

? ? 把服務器端的數據以HTTP的格式發送到客戶端瀏覽器 它的功能和request對象的功能相反

? request對象用于得到用戶提交的信息 ? 而response對象是向用戶發送信息

? 兩者結合起來完成動態頁面的交互功能。

5.3.1 response對象的功能

? response對象提供的幾種輸出結果的主要方法:

? sendRedirect():頁面重定向方法。? setStatus():設置狀態行方法。

? setContentType():設置文本類型方法。

5.3.2 sendRedirect()方法

? 將客戶端瀏覽器轉向新的頁面,頁面中重定向語句后的代碼不再被執行。? 它可以根據用戶的不同要求轉向不同的頁面。? 例如:防盜鏈。(第3章 http協議中講解)

【例5-3】response對象的使用。

? 用戶在登錄界面輸入用戶名和密碼,提交后驗證登錄者輸入的用戶名和密碼是否正確,根據判斷結果轉向不同的頁面。

? 其中userLogin.html為用戶輸入界面

? userReceive.jsp為接收用戶輸入信息并判斷輸入是否正確頁面

? loginCorrect.html和loginError.html分別為登錄成功界面和登錄失敗界面。

userLogin.html頁面主要代碼:

姓 名:
密 碼:

userReceive.jsp頁面源代碼:

<% String Name = request.getParameter(“RdName”);String Passwd = request.getParameter(“RdPasswd”);if(Name.equals(“Mary”)&& Passwd.equals(“123456”))

response.sendRedirect(“loginCorrect.html”);else

response.sendRedirect(“loginError.html”);%>

? 需要注意的是,在實際的Web開發中,用戶的信息保存在數據庫中,判斷用戶登錄時所輸入的用戶名和密碼是否正確需要連接到數據庫,和數據庫中的數據進行匹配。此處為了演示sendRedirect方法的使用,簡單的和常量進行比較。

5.3.3 response的狀態行

1.狀態行的作用

當頁面出現錯誤時,服務器會自動響應,將相應的出錯信息返回客戶端。狀態行包含3位數字的狀態代碼,代表錯誤的性質和處理方法。共有5類狀態碼,如下:

1XX(1開頭的3位數):主要是實驗性質的。例如101表示服務器正在升級協議。

2XX:表示請求成功。如200表示請求成功。

3XX:表示在請求滿足之前應采取的進一步行動。如302請求重定向; 305表示請求必須通過代理來訪問。

4XX:瀏覽器不能滿足請求時,返回的狀態碼。如404表示請求的頁面不存在。

5XX:服務器執行出現錯誤時,返回的狀態碼。如500表示服務器內部發生錯誤,不能服務。

2.setStatus()方法

程序中可以使用response對象的setStatus()方法設置狀態碼。在一般情況下,不需要在程序中設置狀態碼。頁面出現問題時,服務器會自動響應,并發送相應的狀態碼提示用戶。

? 使用response.setStatus(int n)方法設置狀態行

? 例如response.setStatus(501)取得錯誤信息為501的出錯信息,返回該出錯頁面到客戶端。? 如果狀態代碼為出錯碼,頁面中 response.setStatus()后面的語句將不被執行。

[例5-4]狀態行的應用

本例包含4個文件 : StatueCode.html

responde對象狀態行應用案例

顯示不同的狀態行


href=“statusCode200.jsp”>200請求成功信息


404請求資源不可用信息


501不支持請求的部分功能


第二篇:JSP內置對象實驗報告

JSP程序設計實驗報告

(三)院系:計算機科學與工程學院

【實驗題目】

JSP內置對象

【實驗目的】

1、了解JSP中4個內置對象request、reponse、session、pagecontext的基本概念。

2、理解JSP內置對象的常用方法的功能。

3、掌握JSP內置對象的應用。

【實驗內容】

1、request對象:客戶端的請求信息被封裝在request對象中,通過它才能了解到客戶的需求,然后做出響應。它是HttpServletRequest類的實例。

2、response對象:response對象包含了響應客戶請求的有關信息,但在JSP中很少直接用到它。它是HttpServletResponse類的實例。

3、session對象:session對象指的是客戶端與服務器的一次會話,從客戶連到服務器的一個WebApplication開始,直到客戶端與服務器斷開連接為止。

4、pageContext對象:pageContext對象提供了對JSP頁面內所有的對象及名字空間的訪問,也就是說他可以訪問到本頁所在的SESSION,也可以取本頁面所在的application的某一屬性值,他相當于頁面中所有功能的集大成者。

5、練習(自己完成)

【實驗代碼】

實驗1 request對象使用

<%@ page language=“java” import=“java.util.*” pageEncoding=“GBK”%> <%

%>

”>

My JSP 'index.jsp' starting page String path = request.getContextPath();String basePath = request.getScheme()+ “://”

+ request.getServerName()+ “:” + request.getServerPort()+ path + “/”;

請求方式:<%=request.getMethod()%>
請求的資源:<%=request.getRequestURI()%>

請求用的協議:<%=request.getProtocol()%>
請求的文件名:<%=request.getServletPath()%>
請求的服務器的IP:<%=request.getServerName()%>
請求服務器的端口:<%=request.getServerPort()%>
客戶端IP地址:<%=request.getRemoteAddr()%>
客戶端主機名:<%=request.getRemoteHost()%>

表單提交來的值:<%=request.getParameter(”qwe“)%>
<%

%> String str = ”“;if(request.getParameter(”qwe“)!= null){ Enumeration enumt = request.getParameterNames();while(enumt.hasMoreElements()){ str = enumt.nextElement().toString();out.println(str + ”:“ + request.getParameter(str)+ ”
");} }

第三篇:感恩教案jsp

洪常小學一年級語文上冊第一單元“基于標準的教學”教學設計

第三課 童心 “基于標準的教學”教學設計

(總第 20 學時)

課型:新授課

案序:第三單元

設計者:萬金輝

學習目標:

1.讓學生了解感恩,即讓學生懂得為什么要感恩。

2.讓學生懂得怎樣去感恩,通過活動讓學生真真學會如何做人。3.引導學生暢談理想,展開想象對自己的未來進行美好憧憬。

學習重點:

讓學生了解感恩,即讓學生懂得為什么要感恩,在有理想的目標中懷著感恩心去實現,自己理想.學習難點:

讓學生懂得怎樣去感恩。自己腳踏實地的努力去實現。

評價方案:

興趣激勵:讓學生明確學習的重要價 值,優化導入設計,教師通過精心設 汁教學過程,適當補充與學生生活相關聯的教學材料,激發學生的學習。

氛圍激勵;正確運用肯定和獎勵,采 取適當的競爭方法,適度的競爭,營造民主、平等、和諧、積極向上的課堂氛圍。充分、恰當地運用教材、錄音、錄像等多媒體,讓學生全感官參與學習。

教學過程活動化:組織多種形式的課堂教學討論、交流、等活動形式,完成教學目標,在教學中注重學生自學、指導學生學會自由學習、指導學生學會自我評價。

課前準備:

搜集與主題相關的歌曲,如《感恩的心》 洪常小學一年級語文上冊第一單元“基于標準的教學”教學設計搜集相關的學生對感恩的認識,和對自己理想的憧憬,了解學生。

教學預設:

我們每一個人都獲得過別人的幫助和支持,應該時刻感謝這些幫助你的人,感謝上天的眷顧。一個人的成長,要感謝父母的恩惠,感謝朋友的恩惠,感謝師長的恩惠,感謝社會的恩惠。

一、討論:自己怎樣認識感恩的?

學生1:所謂“感恩”,就是要記住別人對自己的恩惠,學會報答那些給自己幫助的人。

學生2:我認為我們在生活中就是要多幫助父母,多體諒老師,那就是感恩。

學生3:感恩是一種品德,是一種生活態度。我們只有學會了感恩,生活才會快樂,生活中才會有真摯的情感。

學生4:生活中我們要感恩父母,感恩老師,感恩一切幫助過我的人。教師總結:

剛才幾位同學都說了自己對“感恩”的理解,非常好。老師想,在生活中,我們首先要感恩的是父母,因為他們生養了我們;其次,我們要感恩的是老師,因為他們教育了我們;另外,我們還要感恩朋友和對手,因為他們促進了我們的成長;甚至我們還要感恩自然,因為自然給了我們陽光雨露,藍天碧樹,四季變換。可以這樣說,面對生活,我們就要懷著一顆感恩之心。

二、討論:

1.為什么要感恩父母?

2.為什么要感恩老師?為什么要感恩自然和身邊的人? 學生先自己考慮,然后再進行小組交流。

三、繼續討論: 1.怎樣感恩父母? 洪常小學一年級語文上冊第一單元“基于標準的教學”教學設計2.怎樣感恩老師?

3.怎樣感恩自然和身邊其他的人?

學生針對以上三個問題進行討論,而后教師總結。1.分組討論發言 2.教師總結

四、下面進行現場調查:

問題:

1、你母親的生日?

2、你給父親買過生日禮物嗎?

3、你母親最喜歡的是哪套衣服?

4、你父母的結婚紀念日?

5、你爸爸今天40幾歲?屬什么的?

6、你爸爸喜歡喝白酒嗎?那他一般喝什么牌子的?

7、你父親喜歡吃的菜是? ???

總結:通過剛剛的調查我們發現,并不是每個同學都十分了解自己的父母,可是反過來如果被問的是父母,不用調查也會知道結果,父母會對我們的一切記憶的都很深刻!感恩方法大奉獻:(1)為勞累的父母、長輩倒一杯茶,揉揉肩,洗洗腳,說說笑話。

(2)每天好好學習,學會尊重、關心老師,給老師一個好心情。(3)體諒、理解父母、老師的苦楚,不頂嘴、爭吵,多為他們著想。(4)每天分擔些力所能及的事,學會說 “謝謝”、“您辛苦了!”。(5)尊重父母、老師的勞動成果,天天反思過失,學會說“對不起”(6)學會關愛身邊的人,存好心,做好人,及時給他人送上溫暖。(7)多做善事、好事,盡自己最大的力量報效國家、社會、人民。(8)列一張感恩表,記下感恩的事情,感恩的人,時時圖求報答。洪常小學一年級語文上冊第一單元“基于標準的教學”教學設計

一起做一個感恩的人吧!感恩父母,感恩老師,感恩社會??這是我們共同的宣誓,從我做起,從現在做起,總之,希望同學們:1.孝敬父母,學會體貼;2.尊敬老師,努力學習;3.尊重他人,團結友愛。

孩子們,我們帶著感恩的心,懷揣自己的理想讓我們一起飛翔,理想是燈塔,指引人生前進的方向,照亮人生前進的路程。沒有理想,就沒有堅定的方向,沒有堅定的方向,就沒有生活。福爾摩斯也說:世界上最重要的事,不在于我們在何處,而在于我們朝什么方向走。我們頭上的一顆指路明星就是——理想。搜集資料:

1.這些有關理想的名人名言是否給同學們一點啟示,同學們,我們作為風華正茂的青少年,更應該及早立下自己的志向今天的習作課,我們就一起來暢談自己的理想。(板書:我的理想)

2、課前同學們不但搜集了關于理想的名言,還搜集了一些故事,下面請同學為大家講述一個周恩來“為中華崛起而讀書”的故事。

總結:理想是美好的,但現在的我們是六年級的小學生,要實現自己遠大的理想,那我們應該怎么做呢?

(1)、讓學生小組內自由討論這個問題,并把討論的結果要點清楚地寫下來。

(2)、各小組代表在班上匯報本組的討論結果。(教師引導學生適當用上“只有??才??,雖然??但是??”等關聯詞。)

引路:孩子們,我們一起看一看我們的理想樹,你的理想是什么呢?(找學生那自己的理想名片貼在理想樹上)

同學們,你有什么樣的理想呢?在實現自己理想的旅途中做為五年級的學生你準備怎么做?

學生1:努力學習,按時完成作業。學生2:腳踏實地,做自己應該做的事。

學生3:做事不要急于求成,不要放棄,相信自己會實現。學生4:合理認識自己,有條理安排自己時間去學習。

(引導學生從理想回到現實,從眼前的、力所能及的事做起,以實現人生理想。)總結與鼓勵: 洪常小學一年級語文上冊第一單元“基于標準的教學”教學設計

理想是還沒有實現的東西,是對未來的美好憧憬和希望,這要求我們好好把握今天,努力學習,打下堅實的知識基礎,才能擁有美好的明天,理想的實現前提是把握人生。孩子們,我們帶著感恩,一起祝福我們實現理想吧!音樂:《感恩的心》,感恩的心,感謝有你,伴我一生,讓我有勇氣作我自己,感恩的心,感謝命運,花開花落,我依然會珍惜??

伴隨著這動人的歌曲,我宣布“談感恩,暢理想”到此結束。板書設計:

童 心

學會感恩:父母 老師 朋友 社會 ?? 我的理想:醫生 宇航員 科學家 ??課后反思:

第四篇:jsp教案6

湖南城市學院教師備課紙

第 6 次課

JSP內置對象(Exception、application、page、PageContext、config)及其應用

目的要求

掌握Exception、application、page、PageContext、config對象的屬性、方法及應用

教學重點

JSP內置對象的含義、屬性、方法及使用 教學難點 各對象的綜合運用 教學課時 4(含2課時上機)

教學方法 講解、示例與啟發式教學相結合 教學內容和步驟

JSP內置對象是不需要聲明,直接可以在JSP中使用的對象,JSP有以下幾種內置對象: request, reponse, out, session, application, config, pagecontext, page, exception.6.1 aplication對象 6.1.1 什么是application application是執行javax.Servlet.ServletContext界面的類,主要用于保存用戶信息,代碼片段的運行環境; 它是一個共享的內置對象,即一個容器中的多個用戶共享一個application對象,故其保存的信息被所有用戶所共享。服務器啟動后就產生了這個application對象,當客戶再所訪問的網站的各個頁面之間瀏覽時,這個application對象都是同一個,直到服務器關閉。但是與session不同的是,所有客戶的application對象都是同一個,即所有客戶共享這個內置的application對象。6.1.2 Application對象常用方法

(1)public void setAttribute(String key,Object obj): 將參數Object指定的對象obj添加到application對象中,并為添加的對象指定一個索引關鍵字。

(2)public Object getAttribute(String key): 獲取application對象中含有關 鍵字的對象。(3)public Enumeration getAttributeNames():獲取application對象中含存

儲的對象的名字。

(4)public void removeAttribute(String name)(5)public String getMajorVersion()取得服務器支持的主版本號。(6)public String getMinorVersion()取得服務器支持的次版本號。(7)public String getServerInfo()(8)public String getRealPath()例1:application.jsp application變量的使用

application變量的使用

<% Object obj = null;String strNum =(String)application.getAttribute(“Num”);int Num = 0;//檢查是否Num變量是否可取得 if(strNum!= null)Num = Integer.parseInt(strNum)+ 1;//將取得的值增加1 application.setAttribute(“Num”, String.valueOf(Num));//起始Num變量值 %> application對象中的Num變量值為 <%= Num %>

第五篇:jsp教案8

湖南城市學院教師備課紙

第 8 次課

題 JAVA服務器小程序(ServLet)之Servlet鏈、編程應用

目的要求 掌握Servlet鏈的含義及編程應用 教學重點 ServLet鏈的構建與Shtml的使用 教學難點 ServLet鏈的構建 教學課時 4(含2課時上機)

教學方法 講解、示例與啟發式教學相結合 教學內容和步驟 8.1 Servlet鏈

8.1.1 什么是servlet鏈

Servlet鏈,它是JvavServer體系結構的高級特征之一, 與UNIX和DOS命令中的管道類似,你也可以將多個servlet以特定順序鏈接起來。在servlet鏈中,一個servlet的輸出被當作下一個servlet的輸入,而鏈中最后一個servlet的輸出被返回到瀏覽器。8.1.2表過濾器(Table Filter)我們以表過濾器看看如何編寫一個可以被用于鏈接的servlet,這個表過濾器servlet將分析另一個servlet的輸出,查找含有特殊表格式指令的HTML注釋,這些指令包括表有多少列、是否顯示表頭等等。在該表格式指令之后的所有行將會被格式化成一個HTML表格。這樣,鏈中的前一個servlet只要簡單地將數據用逗號分割,數據就可以一行一行地直接輸出了,而無須將這些數據格式化成HTML表格。同樣,當你決定修改這個表格的格式時,你就不必修改產生數據的servlet,而直接修改這個表過濾器servlet就可以了。

這個表過濾器servlet實現了HTTP服務的方法。首先,它必須重復(echo)上一個servlet中設置的頭信息。這些信息包括內容類型、調用的URL、遠程主機等等。TableFilter.java顯示了設置這些頭信息的必要代碼。

例1:TableFilter.java

package javaservlets.samples;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.BufferedReader;

import java.io.InputStreamReader;

public class TableFilter extends HttpServlet

{

/**

*

Performs an HTTP service request

* @param req The request from the client

* @param resp The response from the servlet

*/

public void service(HttpServletRequest req,HttpServletResponse resp)

throws ServletException, java.io.IOException

{

// Get all headers set by the previous servlet and echo them

java.util.Enumeration e = req.getHeaderNames();

while(e.hasMoreElements()){

String header =(String)e.nextElement();

String value = req.getHeader(header);

resp.setHeader(header, value);

} // 如下述代碼所示,接下來的步驟是取得一個可以從前一個servlet的輸出流中講讀取數據的輸入流,如果該輸入流的內容類型是某種我們可以分析的類型(如HTML),我們就繼續下一步驟;否則,我們就從輸入流中讀出所有字節并毫不修改地把它們寫回瀏覽器。

// Get the input and output streams

ServletInputStream in = req.getInputStream();

ServletOutputStream out = resp.getOutputStream();

// Only process if this is a recognized MIME type

String type = req.getContentType();

if(type.equals(“text/html”)||

type.equals(“text/table”)||

type.equals(“application/x-www.tmdps.cnmand, process

// the line

if(inTable){

// Search for the end of the table

if(s.startsWith(””);

// Output the table

out.println(“Symbol,Element”);

out.println(“Ac,Actinium”);

out.println(“Ag,Silver”);

out.println(“Al,Aluminum”);

//Etc...out.println(“Y,Yttrium”);

out.println(“Yb,Ytterbium”);

out.println(“Zn,Zinc”);

out.println(“Zr,Zirconium”);

out.println(“”);

// Wrap up

out.println(“”);

out.flush();

out.close();

}

在你瀏覽器的URL中輸出“/Elements”調用我們在Jrun中配置的servlet映射。在刷新時,瀏覽器向Web服務器發出URL請求,Web服務器找到與這個URL信息對應的servlet映射,然后調用Elemetns Servlet。Elements Servlet處理GET請求并返回未格式化的元素周期表數據給Web服務器。之后,Web服務器發現存在servlet鏈接,于是將Elements Servlet的輸出重定向為servlet鏈接中下一個servlet,也就是表過濾器的輸入。表過濾器重新設置所有HTTP首部,以適應表過濾器的需要,然后讀入所有元素周期表數據,表過濾器使用指定的表格格式信息來分析和處理這些數據,最后生成一個格式化的元素周期表。

⑶ Mime類型

觸發servlet鏈接的另外一種方法是將一個servlet與特定Mime類型聯系起來。當這種Mime類型的應答產生時,輸出就會被發送給與之相聯系的servlet。由于MIME類型是在servlet向輸出流中寫入時才確定的,所以用這種方法你可以輕易地將servlet的輸出重定向到其他servlet。

① Java Web Server

如前所述,在所有的工作之前,你必須確認servlet鏈接功能已經啟用(見圖4.4)。截止到本書發稿,還沒有可以管理MIME類型和servlet映射的圖形用戶接口(GUI),所以你不得不手工編輯“mimeservlets.properties”文件。這個文件位于目錄“//properties/server/javawebserver/webpageservice”。下述代碼給出了基本的內容。值得注意的是,MIME類型所映射的servlet名字實際上是該servlet的別名。

# This file maps mime-types to the servlets which process them

# This is used by the filter manager to set up chains of servlets

# where the ouput of one servlet gets piped to the input of

# another servlet based on the mime-type that the servlet specifies

# with setContentType(“mime-type”)

#

# The default servlet for all mime-types is file.Do not set this

# explicitly.#

# Entries in this file should be of the form

# mime-type/servletname

# ie.# foo/bar=fooServlet

# where fooServlet is defined in servlets.properties

java-internal/parsed-html=ssi

java-internal/template-content=template

② Jrun

在JRun中,你可以通過系統管理應用程序設置MIME類型映射。如圖4.10所示,你可以把一個servlet和特定的MIME類型聯系起來。

MIME類型鏈接的例子:Indy 500

為了說明如何通過MIME類型來觸發servlet鏈接,讓我們編寫一個列出Indianapolis 500自1911年起的所有優勝者。就像Elements Servlet一樣,我們直接將輸入用逗號分隔的各行數據,并用表過濾器將其格式化成HTML表格形式輸出。惟一的不同在于我們設置了一個不同的MIME類型,通過這個MIME類型,Web服務器將Indy 500 Servlet的輸出重定向為表過濾器servlet的輸入(見例3)。

例3 Indy500.java

package javaservlets.samples;

import javax.servlet.*;

import javax.servlet.http.*;

/**

This is a simple servlet that will return a list of

* past Indianapolis 500 winners

*/

public class Indy500 extends HttpServlet

{

/**

*

Performs the HTTP GET operation

* @param req The request from the client

* @param resp The response from the servlet

*/

public void doGet(HttpServletRequest req,HttpServletResponse resp)

throws ServletException, java.io.IOException{

// Create a PrintWriter to write the response

java.io.PrintWriter out =

new java.io.PrintWriter(resp.getOutputStream());

// Set the content type of the response

resp.setContentType(“text/table”);

// Print the HTML header

out.println(“”);

out.println(“”);

out.println(“Java Servlets Sample” + “Planets In Our Solar System”);out.println(“”);out.println(“

”);out.println(“Planets In Our Solar System

”);out.println(“
”);// Output special table formatting instructions for // the TableFilter servlet out.println(“”);out.println(“Planet,Avg.Distance from Sun,” + “Time to orbit,Time to spin,Moons”);out.println(“Mercury,58 million km,88 days,58.6 days,0”);out.println(“Venus,108 million km,225 days,243 days,0”);out.println(“Earth,150 million km,365.25 days,24 hours,1”);out.println(“Mars,228 million km,687 days,24.62 hours,2”);out.println(“Jupiter,778 million km,11.9 years,9.83 hours,16”);out.println(“Saturn,1427 million km,29.5 years,10.65 hours,19”);out.println(“Uranus,2870 million km,84 years,17.23 hours,15”);out.println(“Neptune,4497 million km,164.8 years,16 hours,8”);out.println(“Pluto,5913 million km,248 years,6.375 days,1”);out.println(“”);// Wrap up out.println(“”);out.flush();out.close();

} /** *

Initialize the servlet.This is called once when the * servlet is loaded.It is guaranteed to complete before any * requests are made to the servlet * * @param cfg Servlet configuration information */

public void init(ServletConfig cfg)

throws ServletException{

super.init(cfg);

}

/**

*

Destroy the servlet.This is called once when the servlet

* is unloaded.*/

public void destroy()

super.destroy();

}

}

和前面的servlet一樣,Solar System Servlet將直接輸出無格式的數據而將格式化的工作交由表過濾器servlet來完成。由于Java Web Server不支持用HTTP請求觸發servlet鏈接,我們將使用JRun。圖4.14顯示了Solar System Servlet和表過濾器servelt鏈接起來以后的輸出結果。請注意調用servlet時使用的URL,在這種情況下,URL中包含了一個鏈接在一起的servlet名字,它們之間用逗號來間隔。8.2 Java Servlet 編程及應用 8.2.1服務器端包含

服務器端包含(Server-Side Includes)是Web 頁面設計中的一種常用技術,在一個輸出很多網頁的系統中,經常會有一些網頁的組成部分在多個網頁中同時出現。Server-Side Includes 是Java Server 體系結構的一個高級特征,它可以在HTML 文檔中嵌入servlet,這樣就可以利用一個或多個servlet 來組成最終的HTML 文檔,這種特殊的包含了Servlet 輸出和HTML 標記的文件用擴展名.shtml 表示。

Servlet 標記的語法:

<servlet name=Servlet_name code=Servlet.class codebase=類路徑

名稱 1 = 參數值 1

名稱 2 = 參數值 2

........名稱 n = 參數值 n >

<param name =名稱 1 value = 參數值 1 param name =名稱 2 value = 參數值 2........param name =名稱 n value = 參數值 n > </servlet>

編程思路及技巧:下面是一個完整的簡單的服務器包含(SSI)的實例,整個shtml 頁面由2個Servlet 組成,第1個Servlet是Header.java,代表頁頭,主要功能是顯示標題信息;第2個Servlet 是Footer.java,代表頁腳,主要功能是顯示頁腳的版權信息;Together.shtml 是將2個Servlet 組合在一起顯示的服務器包含,它應當從文檔根目錄(如root)中加載。

例5: Header.java

import javax.servlet.*;import java.io.*;public class Header extends GenericServlet { public void service(ServletRequest req,ServletResponse resp)throws ServletException, IOException

{ res.setContentType(“text/html;charset=gb2312”);

PrintWriter out =res.getWriter();

// Get the title of the page.Set to empty string if

// no title parameter was given

String titles[] = req.getParameterValues(“title”);

String title = “";

if(titles!= null){

if(titles.length > 0){

title = titles[0];

}

}

Footer.java import javax.servlet.*;import java.io.*;public class Footer extends GenericServlet{ public void service(ServletRequest req,ServletResponse resp)throws ServletException, IOException

{ res.setContentType(”text/html;charset=gb2312“);

PrintWriter out =res.getWriter();

// Format the standard header

out.println(”<hr>“=;

out.println(”<p align='center'><i> 版權所有,信息公司</i></p>“=;

// Wrap up

out.flush();

out.close();

}

/** * <p>Returns information about this servlet */ public String getServletInfo(){

return ”Footer “;

} public void init(ServletConfig cfg)throws ServletException

{

super.init(cfg);} public void destroy(){

super.destroy();

} } 8.2.2使用Java Servlet API 進行會話管理

javax.servlet.http.HttpSession 接口封裝了HTTP 會話的細節,該會話與一段時間內特定的Web 客戶對Web 服務器的多個請求相關。管理會話數據主要涉及到3個方面:會話交換、會話重定位和會話持久性,只有實現了java.io.Serializable 接口的數據對象才能夠被交換、重定位和保持。這個接口主要是讓對象具有序列化的能力,它可以將對象的狀態信息寫入任意的輸出流中如:文件、網絡連接等。

編程思路:下面是實現一個簡單在商場購物的例子,當用戶選購商品(糖果、收音機和練習簿)放入購物袋中,保存選購的商品信息。編程技巧說明:

在Servlet 中進行會話管理時,首先要獲得會話對象。HttpServletRequest.getSession()對象返回與請求相關的當前HttpSession 對象,并且當該對象不存在時就新創建一個對象;HttpServletRequest.getSession(true)實現相同的功能。如果參數是false,當不存在會話對象時,將返回一個null 值。

8.3 小結

在本講中,我們討論了servlet鏈及編程應用,這是JavaServer體系結構的高級特征之一。servlet鏈接提供了將一個servlet的輸出重定向為另一個servlet的輸入的能力。這樣,你就可以劃分工作,從而使用一系列servlet來實現它。另外,你還可以將servlet組織在一起以提供新的功能。

①:用ServLet編程完成向瀏覽器輸出一個九九乘法表的表格 ②:在TOMCAT環境下配置shtml頁面的運行環境并完成教案上的例5。教學總結:

上機實驗八:ServLet鏈與Shtml的使用(2課時)

一、實驗目的及要求

1.掌握ServLet鏈在各種WEB服務器中的配置

2.掌握觸發ServLet鏈的各種方法及如何編寫ServLet鏈 3.掌握shtml的使用

二、實驗環境

Myeclipse、Tomcat、JDK

三、實驗內容

1.上機完成教案上所有的示例

2.編寫shtml頁面嵌入如下二個servlet并分析運行結果 Header.java

import javax.servlet.*;import java.io.*;public class Header extends GenericServlet { public void service(ServletRequest req,ServletResponse resp)throws ServletException, IOException

{ res.setContentType(”text/html;charset=gb2312“);

PrintWriter out =res.getWriter();

// Get the title of the page.Set to empty string if

// no title parameter was given

String titles[] = req.getParameterValues(”title“);

String title = ”“;

if(titles!= null){

if(titles.length > 0){

title = titles[0];

}

}

Footer.java import javax.servlet.*;import java.io.*;public class Footer extends GenericServlet{ public void service(ServletRequest req,ServletResponse resp)throws ServletException, IOException

{ res.setContentType(”text/html;charset=gb2312“);

PrintWriter out =res.getWriter();

// Format the standard header

out.println(”<hr>“=;

out.println(”<p align='center'><i> 版權所有,信息公司</i></p>“=;

// Wrap up

out.flush();

out.close();

}

/** * <p>Returns information about this servlet */ public String getServletInfo(){

return ”Footer ";

} public void init(ServletConfig cfg)throws ServletException

{

super.init(cfg);} public void destroy(){

super.destroy();

} } 3.在Myeclipse環境下完成教材P143頁中習題6-1與6-2

四、實驗步驟

五、實驗思考

1.怎樣利用Servlet實現頁面重定向?

2.比較在TOMCAT與JRUN下配置Servlet鏈的異同

下載JSP內置對象講解教案word格式文檔
下載JSP內置對象講解教案.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    jsp教案7(推薦5篇)

    湖南城市學院教師備課紙第 7 次課題 JAVA服務器小程序(ServLet)之定義、方法及編程 目的要求 掌握ServLet的定義、方法及編程 教學重點ServLet的含義、步曙、方法與編程 教學......

    jsp教案第一節課

    初識jsp 一、教學分析: (一)單元課程分析 1、分析實踐操作課程在日后就業的地位與作用。 2、分析jsp在網頁技術中的地位3、分析jsp在筆試時所占百分比(二)學生分析(學習需要分析)1......

    講解教案

    一個中國孩子的呼聲 教學目標 1.認識7個生字,會寫14個生字,正確讀寫:“執行,維護,給予,素質,凱旋,碩士,貢獻,呼吁”等詞語。 2.聯系上下文理解含義深刻的句子。 3.引導學生從小樹立熱......

    講解教案

    口語交際:講解 教學目標: 1、了解講解的技巧,學會講演。 2、講解練習。 3、培養學生的講解能力。 教學過程: 一、 導入新課 這節口語交際課的內容是講解。講解又叫解說,是針對某......

    陣列對象教案

    課題:陣列對象 教學目的: 1、 知識目標:通過本課學習讓同學們學會陣列命令,并能分析圖形應用陣列命令 2、 技能目標:熟練掌握陣列命令并應用陣列命令快速繪圖 3、 情感目標:通過......

    說明文之把握說明對象及特征講解

    說明文閱讀訓練 (一 ————說明對象及特征、說明內容 學習目標: 整體感知說明內容,準確判斷并概括說明對象及特征。 一、知識導航: 說明對象:就是說明了什么。 說明特征:......

    古詩講解教案

    古詩講解教案——《蜂》 準備上課(展示課件第1頁) 1、引言(展示課件第2頁) 小蜜蜂為釀蜜而勞苦一生,積累甚多而享受甚少。古往今來,不管是作家,還是詩人都對蜜蜂情有獨鐘。今天就讓......

    句型講解教案

    2016.10.14 教學內容:句型What’s your mum like ? She has +五官 教學目標:熟練運用該句型 教學重點:句型的靈活運用,包括變換人稱,五官的特征用英語描述 教學過程:STEP 1 greet......

主站蜘蛛池模板: 亚洲人成色44444在线观看| 美女脱了内裤张开腿让男人桶网站| 亚洲欧美日韩综合久久久久久| 国产a级毛片久久久精品毛片| 天天躁日日摸久久久精品| 久久久久青草线蕉亚洲麻豆| 一本久久久综合狠狠躁| 中文字幕人妻在线中字| 欧美一区二区三区成人片在线| 香蕉久久久久久久av网站| 日本人妻人人人澡人人爽| 国产 精品 自在 线免费| 中文字幕亚洲码在线观看| 亚洲成av人不卡无码影片| 解开人妻的裙子猛烈进入| 风流老熟女一区二区三区| 国产精品成人无码久久久| 日韩高清亚洲日韩精品一区| 久久午夜羞羞影院免费观看| 人妻与老人中文字幕| 国产人妻人伦精品| 亚洲精品综合五月久久小说| 麻豆国产在线精品国偷产拍| 国产成人麻豆亚洲综合无码精品| 狼人香蕉香蕉在线28 - 百度| 久久综合老色鬼网站| 一本大道无码人妻精品专区| 曰韩人妻无码一区二区三区综合部| 欧美亚洲另类丝袜综合| 大香j蕉75久久精品免费8| 日本熟妇人妻中出| 狂野av人人澡人人添| 4hu四虎永久在线观看| 国产波霸爆乳一区二区| 伊人久久综合无码成人网| 亚洲精品无码鲁网午夜| 给我免费的视频在线观看| 婷婷四虎东京热无码群交双飞视频| 亚洲伊人色欲综合网无码中文| 成年美女黄的视频网站| 免费国产污网站在线观看|