入職培訓-JAVAWEB編程中級課程_第1頁
入職培訓-JAVAWEB編程中級課程_第2頁
入職培訓-JAVAWEB編程中級課程_第3頁
入職培訓-JAVAWEB編程中級課程_第4頁
入職培訓-JAVAWEB編程中級課程_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

入職培訓-JAVAWEB編程中級課程內(nèi)容概述JavaWeb工程目錄結(jié)構(gòu)Servlet生命周期Filter、Listener自定義Tag標簽MVC框架介紹第二頁,共54頁。JavaWeb工程目錄結(jié)構(gòu)主要說明:src:編譯至WebRoot/WEB-INF/classeslib:運行庫,WEB應用使用的第三方運行jar存放目錄web.xml:web配置文件第三頁,共54頁。JavaWeb工程目錄結(jié)構(gòu)查看Tomcat部署目錄,結(jié)構(gòu)與WebRoot一致第四頁,共54頁。JavaWeb工程目錄結(jié)構(gòu)導出WAR包,結(jié)構(gòu)也與WebRoot一致第五頁,共54頁。web.xml配置web.xml配置第六頁,共54頁。web.xml配置web.xml配置context-param獲取參數(shù)方法javax.servlet.ServletContext.getInitParameter(“…”);<context-param><param-name>log4jConfigLocation</param-name><param-value>/WEB-INF/perties</param-value></context-param>第七頁,共54頁。web.xml配置web.xml配置filter<filter><filter-name>UseTimeFilter</filter-name><filter-class>…</filter-class></filter><filter-mapping><filter-name>UseTimeFilter</filter-name><url-pattern>/download/*</url-pattern></filter-mapping>第八頁,共54頁。web.xml配置web.xml配置Listener<listener><listener-class>…</listener-class></listener>第九頁,共54頁。web.xml配置web.xml配置Servlet<servlet><servlet-name>DownloadServlet</servlet-name><servlet-class>…</servlet-class></servlet><servlet-mapping><servlet-name>DownloadServlet</servlet-name><url-pattern>/download.do</url-pattern></servlet-mapping>第十頁,共54頁。web.xml配置web.xml配置Session超時單位:分鐘-1,代表會話不超時其他數(shù)字代表,多少分鐘后會話超時<session-config><session-timeout>-1</session-timeout></session-config>第十一頁,共54頁。web.xml配置web.xml配置ErrorPage配置error-code錯誤http代碼location跳轉(zhuǎn)路徑<error><error-code>404</error-code><location>/error/404.jsp</location></error>第十二頁,共54頁。Servlet生命周期initdestoryservice第一次使用初始化多次服務服務器關閉銷毀第十三頁,共54頁。Servlet生命周期時序圖第十四頁,共54頁。Servlet生命周期演示代碼privatestaticLoglog=LogFactory.getLog(LifeCycleServlet.class);publicvoiddestroy(){super.destroy();("LifeCycleServletdestroy...");}protectedvoidservice(HttpServletRequestarg0,HttpServletResponsearg1)throwsServletException,IOException{("LifeCycleServletservice...");super.service(arg0,arg1);}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{("LifeCycleServletdoGet...");…}publicvoidinit()throwsServletException{("LifeCycleServletinit...");}第十五頁,共54頁。Servlet生命周期演示代碼日志2012-12-1118:56:16,296INFOhttp-8080-1LifeCycleServlet.java97-LifeCycleServletinit...2012-12-1118:56:16,296INFOhttp-8080-1LifeCycleServlet.java29-LifeCycleServletservice...2012-12-1118:56:16,312INFOhttp-8080-1LifeCycleServlet.java45-LifeCycleServletdoGet...2012-12-1118:56:17,093INFOhttp-8080-1LifeCycleServlet.java29-LifeCycleServletservice...2012-12-1118:56:17,093INFOhttp-8080-1LifeCycleServlet.java45-LifeCycleServletdoGet...2012-12-1118:56:17,734INFOhttp-8080-1LifeCycleServlet.java29-LifeCycleServletservice...2012-12-1118:56:17,734INFOhttp-8080-1LifeCycleServlet.java45-LifeCycleServletdoGet...2012-12-1118:56:21,546INFOmainLifeCycleServlet.java23-LifeCycleServletdestroy...第十六頁,共54頁。JSP與ServletJSP是Servlet技術的擴展JSPJSP引擎.class區(qū)別:JSP有內(nèi)置對象,Servlet沒有JSP可以直接寫html標簽,Servlet需要通過獲取客戶端輸出流寫html標簽第十七頁,共54頁。JSP編譯class實現(xiàn)接口javax.servlet.jsp.HttpJspPage.classjavax.servlet.jsp.JspPagejavax.servlet.Servlet第十八頁,共54頁。JSP編譯class查看第十九頁,共54頁。FilterFilter:過濾器作用訪問資源攔截,權限控制日志記錄動態(tài)轉(zhuǎn)換第二十頁,共54頁。FilterFilterChain:過濾器鏈,由過濾器組成一條鏈第二十一頁,共54頁。Filter使用

1.實現(xiàn)Filter接口init()初始化方法doFilter()過濾器處理方法

destroy()

銷毀方法

2.doFilter()調(diào)用下一過濾器FilterChain.doFilter(request,response);

3.在web.xml注冊這個Filter,以與它將過濾的頁面。第二十二頁,共54頁。FilterHelloWorld1.實現(xiàn)Filter接口publicclassLogFilterimplementsFilter{ publicvoiddestroy(){ System.out.println("LogFilterdestroy"); } publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse, FilterChainchain)throwsIOException,ServletException{ HttpServletRequesthttpRequest=(HttpServletRequest)request; System.out.println("LogFilter:"+httpRequest.getRemoteAddr()+"visit"+httpRequest.getRequestURI()); chain.doFilter(request,response); } publicvoidinit(FilterConfigconfig)throwsServletException{ System.out.println("LogFilterinit"); }}第二十三頁,共54頁。FilterHelloWorld2.web.xml配置Filter<filter><filter-name>LogFilter</filter-name><filter-class>filters.LogFilter</filter-class></filter><filter-mapping><filter-name>LogFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>第二十四頁,共54頁。Filter練習編寫Filter實現(xiàn)以下功能記錄客戶端詳細訪問記錄訪問資源訪問ip訪問時間耗時某些資源允許某些ip訪問保護資源允許配置ip名單允許配置拒絕訪問跳轉(zhuǎn)頁面配置第二十五頁,共54頁。ListenerListener:監(jiān)聽器作用對會話、Servlet上下文進行監(jiān)聽常用監(jiān)聽器:ServletContextListenerServletContextAttributeListenerHttpSessionListenerHttpSessionAttributeListener第二十六頁,共54頁。ServletContextListener對整個Servlet上下文監(jiān)聽(啟動、銷毀)方法說明voidcontextInitialized(ServletContextEventevent)當ServletContext創(chuàng)建的時候,將會調(diào)用這個方法voidcontextDestroyed(ServletContextEventevent)當ServletContext銷毀的時候(例如關閉應用服務器或者重新加載應用),將會調(diào)用這個方法。第二十七頁,共54頁。ServletContextAttributeListener對Servlet上下文屬性的監(jiān)聽方法說明voidattributeAdded(ServletContextAttributeEventevent)ServletContext屬性添加事件voidattributeRemoved(ServletContextAttributeEventevent)ServletContext屬性刪除事件voidattributeReplaced(ServletContextAttributeEventevent)ServletContext屬性修改事件第二十八頁,共54頁。HttpSessionListener對整個Session監(jiān)聽(創(chuàng)建、銷毀)方法說明voidsessionCreated(HttpSessionEventevent)當會話創(chuàng)建之后,將會調(diào)用這個方法voidsessionDestroyed(HttpSessionEventevent)當會話過期之后,將會調(diào)用這個方法。第二十九頁,共54頁。HttpSessionAttributeListener對Session屬性的監(jiān)聽方法說明voidattributeAdded(HttpSessionBindingEventevent)Session屬性添加事件voidattributeRemoved(HttpSessionBindingEventevent)Session屬性刪除事件voidattributeReplaced(HttpSessionBindingEventevent)Session屬性修改事件第三十頁,共54頁。ListenerHelloworld1.新建ServletContextListener實現(xiàn)packagelisteners;publicclassContextListenerimplementsServletContextListener{publicvoidcontextDestroyed(ServletContextEventevent){System.out.println("contextDestroyed()");}publicvoidcontextInitialized(ServletContextEventevent){System.out.println("contextInitialized()");}}第三十一頁,共54頁。ListenerHelloworld2.新建HttpSessionListener接口實現(xiàn)packagelisteners;publicclassSessionListenerimplementsHttpSessionListener{

publicvoidsessionCreated(HttpSessionEventevent){System.out.println("sessionCreated('"+event.getSession().getId()+"')");

}

publicvoidsessionDestroyed(HttpSessionEventevent){System.out.println("sessionDestroyed('"+event.getSession().getId()+"')");

}}第三十二頁,共54頁。ListenerHelloworld3.配置web.xml<listener><listener-class>listeners.ContextListener</listener-class></listener><listener><listener-class>listeners.SessionListener</listener-class></listener>第三十三頁,共54頁。Listener練習編寫<listener><listener-class>listeners.ContextListener</listener-class></listener><listener><listener-class>listeners.SessionListener</listener-class></listener>第三十四頁,共54頁。Listener練習編寫相應Listener實現(xiàn)以下功能查看當前在線用戶數(shù)服務器啟動時間最大在線用戶限制第三十五頁,共54頁。自定義標簽標簽(Tag)標簽是一種XML元素,通過標簽可以使JSP網(wǎng)頁變得簡潔并且易于維護。由于標簽是XML元素,所以它的名稱和屬性都是大小寫敏感的標簽庫描述文件(TagLibraryDescriptor)標簽庫描述文件是一個XML文件,這個文件提供了標簽庫中類和JSP中對標簽引用的映射關系。它是一個配置文件,和web.xml是類似的標簽處理類(TagHandleClass)標簽處理類是一個Java類,這個類繼承了TagSupport或者擴展了SimpleTag接口,通過這個類可以實現(xiàn)自定義JSP標簽的具體功能第三十六頁,共54頁。自定義標簽標簽庫描述文件存放路徑WEB-INF目錄下jar包的META-INF目錄下第三十七頁,共54頁。TagSupport類TagSupport類pageContext屬性,保存頁面對象parent屬性,父標簽常用方法說明doStartTag()JSP容器遇到自定義標簽的起始標志,就會調(diào)用doStartTag()方法。返回值如下:SKIP_BODYEVAL_BODY_INCLUDEdoAfterBody()doStartTag返回EVAL_BODY_INCLUDE,就會調(diào)用doAfterBody()方法,返回值如下:EVAL_BODY_AGAINSKIP_BODYdoEndTag()JSP容器遇到自定義標簽的結(jié)束標志,就會調(diào)用doEndTag()方法,返回值如下:EVAL_PAGESKIP_PAGE第三十八頁,共54頁。TagSupport處理流程doStartTag()doEndTag()doAfterBody()處理標簽之間內(nèi)容EVAL_BODY_INCLUDESKIP_BODYSKIP_BODYEVAL_BODY_AGIN結(jié)束執(zhí)行JSP繼續(xù)執(zhí)行JSPSKIP_PAGEEVAL_PAGE第三十九頁,共54頁。TLDshort-name標簽:描述標簽庫名稱uri標簽:描述引入tld的uri第四十頁,共54頁。TLDtag標簽name:設定Tag的名字;tagclass:設定Tag的處理類;bodycontent:設定標簽的主體(body)內(nèi)容。empty:表示標簽中沒有bodyJSP:表示標簽的body中可以加入JSP程序代碼tagdependent:表示標簽中的內(nèi)容由標簽自己去處理。第四十一頁,共54頁。TLDtag標簽屬性name:屬性名稱required:屬性是否必需的,默認為falsertexprvalue屬性值是否可以為request-time表達式,也就是類似于<%=…%>的表達式。第四十二頁,共54頁。自定義標簽HelloWorld1.新建標簽處理類tags.HelloTag

publicclassHelloTagextendsTagSupport{privateStringmessage="Hello";publicintdoEndTag()throwsJspException{JspWriterout=pageContext.getOut();try{out.print(message);out.print(newSimpleDateFormat("yyyy-MM-ddHH:mm:ss").format(newDate()));out.print("<br/>");}catch(IOExceptione){e.printStackTrace();}returnEVAL_PAGE;}publicStringgetMessage(){returnmessage;}publicvoidsetMessage(Stringmessage){this.message=message;}}第四十三頁,共54頁。自定義標簽HelloWorld2.WEB-INF目錄新建hello.tld描述標簽<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEtaglibPUBLIC"-//SunMicrosystems,Inc.//DTDJSPTagLibrary1.2//EN"""><taglib><tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version><short-name>hello</short-name><uri></uri><tag><name>hello</name><tag-class>tags.HelloTag</tag-class><body-content>JSP</body-content><attribute><name>message</name><required>false</required></attribute></tag></taglib>第四十四頁,共54頁。自定義標簽HelloWorld3.新建JSP頁面引入標簽庫<%@pagelanguage="java"pageEncoding="UTF-8"%><%@taglibprefix="mylib"uri=""%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>自定義標簽測試</title></head><body><mylib:hello></mylib:hello><mylib:hellomessage="xxx"></mylib:hello></body></html>第四十五頁,共54頁。自定義標簽庫練習編寫自定義標簽實現(xiàn)以下功能:顯示當前登錄用戶名稱編寫登錄成功jsp,使用制作的標簽顯示當前登錄用戶名第四十六頁,共54頁。MVC介紹MVC英文即Model-View-Controller,它是目前非常流行的一種軟件設計模式。MVC的設計思想是將應用的輸入、處理和

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論