《JSP應用技術與Ajax》 課件_第1頁
《JSP應用技術與Ajax》 課件_第2頁
《JSP應用技術與Ajax》 課件_第3頁
《JSP應用技術與Ajax》 課件_第4頁
《JSP應用技術與Ajax》 課件_第5頁
已閱讀5頁,還剩106頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1.1簡介定義:J2EE(JavaEnterpriseEdition)是一個開發分布式企業級應用的規范和標準JavaSEXMLJDBCJavaBeanJSPServletHibernateStrutsJNDIJSFSpringEJBWebServiceJava2平臺分類J2SE適用于桌面系統的Java2平臺標準版(Java2PlatformStandardEdition)J2ME適用于小型設備和智能卡的Java2平臺Micro版(Java2PlatformMicroEdition)J2EE適用于創建服務器應用程序和服務的Java2平臺企業版(Java2PlatformEnterpriseEdition)J2EE是什么J2EE(Java2Platform,EnterpriseEdition)提供了一個平臺無關的,可移植的,多層的,分布式的基于組件的企業級應用Java開發模型。J2EE是規范而不是產品。企業級開發產品供應商通過實現J2EE規范,開發基于J2EE的產品J2EE是一個體系結構,它包含了很多技術,和服務。利用它可以簡化企業級項目的開發、部署和管理相關的復雜問題企業應用的特點企業應用系統之目的:擴展業務范圍,降低經營成本,縮短與客戶之間相應時間。簡捷而快速的服務于企業、合作伙伴和雇員之間,同時為用戶提供更為廣泛的服務。企業應用系統之特點:高可用性(Availability)互用性(Interoperability)安全性(Security)可伸縮性(Scalability)多層分布式模型J2EE提出了多層分布式開發模型將應用邏輯按功能劃分為組件根據他們所屬層次分布到不同機器上J2EE與后續課程的關系Struts、Hibernate、Spring,它們都是框架框架,即Framework。其實就是某種應用的半成品,就是一組組件,用來完成自己的系統簡單說就是使用別人準備好的一切,來實施自己的項目裝修后的房子毛坯房可以按照自己的意圖裝修毛坯房就類似一個框架1.2J2EE體系架構

1.2.2【J2EE三層架構】頁面顯示技術HTMLJavaScriptAjax技術1.2J2EE體系架構

1.2.2【J2EE三層架構】中間層技術JSP顯示動態內容的服務器網頁JSTL輔助JSP顯示動態內容的標準標簽庫Servlet接收客戶請求,并做出響應的Java程序Servlet是中間件技術的重要部分,它控制著其他的組件JavaBeanJavaEE的模型組件中間層框架技術Struts框架Struts框架主要是擴展了Servlet1.2J2EE體系架構

1.2.2【J2EE三層架構】數據庫層技術JDBC技術JDBC(JavaDatabaseConnectivity):Java數據庫連接JDBC用來訪問數據庫和操作數據庫表中數據數據層框架技術HibernateJavaBean數據庫JDBC訪問返回數據Hibernate數據庫訪問返回數據JavaBean1.3J2EE的優越性保留現存的IT資產:高效的開發支持異構環境可伸縮性穩定的可用性:2.1Tomcat目錄結構與傳統的桌面應用程序不同,Tomcat中的應用程序是一個WAR(WebArchive)文件。WAR是Sun提出的一種Web應用程序格式,與JAR類似,也是許多文件的一個壓縮包。Tomcat

|binTomcat:存放啟動和關閉tomcat腳本;

|confTomcat:存放不同的配置文件(server.xml和web.xml);

|doc:存放Tomcat文檔;

|lib/japser/common:存放Tomcat運行需要的庫文件(JARS);

|logs:存放Tomcat執行時的LOG文件;

|webapps:Tomcat的主要Web發布目錄(包括應用程序示例);

|work:存放jsp編譯后產生的class文件;2.2Tomcat下載,安裝以及在Eclipse中的配置

可以到/tomcat

上去下載Tomcat的安裝包安裝Tomcat把Tomcat解壓縮包拷入合適的地址:如的:D:\apache-tomcat-6.0.18打開命令提示程序,運行安裝程序,根據提示配置環境變量C:\Users\db2admin>D:\apache-tomcat-6.0.18\bin\startup.bat配置環境變量:CATALINA_HOME=D:\apache-tomcat-6.0.18JAVA_HOME=C:\ProgramFiles\Java\jdk1.6.0_12Eclipse中添加Tomcat插件tomcat插件安裝:插件tomcatPluginV321.zip在Eclispe的根目錄下添加link文件:D:\eclipse\links\tomcat.linkLink文件的內容為:path=C:/eclipse/plug/tomcatPluginV321tomcatPluginV321.zip解壓后的位置D:\eclipse\plug\tomcatPluginV321\eclipse\plugins\com.sysdeo.eclipse.tomcat_3.2.1重啟Eclispe2.2Tomcat下載,安裝以及在Eclipse中的配置注意:我們目前使用的是Tomcat6.0.18.下載目錄是bin/而不是src/.在Eclipse中,可以直接將tomcat和Java項目綁定起來。步驟如下:(1)在Eclipse中建立一個Java項目TomcatProject2.2Tomcat下載,安裝以及在Eclipse中的配置(2)【點擊Property】,在【Tomcat】項目中,勾選上”IsaTomcatProject”。在【Contextname】中設定【WebContext】路徑,在“Subdirectorytosetaswebapplicationroot”中設置放置web程序文件的目錄。點擊”Apply”.2.2Tomcat下載,安裝以及在Eclipse中的配置右擊【TomcatProject】項目,在【TomcatProject】欄目中,選中“UpdatecontextDefinition”,即可。2.2Tomcat下載,安裝以及在Eclipse中的配置進入【Windows】-

【Preference】,點擊【Tomcat】

【Advanced】,點擊【Browse】,目錄找到Tomcat的目標目錄,點擊確定。3.1簡介Servlet是一個Java程序,是在服務器上運行以處理客戶端請求并做出響應的程序Servlet是一種獨立于平臺和協議的服務器端的Java應用程序,可以生成動態的Web頁面Servlet是位于Web服務器內部的服務器端的Java應用程序,像所有的Java程序一樣,Servlet擁有面向對象Java語言的所有優勢隨著Internet的興起,現在大多數電腦用戶更加習慣Internet的Web應用。用Web應用的交互如圖所示。3.2

HTTP基礎知識

3.2.1HTTP請求、響應和頭信息

客戶端發送的請求消息為字符流,由請求行(包括方法、統一資源標識符URI和HTTP協議版本)和頭信息組成。下面是一個合法的HTTP請求消息的例子。我們通過這個例子來大概了解一下HTTP請求消息。

GET/ntctest/page/jsp02/easy.jspHTTP/1.1Host:localhost:8080User-Agent:Mozilla/5.0(Windows;U;WindowsNT6.0;zh-CN;rv:1)Accept:text/html,application/xhtml+xml,application/xml,*/*Accept-Language:zh-cnAccept-Charset:gb2312,utf-83.2

HTTP基礎知識3.2.1HTTP請求、響應和頭信息

請求行指定了用GET方法,訪問一個名為/ntctest/page/jsp02/easy.jsp的資源,并指定請求使用HTTP/1.1協議版本。Host首部可以像服務器通知URL中所用的主機名。User-Agent首部包含了發出請求的瀏覽器的類型相關信息。服務器可以使用此信息向不同類型的瀏覽器發送不同類型的響應。Accept首部提供了瀏覽器所接受語言和文件格式的有關信息。這些首部可以用于針對瀏覽器的功能和用戶的首選項(如使用某種所支持的圖像格式和首選語言)對響應加以調整。請求信息由服務器進一步處理,并生成相應的響應,響應消息由狀態行和頭信息組成。下面是響應消息的事例。3.2

HTTP基礎知識3.2.1HTTP請求、響應和頭信息

HTTP/1.x200OKServer:Apache-Coyote/1.1Content-Type:text/htmlContent-Length:186Date:Wed,17Jun200900:57:35GMTServer頭部指定服務器軟件。Content-Type頭部指定了文檔的MIME類型,如果是“text/html”指示格式化的Web文檔,如果是“text/plain”只是未格式化的文本文檔。Content-length頭部指定文件的大小,以字節來表示。注意:這里介紹下常見的狀態碼:404是找不到被請求的網頁時常遇到的狀態碼;500是服務器內部錯誤;503是服務器超時等,如果想具體了解,上有很詳細的內容3.2HTTP基礎知識

3.2.2GET和POST方法區別

以請求行的形式(地址重寫)提交數據提交數據在地址欄可見,不安全具有長度的限制,255個字符以內monitor監控工具請求消息請求行標題信息方法資源名稱版本GET/POSTbar01.jpgHTTP/1.1瀏覽器類型內容類型User-Agent:Mozilla/4.0(compatible;MSIE4.0:WindowsXPAccept:image/gif,image/jpeg,text/*,*/*3.2HTTP基礎知識

3.2.2GET和POST方法區別

與Get請求不同,地址欄沒有變化數據在地址欄不可見,安全理論上沒有長度限制TCP/IPMonitor監控工具3.2HTTP基礎知識

3.2.2GET和POST方法區別

下面我們來對比一下GET和POST方法。GET是從服務器上獲取數據;POST是向服務器傳送數據。在客戶端,GET通過URL提交數據,數據在URL中可見;POST把數據放在form的數據體內提交。GET提交的數據最多只有1024字節;POST提交的數據量無限制。由于使用GET時,參數會顯示在地址欄上,而POST不會,所以,如果這些數據是非敏感數據,那么使用GET;如果包含敏感數據,為了安全,用POST。3.3Servlet簡介和優點使用JSP技術如何編寫服務器動態網頁?請求響應JSP頁面運行執行Java代碼HTML代碼生成JSP使用Java

生成動態內容運行Servlet程序3.3Servlet簡介和優點定義:Servlet是一個Java程序,是在服務器上運行以處理客戶端請求并做出響應的程序請求

響應Servlet運行于服務器端3.3Servlet簡介和優點

Server有以下優點:

可移植性強大的功能性能安全性3.4第一個Servlet例程

packagecom.ntc.sample.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/***HelloWorldServlet.*@authorNTC*/public

classFirstServletextendsHttpServlet{/**serialVersionUID.*/

private

static

final

long

serialVersionUID=2372510451801586160L;3.4第一個Servlet例程

protected

voiddoGet(HttpServletRequestreq,HttpServletResponseresp)

throwsServletException,IOException{//設定內容類型為HTML網頁UTF-8編碼

resp.setContentType("text/html;charset=UTF-8");//輸出頁面

PrintWriterout=resp.getWriter();out.println("<html><head>");out.println("<title>FirstServletHello</title>");out.println("</head><body>");out.println("Hello!大家好!");out.println("</body></html>");out.close();}}3.4第一個Servlet例程

代碼寫好后,我們來設定web.xml文件,web.xml文件在我們Web項目的WEB-INF文件夾內。如圖所示。

我們來詳細看一看web.xml中這段關于Servlet的配置。配置一個Servlet需要配置兩個標簽,第一個<servlet>,一個是<servlet-mapping>。

對象outout對象用于向客戶端輸出數據out對象常用方法:print():在頁面中打印出字符串信息response.setContentType("text/html");PrintWriterout=response.getWriter();out.println("<!DOCTYPEHTMLPUBLIC\"-//W3C//DTDHTML4.01Transitional//EN\">");out.println("<HTML>");out.println("<HEAD><TITLE>AServlet</TITLE></HEAD>");out.println("<BODY>");out.print("Thisis");out.print(this.getClass());out.println(",usingthePOSTmethod");out.println("</BODY>");out.println("</HTML>");out.flush();out.close();對象request4-1request對象主要用于處理客戶端請求JSP,Servlet頁面request對象客戶端請求請求信息對象request4-2request對象常用方法方法名稱說明StringgetParameter(Stringname)根據頁面表單組件名稱獲取頁面提交數據String[]getParameterValues(Stringname)獲取一個頁面表單組件對應多個值時的用戶的請求數據voidsetCharacterEncoding(Stringcharset)指定每個請求的編碼在調用request.getParameter()之前進行設定,可以解決中文亂碼問題request.getRequestDispatcher(Stringpath)返回一個javax.servlet.RequestDispatcher對象,該對象的forward方法用于轉發請求對象request4-4<formname="form1"method="post"action="reginfo.jsp"><tableborder="0"align="center"><tr><td>用戶名</td><td><inputtype="text"name="name"></td></tr><tr><td>密碼</td><td><inputtype="password"name="pwd"></td></tr><tr><td>你從哪里知道ACCP</td><td><inputtype="checkbox"name="channel"value="報刊">報刊

<inputtype="checkbox"name="channel"value="網絡">網絡

<inputtype="checkbox"name="channel"value="朋友推薦">朋友推薦

<inputtype="checkbox"name="channel"value="電視">電視

</td></tr><!--以下是提交、取消按鈕--></table></form>String[]channels=request.getParameterValues("channel");if(channels!=null){for(inti=0;i<channels.length;i++){out.println(channels[i]);}}request.setCharacterEncoding("GBK");request.getParameter(“name”);request.getParameter("pwd");對象response2-1response對象用于響應客戶請求并向客戶端輸出信息response對象常用方法voidsendRedirect(Stringlocation):將請求重新定位到一個不同的URLJSP/Servlet頁面response對象客戶端響應從服務器中檢索的信息存儲信息,以在響應客戶端請求時發送此信息對象response2-2在首頁面(input.jsp)上輸入用戶名、密碼,提交至input2.jsp進行處理如果輸入的用戶名、密碼都是sa,跳轉至歡迎頁面(welcome.jsp)<formname="form1"method=postaction="input2.jsp">用戶名:<inputtype="text"name="userName">密碼:<inputtype=“password"name="pwd"><inputtype="submit"value="登錄"><form>input.jsp客戶端重新建立鏈接<%request.setCharacterEncoding("GBK");Stringname=request.getParameter("userName");Stringpwd=request.getParameter("pwd");if(name.equals("sa")&&pwd.equals("sa")) response.sendRedirect("welcome.jsp");%>跳轉至歡迎頁面input2.jspHTML基本標簽2:列表練習39列表主要分為無序(unordered)列表和有序(ordered)列表用<ul></ul>或<ol></ol>來定義邊界列表中的項目用<li></li>進行標記列表可以嵌套40<ul><li>這是一個無序列表</li><li>下面是內部的一個有序列表</li><ol><li>列表項A</li><li>列表項B</li><li>列表項C</li></ol><li>列表結束</li></ul>練習41無序列表的屬性type有3個選項:disc:實心圓

circle:空心圓

square:方塊使用語句:

<litype="square">借東風</li>有序列表的起始編號:type=在<li>標簽里使用,用于編號的數字,字母等的類型,如type=astart=

如start=2則編號從2開始,如果從1開始可以省略。列表練習43標題標簽:<h1></h1>加粗:<b></b>斜體:<i></i>預格式化文本<pre></pre> 有特殊意義的字符用于純文本時

<;<>;>

 ;不斷行的空格

&;&

";“©;?水平線標簽:<hr>超鏈接:<a></a>標簽來創建,href作為屬性。

知識復習列表標簽主要分為無序列表和有序列表<ul></ul>或<ol></ol>

定義邊界;<li></li>標記項目;列表可以嵌套;圖像標簽src

圖像文件的URL;width

寬度;height

高度;alt

替代文本;

id

指定包含嵌入的圖像文件的名稱;title規定元素的工具提示文本;

border圖像外邊框大小;background將圖片作為背景;知識復習HTML基礎人機交互設計第四章JSP簡介本章任務掌握JSP的定義、作用、以及頁面組成掌握如何創建JSP頁面掌握JSP頁面的執行過程為什么需要JSP2-1為什么需要基于B/S技術的動態網頁?B/S技術的特點是什么?使用動態網頁,可以動態輸出網頁內容、同用戶進行交互、對網頁內容進行在線更新應用服務器IEIE解釋執行HTML文件從服務器端檢索到的信息返回響應客戶端的請求信息發送請求訪問數據庫返回結果運行JSP等服務器端腳本程序1用戶輸入234數據庫服務器為什么需要JSP2-2如何在瀏覽器上動態輸出當前日期?<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%><html><head><title>輸出當前日期</title></head><body>你好,ibm-etp!今天是<%java.text.SimpleDateFormatformater=newjava.text.SimpleDateFormat("yyyy年MM月dd日");StringstrCurrentTime=formater.format(newjava.util.Date());%><%=strCurrentTime%></body></html>顯然,無法通過靜態HTML完成這個效果,試一試JSP,看看是否可行運行結果什么是JSPJSP(JavaServerPages)是指:在HTML中嵌入Java腳本語言由應用服務器中的JSP引擎來編譯和執行嵌入的Java腳本語言命令然后將生成的整個頁面信息返回給客戶端JSP頁面數據庫服務器應用服務器編譯、執行客戶端嵌入Java腳本語言1234返回頁面信息JSP頁面組成4-1JSP頁面的元素包括:靜態內容指令表達式小腳本<%Java代碼%><%=Java表達式%>HTML靜態文本以“<%@”開始,以“%>”結束。比如:<%@includefile="

Filename"%>聲明標準動作<%!方法%>以“<jsp:動作名”開始,以“</jsp:動作名>”結束比如:<jsp:includepage="Filename"/>注釋<!--這是注釋,但客戶端可以查看到--><%--這也是注釋,但客戶端不能查看到--%>JSP頁面組成4-2<%@pagelanguage="java"import="java.util.*,java.text.*"contentType="text/html;charset=GBK"pageEncoding="GBK"%><html><head><title>輸出當前日期</title></head><!--這是HTML注釋(客戶端可以看到源代碼)--><%--這是JSP注釋(客戶端不可以看到源代碼)--%><body>你好,IBM-ETP!今天是<%//使用預定格式將日期轉換為字符串SimpleDateFormatformater=newSimpleDateFormat("yyyy年MM月dd日");StringstrCurrentTime=formater.format(newDate());%><%=strCurrentTime%></body></html>指令靜態內容小腳本表達式注釋JSP頁面組成4-3在瀏覽器上觀看運行結果查看網頁源文件可以通過源代碼查看到HTML注釋的內容所有注釋內容都不可見JSP頁面組成4-4合理、詳細的注釋有利于代碼后期的維護和閱讀在JSP文件的編寫過程中,共有三種注釋方法:HTML的注釋方法:<!--html注釋-->JSP注釋標記:<%--JSP注釋--%>在JSP腳本中使用注釋:<%//單行注釋%><%/*多行注釋*/%>缺點:不安全,加大網絡傳輸負擔小結1請編寫一個JSP頁面exercise1.jsp,要求:至少包含三種注釋創建新聞發布系統的JSP頁面5-1回憶第一章內容,請說明開發JSP動態網站的幾個步驟創建Web項目開發步驟設計Web項目的目錄結構編寫代碼

(創建JSP)部署、運行本章將從這里開始,帶領大家創建新聞發布系統的JSP頁面創建新聞發布系統的JSP頁面5-2設計Web項目的目錄結構:創建目錄ch04:存放JSP頁面創建目錄CSS:存放樣式表文件創建目錄images:存放圖片創建新聞發布系統的JSP頁面5-3使用JSP模板向導創建JSP頁面,共有三步:123右鍵點擊“WebRoot”下的“ch04”,從右鍵菜單中選擇:新建→其他在新彈出的窗口中,選擇“Web”下的“JSP”,點擊“下一步”在下一個新彈出的窗口中,輸入文件名index.jsp,點擊“完成”創建新聞發布系統的JSP頁面5-4手工創建JSP頁面,共有兩步:12右鍵點擊“WebRoot”下的“ch04”,選擇:新建→文件在新彈出的窗口中,輸入文件名index.jsp,點擊“完成”創建新聞發布系統的JSP頁面5-5采用你認為最方便的方式,把靜態新聞發布系統的所有頁面轉換為JSP頁面,并部署運行生活中的歡迎頁面通常情況下,訪問某個網站時,我們只需要知道網站的域名就可以了。比如:

現在看到的就是新浪的首頁面如何設置歡迎頁面歡迎頁面,就是web應用的默認訪問頁面在配置文件web.xml中設置歡迎頁面<web-app><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>假定在web應用(news)下存在一個index.jsp頁面,輸入http://localhost:8080/news地址時,web容器會默認調用index.jsp頁面JSP執行過程2-13執行2翻譯編譯1請求響應Web容器處理JSP文件請求需要經過3個階段:翻譯階段:JSP文件會被Web容器中的JSP引擎轉換成Java源碼編譯階段:Java源碼會被編譯成可執行的字節碼執行階段:容器接受了客戶端的請求后,執行編譯成字節碼的JSP文件;處理完請求后,容器把生成的頁面反饋給客戶端進行顯示應用服務器客戶端JSP文件.java.classJSP執行過程2-2執行第二次請求響應第一次請求之后,Web容器可以重用已經編譯好的字節碼文件應用服務器客戶端.class注意:如果對JSP文件進行了修改,Web容器會重新對JSP文件進行翻譯和編譯演示:JSP頁面修改前后的響應速度JSP運行環境Web容器(如:Tomcat)提供JSP引擎,負責JSP文件的執行,提供JSP的運行時環境在Eclipse中部署Web應用,等同于在Web容器中部署Web應用與Eclipse中Web應用的目錄結構一模一樣小結2為什么JSP頁面在第一次請求時會比較慢,而之后對同樣的JSP頁面的請求會非常快?總結<%@pagelanguage="java"contentType="text/html;charset=ISO-8859-1"%><HTML><BODYBGCOLOR="#FFFFFF"><center>歡迎登錄新聞發布系統</center><tableborder="0"align="right"cellpadding="0"cellspacing="0"><tr><tdwidth="614"height="403"><imgsrc="../images/main-1.gif"width="590"height="433"alt="0"></td></tr></table></BODY></HTML>在運行welcome.jsp時,會出現什么現象?如何改正?出現中文亂碼,把字符集改為:GBKWEB-INF文件夾中的內容無法對外發布,把images文件夾拖至WebRoot文件夾下第六章JSP語法之隱式對象

本章主要內容6.1簡介6.2與輸入輸出有關的隱式對象6.3與Servlet有關的隱式對象6.4與錯誤有關的隱式對象6.5與作用域通信有關的隱式對象6.6屬性和范圍6.7總結6.1簡介

JSP隱式對象是Web容器加載的一組類的實例,它不像一般的Java對象那樣用“new”去獲取實例,而是可以直接在JSP頁面使用的對象。JSP提供的隱式對象分為4個主要類別,下表列出了JSP提供的九個隱式對象及其分類。6.2與輸入輸出有關的隱式對象

6.2.1request對象在JSP網頁中,request對象是實現javax.servlet.http.HttpServletRequest接口的,HttpServletRequest接口所提供的方法,可以將它分為四大類:取得請求參數的方法存取和取得屬性的方法取得請求HTTP標頭的方法其他方法,如:取得請求的URL、IP和session等最終要的還是要分清取得請求參數的方法,如下表所示6.2與輸入輸出有關的隱式對象

6.2.1request對象在這里,我們不再贅述每一個方法,如需使用它們的時候,請查看API幫助。6.2與輸入輸出有關的隱式對象

6.2.2response對象

response隱式對象處理JSP生成的響應,然后將響應發送給客戶端。Response對象是實現javax.servlet.http.HttpServletResponse接口。其中常用的方法我們介紹如下三個,其它的方法如果需要請查看API幫助。voidsetHeader(Stringname,Stringvalue);作用是設定標頭。它還有兩個類似的方法voidsetDateHeader()和voidsetIntHeader()。我們后邊介紹。首先我們來看設定頁面的緩存方式。如果是HTTP/1.0,我們通過如下方式設定

response.setHeader("Pragma","no-cache");6.2與輸入輸出有關的隱式對象

6.2.2response對象

如果是HTTP/1.1的情況,我們通過下邊方式來設定。

response.setHeader("Cache-Control","no-cache");

如果我們想讓網頁自動更新,則要用到setIntHeader()方法和“Refresh”標頭,使用方法如下:

response.setIntHeader("Refresh",3);

6.2與輸入輸出有關的隱式對象

6.2.2response對象voidsetContentType(Stringname);作用是設置作為響應生成的內容的類型和字符編碼。voidsendRedirect(Stringname);作用是發送一個響應給瀏覽器,指示其請求另一個URL。下面我們來看一個實例:首先,創建response1.jsp,其中用到了上述方法,并重定向到response2.jsp。response1.jsp的代碼如例所示。

<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <html> <head>6.2與輸入輸出有關的隱式對象

<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>直接跳轉到response2.jsp</title> </head> <body> <% response.setContentType("text/html;charset=UTF-8"); response.sendRedirect("response2.jsp"); %> </body> </html>6.2與輸入輸出有關的隱式對象

6.2.2response對象下面我們來創建response2.jsp。我們在里邊顯示了response1.jsp中設定的ContentType,并設定每5秒畫面自己刷新一次。代碼如例所示。

<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>自刷新</title> </head>6.2與輸入輸出有關的隱式對象

6.2.2response對象

<body> response的content類型為:<%=response.getContentType()%> <br> <% response.setIntHeader("Refresh",5); %> </body> </html>6.2與輸入輸出有關的隱式對象

6.2.2response對象這時,我們看看執行結果,注意底下的刷新條,會不會每5秒刷新一次。如圖。

6.2與輸入輸出有關的隱式對象6.2.3out對象out對象用于向客戶端輸出數據out對象常用方法:print():在頁面中打印出字符串信息<html><body><%out.print("helloACCP");%></body></html>6.3與Servlet有關的隱式對象

6.3.1page對象

page對象代表JSP本身,更準確地說,它代表JSP被轉譯后的Servlet,因此,它可以調用Servlet類所定義的變量和方法。它是java.lang.Object類的一個實例。不過,page很少在JSP中使用,一般使用前面學過的page指令即可。例的page.jsp為我們展示了如何通過page對象獲得Servlet信息。執行結果如圖所示。

<%@pageinfo="這是page對象的例子"language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <html>6.3與Servlet有關的隱式對象

6.3.1page對象

<head> <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>page對象</title> </head> <body> <%=((HttpJspPage)page).getServletInfo()%> </body> </html>6.3與Servlet有關的隱式對象

6.3.1page對象上列運行效果如圖所示:6.3與Servlet有關的隱式對象

6.3.2config對象

config對象存儲Servlet的一些初始信息與page對象一樣很少使用。config對象是javax.servlet.ServletConfig接口的一個實例。下面我們通過一個例子來演示通過config對象來獲得web.xml中設定的Servlet初始參數值6.4與錯誤有關的隱式對象

與錯誤有關的隱式對象只有一個就是exception對象。JSP頁面執行后,會在網頁上顯示內容。如果執行JSP過程中出現錯誤,JSP頁面的執行就會終止。exception對象就是用于處理JSP頁面中的錯誤。在這里我們再舉一個簡單的例子,我們來寫一個JSP來做除數為0的計算,并顯示出錯誤信息。我們先來創建div0.jsp,代碼如例所示。6.4與錯誤有關的隱式對象

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"errorPage="div0exception.jsp"%> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>除數為0的計算</title> </head> <body> <% intcnt=5/0; %> </body> </html>6.4與錯誤有關的隱式對象

現在我們來創建異常處理頁面div0exception.jsp,代碼如例所示。

<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"isErrorPage="true"%> <%@pageimport="java.io.PrintWriter"%> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>除數為0的計算錯誤處理</title> </head> <body>

除數為0錯誤:<%=exception%> <br> <% exception.printStackTrace(newPrintWriter(out)); %> </body> </html>6.4與錯誤有關的隱式對象

注意:作為錯誤處理對象的JSP必須設定page指令中的isErrorPage屬性為“true”。而捕獲錯誤的JSP必須設定page指令中的errorPage屬性為處理錯誤的頁面URL。而且,printStackTrace()函數的參數要為PrintWriter而不是JspWriter。

運行結果如圖所示。當我們遷移到div0.jsp時發生除數為0錯誤,直接跳轉到處理錯誤的div0exception.jsp。

6.5與作用域通信有關的隱式對象

6.5.1session對象session對象用來存儲有關用戶會話的所有信息session對象常用方法:voidsetAttribute(Stringkey,Objectvalue):以鍵/值的方式,將一個對象的值存放到session中ObjectgetAttribute(Stringkey):根據名稱去獲取session中存放對象的值session.setAttribute("name","admin");Stringname=(String)session.getAttribute("name");6.5與作用域通信有關的隱式對象

6.5.1session對象下面我們就來舉一個例子來看看這些方法。sessionfun.jsp代碼如例

<%! publicStringfmt(Datedate){SimpleDateFormatsdf=

newSimpleDateFormat("yyyy/MM/ddHH:mm:ss");

returnsdf.format(date);} %> <%session.setAttribute("user","admin");session.setMaxInactiveInterval(5); %>6.5與作用域通信有關的隱式對象

6.5.1session對象<body>session生成時間:<%=fmt(newDate(session.getCreationTime()))%><br>sessionID:<%=session.getId()%><br>最后發送請求時間:<%=fmt(newDate(session.getLastAccessedTime()))%><br>最大session不活動時間:<%=session.getMaxInactiveInterval()%><br><ahref="showsession.jsp">顯示存放在session中的值</a></body>6.5與作用域通信有關的隱式對象

6.5.1session對象在例中,我們往session中存入key為user值為admin的數據對,然后設定session會在5秒沒有任何操作的情況下失效。并顯示session的ID,生成時間等等的內容。在最下邊,有一個連接遷移到另一個頁面showsession.jsp中顯示session中user:admin的數據對。showsession.jsp代碼如例所示<body>user:<%=session.getAttribute("user")%></body>。6.5與作用域通信有關的隱式對象

執行結果如圖所示。6.5與作用域通信有關的隱式對象

此時,我們點擊“顯示存放在session中的值”鏈接,頁面顯示結果如圖所示。

6.5與作用域通信有關的隱式對象

如果在如圖6.7的頁面中什么操作都不做等5秒以后,再點擊“顯示存放在session中的值”鏈接,將得到如圖6.9的頁面,得到的user值為null,因為session已經過期了。6.5與作用域通信有關的隱式對象

6.5.2application對象

application對象實現javax.servlet.ServletContext接口,它主要功能在于取得或更改Servlet的設定。application對象的生命周期最長,它從服務器啟動開始就存在,知道服務器關閉為止。application類似于系統的“全局變量”,用于實現用戶之間的數據共享application對象的常用方法:voidsetAttribute(Stringkey,Objectvalue):以鍵/值的方式,將一個對象的值存放到application中application.setAttribute("LOGINED_USER",newArrayList());6.5與作用域通信有關的隱式對象

6.5.2application對象ObjectgetAttribute(Stringkey):根據鍵去獲取application中存放對象的值if(application.getAttribute("LOGINED_USER")!=null){ListloginedUsers=(List)application.getAttribute("LOGINED_USER");}6.5與作用域通信有關的隱

溫馨提示

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

評論

0/150

提交評論