當前位置:編程學習大全網 - 源碼下載 - 什麽是servlet?

什麽是servlet?

在壹個JavaWeb項目中,處理請求和發送響應的過程是由壹個叫做Servlet的程序來完成的,Servlet是實現動態頁面的衍生品。

簡單來說:servlet實際上是根據Servlet開發的java類,Servlet由服務器調用,運行在服務器端。

壹張圖描述了B/S中Servler的作用:

2.Tomcat和Servlet之間的關系

Tomcat是壹個Web應用服務器和壹個Servlet/JSP容器。Tomcat作為壹個Servlet容器,負責處理客戶請求,將請求發送給Servlet,並將Servlet的響應發送回客戶。Servlet是運行在支持Java語言的服務器上的組件。

Servlet最常見的用途是擴展Java Web server的功能,提供壹個非常安全、便攜、易用的CGI替代品。

從Http協議中的請求和響應可以知道,瀏覽器發出的請求是請求文本,瀏覽器收到的也應該是響應文本。但是上圖中,我們不知道它是怎麽變的,只知道瀏覽器發出的請求也是請求,我們回復的時候用的是響應。忽略細節,現在就來探究壹下。

①: Tomcat接收並解析Http請求文本,然後封裝成壹個HttpServletrequest對象。所有的Http頭數據讀取都可以通過Request對象調用相應的方法進行查詢。

②:同時,Tomcat將響應信息封裝為HttpServletresponse類型的響應對象。通過設置response屬性,可以控制輸出到瀏覽器的內容,然後將響應交給Tomcat,Tomcat會將其轉換為響應文本格式並發送給瀏覽器。

Java servlet API是servlet容器(tomcat)和Servlet之間的接口,定義了Servlet的各種方法,也定義了Servlet容器發送給Servlet的對象類,其中最重要的是ServletRequest和ServletResponse。所以我們在編寫Servlet的時候,需要實現Servlet接口,按照它的規範來操作。

3.servlet接口的主要方法

Servlet接口有三種主要方法:

Init()方法:它只會被調用壹次,而且只有在創建servlet實例的時候才會被創建。

Service()方法:用於數據處理。只要壹個請求被接受壹次,就會被調用壹次。

Destroy()方法:當Servlet對象被銷毀時調用。在停止服務器或重新部署Web應用程序時銷毀Servlet對象也是壹個調用。

編寫Servlet

首先,我有點困惑。有時候我們看到別人在壹些材料裏這樣寫:

公?班級?TestServlet?器物?Servlet?{

初始化()...

服務()...

getServletConfig()...

...

}

而這裏我們要繼承HttpServlet類,那麽問題來了。繼承HttpServlet和實現Servlet有什麽區別?

首先,直觀上,Servlet就是壹個接口。如果實現了此接口,則必須實現接口中定義的所有方法。

HttpServlet實現Servlet接口,並實現Servlet接口中的方法。

繼承Httpservelt實際上實現了Servlet接口。

但是,我們不需要實現Servlet中定義的生命周期方法,因為Httpservlet中已經有了默認的實現,而且這些默認的實現是相當標準和實用的。doget和dopost是執行用戶請求的端點。get請求將調用doget方法,post請求將執行dopost方法。我們可以用這兩種方法定義自己的業務邏輯。

最後,在實現Servlet接口時,HttpSrvlet已經實現了Servlet中的所有方法,所以從HttpPsvlet繼承的類不需要覆蓋相應的生命周期和其他方法。

4.1寫Java類,繼承HttpServlet。

創建壹個MyServlet java類,繼承HttpServlet實現服務方法:

公?班級?MyServlet?延伸?HttpServlet?{

@覆蓋

受保護?作廢?服務(HttpServletRequest?請求,?HttpServletResponse?回應)?摔投?ServletException,?IOException?{

//設置字符編碼

request . setcharacterencoding(" utf8 ");

//從?請求?從對象獲取用戶名和密碼。

字符串?用戶名?=?request.getParameter("用戶名");

字符串?密碼?=?request . getparameter(" password ");

request.setAttribute("用戶名",用戶名);

request.setAttribute("password ",密碼);

request.getRequestDispatcher(?"/index2.jsp ")。轉發(請求,?回應);;

}

}

4.2配置web.xml文件

Web.xml配置Servlet訪問路徑,以便其他人可以通過鏈接訪問您的Servlet:

& ltwe B- app & gt;

& lt顯示名稱& gt原型?創造了?Web?應用程序& lt/display-name & gt;

& ltservlet & gt

& ltservlet-name & gt;MyServlet & lt/servlet-name & gt;

& ltservlet-class & gt;club . sscai . demo . my servlet & lt;/servlet-class & gt;

& lt/servlet & gt;

& ltservlet映射& gt

& ltservlet-name & gt;MyServlet & lt/servlet-name & gt;

& lturl模式& gt/my servlet & lt;/URL-pattern & gt;

& lt/servlet-mapping & gt;

& lt/we B- app & gt;

4.3 jsp界面顯示

index2.jsp:

& lthtml & gt

& ltbody & gt

& lth2 & gt2222222 & lt/H2 & gt;

用戶名:?& lt% = request . getparameter(" username ")?% & gt

& ltbr & gt

密碼:?& lt% = request . getparameter(" password ")?% & gt

& lt/body & gt;

& lt/html & gt;

  • 上一篇:linux指定行數輸出linux指定行
  • 下一篇:java鏈接mysql數據庫url怎麽寫(mysql數據庫連接url)
  • copyright 2024編程學習大全網