Tomcat與Servlet簡介
Tomcat
Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。由於有了Sun 的參與和支持,最新的Servlet 和JSP 規范總是能在Tomcat 中得到體現,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規范。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛並得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對於一個初學者來說,可以這樣認為,當在一台機器上配置好Apache 服務器,可利用它響應HTML(標准通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。
訣竅是,當配置正確時,Apache 為HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。目前Tomcat最新版本為9.0。
Servlet
Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務程序或服務連接器,用Java編寫的服務器端程序,具有獨立於平台和協議的特性,主要功能在於交互式地瀏覽和生成數據,生成動態Web內容。
狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet接口的類,一般情況下,人們將Servlet理解為后者。Servlet運行於支持Java的應用服務器中。從原理上講,Servlet可以響應任何類型的請求,但絕大多數情況下Servlet只用來擴展基於HTTP協議的Web服務器。
最早支持Servlet標准的是JavaSoft的Java [Web Server](https://baike.baidu.com/item/Web Server/9306055),此后,一些其它的基於Java的Web服務器開始支持標准的Servlet。
B/S模式執行流程
B/S結構
B/S結構(Browser/Server,瀏覽器/服務器模式),是WEB興起后的一種網絡結構模式,WEB瀏覽器是客戶端最主要的應用軟件。這種模式統一了客戶端,將系統功能實現的核心部分集中到服務器上,簡化了系統的開發、維護和使用。客戶機上只要安裝一個瀏覽器,如[Netscape Navigator](https://baike.baidu.com/item/Netscape Navigator)或[Internet Explorer](https://baike.baidu.com/item/Internet Explorer),服務器安裝[SQL Server](https://baike.baidu.com/item/SQL Server)、Oracle、MYSQL等數據庫。瀏覽器通過Web Server 同數據庫進行數據交互。
流程圖
JavaWeb項目
Java類的編寫
- 新建一個JavaWeb工程FirstServlet
- 新建一個Java類FirstServlet
- FirstServlet需要繼承HttpServlet
- 重寫service(HttpServletRequest request, HttpServletResponse response)方法
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FirstServlet extends HttpServlet{
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接受請求發來的參數
String name = request.getParameter("name");
String html = "<h1 style='color:red'>hi," + name + "!</h1>";
System.out.println("返回給瀏覽器的響應數據是:" + html);
PrintWriter out = response.getWriter();
out.println(html);//將html發送給瀏覽器
}
}
web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>FristServlet</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 聲明servlet -->
<servlet>
<!-- servlet別名 -->
<servlet-name>frist</servlet-name>
<servlet-class>test.FirstServlet</servlet-class>
</servlet>
<!-- 將servlet與URL綁定 -->
<servlet-mapping>
<servlet-name>frist</servlet-name>
<url-pattern>/hi</url-pattern>
</servlet-mapping>
</web-app>
運行
將工程發布到Tomcat,啟動Tomcat,通過localhost:8080/FirstServlet/hi?name=huowuyan在瀏覽器顯示:
總結
參考文獻: