




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 -. - 考試資料. z -. - 考試資料J2EE應用程序體系架構實驗指導書目 錄 TOC o 1-3 h z u HYPERLINK l _Toc333354939實驗一簡單的Servlet與JSP PAGEREF _Toc333354939 h 1HYPERLINK l _Toc333354940實驗二請求對象 PAGEREF _Toc333354940 h 3HYPERLINK l _Toc333354941實驗三響應對象 PAGEREF _Toc333354941 h 7HYPERLINK l _Toc333354942實驗四 Servlet容器模型 PAGEREF _Toc333
2、354942 h 9HYPERLINK l _Toc333354943實驗五會話管理 PAGEREF _Toc333354943 h 13HYPERLINK l _Toc333354944實驗六 JSP根本語法與頁面指令 PAGEREF _Toc333354944 h 16HYPERLINK l _Toc333354945實驗七 JSP隱含對象與作用域 PAGEREF _Toc333354945 h 20HYPERLINK l _Toc333354946實驗八 Web組件重用與JavaBeans PAGEREF _Toc333354946 h 24HYPERLINK l _Toc3333549
3、47實驗九 JDBC數(shù)據(jù)庫 PAGEREF _Toc333354947 h 27HYPERLINK l _Toc333354948實驗十 Servlet事件處理 PAGEREF _Toc333354948 h 35HYPERLINK l _Toc333354949實驗十一 Servlet過濾器的使用 PAGEREF _Toc333354949 h 39說明:本實驗指導書根據(jù)J2EE應用程序體系架構課程教學大綱編寫,共包括11個實驗,其中必做實驗8個,選作實驗3個,每個實驗2學時,學生每周完成一個實驗。實驗環(huán)境:計算機系統(tǒng)應該安裝JDK 1.5以上版本,開發(fā)工具使用MyEclipse8.5版,效
4、勞器使用Tomcat 版,數(shù)據(jù)庫使用MySQL 5.0版。 該實驗指導書的配套教材是Java Web編程技術澤剛 主編,清華大學,2021.3。-. - 考試資料. z -. - 考試資料實驗一 簡單的Servlet與JSP一、實驗目的1. 了解和掌握Servlet和JSP頁面的編寫和運行。2. 比擬Servlet與JSP的區(qū)別和聯(lián)系,體會動態(tài)頁面的含義。二、實驗原理Servlet是運行在效勞器端的Java程序,它主要是為了擴展效勞器的功能。編寫和運行Servlet一般要經過4個步驟:1編輯源文件,它是繼承 Servlet的Java類;2編譯源文件;3在效勞器中部署該Servlet,即將類文件
5、存放到效勞器的適當目錄中,并修改web.*ml部署描述文件;4使用瀏覽器該Servlet程序。JSP是一種效勞器端的動態(tài)頁面技術,它的實質也是Servlet。它的編寫較Servlet容易。二者的主要區(qū)別是:Servlet通常是實現(xiàn)業(yè)務邏輯,而JSP通常實現(xiàn)表示邏輯。三、實驗容與步驟一編寫和運行一個簡單的Servlet 【步驟1】在Tomcat安裝目錄的webapps下建立一個helloapp的目錄,在其中再建立一個WEB-INF目錄,在WEB-INF目錄中建立一個classes目錄。這樣就建立了一個名為helloapp的Web應用程序?!静襟E2】編寫下面Servlet類,編譯并將類文件放入cl
6、asses目錄中package .demo;import java.io.*;import java*.servlet.*;import java*.servlet. .*;public class HelloServlet e*tends Servletpublic void service( ServletRequest request, ServletResponse response)throws ServletE*ception,IOE*ceptionPrintWriter out = response.getWriter();out.println();out.println();
7、out.println();out.println();out.println(Hello World!);out.println();out.println();【步驟3】在WEB-INF目錄中建立一個名為web.*ml的文件,該文件為Web應用程序的部署描述文件,簡稱DD。具體容如下: helloServlet .demo.HelloServlet helloServlet /hello 【步驟4】在瀏覽器的地址欄中輸入以下地址該Servlet。localhost:8080/helloapp/hello在瀏覽器的窗口中應該顯示Hello, World!容。二下面的Servlet可顯示系統(tǒng)當
8、前時間。請編譯并部署該Servlet,然后使用瀏覽器。package .demo;import java.io.*;import java*.servlet.*;import java*.servlet. .*;public class HelloWorldServlet e*tends Servlet public void service() throws ServletE*ception,IOE*ceptionPrintWriter out =; out.println(); out.println(); out.println(); out.println();out.println(
9、 ); out.println(Hello,World!);out.println(The time now is:+new java.util.Date(); out.println(); out.println();三編寫下面的JSP文件,將其用hello.jsp名保存到helloapp目錄中A Simple JSP PageHello,World!The time now is:使用下面的URL該頁面:localhost:8080/helloapp/hello.jsp四運行下面的JSP頁面square.jspnumbersquared% for ( int i=0; i五改寫上述頁面,使
10、其運行后產生以下頁面。圖1.1 square.jsp運行結果四、思考題1. 如何安裝配置JDK和Tomcat2. 如何在Tomcat中運行Servlet和JSP頁面.實驗二 請求對象一、實驗目的1. 掌握如何獲得請求參數(shù);2. 掌握如何檢索請求頭;3. 了解如何通過請求對象獲得客戶信息;4. 重點掌握使用請求對象存儲數(shù)據(jù)和請求轉發(fā)。 二、實驗原理對客戶的請求,容器根據(jù)請求調用Servlet的相應do*()方法,該方法帶有兩個參數(shù),一個是 ServletRequest,一個是 ServletResponse,它們分別表示請求對象和響應對象,它們是容器自動創(chuàng)立的兩個對象??梢允褂眠@兩個接口定義的假
11、設干方法完成有關操作。三、實驗容與步驟一通過查詢串傳遞請求參數(shù),并在Servlet中檢索請求參數(shù)【步驟1】編寫下面的Servlet。package .demo;import java.io.*;import java*.servlet.*;import java*.servlet. .*;public class HelloUserServlet e*tends Servletpublic void service( ServletRequest request, ServletResponse response)throws ServletE*ception,IOE*ceptionStrin
12、g userName = request.getParameter(userName);PrintWriter pw = response.getWriter();pw.println();pw.println();pw.println();pw.println();pw.println(Hello, + userName + );pw.println();pw.println();【步驟2】編譯該Servlet,然后修改web.*ml文件,將下面代碼添加到其中: helloUserServlet .demo.HelloUserServlet helloUser /hellouser 【步驟3
13、】使用下面的URL之。localhost:8080/helloapp/hellouseruserName=John將userName的值改為你自己的名字,看輸出結果。假設不給出查詢字符串,結果如何.參數(shù)值使用漢字如何.二通過表單傳遞請求參數(shù),使用 ServletRequest對象獲得請求參數(shù)【步驟1】首先編寫一個input.html文件,存放在helloapp目錄中。該頁面在屏幕上顯示一個表單,其中包括和年齡域,點擊確定按鈕后,將表單參數(shù)傳遞給ParamServlet并顯示出來。input.html代碼如下:參數(shù)傳遞 從表單向Servlet傳遞參數(shù) : 年齡: 【步驟2】編寫ParamServ
14、let.java,其代碼如下:package .demo;import java.io.*;import java.util.*;import java*.servlet.*;import java*.servlet. .*;public class ParamServlet e*tends Servlet public void doGet( ServletRequest request, ServletResponse response) throws ServletE*ception, IOE*ception response.setCharacterEncoding(gb2312);
15、response.setContentType(te*t/html;charset=gb2312); String name = request.getParameter(name);name = new String(name.getBytes(iso8859-1),gb2312); String age = request.getParameter(age);age = new String(age.getBytes(iso8859-1),gb2312); PrintWriter pw = response.getWriter(); pw.println(); pw.println();
16、pw.println(); pw.println(); pw.println(:+name+); pw.println(年齡:+age+); pw.println(); pw.println(); public void doPost( ServletRequest request, ServletResponse response) throws ServletE*ception, IOE*ception doGet(request, response); 【步驟3】修改web.*ml文件,將下面代碼添加到其中: ParamServlet .demo.ParamServlet ParamSe
17、rvlet /paramtest 【步驟4】測試參數(shù)傳遞。在瀏覽器的地址欄中輸入:localhost:8080/helloapp/input.html。輸入數(shù)據(jù),點擊確定按鈕,體會表單參數(shù)的傳遞。問題1:如何通過超的錨標簽傳遞請求參數(shù).三編寫一個Servlet,顯示所有請求頭【步驟1】ShowHeadersServlet.java的Servlet能夠檢索所有的請求頭,代碼如下:package .demo;import java.io.*;import java.util.*;import java*.servlet.*;import java*.servlet. .*;public class
18、 ShowHeadersServlet e*tends Servlet public void doGet( ServletRequest request, ServletResponse response) throws ServletE*ception, IOE*ception response.setContentType(te*t/html;charset=gb2312); PrintWriter out = response.getWriter(); out.println(); out.println(All Headers); out.println(); out.println
19、(); out.println(All Request Headers); out.println(n+ n+ Header NameHeader Value); Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements() String headerName = (String)headerNames.ne*tElement(); out.println(+headerName); out.println(+request.getHeader(headerName); out.p
20、rintln(n); public void doPost( ServletRequest request, ServletResponse response) throws ServletE*ception, IOE*ception doGet(request, response); 【步驟2】修改web.*ml,參加下面容: ShowHeadersServlet /showheaders【步驟3】在瀏覽器地址欄中輸入下面URL該Servlet四簡單的綜合應用【步驟1】創(chuàng)立一個名為input.html的HTML頁面,其中包括一個表單,表單中包含兩個文本域,分別供用戶輸入*和,該頁面也包含提交
21、和重置按鈕?!静襟E2】定義一個名為.demo.Student類,其中包括*sno和name兩個private的成員變量,定義和修改sno和name的方法?!静襟E3】編寫名為FirstServlet的Servlet,要求當用戶在input.html中輸入信息后點擊提交按鈕,請求FirstServlet對其處理。在FirstServlet中使用表單傳遞的參數(shù)*和創(chuàng)立一個Student對象并將其作為屬性存儲在請求對象中,然后獲得通過請求對象的getRequestDispatcher()方法獲得RequestDispatcher()對象,將請求轉發(fā)到SecondServlet。【步驟4】在Second
22、Servlet中取出請求對象上存儲的Student對象,并顯示輸出該學生的*和。在SecondServlet的輸出中應該包含一個超,點擊該連接可以返回input.html頁面。圖2.1 input.html頁面顯示結果 圖2.2 SecondServlet顯示結果四、思考題1. 在Servlet中如何獲得請求參數(shù).2. 如何實現(xiàn)請求轉發(fā).如何在請求對象中共享數(shù)據(jù).實驗三 響應對象一、實驗目的1. 了解和掌握如何從響應對象獲得輸出流對象;2. 掌握如何設置響應類型;3. 掌握如何設置響應頭和狀態(tài)碼;4. 重點掌握如何實現(xiàn)響應重定向。二、實驗原理對Servlet的請求目的是要獲得響應消息。Serv
23、let要向用戶發(fā)送響應數(shù)據(jù)首先要獲得輸出流對象。另外,通過響應對象還可向客戶端發(fā)送狀態(tài)碼,也可以設置有關響應頭,還可以對響應重定向。三、實驗容與步驟一 通過設置響應容類型構建E*cel電子表格package .demo;import java.io.*;import java.util.*;import java*.servlet.*;import java*.servlet. .*;public class E*celServlet e*tends Servlet public void doGet( ServletRequest request, ServletResponse respo
24、nse) throws ServletE*ception, IOE*ception response.setHeader(Cache-Control,no-cache);response.setContentType(application/vnd.ms-e*cel;charset=gb2312);PrintWriter out = response.getWriter();out.println(Student information); out.println(*tt性別t年齡t所在系); out.println(95001t勇t男t20t信息); out.println(95002t晨t
25、女t19t數(shù)學); 該程序的運行結果如以下圖所示:圖3.1 生成E*cel電子表格二向客戶發(fā)送二進制文件package .demo;import java.io.*;import java.util.*;import java*.servlet.*;import java*.servlet. .*;public class DownloadServlet e*tends Servlet public void doGet( ServletRequest request, ServletResponse response) throws ServletE*ception, IOE*ception
26、 response.setContentType(application/jar); File f = new File(C:servlet-api.jar); FileInputStream is = new FileInputStream(f); ServletOutputStream os = response.getOutputStream(); byte bytearray = new byte1024; int bytesread = 0; while( (bytesread = is.read(bytearray) ) != -1 ) os.write(bytearray, 0,
27、 bytesread); os.flush(); 注意:此Servlet正確運行,需要將servlet-api.jar文件復制到C盤根目錄下。三下面的ShowTimeServlet通過設置refresh響應頭實現(xiàn)每2秒鐘刷新一次頁面。package .demo;import java.io.*;import java.util.*;import java.te*t.SimpleDateFormat;import java*.servlet.*;import java*.servlet. .*;public class ShowTimeServlet e*tends Servlet public
28、 void doGet( ServletRequest request, ServletResponse response) throws ServletE*ception, IOE*ception response.setContentType(te*t/html;charset=gb2312); response.setHeader(refresh,2); PrintWriter out = response.getWriter(); Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd
29、a HH:mm:ss); String s = sdf.format(date); out.println(); out.println(); out.println(每5秒鐘刷新一次頁面); out.println(現(xiàn)在的時間是:+s+); out.println(); out.println(); 四響應重定向【步驟1】建立下面的login.html登錄頁面 Login Page 用戶名: 密碼: 【步驟2】編寫一個名為RedirectServlet的Servlet,在其中檢索用戶名和口令參數(shù)值,然后判斷其是否正確假設用戶名和口令都為admin即認為正確,如果正確將響應重定向到wele.h
30、tml頁面,否則將響應重定向到error.html頁面,這兩個頁面請你自己編寫,存放在應用程序根目錄。下面是Servlet的局部代碼。package .demo;import java.io.*;import java*.servlet.*;import java*.servlet. .*;public class RedirectServlet e*tends Servletpublic void doPost( ServletRequest request, ServletResponse response) throws IOE*ception,ServletE*ception/ 此處添
31、加假設干代碼 if()response.sendRedirect(); elseresponse.sendRedirect(); 四、思考題1. 如何理解Servlet的生命周期.2. 如何理解請求轉發(fā)與響應重定向.實驗四 Servlet容器模型一、實驗目的1. 掌握Web應用程序的DD文件web.*ml的配置方法和作用;2. 掌握如何通過ServletConfig獲取Servlet的初始化參數(shù);3. 掌握ServletConte*t的概念,如何獲得ServletConte*t對象;4. 掌握如何通過RequestDispatcher轉發(fā)請求。二、實驗原理Web應用程序有嚴格定義的目錄構造,它
32、需要一個稱為部署描述文件的文件web.*ml來配置。對應用程序的每個Servlet,可以在web.*ml中定義假設干個初始化參數(shù),然后通過ServletConfig對象獲取這些參數(shù)。ServletConte*t對象表示該應用程序的環(huán)境,通過該對象可以獲得應用程序圍的初始化參數(shù)、容器版本信息、資源的URL、在其中存放共享數(shù)據(jù)以及登錄日志等。三、實驗容與步驟一建立一個名為bookstore的Web應用程序在Tomcat的webapps目錄下,建立一個如下所示的目錄構造: |- bookstore|- html (包含所有的HTML文件)|- jsp (包含所有的JSP文件)|- images (包
33、含所有的GIF、JPEG和BMP圖象文件)|- inde*.html (默認的HTML文件)|- WEB-INF|-classes lib web.*ml圖4.1 bookstore應用程序的目錄構造這樣就建立了一個名為bookstore的Web應用程序,本實驗后面的題目都在該應用程序下面完成。二使用ServletConfig檢索Servlet的初始化參數(shù)【步驟1】編寫ConfigDemoServlet程序,容如下:package .demo;import java.io.*;import java.sql.*;import java*.servlet.*;import java*.servl
34、et. .*;public class ConfigDemoServlet e*tends ServletString servletName=null;ServletConfig config=null;String email=null;String telephone=null;public void init() config = getServletConfig();servletName = config.getServletName();email = config.getInitParameter(email);telephone = config.getInitParamet
35、er(telephone);public void service( ServletRequest request, ServletResponse response) throws ServletE*ception,IOE*ception response.setContentType(te*t/html;charset=gb2312); PrintWriter out = response.getWriter();out.println(); out.println(Servlet名稱:+servletName+); out.println(Email地址:+email+); out.pr
36、intln(:+telephone);out.println();【步驟2】修改web.*ml文件,在其中添加下面Servlet定義和初始化參數(shù)定義 configDemoServlet .demo.ConfigDemoServlet email hacker163. telephone 8899123 1 configDemoServlet /configDemo.do 【步驟3】在瀏覽器的地址欄中輸入下面URL該Servlet:localhost:8080/bookstore/configDemo.do程序運行結果如以下圖所示:圖4.1 ConfigDemoServlet程序的運行結果三Se
37、rvletConte*t的使用修改上面程序,將email地址和使用ServletConte*t初始化參數(shù)傳遞給ConfigDemoServlet。使用ServletConte*t對象將email地址和信息寫入日志文件中,并查看日志文件。五下面是一個Servlet,它可以獲得有關效勞器的信息。package .demo;import java.io.*;import java.util.*;import java*.servlet.*;public class ServerInfo e*tends GenericServlet public void service(ServletRequest
38、 request, ServletResponse response)throws ServletE*ception, IOE*ception response.setContentType(te*t/html;charset=GB2312);PrintWriter out = response.getWriter();ServletConte*t sc = getServletConte*t();out.println();out.println();out.println();out.println(獲取效勞器端信息);out.println();out.println();out.pri
39、ntln(效勞器端信息:);out.println();out.println();out.println(站點名);out.println( + request.getServerName() + );out.println();out.println();out.println(端口號);out.println( + request.getServerPort() + );out.println();out.println();out.println(效勞器類型);out.println( + sc.getServerInfo() + );out.println();out.println
40、();out.println(支持Servlet版本);out.println(+sc.getMajorVersion()+.+sc.getMinorVersion()+);out.println();out.println();out.println(效勞器屬性);out.println();/ 獲得效勞器屬性集合Enumeration attributes = sc.getAttributeNames();while (attributes.hasMoreElements() String name = (String)attributes.ne*tElement();out.printl
41、n(name);out.println();out.println();out.println();out.println();out.println();六簡單的綜合應用【步驟1】創(chuàng)立一個名為input.html的HTML頁面,其中包括一個表單,表單中包含兩個文本域,分別供用戶輸入*和,該頁面也包含提交和重置按鈕?!静襟E2】定義一個名為.demo.Student類,其中包括*sno和name兩個private的成員變量,定義和修改sno和name的方法。【步驟3】編寫名為FirstServlet的Servlet,要求當用戶在input.html中輸入信息后點擊提交按鈕,請求FirstServ
42、let對其處理。在FirstServlet中使用表單傳遞的參數(shù)*和創(chuàng)立一個Student對象并將其作為屬性存儲在ServletConte*t對象中,然后獲得通過ServletConte*t的getRequestDispatcher()方法獲得RequestDispatcher()對象,將請求轉發(fā)到SecondServlet?!静襟E4】在SecondServlet中取出ServletConte*t上存儲的Student對象,并顯示輸出該學生的*和。在SecondServlet的輸出中應該包含一個超,點擊該連接可以返回input.html頁面。圖4.2 input.html頁面顯示結果 圖4.3
43、SecondServlet顯示結果四、思考題1. 如何通過ServletConfig獲得Servlet參數(shù).2. 如何獲得ServletConte*t對象,如何通過該對象獲得上下文參數(shù).3. 如何使用ServletConte*t共享數(shù)據(jù).實驗五 會話管理一、實驗目的1. 了解Web效勞器對客戶跟蹤的各種方法;2. 重點掌握使用 Session對象跟蹤會話的方法; 3. 掌握使用Cookie技術跟蹤會話的方法;4. 了解URL重寫和隱藏表單域的方法。二、實驗原理 協(xié)議是無狀態(tài)的協(xié)議。在很多情況下,Web效勞器必須能夠跟蹤客戶的狀態(tài)。比方,對于一個購物,在一個時刻可能有多個客戶購物,Web效勞器必
44、須能夠區(qū)分不同的客戶。一般情況下,Web效勞器為每個客戶配置了虛擬的購物車ShoppingCart。當*個客戶請求將一個商品放入購物車時,Web效勞器必須根據(jù)發(fā)出請求的客戶的身份,找到該客戶的購物車,然后把商品放入其中。Web效勞器跟蹤客戶的狀態(tài)通常有4種方法:1使用 Session對象管理會話;2使用持久的Cookie對象;3使用URL重寫機制;4使用隱藏的表單域。三、實驗容與步驟一 使用 Session對象管理會話。package .demo;import java.io.*;import java*.servlet.*;import java*.servlet. .*;import ja
45、va.util.Date;public class ShowSession e*tends Servlet public void doGet( ServletRequest request, ServletResponse response) throws ServletE*ception, IOE*ception response.setContentType(te*t/html); Session session = request.getSession(); String heading =null; Integer accessCount = (Integer)session.get
46、Attribute(accessCount); if(accessCount=null)accessCount = new Integer(0);heading = Wele, Newer; elseheading = Wele Back.;accessCount = new Integer(accessCValue()+1); session.setAttribute(accessCount,accessCount); PrintWriter out = response.getWriter(); out.println(); out.println(Session Trac
47、king E*ample); out.println(); out.println(+heading+); out.println(Information about your session.); out.println(); out.println(Info TypeValuen); out.println(ID+session.getId()+n); out.println(Creation Time:); out.println(+new Date(session.getCreationTime()+n); out.println(Time of last access:); out.
48、println(+new Date(session.getLastAccessedTime()+n); out.println(Access number:+accessCount+n); out.println(); 圖5.1 ShowSession程序的運行結果二使用Cookie跟蹤會話使用Cookie跟蹤會話涉及到向客戶端寫入Cookie和從客戶端讀取Cookie?!静襟E1】向客戶端寫入Cookie對象package test;import java.io.*;import java*.servlet.*;import java*.servlet. .*;public class Sen
49、dCookie e*tends Servlet public void doGet( ServletRequest request, ServletResponse response) throws IOE*ception,ServletE*ception Cookie userCookie = new Cookie(user, uid1234); userCookie. setMa*Age(60*60*24*7); response.addCookie(userCookie);response.setContentType(te*t/html);PrintWriter out=respons
50、e.getWriter();out.println(add cookies);out.println(+A cookie has been sent to brower);out.println(); 上述Servlet將向客戶端寫入一個Cookie,執(zhí)行后可查看客戶機對應目錄看是否寫了一個文件。圖5.2 SendCookie程序的運行結果【步驟2】從客戶端讀取Cookie對象package test;import java.io.*;import java*.servlet.*;import java*.servlet. .*;public class GetCookie e*tends S
51、ervlet public void doGet( ServletRequest request, ServletResponse response) throws IOE*ception,ServletE*ception String cookieName = user; String cookieValue = null; Cookie cookies = request.getCookies(); if (cookies!=null) for(int i = 0;icookies.length;i+) Cookie cookie = cookiesi; if(cookie.getName
52、().equals(cookieName) cookieValue = cookie.getValue(); response.setContentType(te*t/html);PrintWriter out=response.getWriter();out.println(get cookies);out.println(A cookie has been got from brower);out.println(CookieName:+cookieName+);out.println(CookieValue:+cookieValue+);out.println(); 圖5.3 GetCo
53、okie程序的運行結果四、思考題1. 簡述會話管理的常用方法有哪些. 2. 如何使用 Session對象共享數(shù)據(jù).實驗六 JSP根本語法與頁面指令一、實驗目的1. 熟練掌握JSP的聲明、表達式、小腳本和注釋的使用;2. 理解JSP頁面page指令和動作的語法格式;3. 理解JSP頁面的生命周期。4. 熟練掌握page指令的下面的屬性:import、session、errorPage、isErrorPage、contentType、pageEncoding。5. 理解page指令的下面的屬性:language、e*tends、buffer、autoFlush、info。二、實驗原理JSP有三個指
54、令元素:page、include和taglib。這些指令元素是針對JSP引擎的,并不會產生任何看得見的輸出。它們都包含在標簽。本實驗主要學習page指令。指令作用于整個JSP頁面,包括靜態(tài)包含的頁面,但不包括動態(tài)包含的頁面??梢栽谝粋€頁面中包含多個指令,但其屬性除import外只能在整個頁面中出現(xiàn)一次。指令可以放在頁面的任何位置,但為了JSP程序的可讀性,一般將指令放在頁面的前面。三、實驗容與步驟一輸入并執(zhí)行下面JSP頁面,文件名為counter.jspWele! You are visitor number【步驟1】該JSP頁面包含哪些JSP語法元素。在瀏覽器中該頁面,輸出結果如何.屢次刷新
55、頁面,結果如何.【步驟2】翻開counter.jsp轉換后的源文件counter_jsp.java,對應的類文件在哪里.文件名是什么.【步驟3】查看count變量是在哪里聲明的.【步驟4】將上面JSP頁面中的一行改為,頁面能否正常執(zhí)行,它與上面頁面有什么區(qū)別.二有下面e*pression.jsp頁面:你能找出其中的錯誤嗎.你可試著執(zhí)行該頁面,看會出現(xiàn)什么結果.將其中錯誤修改正來,最后輸出下面結果:圖6.1 e*pression.jsp的運行結果三運行下面persistent_counter.jsp頁面,體會如何實現(xiàn)持久的計數(shù)器的.Wele! You are th visitor(s).四輸入并
56、運行下面的import_test.jsp頁面:page指令例如使用page指令導入java.util.Date類現(xiàn)在的時間是:現(xiàn)在的時間是:上述JSP頁面,輸出結果如以下圖所示:圖6.2 import_test.jsp頁面的運行結果可以看到頁面中最后一行的中文顯示為亂碼,將下面代碼加到JSP頁面中:重新頁面,中文顯示正常。這說明可以使用page指令的contentType屬性指定頁面輸出使用的字符編碼。默認情況下,JSP頁面使用的字符集是iso-8859-1編碼,如使用漢字編碼應指定為gb2312或gbk。五 errorPage屬性和isErrorPage屬性的使用?!静襟E1】下面的hello
57、.jsp頁面執(zhí)行時將拋出一個異常,它指定了錯誤處理頁面為errorHandler.jsp。Hello, 【步驟2】下面的errorHandler.jsp是錯誤處理頁面。請求不能被處理:請重試!用下面的URLhello.jsp頁面,就會產生下面結果: localhost:8080/bookstore/hello.jsp圖6.3 errorHandler.jsp頁面的運行結果這說明沒有提供name參數(shù),hello.jsp頁面中拋出RuntimeE*ception異常,所以調用錯誤頁面。如果使用下面URLhello.jsp頁面,將產生下面正常的頁面:localhost:8080/bookstore/
58、hello.jspname=Mary圖6.4 hello.jsp頁面的運行結果注意:如果請求參數(shù)值使用漢字,仍然產生亂碼,例如:localhost:8080/bookstore/hello.jspname=歐陽清風這是因為請求參數(shù)默認使用iso-8859-1編碼傳遞,如果要正確顯示中文,應將請求參數(shù)編碼轉換為gb2312編碼。按下面方法修改hello.jsp頁面,將請求參數(shù)值編碼轉換為漢字編碼。Hello, 四、思考題1. JSP語法元素有哪些.使用時應注意什么問題. 2. JSP頁面的生命周期有哪幾個階段.3. 如何理解JSP頁面本質上是Servlet. 4. page指令有哪些常用的屬性,
59、各自的功能是什么.實驗七 JSP隱含對象與作用域一、實驗目的1. 掌握全部9個隱含對象的使用;2. 理解4種作用域對象。二、實驗原理在JSP頁面的轉換階段,JSP引擎在_jspService()方法中聲明并初始化了9個隱含對象,它們主要是為了方便在JSP頁面對這些對象的。這些隱含對象包括:application、session、request、response、out、page、pageConte*t、config、e*ception。在上述9個隱含對象中,有下面4個作用域對象,它們是:application、session、request、pageConte*t。它們主要用來在不同作用域中共
60、享數(shù)據(jù)。三、實驗容與步驟一了解隱含對象是如何定義的。在helloapp應用程序中編寫一個名為implicit.jsp的頁面,容為空。然后在瀏覽器中該頁面。接下來翻開workCatalinalocalhosthelloapporgapachejsp目錄中的implicit_jsp.java文件,查看隱含對象是如何定義的。完成下面的填空:JSP頁面轉換后定義的類名為: 該類繼承了哪個類: 隱含對象request的類型為: 隱含對象response的類型為: 隱含對象pageConte*t的類型為: 隱含對象session的類型為: 隱含對象application的類型為: 隱含對象config的類
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冷藏車租賃合同模板
- 2025年個人委托代收策劃合同范本
- 2025年包裝盒生產合同范本
- 2025年企業(yè)信貸擔保合同樣本
- 2025年企業(yè)整體租賃與服務合同樣本
- 度外貿合作出口合同
- 2025年體育賽事贊助商合同范例
- 中外合作代理合同模板
- 2025年企業(yè)與銀行間貸款合同協(xié)議
- 新版設備租賃合同范本及買賣合同準則
- 2025年度空調安裝驗收及保修服務合同
- 急救護理學第十章災難救護講解
- 2025年常德職業(yè)技術學院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- Unit2 No rules no order Section A Grammar 英文版說課稿2024-2025學年人教版(2024)七年級英語下冊
- 行政單位會計核算職責(4篇)
- 2024年山東司法警官職業(yè)學院高職單招語文歷年參考題庫含答案解析
- 2024版消防設計質量問題案例分析手冊建筑機電專業(yè)
- 《義務教育道德與法治課程標準》解讀
- 2024年臨滄永德縣人民法院聘用制書記員招聘考試真題
- 中醫(yī)院發(fā)展中醫(yī)重點專科、學科加強中醫(yī)藥人才培養(yǎng)的具體措施
- 2025年中國私域電商行業(yè)市場運行態(tài)勢、市場規(guī)模及發(fā)展趨勢研究報告
評論
0/150
提交評論