国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java Servlet(一)簡介

2019-11-06 09:20:49
字體:
來源:轉載
供稿:網(wǎng)友

一、Servlet概念

java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數(shù)據(jù)庫或應用程序之間的中間層。 使用 Servlet,您可以收集來自網(wǎng)頁表單的用戶輸入,呈現(xiàn)來自數(shù)據(jù)庫或者其他源的記錄,還可以動態(tài)創(chuàng)建網(wǎng)頁。 Java Servlet 通常情況下與使用 CGI(Common Gateway Interface,公共網(wǎng)關接口)實現(xiàn)的程序可以達到異曲同工的效果。但是相比于 CGI,Servlet 有以下幾點優(yōu)勢: (1)性能明顯更好。 (2)Servlet 在 Web 服務器的地址空間內執(zhí)行。這樣它就沒有必要再創(chuàng)建一個單獨的進程來處理每個客戶端請求。 (3)Servlet 是獨立于平臺的,因為它們是用 Java 編寫的。 (4)服務器上的 Java 安全管理器執(zhí)行了一系列限制,以保護服務器計算機上的資源。因此,Servlet 是可信的。 (5)Java 類庫的全部功能對 Servlet 來說都是可用的。它可以通過 sockets 和 RMI 機制與 applets、數(shù)據(jù)庫或其他軟件進行交互。

二、Servlet架構

下圖顯示了 Servlet 在 Web 應用程序中的位置。 這里寫圖片描述

三、Servlet任務

Servlet 執(zhí)行以下主要任務: (1)讀取客戶端(瀏覽器)發(fā)送的顯式的數(shù)據(jù)。這包括網(wǎng)頁上的 HTML 表單,或者也可以是來自 applet 或自定義的 HTTP 客戶端程序的表單。 (2)讀取客戶端(瀏覽器)發(fā)送的隱式的 HTTP 請求數(shù)據(jù)。這包括 cookies、媒體類型和瀏覽器能理解的壓縮格式等等。 (3)處理數(shù)據(jù)并生成結果。這個過程可能需要訪問數(shù)據(jù)庫,執(zhí)行 RMI 或 CORBA 調用,調用 Web 服務,或者直接計算得出對應的響應。 (4)發(fā)送顯式的數(shù)據(jù)(即文檔)到客戶端(瀏覽器)。該文檔的格式可以是多種多樣的,包括文本文件(HTML 或 xml)、二進制文件(GIF 圖像)、Excel 等。 (5)發(fā)送隱式的 HTTP 響應到客戶端(瀏覽器)。這包括告訴瀏覽器或其他客戶端被返回的文檔類型(例如 HTML),設置 cookies 和緩存參數(shù),以及其他類似的任務。

四、編寫一個Servlet

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 MyFirstServlet extends HttpServlet { private static final long serialVersionUID = -1915463532411657451L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { // Write some content out.println("<html>"); out.println("<head>"); out.println("<title>MyFirstServlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<h2>Servlet MyFirstServlet at " + request.getContextPath() + "</h2>"); out.println("</body>"); out.println("</html>"); } finally { out.close(); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Do some other work } @Override public String getServletInfo() { return "MyFirstServlet"; }}

為了在web容器里注冊上面的Servlet,你要為你的應用建一個web.xml入口文件。

<?xml version="1.0"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <welcome-file-list> <welcome-file>/MyFirstServlet</welcome-file> </welcome-file-list> <servlet> <servlet-name>MyFirstServlet</servlet-name> <servlet-class>com.howtodoinjava.servlets.MyFirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyFirstServlet</servlet-name> <url-pattern>/MyFirstServlet</url-pattern> </servlet-mapping></web-app>

(1)MyFirstServlet類繼承了HttpServlet。這個繼承是必須的,因為所有的Servlet必須是要么繼承了 javax.servlet.GenericServlet 的普通Servlet,要么是繼承了 javax.servlet.http.HttpServlet 的HTTP Servlet。 (2)重新 doGet() 和 doPost() 方法。這兩個方法都已在 HttpServlet 類里定義了。當一個GET或POST請求到來時,它就會被映射到相應的方法里。例如,如果你向這個servlet發(fā)送一個HTTP GET請求,doGet()方法就會被調用。 (3)這里也有一些其他有用的方法。你可以重寫它們來在運行時控制應用。例如getServletInfo()。 HttpServletRequest 和 HttpServletResponse 是所有doXXX()方法的默認參數(shù)。我們會在后面的章節(jié)里詳細學習這些對象。

參考文章: Servlet 工作原理解析 Servlet簡介|菜鳥教程


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南平市| 铁力市| 崇礼县| 罗城| 黑龙江省| 南和县| 丁青县| 长宁县| 建阳市| 抚远县| 清丰县| 安康市| 财经| 陆良县| 云阳县| 吴江市| 邢台市| 天津市| 阿巴嘎旗| 古浪县| 阳信县| 宁津县| 磴口县| 湄潭县| 汤原县| 焦作市| 清镇市| 康保县| 佛冈县| 海淀区| 马鞍山市| 宝兴县| 马尔康县| 承德市| 富蕴县| 南郑县| 孝感市| 成都市| 社会| 惠东县| 房山区|