版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
Web應用概述URL與URIURL:統(tǒng)一資源定位器URI:統(tǒng)一資源定位符常見HTML標簽表單的處理靜態(tài)文檔與動態(tài)文檔的概念:靜態(tài)文檔是一種以文件的形式存放在服務器端的文檔,客戶發(fā)出對該文檔的請求,服務器返回這個文檔。動態(tài)文檔是指文檔的內(nèi)容可根據(jù)需要動態(tài)生成,又可分為服務器端動態(tài)文檔和客戶端動態(tài)文檔技術。Servlet概念:服務器端小程序,是使用ServletAPI以及相關類編寫的java程序,主要用來擴展web服務器的功能。處理404錯誤:查看給定的路徑名是否正確,查看Servlet類文件是否在classes目錄下,查看web.xml文件內(nèi)容是否正確,查看tomcat是否啟動Servlet技術模型Servlet的API:javax.servlet包,javax.servlet.http包Servlet接口及方法:publicvoidinit(ServletConfigconfig):完成Servlet初始化并準備提供服務。容器傳給該方法一個ServletConfig類型的參數(shù)。publicvoidservice(ServletRequestreq,ServletResponseres)throwServletException,IOException:對每個客戶請求容器調(diào)用一次該方法,它允許Servlet為請求提供響應。publicvoiddestroy()該方法由容器調(diào)用,指示Servlet清除本身,釋放請求的資源并準備結束服務。publicServletConfiggetServletConfig()返回關于Servlet的配置信息,如傳遞給init()方法的參數(shù)。publicStringgetServletInfo()返回關于Servlet的信息,如作者,版本及版權信息。ServleConfig接口作用及方法HttpServlet類:新的service方法,doGet,doPostHttpServletRequest接口及常用方法HttpServletResponse接口及常用方法Servlet的開發(fā)步驟編寫一個Servlet類編譯部署(1)在tomcat的虛擬目錄下,創(chuàng)建Web目錄(2)將編譯好的.class文件復制到Web目錄的WEB-INF\classes目錄(3)修改配置文件WEB-INF\web.xml(4)啟動tomcat運行Servlet的執(zhí)行過程用戶通過單擊超鏈接或提交表單向容器請求訪問Servlet,容器分析這個請求,創(chuàng)建request和response兩個對象容器根據(jù)請求的URL找到正確的Servlet,為這個請求創(chuàng)建一個線程對象(每次請求都創(chuàng)建一個線程)容器調(diào)用Servlet的service方法,把請求和響應對象作為參數(shù)傳遞給該方法調(diào)用Servlet的doGet()或doPost()方法向客戶發(fā)送響應:Servlet使用相應對象獲得輸出流對象,調(diào)用有關方法將響應寫給客戶,響應通過容器發(fā)送給瀏覽器。Servlet的生命周期加載實例化Servlet——初始化Servlet(init)——為客戶提供服務(service)——銷毀Servlet(destroy)分析請求http請求結構:請求行——請求頭——空行——數(shù)據(jù)get方法與post方法的對比publicStringgetParameter(Stringname)publicString[]getParameterValues(Stringname)publicEnumerationgetParameterNames()請求轉發(fā)RequestDispatcherdispatcher=request.getRequestDispatcher(location);Dispatcher.forward(request,response)request.setAttributerequest.getAttribute發(fā)送響應響應結構:狀態(tài)行——響應頭——空行——響應數(shù)據(jù)response.setContentType(“text/html;charset=gb2312”);PrintWriterout=response.getWriter();響應重定向:response.sendRedirect(“URL”);return;響應重定向與請求轉發(fā)的比較:forward()方法轉發(fā)請求是服務器端控制權的轉向,客戶端地址欄中不顯示轉發(fā)后的資源地址。sendRedirect()方法是服務器向瀏覽器發(fā)送一個特殊的響應,它使瀏覽器連接到新的位置,瀏覽器地址欄可看到地址的變化。使用重定向,資源不能位于WEB-INF目錄下。頁面錯誤:200表示請求成功,404表示頁面沒有找到,500表示服務器內(nèi)部錯誤Servlet容器模型Web應用程序的部署(1)在tomcat的虛擬目錄下,創(chuàng)建Web目錄(2)將編譯好的.class文件復制到Web目錄的WEB-INF\classes目錄(3)修改配置文件WEB-INF\web.xml(4)啟動tomcat理解Web應用程序的部署描述文件web.xml下面的代碼展示了在部署描述文件中<servlet>元素的一個典型的使用:<servlet><servlet-name>helloServlet</servlet-name>定義Servlet名稱<servlet-class>com.myserver.HelloServlet指定Servlet類的完整名稱</servlet-class><init-param>向Servlet傳遞的初始化參數(shù),可以定義多個<param-name>email</param-name><param-value>hacker@163.com</param-value></init-param><servlet-mapping>定義一個映射<servlet-name>HelloServlet</servlet-name><url-pattern>/Hello</url-pattern></servlet-mapping><load-on-startup>2</load-on-startup></servlet>ServletConfig得到ServletConfig接口對象的方法:ServletConfigconfig=getServletConfig();覆蓋Servlet的init方法。ServletConfig接口共定義了下面4個方法:publicStringgetInitParameter(Stringname):返回指定名稱的初始化參數(shù)值(是從DD文件中取出)publicEnumerationgetInitParameterNames()publicStringgetServletName():返回DD文件中<servlet-name>的名稱publicServletContextgetServletContext():返回Servlet所在上下文對象ServletContext接口使用RequestDispatcher實現(xiàn)請求轉發(fā)ServletRequest的getRequestDispatcher()方法,可以傳遞一個相對路徑,ServletContext的getRequestDispatcher()方法只能傳遞以“/”開頭的路徑。通過ServletContext對象共享數(shù)據(jù)會話管理會話管理理解會話的基本思想和管理機制了解會話對象HttpSession及常見方法調(diào)用request.getSession獲取HttpSession對象:HttpSessionsession=request.getSession(true);將信息存入會話publicvoidsetAttribute(Stringname,Objectvalue)查找與會話相關聯(lián)的信息publicObjectgetAttribute(Stringname)publicEnumerationgetAttributeNames()publicvoidremoveAttribute(Stringname)使用HttpSession對象通常需要三步:(1)為客戶創(chuàng)建或獲得與請求關聯(lián)的會話對象;(2)在會話對象中添加或刪除名/值對屬性;(3)如果需要可使會話失效。通過Cookie(一小段文字信息)支持會話Cookie類的常用方法:getName、getValue、setValue、setMaxAge和getMaxAge;向客戶端發(fā)送Cookie創(chuàng)建Cookie對象Cookiec=newCookie("username","hacker");
將Cookie放入到HTTP響應中response.addCookie(c)從客戶端讀取CookieCookie[]cookies=request.getCookies();if(cookies!=null){for(inti=0;i<cookies.length;i++){Cookiecookie=cookies[i];if(cookie.getName().equals(cookieName))cookieValue=cookie.getValue();}}URL重寫與隱藏表單域重寫正在重定向的URL調(diào)用encodeRedirectURL()方法response.sendRedirect(
response.encodeRedirectURL(http://localhost/store/catalog)在HTML頁面中,可以使用下面代碼實現(xiàn)隱藏的表單域:<inputtype="hidden"name="session"value="a1234">JSP技術模型JSP基本語法<%@%>JSP指令:page指令、include指令和taglib指令<%!%>JSP聲明:理解<%!intcount=0;%>和<%intcount=0;%>的區(qū)別<%%>JSP小腳本<%=%>JSP表達式<jsp:>JSP動作:jsp標準動作、JSTL中的動作、用戶自定義動作jsp標準動作包括<jsp:forward>、<jsp:include>、<jsp:plugin>、<jsp:useBean>、<jsp:getProperty>、<jsp:setProperty><%----%>JSP注釋JSP頁面生命周期理解JSP的執(zhí)行過程瀏覽器訪問一個jsp頁面,服務器端的web容器將jsp轉換為servlet,并處理執(zhí)行此servlet中的相關內(nèi)容,產(chǎn)生響應結果,然后再由web容器將響應結果返回客戶端瀏覽器。理解JSP頁面轉換理解JSP頁面的生命周期頁面轉換——頁面編譯——加載類——創(chuàng)建實例——調(diào)用jspInit()方法——調(diào)用_jspService()方法——調(diào)用jspDestroy()方法理解page指令屬性page指令用于告訴容器關于JSP頁面的全局屬性,該指令適用于整個轉換單元而不僅僅是它所聲明的頁面。語法格式如下:<%@page[language="java"][extends="package.class"]合法的實現(xiàn)了javax.servlet.jsp.JspPage接口的java類[import="{package.class|package.*},..."]導入在jsp中使用的java類和接口[contentType="mimeType[;charset=characterSet]"|"text/html;charset=ISO-8859-1"]指定輸出類型[session="true|false"]指定jsp是否參加http會話[buffer="none|8kb|sizekb"]指定輸出緩沖區(qū)的大小[autoFlush="true|false"][isThreadSafe="true|false"][info="text"][errorPage="relativeURL"]用相對URL指定另一個jsp頁面來處理錯誤[isErrorPage="true|false"]指定是否要用另一個jsp頁面來處理錯誤%>
JSP隱含變量(內(nèi)置對象)JSP有以下九種內(nèi)置對象,包括:request,請求對象(是HttpServletRequest的隱含變量)session,會話對象(是HttpSession的隱含變量)application,應用程序對象(是ServletContext的隱含變量)page,頁面對象response,響應對象pageContext,頁面上下文對象out,輸出對象config,配置對象exception,例外對象作用域對象應用作用域application:ServletContext:在整個web應用程序有效會話作用域session:HttpSession:在一個用戶會話范圍內(nèi)有效請求作用域request:ServletRequest:在用戶的請求和轉發(fā)的請求內(nèi)有效頁面作用域page:PageContext:只在當前頁面內(nèi)有效Web組件重用與JavaBeans靜態(tài)包含和動態(tài)包含靜態(tài)包含是在JSP頁面轉換階段將另一個文件的內(nèi)容包含到當前JSP文件中產(chǎn)生一個servlet。靜態(tài)包含使用include指令,語法:<%@includefile="relativeURL"%>包含的文件在當前Web應用程序下,可以是任何基于文本的文件,如HTML、JSP、XML文件,甚至是簡單的.txt文件。動態(tài)包含是通過JSP標準動作<jsp:include>實現(xiàn)的,它是在請求時將另一個頁面的輸出包含到主頁面的輸出中。動態(tài)包含使用jsp:include標準動作,其語法如下所示:<jsp:includepage="relativeURL"flush="true"/><jsp:include><%@cincludefile=””%><jsp:includepage=””flush=”true”/>修改了被包含的文件后,需更新源文件修改了被包含的文件后,不需更新源文件包含外部頁面的過程在原JSP頁面被編譯成Servlet時進行包含外部頁面的過程在運行時進行
使用<jsp:forward>動作把請求轉發(fā)到其他組件,然后由轉發(fā)到的組件把響應發(fā)送給客戶該動作的格式為:<jsp:forwardpage="relativeURL"/>page屬性的值為轉發(fā)到的組件的相對URL,它可以使用請求時屬性表達式。它與<jsp:include>動作的不同之處在于,當轉發(fā)到的頁面處理完輸出后,并不將控制轉回主頁面。使用<jsp:forward>動作,主頁面也不能包含任何輸出。JavaBeans及序列化JavaBean就是使用Java語言定義的類,而這種類的設計需要遵循Sun制定的JavaBean規(guī)范文檔中描述的有關約定。在Java模型中,通過JavaBean可以無限擴充Java程序的功能。JavaBean的最大好處是可以實現(xiàn)代碼的重復利用,另外在JSP頁面中使用JavaBean可使代碼更簡潔,也易維護,也可充分利用面向對象語言的特性。在JSP程序中常用JavaBean來封裝業(yè)務邏輯、數(shù)據(jù)庫操作等等,可以很好地實現(xiàn)業(yè)務邏輯和表示邏輯的分離。Javabeans規(guī)范遵循下面3個規(guī)范的Java類作為JavaBean類必須是public的;類必須具有無參數(shù)的public構造方法,JavaBeans類的成員變量一般稱為屬性(property)。對每個屬性訪問權限一般定義為private或protected,而不是定義為public的。注意:屬性名必須以小寫字母開頭。對每個屬性,一般定義兩個public方法,它們分別稱為訪問方法(getXxx)和修改方法(setXxx),允許容器訪問和修改bean的屬性。JavaBean的主要特性是一個Java類有一個無參數(shù)的構造函數(shù)不應該有公開的實例變量對值的獲取采用getXxx和setXxx方法來訪問boolean型屬性,允許用is代替get和set在Servlet中使用JavaBeans通過JavaBeans共享數(shù)據(jù)//創(chuàng)建實例并設置屬性CustomerBeancustomer=newCustomerBean();customer.setCustName(request.getParameter("custName"));customer.setEmail(request.getParameter("email"));customer.setPhone(request.getParameter("phone"));request.setAttribute("customer"customer);getServletContext().getRequestDispatcher("/customer.jsp").forward(request,response);在JSP中使用JavaBeans使用<jsp:useBean><jsp:useBean>動作通過五個屬性來定制該動作的行為:id、scope、class、type、beanName<jsp:useBeanid=”customer”class=”com.model.CustomerBean”scope="session"/>使用<jsp:setProperty><%@pageimport="com.model.CustomerBean"%><jsp:useBeanid="customer"class="com.model.CustomerBean"/><jsp:setPropertyname="customer"property="custName"value=“zxm"/>使用<jsp:getProperty><jsp:getPropertyname="customer"property="email"/>理解MVC設計模式及其開發(fā)步驟理解MVC設計模式Model—代表了數(shù)據(jù)對象,用JavaBeans實現(xiàn)View—用來在屏幕上顯示數(shù)據(jù)對象的當前狀態(tài),是應用程序的外觀,用JSP頁面實現(xiàn)Controller—定義了用戶接口對用戶輸入反應的方式,它處理數(shù)據(jù)對象,用Servlet實現(xiàn)開發(fā)步驟1.定義JavaBeans表示數(shù)據(jù)2.使用Servlet處理請求3.調(diào)用業(yè)務邏輯完成相應功能,填寫JavaBeans對象數(shù)據(jù)4.結果的存儲5.轉發(fā)請求到JSP頁面6.從JavaBeans對象中提取數(shù)據(jù)JDBC數(shù)據(jù)庫訪問JDBC數(shù)據(jù)庫訪問的一般步驟1)加載驅動程序:使用Class類的forName()靜態(tài)方法,如Class.forName("com.mysql.jdbc.Driver");2)建立連接對象:使用DriverManager類的getConnection(),如Stringdburl=jdbc:mysql://localhost:3306/bankConnectionconn=DriverManager.getConnection(dburl,"root","111111");3)創(chuàng)建語句對象:使用Connection接口的不同方法創(chuàng)建,如Statementstmt=conn.createStatement();4)獲得SQL語句的執(zhí)行結果:對于查詢語句,調(diào)用executeQuery(Stringsql)方法,如:Stringsql="SELECT*FROMbooks";ResultSetrst=stmt.executeQuery(sql);while(rst.next()){out.print(rst.getString(1)+"\t");}對于語句如CREATE、ALTER、DROP、INSERT、UPDATE、DELETE等須executeUpdate(Stringsql)方法。5)關閉建立的對象:close()方法釋放資源JDBCAPI:Connection接口、Statement接口、ResultSet接口理解DAO設計模式DAO(DataAccessObject)稱為數(shù)據(jù)訪問對象。DAO設計模式可以在使用數(shù)據(jù)庫的應用程序中實現(xiàn)業(yè)務邏輯和數(shù)據(jù)訪問邏輯分離,從而使應用的維護變得簡單。它通過將數(shù)據(jù)訪問實現(xiàn)(通常使用JDBC技術)封裝在DAO類中,提高應用程序的靈活性。自定義標簽自定義標簽的開發(fā)步驟創(chuàng)建標簽處理類(taghandler);創(chuàng)建標簽庫描述文件(TLD);在JSP文件中導入標簽庫和使用標簽。理解TLD文件<?xmlversion="1.0"encoding="UTF-8"?><taglibversion="2.0"><tlib-version>1.0</tlib-version><uri>http://localhost/sampleLib</uri>
<tag><name>hello2</name><tag-class>sampleLib.HelloTag2</tag-class><body-content>empty</body-content><description>PrintsHellouser!</description><attribute><name>user</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>空標簽、帶屬性標簽和帶標簽體的開發(fā)在JSP頁面要使用自定義標簽,需要通過<taglib>指令聲明自定義標簽的前綴和標簽庫的URI,格
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件質(zhì)量管理課程設計
- 水泵站課程設計cad圖
- 咖啡培訓課程設計
- 2024至2030年中國組合辦公文具盒行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年中國新華參康注射液數(shù)據(jù)監(jiān)測研究報告
- 2024年香辣魚佐料項目可行性研究報告
- 2024年特凈宣紙項目可行性研究報告
- 視頻照片剪輯課程設計
- 集散控制課程設計結論
- 中國風電變槳系統(tǒng)行業(yè)市場深度調(diào)研及競爭格局與投資研究報告(2024-2030版)
- 中小學反恐風險評估報告
- 品牌營銷策略和品牌策略
- 視力矯正商業(yè)計劃書
- 醫(yī)學課件:臨床決策分析
- 幼兒園優(yōu)質(zhì)公開課:中班音樂韻律《打噴嚏的小老鼠》課件
- 質(zhì)量管理體系品質(zhì)保證體系圖
- 人教版(新插圖)三年級上冊數(shù)學 第9課時 用乘除兩步計算 解決-歸總問題 教學課件
- 四班三倒排班表
- 《現(xiàn)代漢語》考試復習題庫及答案
- 13J104《蒸壓加氣混凝土砌塊、板材構造》
- 初中語文七年級上冊《世說新語二則》作業(yè)設計
評論
0/150
提交評論