![dayjavaweb之文件和課件so easy系列servlet教程_第1頁](http://file4.renrendoc.com/view/3e979b7efd1ed450858a0f15c1d65721/3e979b7efd1ed450858a0f15c1d657211.gif)
![dayjavaweb之文件和課件so easy系列servlet教程_第2頁](http://file4.renrendoc.com/view/3e979b7efd1ed450858a0f15c1d65721/3e979b7efd1ed450858a0f15c1d657212.gif)
![dayjavaweb之文件和課件so easy系列servlet教程_第3頁](http://file4.renrendoc.com/view/3e979b7efd1ed450858a0f15c1d65721/3e979b7efd1ed450858a0f15c1d657213.gif)
![dayjavaweb之文件和課件so easy系列servlet教程_第4頁](http://file4.renrendoc.com/view/3e979b7efd1ed450858a0f15c1d65721/3e979b7efd1ed450858a0f15c1d657214.gif)
![dayjavaweb之文件和課件so easy系列servlet教程_第5頁](http://file4.renrendoc.com/view/3e979b7efd1ed450858a0f15c1d65721/3e979b7efd1ed450858a0f15c1d657215.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
SoEasy列ServletServlet介1.1.百ServletJavaappletJavaapplet用Java編程語言實現(xiàn)。在通信量大的服務器上,Javaservlet的優(yōu)點在于它們的執(zhí)行速度更快于CGI1.2.百AppletServletServletServletServletHTTPWebServletJavaSoftJavaWebServerJavaServlet什么Servlet的某些方法來完成整個處理過程的。ServletTomcatServlet容器Servlet是不用程序指定調用的。Web程序報錯。JavaEETomcatServlet\JSP版JavaEE版Java運行環(huán)Servlet2.3\JSPJavaEEJDKServlet2.4\JSPJavaEEJDKServlet2.5\JSPJavaEEJDKServlet3.0\JSPJavaEEJDK如果使用Tomcat服務器的高版本時,可以向下兼容Servlet\JSP、JavaEE及Java運行環(huán)境的版本。Servlet2.5JavaEEJavaEE5.0在Tomcat服務器與JavaEE中,分別提供了有關Servlet的幫助文檔信息。如果在Tomcat服務器中查看Servlet的相關信息在Tomcat服務器的安裝中,webapps 中的docs API幫助文檔。JavaEE提供了幫助文檔,TomcatServlet2.5版本的幫助文檔。編寫一Eclipse創(chuàng)建開發(fā)工具Eclipse或MyEclipse本身提供了創(chuàng)建Servlet的功能下面我們首先利用開發(fā)工具來創(chuàng)建Servlet,具體步驟如下:Web在Web工程的 下,鼠標“New”選項,選擇“Servlet”選項ServletServletServletServlet的包名、名稱及相關方法后,點擊“NextServletweb.xmlServlet/JSPClassName:ServletServlet/JSPName:ServletServlet/JSPMapURL:配置Servlet的路徑,客戶端通過該路徑ServletFilePathofweb.xmlweb.xmlDisyName:顯示名稱配置完畢之后,點擊“FinishServlet創(chuàng)建完成之后,當前Web工程的變化是在 下多了一個Servlet的Java文件,在WEB-web.xmlServlet相關配置信息。ServletJava文件內(nèi)容:publicclassFirstServletextendsHttpServletpublicvoidinit()throwsServletExceptionpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{PrintWriterout=response.getWriter();out.println("<!DOCTYPEHTML>");out.println("<HEAD><TITLE>AServlet</TITLE></HEAD>");out.println("<BODY>");out.println(" Thisis"+this.getClass()+",usingtheGETout.println("</BODY>");}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{PrintWriterout=response.getWriter();out.println("<!DOCTYPEHTML>");out.println("<HEAD><TITLE>AServlet</TITLE></HEAD>");out.println("<BODY>");out.println(" Thisis"+this.getClass()+",usingtheGETout.println("</BODY>");}publicvoiddestroy()}Webweb.xml<?xmlversion="1.0"encoding="UTF-<web-app <description>ThisisthedescriptionofmyJ2EE y-name>Thisisthedis ynameofmyJ2EE 將當前Web應用程序發(fā)布到Tomcat服務器,并啟動Tomcat服務器運試當前創(chuàng)建的EclipseMyEclipseWebTomcatTomcat,打開瀏覽器在地址欄中輸入servlet/servlet/FirstServlet服務器Servlet內(nèi)容。,Servlet手動編寫一個ServletHttpServletServletJavapublicpublicclassSecondServletextendsHttpServlet{publicvoidinit(throwsServletException}protectedvoiddoGet(HttpServletRequestreq,HttpServletResponsethrowsServletExceptionIOException}protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{System.out.println("這是doPost()方法}publicvoidpublicvoiddestroy(){}}web.xml<?<?xmlversion="1.0"encoding="UTF-<web-app"h :用于配置Servlet的名稱和完整路徑servlet- :用于為對應的Servlet設置名稱servlet- :用于設置對應的Servlet的完整路徑servlet-servlet-url-:用于配置客戶端請求路徑:用于設置對應使用的Servlet名稱:路徑相對路徑絕對路徑 <<<將當前Web應用程序發(fā)布到Tomcat服務器,并啟動Tomcat服務器運試當前創(chuàng)建的EclipseMyEclipseWebTomcatTomcat打開瀏覽器,在地址欄中輸入servlet/servlet/SecondServlet,服Servlet內(nèi)容。EclipseMyEclipseconsoleServlet的繼承Method req, CalledbytheMethod req, Calledbytheserver(viatheservicemethod)toallowaservlettohandleaGET req, Calledbytheserver(viatheservicemethod)toallowaservlettohandleaPOST req, ReceivesstandardHTTPrequestsfromthepublicservicemethodanddispatchesthemtothedoXXXmethodsdefinedinthisclass. req, requeststotheprotectedserviceMethodCalledbytheservletcontainertoindicatetoaservletthattheservletisbeingtakenoutAconveniencemethodwhichcanbeoverriddensothatthere'snoneedtoMethodCalledbytheservletcontainertoindicatetoaservletthattheservletisbeingtakenoutAconveniencemethodwhichcanbeoverriddensothatthere'snoneedto req, CalledbytheservletcontainertoallowtheservlettorespondtoaMethodCalledbytheservletMethodCalledbytheservletcontainertoindicatetoaservletthattheservletisbeingtakenoutReturnsaServletConfigobject,whichcontainsinitializationandstartupparametersthisReturnsinformationabouttheservlet,suchasauthor,version,and Calledbytheservletcontainertoindicatetoaservletthattheservletisbeingced req, Calledbytheservletcontainertoallowtheservlettorespondtoa所以,initdestroyServlet接口提供的方法。通過上述的查找,我們已經(jīng)很清晰的知道Servlet的繼承關系,具體如下圖:Servlet工作流利用Servlet完成的Web應用的實際工作流程是通過Tomcat服務器發(fā)布服務客戶端與服務器端Http協(xié)議完成的。具體工作流程如下:TomcatServletWebweb.xmlServletServletTomcatServlet容器向客戶端瀏覽器進行響應。Servlet具體的工作流程。Servlet注意事值得注意的是Servlet內(nèi)容是屬于JavaEE內(nèi)容和使用JavaSE內(nèi)容一樣都是需要引入JAR包的。javaee.jarServlet的所有內(nèi)容。WebTomcat服務器的時候,發(fā)現(xiàn)對應的中并沒有javaee.jar包。JARTomcatServlet運行所需要的環(huán)境。在Tomcat服務器的安裝 中的lib 供了Servlet運行所需的環(huán)境。Servlet 中的 創(chuàng)建Web工程名稱 結構Servlet在對應Web工 中的web.xml進行配置深入掌Servlet的生命周一般情況下,自定義Servlet都是繼承HttpServlet。但通過HttpServlet的繼承鏈,我們知道HttpServletServletServletMethodCalledbytheservletcontainertoindicatetoaservletthattheservletisbeingtakenoutReturnsaServletConfigobject,whichcontainsinitializationandstartupparametersthisReturnsinformationabouttheservlet,suchasauthor,version,and Calledbytheservletcontainertoindicatetoaservletthattheservletisbeingced req, Calledbytheservletcontainertoallowtheservlettorespondtoa上述所有方法中,init()、service()destroy()Servlet的生命周期。下面我們分別討論一init()init()Servletinit()方法被正確執(zhí)行。ServletServletdestroy()Servlet實destroy()ServletServletServletpublicpublicclassLifeServletimplementsServletpublicSystem.out.println("這里創(chuàng)建了一個Servlet實例對象}publicvoidinit(ServletConfigconfigthrowsServletException}publicvoidservice(ServletRequestreq,ServletResponsethrowsServletExceptionIOException}publicvoiddestroy(){}publicServletConfiggetServletConfig()return}publicStringgetServletInfo()return}}web.xmlServlet<?<?xmlversion="1.0"encoding="UTF-<web-app" 九月12,20148:00:41下午org.apache.catalina.core.AprLifecycleListenerINFO:LoadedAPRbasedApacheTomcatNativelibrary1.1.31usingAPRversion九月12,20148:00:41下午org.apache.catalina.core.AprLifecycleListenerINFO:APRcapabilities:IPv6[true],sendfile[true],acceptfilters[false],random九月12,20148:00:42下午org.apache.catalina.core.AprLifecycleListenerinitializeSSLINFO:OpenSSLsuccessfullyinitialized(OpenSSL1.0.1h5Jun2014)九月12,20148:00:42下午org.apache.coyote. ProtocolinitINFO:InitializingProtocolHandler["http-apr-8080"]九月12,20148:00:42下午org.apache.coyote. ProtocolinitINFO:InitializingProtocolHandler["ajp-apr-8009"]九月12,20148:00:42下午org.apache.catalina.startup.CatalinaloadINFO:Initializationprocessedin1417ms九月12,20148:00:42下午org.apache.catalina.core.StandardServicestartInternalINFO:StartingserviceCatalina九月12,20148:00:42下午org.apache.catalina.core.StandardEnginestartInternalINFO:StartingServletEngine:ApacheTomcat/7.0.55九月12,20148:00:43下午org.apache.catalina.startup.HostConfigINFO:DeployingwebapplicationdirectoryC:\Tools\apache-tomcat-九月12,20148:00:43下午org.apache.catalina.startup.HostConfigINFO:DeploymentofwebapplicationdirectoryC:\Tools\apache-tomcat-7.0.55\webapps\08_servlethasfinishedin377ms九月12,20148:00:44下午org.apache.catalina.startup.CatalinaINFO:Serverstartupin1766ServletServletServletservice()方法來處理請求。第二次向Servletservice()Servletinit()方法。在停止Tomcat服務器時,Servletdestroy()方法被調用,釋放所使用的資源。Servlet的線程安在Servlet的整個生命周期中構造方法只被執(zhí)行一次也就是說Servlet的整個生命周期中,ServletServlet是單例多線程的,可能會引起線程安全問題。所謂線程安全就是一個Servlet實例對象會同時處理多個請求這樣的Servlet工作效率的確很高。Servlet中包含成員變量的話,可能一個線程對該成員變量進行寫操作,而另一個線程對該成Servlet不能創(chuàng)建成員變量。服務器啟動創(chuàng)建創(chuàng)建一個Servlet實例對象如果可以在Tomcat服務器啟動時進行創(chuàng)建實例對象并完成初始化工作,service()方法處理請求邏輯即可。web.xml<?<?xmlversion="1.0"encoding="UTF-<web-app" load-on- :配置當前Servlet 中的數(shù)字,表示級別(0-9級),一般設置為0即可 <<<TomcatServlet實url-pattern的三種配在web.xml配置文件中配置有關Servlet的時候,<url-pattern>是用于配置當前Servlet的路徑,也就是說,客戶端瀏覽器<url-pattern>配置的路徑才能對應Servlet內(nèi)容。關于路徑的配置方式其實有三種方式*問路徑為匹配:是以“/”開始,以“/*”結尾的,例如:/firstServlet/*,表示路徑路徑下任意內(nèi)容。以多個不同路徑的。上述三種配置路徑方式具有優(yōu)先級:完全路徑匹配-> 匹配->擴展名匹配。Servlet1Servlet2Servlet3Servlet4/abca.html/abc/*/abc/*”和“/abc/*”和“/*”和“/*”和“如果客戶端瀏覽器請求的路徑是錯誤時,頁面會顯示404錯誤內(nèi)容。這是因為所有發(fā)布到Tomcat服務器的Web應用程序的web.xmlTomcat服務器安裝中conf中的web.xml文 相對路徑與絕對路個頁面來Servlet應該怎么樣呢?下面我們來看一看:在Web工程中的WebRoot “html, 新的HTML頁面。<!DOCTYPE<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv=" <metahttp-equiv="description"content="thisismy<metahttp-equiv="content-type"content="text/html;<h1>相對路 <ahref="">相對路徑<h1>絕對路徑<ahref="">絕對路徑在Web工程中的 下,創(chuàng)建一個新的HTML頁面<!DOCTYPE<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-"<metahttp-equiv="description"content="thisismy<metahttp-equiv="content-type"content="text/html;<h1>相對路 <ahref="">相對路 <h1>絕對路 <ahref="">絕對路 WebServletpublicpublicclassPathServletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{到}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,}}Webweb.xml<?<?xmlversion="1.0"encoding="UTF-<web-app" <<<打開瀏覽器,分別01.html、02.html和PathServlet 01.html的路徑:servlet/html/01.html。 02.html的路徑:servlet/02.html。 PathServlet的路徑:servlet/pathServlet。根據(jù)上述的路徑,可以知道在01.html和02.html頁面中,通過絕對路徑在01.html和02.html頁面中,通過相對路徑PathServlet是不同的在01.html頁面中利用相對路徑PathServlet應該是../pathServlet。原因是是在01.html頁面的父 中<!DOCTYPE<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv=" <metahttp-equiv="description"content="thisismy<metahttp-equiv="content-type"content="text/html;<h1>相對路徑<ahref="../pathServlet">相對路徑<h1>絕對路 <<a">在01.html頁面中利用相對路徑PathServlet應該是./pathServlet或直接名pathServlet。原因是pathServlet與02.html頁面處在同一級別 中<!DOCTYPE<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv=" <metahttp-equiv="description"content="thisismy<metahttp-equiv="content-type"content="text/html;<h1>相對路徑<ahref="pathServlet">相對路 <h1>絕對路徑<h1>絕對路<a">絕對路絕對路徑:就是無論當前資源在什么位置,都能通過當前資源到目標資源相對路徑:就是判斷當前資源與目標資源的相對位置,找出相對當前資源可以到目標資研究掌HttpServlet概在大多數(shù)的Web應用程序中,客戶端都是通過Http協(xié)議去服務器端的資源,而我們編寫的司在javax.servlet.http包中提供了一個抽象類HttpServlet,它繼承于GenericServlet,用于創(chuàng)建適合基HttpWebServlet。 classHttpServletextendsGenericServletHttpServletMethod req, req, Calledbytheserver(viatheservicemethod)toallowaservlettohandleaGET req, ReceivesanHTTPHEADrequestfromtheprotectedservicemethodandhandles req, Calledbytheserver(viatheservicemethod)toallowaservlettohandlea req, Calledbytheserver(viatheservicemethod)toallowaservlettohandleaPOST req, Calledbytheserver(viatheservicemethod)toallowaservlettohandleaPUT req, Calledbytheserver(viatheservicemethod)toallowaservlettohandleaTRACE ReturnsthetimetheHttpServletRequestobjectwaslastmodified,inmillisecondssincemidnightJanuary1,1970GMT. req, ReceivesstandardHTTPrequestsfromthepublicservicemethodanddispatchesthemtothedoXXXmethodsdefinedinthisclass. req, requeststotheprotectedserviceHttpServlet重寫的service()方HttpServletservice() classHttpServletextendsGenericServlet{publicvoidservice(ServletRequestreq,ServletResponseres)throwsServletException,IOException{HttpServletRequestrequest;HttpServletResponsetryrequest=(HttpServletRequest)req;response=(HttpServletResponse)res;}catch(ClassCastExceptione)thrownewServletException("non-HTTPrequestor}service(request,}protectedvoidservice(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{Stringmethod=if(method.equals(METHOD_GET))longlastModified=getLastModified(req);maybeSetLastModified(resp,lastModified);doGet(req,resp);}elseif(method.equals(METHOD_HEAD)){longlastModified=getLastModified(req);maybeSetLastModified(resp,lastModified);doHead(req,resp);}elseif(method.equals(METHOD_POST)){doPost(req,resp);}elseif(method.equals(METHOD_PUT)){doPut(req,resp);}elseif(method.equals(METHOD_DELETE)){doDelete(req,resp);}elseif(method.equals(METHOD_OPTIONS)){}}elseif(method.equals(METHOD_TRACE)){}elseStringerrMsgObject[]errArgs=newObject[1];errArgs[0]=method;errMsg=MessageFormat.format(errMsg,errArgs);}}}通過查看HttpServletservice()方法是GenericServlet類中的service()方法,對客戶端的請求進行處理。在第二個service()針對Http1.1協(xié)議中定義的7種請求方式GetPostHeadPutDelete、TraceOptions7種處理方法。7HttpServlet類中的service()ServletHttpServlet對象的請求時,調用該對service()HttpServletRequestHttpServletResponse,然后service()方法。service()Http請求方法的名字,然后根據(jù)請求方法的類型,調用響doXXX()方法。因此,我們在自定義Servlet繼承于HttpServlet的時候,通常不需要重寫service()方法,只需重寫doXXX()方法即可。七種請求處理方HttpServletHttp1.17Get、Post、Head、Put、Delete、TraceOptions7種處理方法:protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,protectedvoiddoHead(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,protectedvoiddoPut(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,protectedvoiddoDelete(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,protectedvoiddoTrace(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,protectedvoiddoOptions(HttpServletRequestreq,HttpServletResponseresp)throws要重寫doTrace()和doOptions()方法而對于其他的5種請求處理方法,HttpServlet類提供的實現(xiàn)都是返回Http錯誤。對于Http1.0的客戶端請求,這些方法返回的狀態(tài)碼為400,表示客戶端發(fā)送的請求寫doGet()和doPost()兩個請求處理方法。其中doGet()方法用來處理Get方式的請求,doPost()方法用Post方式的請求,下面我們通過一個案例來看一看:HTML<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<metahttp-equiv="content-type"content="text/html;<h1>GET方式請求<formid="userinfo"method="get"用戶名:<inputtype="textid="username<inputtype="submitid="submitvalue="提交<h1>POST方式請求<formid="userinfo"method="post"用戶名:<inputtype="textid="username<inputtype="submitid="submitvalue="提交ServletpublicpublicclassThreeServletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{System.out.println("這是GET方式發(fā)送的請求,Servlet使用doGet()方法來理}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{System.out.println("這是POST方式發(fā)送的請求,Servlet使用doPost()方法來理}}web.xml<?<?xmlversion="1.0"encoding="UTF-<web-app" <<<打開瀏覽器,在地址欄中輸入servlet/index.html利用GET方式發(fā)送請求,控制臺會打印doGet()方法的內(nèi)容。利用POST方式發(fā)送請求,控制臺會doPost()方法的內(nèi)容。RequestHttpServlet提供的service()方法與7HttpServletRequest繼承于ServletRequest,是用于處理Http協(xié)議中的請求,一個是HttpServletResponse繼承于ServletResponseHttp協(xié)議中的響應。HttpServletRequestHttpServletResponse研究掌GenericServlet概如果我們直接通過實現(xiàn)Servlet接口來編寫一個Servlet類,就需要實現(xiàn)Servlet接口定義的5種方Servletjavax.servletGenericServlet,該類提供了除ServletServletServletConfig接口。 classGenericServletimplementsServlet,GenericServletMethodCalledbytheservletcontainertoindicatetoaservletthattheservletisbeingtakenoutgReturnsthisservlet'sServletConfigReturnsareferencetotheServletContextinwhichthisservletisAconveniencemethodwhichcanbeoverriddensothatthere'snoneedto Calledbytheservletcontainertoindicatetoaservletthattheservletisbeingced req, Calledbytheservletcontainertoallowtheservlettorespondtoa重寫的init()方ServletGenericServletGenericServletinit()publicvoidinit(ServletConfigconfig)throwspublicvoidinit()throwstransientinit()方法。GenericServletSerlvetinit()方ServletConfig對javax.servletServletConfig接口。ServletServletConfigServlet初SerlvetWebweb.xmlServlet<?xmlversion="1.0"encoding="UTF-<web-app <description>ThisisthedescriptionofmyJ2EE y-name>Thisisthedis ynameofmyJ2EE GenericServletinit(ServletConfigconfig)ServletConfigpublicpublicclassConfigServletextendsGenericServletprivateServletConfigpublicvoidinit(ServletConfigconfig)throwsServletExceptionthis.config=}publicvoidservice(ServletRequestreq,ServletResponsethrowsServletException,IOException}}ServletConfigServletConfigservletConfig=ServletConfigMethod ReturnsaStringcontainingthevalueofthenamedinitializationparameter,ornulliftheparameterdoesnotexist.Returnsthenamesoftheservlet'sinitializationparametersasanEnumerationStringobjects,oranemptyEnumerationiftheservlethasnoinitializationtReturnsareferencetotheServletContextinwhichthecallerisReturnsthenameofthisservletgetServletName()web.xmlServletServletConfiggetServletName()publicpublicvoidservice(ServletRequestreq,ServletResponsethrowsthrowsServletException,IOException{ServletConfigservletConfig=getServletConfig();StringservletName=servletConfig.getServletName();}ConfigServletnull值。web.xmlServlet<?<?xmlversion="1.0"encoding="UTF-<web-app" Servletservice()publicpublicvoidservice(ServletRequestreq,ServletResponsethrowsServletException,IOException{ServletConfigservletConfig=getServletConfig();Stringname=servletConfig.getInitParameter("name");Stringblog=servletConfig.getInitParameter("blog");System.out.println(name+"'sblogis"+blog);}運行Web應用程序,在控制臺中打印“jyl'sblogis Enumeration是 tor的前身,用法與 tor一致publicpublicvoidservice(ServletRequestreq,ServletResponsethrowsServletException,IOException{ServletConfigservletConfig=getServletConfig();Enumerationenumeration=while(enumeration.hasMoreElements())Stringelement=(String)enumeration.nex Stringvalue=servletConfig.getInitParameter(element);System.out.println(element+":"+value);}}Webname:jylblog:http://wServletConfigstruts1ServletConfig<!--<!--StandardActionServletConfiguration(withdebugging)--<servlet-name>action</servlet-<servlet-class>org.apache.struts.action.ActionServlet</servlet-<init-<param-name>config</param-<param-/WEB-INF/struts-/WEB-INF/struts-config-</param-</init-<load-on-startup>2</load-on-<!--StandardActionServlet --<servlet- <servlet-name>action</servlet-<url-pattern>*.do</url-</servlet- ServletContext對ServletContext概ServletContextServletWebServletContext象,該對象是Web應用程序的全局對象或者上下文。Tomcat服務器在啟動時,會自動創(chuàng)建一個ServletContext對象,ServletContextWeb應用中共享數(shù)據(jù)資源。ServletContextMethod Returnstheservletcontainerattributewiththegivenname,ornullifthereisnoattributebythatname.ReturnsanEnumerationcontainingtheattributenamesavailablewithinthis ReturnsaStringcontainingthevalueofthenamedcontext-wideinitializationparameter,ornulliftheparameterdoesnotexist.Returnsthenamesofthecontext'sinitializationparametersasanEnumerationStringobjects,oranemptyEnumerationifthecontexthasnoinitialization ReturnstheMIMEtypeofthespecifiedfile,ornulliftheMIMEtypeisnot ReturnsaStringcontainingtherealpathforagivenvirtualReturnsthenameofthiswebapplicationcorrespondingtothisServletContextspecifiedinthedeploymentdescriptorforthiswebapplicationbythedisy-nameDeprecated.AsofJavaServletAPI2.1,withnore Writesthespecifiedmessagetoaservletlogfile,usuallyanevent Removestheattributewiththegivennamefromtheservlet name, BindsanobjecttoagivenattributenameinthisservletServletServletContext通過繼承GenericServlet類或HttpServlet類,調用GenericServlet類或HttpServlet類的ServletServletContextpublicpublicclassAServletextendsGenericServlet{publicvoidservice(ServletRequestreq,ServletResponsethrowsServletException,IOException{ServletConfigconfig=getServletConfig();ServletContextcontext1=config.getServletContext();ServletContextcontext2=getServletContext();context2.log("這是通過繼承GenericServlet類獲取到的ServletContext對象}}web.xmlServlet<?<?xmlversion="1.0"encoding="UTF-<web-app" ServletContextlog(Stirngmsg)配置全局初始化參在web.xml<init-param>Servlet是無權限當前Servlet下配置的初始化參數(shù)的。而可以使用ServletContext在web.xml文件中配置全局初始化參數(shù),這樣當前Web應用程序中的所有Servlet都可以。<?xmlversion="1.0"encoding="UTF-<web-app ServletServletContextpublicpublicclassBServletextendsGenericServlet{publicvoidservice(ServletRequestreq,ServletResponsethrowsServletException,IOException{ServletContextcontext=getServletContext();Stringweixin=context.getInitParameter("weixin");}}打開瀏覽器,在地址欄中分別輸入servlet/servlet/AServlet和servlet/servlet/BServlet,在控制臺打印相關信息。ervltervltCottInitaamerStringe)ervltCottInitaamerName方法獲取所有全局初始化參數(shù)的名稱。ServletContextgetMineType(Stringfile)MIME類publicpublicclassBServletextendsGenericServlet{publicvoidservice(ServletRequestreq,ServletResponsethrowsServletException,IOException{ServletContextcontext=getServletContext();Stringhtml=context.getMimeType("1.html");Stringcss=context.getMimeType("2.css");Stringjavascript=context.getMimeType("3.js");System.out.println("HTML的文件類型為"+html+CSS的文件類型為"+css+",}}HTMLHTML的擴展名為text/htmlCSS的擴展名為text/cssjavascript的擴展名為ServletContext對象的getMineType(Stringfile)方自動Tomcat安 中 中web.xml<?<?xmlversion="1.0"encoding="UTF-<web-app" > Servlet共享數(shù)在同一個Web應用程序中,多個Servlet之間可以共享ServletContext對象中的數(shù)據(jù)信息。主要是通過ServletContext對象的setAttribute(Stringname,Objectobject)方法和getAttribute(Stringname)方法創(chuàng)建一個VisitServlet用來獲取次數(shù),并在ServletContext對象中publicclassVisitServletextendsHttpServlet{publicvoidinit()throwsServletException{ServletContextcontext=getServletContext();context.setAttribute("times",0);}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ServletContextcontext=inttimes=(Integer)context.getAttribute("times");times++;context.setAttribute("times",}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,}}創(chuàng)建一個ShowTimeServlet用來顯示次數(shù)publicpublicclassShowTimeServletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ServletContextcontext=inttimes=PrintWriterout=response.getWriter(); }publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,}}web.xmlSe
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年01月中共許昌市委政策研究室所屬事業(yè)單位公開招聘工作人員1名筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 未來職場現(xiàn)代服務業(yè)的人才需求與培養(yǎng)方向
- 信息技術練習題+參考答案
- 家用清潔電器的品牌建設與市場拓展考核試卷
- 環(huán)保理念下的辦公室設計與布置
- 孤殘兒童庇護服務社會資源配置與優(yōu)化考核試卷
- 現(xiàn)代職業(yè)教育中德育教育的現(xiàn)狀與未來
- 2025-2030年戶外運動安全培訓企業(yè)制定與實施新質生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年新能源汽車充電站品牌行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年拳擊服裝定制品牌行業(yè)跨境出海戰(zhàn)略研究報告
- 蘇北四市(徐州、宿遷、淮安、連云港)2025屆高三第一次調研考試(一模)生物試卷(含答案)
- 監(jiān)察部部長崗位職責
- 山西省太原市杏花嶺區(qū)年三年級數(shù)學第一學期期末考試模擬試題含解析
- 《農(nóng)機化促進法解讀》課件
- 最高法院示范文本發(fā)布版3.4民事起訴狀答辯狀示范文本
- 2023-2024學年度上期七年級英語期末試題
- 2024年燃氣輪機值班員技能鑒定理論知識考試題庫-下(多選、判斷題)
- 交通法規(guī)課件
- (優(yōu)化版)高中地理新課程標準【2024年修訂版】
- 《Python程序設計》課件-1:Python簡介與應用領域
- 各類心理量表大全
評論
0/150
提交評論