更新時間:2021-07-21 11:38:48 來源:動力節點 瀏覽1060次
sun公司制定的一種用來擴展web服務器功能的組件規范(服務器端的Java應用程序)。具有獨立于平臺和協議的特性,可以生成動態的Web頁面。它擔當客戶請求(Web瀏覽器或其它HTTP客戶程序)與服務器響應(HTTP服務器上的數據庫或應用程序)的中間層
以前的CGI效率不高,用servlet來擴展替換CGI
客戶端發送請求給web服務器,web服務器啟動并調用servlet。servlet容器負責解析數據包,也包括
網絡通訊相關的一些處理。然后將解析之后的數據交給servlet來處理。
注意:可以不使用服務器,而直接向servlet容器發送請求。因為servlet容器也有通信模塊,所以可以直接把servlet容器當做web服務器來使用。
(1)組件:是符合一定規范,并且實現部分功能的可以單獨部署的軟件模塊。組件必須部署到容器中才能運行。
(2)容器:也是符合一定規范,并且提供組件的運行環境的程序。
注意:單個的組件,單個的容器都沒有意義。只有放在一起才能運行
Tomcat就是一個servlet容器也是一個web服務器
瀏覽器箱web服務器發送請求web服務器接收數據發送servlet容器然后實例化servlet調用init方法初始化然后調用service方法利用doget或者dopost處理
servlet將處理的結構返回給web服務器然后發送給客戶端
servlet的優點只創建一個實例只初始化一次但是可以被調用多次。不同GCI創建多個實例,servlet存在線程安全問題。servlet效率比較高
servlet的創建
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>
啟動Tomcat 輸入 :localhost8080/zzservlet/test/hello
web.xml中servlet是servlet實例的一個線程 可以有多個servlet標簽每個servlet代表一個請求處理
servletname是這個servlet的名稱 可以為任意值但必須和servlet-mapping中的對應
servlet-class 是對應的Java類,即根目錄下的Java目錄 即不需要工程名 工程名是根目錄,class是文件名稱即package后的名稱
url-pattern 是訪問的路徑 輸入的訪問地址為 網址+端口號+工程名+訪問的路徑
servlet與jsp的區別 即servlet 需要一個一個的out.print 而jsp 不需要一句一句的輸出 其他的沒有區別
以上就是動力節點小編介紹的"什么是Servlet",希望對大家有幫助,想了解更多可查看Servlet教程。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習