日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

servlet学习

發(fā)布時(shí)間:2024/4/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 servlet学习 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一直想學(xué)習(xí)java web開(kāi)發(fā),但不知道從何著手,查閱了相關(guān)資料后決定從servlet開(kāi)始學(xué)習(xí)。

一個(gè)最基本的 Java Web 項(xiàng)目所需的 jar 包只需要一個(gè) servlet-api.jar,共有 2 個(gè)包,分別是 javax.servlet 和 javax.servlet.http。

Java Web 項(xiàng)目還需要一個(gè)非常重要的配置文件 web.xml,關(guān)于servlet部分的內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" ????"http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> ????<servlet> ????????<servlet-name>hello_world</servlet-name> ????????<servlet-class>demo.HelloServlet</servlet-class> ????????<load-on-startup>1</load-on-startup> ????</servlet> ????<servlet-mapping> ????????<servlet-name>hello_world</servlet-name> ????????<url-pattern>/hello</url-pattern> ????</servlet-mapping>? </web-app> javax.servlet 和 javax.servlet.http 這兩個(gè)包總共加起來(lái)也不過(guò)是三十四個(gè)接口和類。需要熟悉如下幾個(gè)接口:
  • HttpServlet
  • ServetConfig
  • ServletContext
  • Filter
  • FilterConfig
  • FilterChain
  • RequestDispatcher
  • HttpServletRequest
  • HttpServletResponse
  • HttpSession
  • 一些 Listenser 類
其中,HttpServletRequest 和 HttpServletResponse 尤其需要了解。 servlet應(yīng)用程序體系結(jié)構(gòu)為: 注意:因?yàn)槿萜魇峭ㄟ^(guò)Java的反射API來(lái)創(chuàng)建Servlet實(shí)例,調(diào)用的是Servlet的默認(rèn)構(gòu)造方法(即不帶參數(shù)的構(gòu)造方法),所以我們?cè)诰帉?xiě)Servlet類的時(shí)候,不應(yīng)該提供帶參數(shù)的構(gòu)造方法。 Servlet的生命周期示意圖為: Servlet 規(guī)范里還有另外一個(gè)非常重要而且非常有用的接口那就是 Filter 過(guò)濾器。在 web.xml 中Filter的配置必須放在 Servlet 的前面:譬如, <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" ?????????????????????????"http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> ????<filter> ????????<filter-name>helloFilter</filter-name> ????????<filter-class>demo.HelloFilter</filter-class> ????</filter> ????<filter-mapping> ????????<filter-name>helloFilter</filter-name> ????????<url-pattern>/*</url-pattern> ????</filter-mapping> ????? ????<servlet> ????????<servlet-name>hello_world</servlet-name> ????????<servlet-class>demo.HelloServlet</servlet-class> ????????<load-on-startup>1</load-on-startup> ????</servlet> ????<servlet-mapping> ????????<servlet-name>hello_world</servlet-name> ????????<url-pattern>/hello</url-pattern> ????</servlet-mapping> </web-app>

  Servlet接口有五個(gè)方法,其用法如:public void init(ServletConfig config)throws ServletException
public void service(ServletRequest request,ServletResponse response)throws ServletException,java.io.IOException

public void destroy()
public ServletConfig getServletConfig()

public java.lang.String getServletInfo()

在Servlet的五個(gè)方法中,init,service和destroy是servlet的生命周期方法。在servlet類已經(jīng)初始化之后,init方法將會(huì)被servlet容器所調(diào)用。servlet容器只調(diào)用一次,以此表明servlet已經(jīng)被加載進(jìn)服務(wù)中。init方法必須在servlet可以接受任何請(qǐng)求之前成功運(yùn)行完畢。一個(gè)servlet程序員可以通過(guò)覆蓋這個(gè)方法來(lái)寫(xiě)那些僅僅只要運(yùn)行一次的初始化代碼,例如加載數(shù)據(jù)庫(kù)驅(qū)動(dòng),值初始化等等。在其他情況下,這個(gè)方法通常是留空的。servlet容器為servlet請(qǐng)求調(diào)用它的service方法。servlet容器傳遞一個(gè)javax.servlet.ServletRequest對(duì)象和javax.servlet.ServletResponse對(duì)象。ServletRequest對(duì)象包括客戶端的HTTP請(qǐng)求信息,而ServletResponse對(duì)象封裝servlet的響應(yīng)。在servlet的生命周期中,service方法將會(huì)給調(diào)用多次。當(dāng)從服務(wù)中移除一個(gè)servlet實(shí)例的時(shí)候,servlet容器調(diào)用destroy方法。這通常發(fā)生在servlet容器正在被關(guān)閉或者servlet容器需要一些空閑內(nèi)存的時(shí)候。僅僅在所有servlet線程的service方法已經(jīng)退出或者超時(shí)淘汰的時(shí)候,這個(gè)方法才被調(diào)用。service方法從ServletResponse對(duì)象獲得java.io.PrintWriter實(shí)例,并發(fā)送字符串到瀏覽器。

轉(zhuǎn)載于:https://www.cnblogs.com/fangfangJY/p/3867948.html

超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的servlet学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。