更新時(shí)間:2021-07-21 11:38:48 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1067次
sun公司制定的一種用來(lái)擴(kuò)展web服務(wù)器功能的組件規(guī)范(服務(wù)器端的Java應(yīng)用程序)。具有獨(dú)立于平臺(tái)和協(xié)議的特性,可以生成動(dòng)態(tài)的Web頁(yè)面。它擔(dān)當(dāng)客戶請(qǐng)求(Web瀏覽器或其它HTTP客戶程序)與服務(wù)器響應(yīng)(HTTP服務(wù)器上的數(shù)據(jù)庫(kù)或應(yīng)用程序)的中間層
以前的CGI效率不高,用servlet來(lái)擴(kuò)展替換CGI
客戶端發(fā)送請(qǐng)求給web服務(wù)器,web服務(wù)器啟動(dòng)并調(diào)用servlet。servlet容器負(fù)責(zé)解析數(shù)據(jù)包,也包括
網(wǎng)絡(luò)通訊相關(guān)的一些處理。然后將解析之后的數(shù)據(jù)交給servlet來(lái)處理。
注意:可以不使用服務(wù)器,而直接向servlet容器發(fā)送請(qǐng)求。因?yàn)閟ervlet容器也有通信模塊,所以可以直接把servlet容器當(dāng)做web服務(wù)器來(lái)使用。
(1)組件:是符合一定規(guī)范,并且實(shí)現(xiàn)部分功能的可以單獨(dú)部署的軟件模塊。組件必須部署到容器中才能運(yùn)行。
(2)容器:也是符合一定規(guī)范,并且提供組件的運(yùn)行環(huán)境的程序。
注意:?jiǎn)蝹€(gè)的組件,單個(gè)的容器都沒(méi)有意義。只有放在一起才能運(yùn)行
Tomcat就是一個(gè)servlet容器也是一個(gè)web服務(wù)器
瀏覽器箱web服務(wù)器發(fā)送請(qǐng)求web服務(wù)器接收數(shù)據(jù)發(fā)送servlet容器然后實(shí)例化servlet調(diào)用init方法初始化然后調(diào)用service方法利用doget或者dopost處理
servlet將處理的結(jié)構(gòu)返回給web服務(wù)器然后發(fā)送給客戶端
servlet的優(yōu)點(diǎn)只創(chuàng)建一個(gè)實(shí)例只初始化一次但是可以被調(diào)用多次。不同GCI創(chuàng)建多個(gè)實(shí)例,servlet存在線程安全問(wèn)題。servlet效率比較高
servlet的創(chuàng)建
public class servletest extends HttpServlet {
private static final long serialVersionUID = 1L;
public servletest() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the POST method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
web.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>zz.servletest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/test/hello</url-pattern>
</servlet-mapping>
</web-app>
啟動(dòng)Tomcat 輸入 :localhost8080/zzservlet/test/hello
web.xml中servlet是servlet實(shí)例的一個(gè)線程 可以有多個(gè)servlet標(biāo)簽每個(gè)servlet代表一個(gè)請(qǐng)求處理
servletname是這個(gè)servlet的名稱 可以為任意值但必須和servlet-mapping中的對(duì)應(yīng)
servlet-class 是對(duì)應(yīng)的Java類,即根目錄下的Java目錄 即不需要工程名 工程名是根目錄,class是文件名稱即package后的名稱
url-pattern 是訪問(wèn)的路徑 輸入的訪問(wèn)地址為 網(wǎng)址+端口號(hào)+工程名+訪問(wèn)的路徑
servlet與jsp的區(qū)別 即servlet 需要一個(gè)一個(gè)的out.print 而jsp 不需要一句一句的輸出 其他的沒(méi)有區(qū)別
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"什么是Servlet",希望對(duì)大家有幫助,想了解更多可查看Servlet教程。動(dòng)力節(jié)點(diǎn)在線學(xué)習(xí)教程,針對(duì)沒(méi)有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識(shí),讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743