servlet

来源:http://www.cnblogs.com/izhongwei/archive/2016/07/01/5630731.html
-Advertisement-
Play Games

一、servlet的概念 Servlet是一種獨立與平臺和協議的伺服器端java應用程式,通過Servlet可以生成動態web頁面,同時使用Servlet還可以在伺服器端對客戶的請求進行處理,控製程序的執行。 Servlet的主要作用就是互動式的瀏覽和更新數據,並生成動態的頁面內容展示。 1. 服務 ...


一、servlet的概念

Servlet是一種獨立與平臺和協議的伺服器端java應用程式,通過Servlet可以生成動態web頁面,同時使用Servlet還可以在伺服器端對客戶的請求進行處理,控製程序的執行。

Servlet的主要作用就是互動式的瀏覽和更新數據,並生成動態的頁面內容展示。

1. 伺服器接收客戶端發送的請求。

2. 伺服器將請求信息發送至Servlet.

3. Servlet進過處理後,生成響應的內容。

4. Servlet將響應的內容返回客戶端。

名稱            說明                      所在包

servlet介面  JavaServlet的基礎介面,定義了Servlet必須實現的方法   javax.servlet

GenericServlet  繼承自servlet介面屬於通用的不依賴於協議的servlet    javax.servlet

HttpServlet  繼承自GenerticServic類在此繼承上擴展了http協議的Servlet javax.servlet.http

HttpServletRequest  繼承自servletRequest介面用於數據的讀取    javax.servlet.http

HttpServletResponse 繼承自servletResponse介面用於返回數據   javax.servlet.http

二、servlet的生命周期

Servlet容器:是用來裝載Servlet對象的一種容器。是負責管理Servlet的一類組件。

1、 實例化---》Servlet容器創建Servlet的實例

2、 初始化---》該容器調用init()方法

  init()方法:初始化方法只會別調用一次,在創建servlet時候調用

3、 服務-----》如果請求Servlet,則容器調用Service()方法

  service()方法時執行任務的主要方法,每次伺服器接收到一個servlet請求,都會啟動一個線程並調用服務,service()方法會檢查http請求類型,調用相應的doGet或doPost方法

4、 銷毀-----》銷毀實例之前調用destroy()方法。

  destroy()方法也只會被調用一次,在servlet生命周期結束時調用,會關閉資料庫連接,停止線程等,destroy()方法執行後GC會回收servlet對象。

三、創建servlet

(1).創建servlet的三種方法

1.繼承servlet介面(interface)

2.繼承GenericServlet類(class)

3.繼承httpServlet類(class)

(2).在web.xml中添加servlet的配置

<servlet>
	<servlet-name>myServlet</servlet-name>
	<servlet-calss>servlet.MyServlet</servlet-calss>
</servlet>
<servlet-mapping>
	<servlat-name>myServlat</servlat-name>
	<url-pattern>/myServlet</url-pattern>
<servlat-mapping>
<servlet>
  <servlet-name>servlet</servlet-name>
  <servlet-class>servlet.servlet</servlet>
  <init-param>    <!-- 初始化參數 -->
    <param-name>charSetContent</param-name>
    <param-value>utf-8</param-value>
  </init-param>
</servlet>
<servlet-mapping>
  <servlet-name>servlet<servlet-name>
  <url-pattern>utf-8</url-pattern>
</servlet-mapping>

(3).創建servlet類:

package demo.web.servlet;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet3 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("調用了doGet方法");
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		super.doPost(req, resp);
	}

	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
			throws ServletException, IOException {
		super.service(arg0, arg1);
	}

	@Override
	public void destroy() {
		System.out.println("調用了銷毀的方法");
	}

	@Override
	public void init(ServletConfig config) throws ServletException {
		System.out.println("init被初始化了");
		String initParam=config.getInitParameter("charSerContent");
		System.out.println(initParam);
	}
	

}

說明:<url-pattern>標簽裡面可以有三種設置方法:

    1./myservlet

    2./xx/*

    3.*.do

四、servlet的部署和運行:

1.servlet的運行比較簡單,只要通過url就可以實現訪問,servlet的訪問名稱必須與web.xml文件中設置的url的映射名一致。

2.在瀏覽器中輸入:localhost:8080/項目名/url-pattern對應的類型 (如果是第一種輸入/myservlet,第二種輸入/xx/任意字元,第三種是任意字元.do),就會在控制太輸出信息。

五、servletRequest對象和httpServletRequest對象

當用戶請求時有servlet容器創建servletRequest對象,這個對象被容器作為service()方法之一傳給servlet,servlet能夠利用servletRequest獲取客戶端的數據請求數據。

1.servletRequest對象常用方法

常用方法                  說明

getAttribute(String name);        獲取名字為name的值

setAttribute(String name,Object obj);   設置名字為name的值

getParameter(String name);        獲取表單中傳入的參數

2.HttpServletRequest對象常用方法

常用方法                   說明

String getContextPath();          獲取上下文路徑

Cookie[]  getCookies();            返回客戶端發送的所有cookie對象

HttpSession getsession();          返回和此次請求相管理的session,沒有則創建一個新的session

String getMethod();             返回此次請求service所調用的方法,doGet,或doPost方法

六、servletResponse介面和HttpServletResponse介面

1.servletResponse介面用來封裝響應介面

常用方法                    說明

PrintWriter  getWriter();            返回PrintWriter對象,用於向客戶端發送文本

String getCharacterEncoding();         獲取編碼類型

String setCharacterEncoding();         設置編碼類型

void setContentType(String type);       設置發送到客戶端的響應的內容類型

2.httpServletResponse介面常用方法

常用方法                    說明

void addCookie(Cookie cookie);        設置一個cookie到響應中,這個方法可多次調用設置多個cookie

void addHeader(String name,String value);   將一個名字為name的值為value的響應報頭添加到響應中

void sendRedirect(String location);       重定向

void encodURL(string url);           使用sessionId對重定向的url進行編碼,

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • pageContext對象: 1.可以作為入口對象獲取其他八大隱式對象的引用 1.1 getEXception獲取exception隱世對象 1.2 getPage獲取page對象 1.3 getRequest 獲取request對象 1.4 getResponse 獲取response對象 1.5 ...
  • python類及其方法 一、介紹 在 Python 中,面向對象編程主要有兩個主題,就是類和類實例類與實例:類與實例相互關聯著:類是對象的定義,而實例是"真正的實物",它存放了類中所定義的對象的具體信息。 類有這樣一些的優點: 二、類的定義 1.定義類(class)的語法 一第行,語法是class ...
  • ArrayList簡介 ArrayList是基於數組實現的,是一個動態數組,其容量能自動增長,類似於C語言中的動態申請記憶體,動態增長記憶體。 ArrayList不是線程安全的,只能用在單線程環境下,多線程環境下可以考慮用Collections.synchronizedList(List l)函數返回一 ...
  • 1、搭建定時任務quartz 本來是打算把定時任務放入後臺管理中,這樣目前沒問題,但是弱後期加入許可權管理-shiro,那麼肯定有衝突的,原因是最新版的shiro會使用quartz-1.6版本,而最新的quartz已經到了2.3 有人索性把quartz版本降到了1.6,這樣就沒問題,我想這樣不好,2. ...
  • 從c++轉到java,初學struts,竟然碰到一個因寫錯單詞而造成的錯誤,structs --> struts ...
  • 這是個對於讀寫鎖中級剖析文章, 會自己實現讀寫鎖的細節.歡迎用到自己的項目中. ...
  • 在 HttpRequest 對象中,屬性 GET 和 POST 得到的都是 django.http.QueryDict 所創建的實例。這是一個 django 自定義的類似字典的類,用來處理同一個鍵帶多個值的情況。 在 python 原始的字典中,當一個鍵出現多個值的時候會發生衝突,只保留最後一個值。 ...
  • 一、過濾器 過濾器就是向web應用程式的請求和和響應添加功能的組件。過濾器能夠實現客戶端和目標資源之間的交互信息進行篩選和過濾,最終保留有效的數據信息。 二、過濾器的生命周期 2.1 實例化。 web容器複製創建過濾器的實例來完成過濾器的實例化,只會實例化一次。 2.2 初始化。 在進行過濾工作前會 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...