1. 程式人生 > >servlet的三種實現方式

servlet的三種實現方式

一般來說,寫一個servlet,有三種實現方式:

1、實現Servlet介面。

2、繼承GenericServlet。

3、繼承HttpServlet。

第三種方式是現在比較常用的。

第一種:

package com.tsinghua;
//這是我的第一個servlet,使用實現servlet介面的方式來開發。

import javax.servlet.*;

import java.io.*;


public class Hello implements Servlet{

	/**
	 * 銷燬servlet例項,釋放記憶體
	 * 3種情況:
	 * 1.reload 該servlet(所在的webapps)
	 * 2.關閉tomcat
	 * 3.關機
	 */
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("destroy it");
		
		
	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return "";
	}

	/**
	 * 初始化該servlet,類似於建構函式。
	 * 該函式只會被呼叫一次。當用戶第一次訪問該servlet時被呼叫。
	 */
	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("init it");
	}

	
	/**
	 * 這個函式用於處理業務邏輯
	 * 程式設計師應該把業務邏輯程式碼寫在這裡
	 * 這個函式會被呼叫多次,當用戶每訪問該servlet時都會被呼叫。
	 * req:用來獲得客戶端的資訊
	 * res:用來對客戶端返回資訊
	 */
	@Override
	public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		System.out.println("service it");
		//從res中得到PrintWriter
		PrintWriter pw=res.getWriter();
		pw.println("hello,world");
		
		
		
	}
	
}

第二種:
package com.tsinghua;
//這是我的第二個servlet,通過繼承GenericServlet來開發

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.*;

import java.io.*;


public class HelloGen extends GenericServlet{

	/**
	 * 重寫service方法即可。
	 */
	@Override
	public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		//返回HelloWorld!generic
		PrintWriter pw=res.getWriter();
		pw.println("HelloWorld!generic");
		
		
		
	}

	
	
}

第三種:
package com.tsinghua;
//這是我的第3個servlet,通過繼承HttpServlet來開發

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

import java.io.*;


public class HelloHttp  extends HttpServlet{
	
	/**
	 * 處理get請求
	 * req:客戶端的請求資訊
	 * resp:客戶端的返回資訊
	 */
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
	{
		//業務邏輯在這裡寫。
		try {
			PrintWriter pw=resp.getWriter();
			pw.println("Hello,Http");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	/**
	 * 處理post請求
	 * req:客戶端的請求資訊
	 * resp:客戶端的返回資訊
	 */
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
	{
		//post和get請求一樣
		this.doGet(req, resp);
	}

}


web.xml中配置servlet

<?xml version="1.0" ?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
  
  
  <!-- servlet的配置 -->
  <servlet>
  	<servlet-name>hello</servlet-name><!-- servlet的名字,任意的 -->
  	<servlet-class>com.tsinghua.Hello</servlet-class><!-- 指明servlet的包名+類名 -->
  </servlet>
  <!-- 對映關係配置 -->
  <servlet-mapping>
  	<servlet-name>hello</servlet-name><!-- servlet的名字,和上面一樣 -->
  	<url-pattern>/hello</url-pattern><!-- 這是在瀏覽器中輸入的訪問該servlet的url -->
  </servlet-mapping>
  
  <!-- servlet的配置 -->
  <servlet>
  	<servlet-name>helloGen</servlet-name><!-- servlet的名字,任意的 -->
  	<servlet-class>com.tsinghua.HelloGen</servlet-class><!-- 指明servlet的包名+類名 -->
  </servlet>
  <!-- 對映關係配置 -->
  <servlet-mapping>
  	<servlet-name>helloGen</servlet-name><!-- servlet的名字,和上面一樣 -->
  	<url-pattern>/helloGen</url-pattern><!-- 這是在瀏覽器中輸入的訪問該servlet的url -->
  </servlet-mapping>
  
  <!-- servlet的配置 -->
  <servlet>
  	<servlet-name>helloHttp</servlet-name><!-- servlet的名字,任意的 -->
  	<servlet-class>com.tsinghua.HelloHttp</servlet-class><!-- 指明servlet的包名+類名 -->
  </servlet>
  <!-- 對映關係配置 -->
  <servlet-mapping>
  	<servlet-name>helloHttp</servlet-name><!-- servlet的名字,和上面一樣 -->
  	<url-pattern>/helloHttp</url-pattern><!-- 這是在瀏覽器中輸入的訪問該servlet的url -->
  </servlet-mapping>
  
  
  

</web-app>


相關推薦

Servlet-實現方式

1 實現servlet介面 //first Servlet(使用介面) package com.xc; import javax.servlet.* import java.io.*; impor

servlet的介紹 & xml中配置 以及 & 實現方式(補充設定瀏覽器不快取的方法)

開始時間:2018年10月13日20:53:30 | 2018年10月14日16:10:56 結束時間:2018年10月13日21:53:30 | 2018年10月14日17:02:23 累計時間:2小時 備註:幾乎每一句話都很有收穫,複習的時候務必要仔細一點 Servlet

servlet的介紹 & xml中配置 以及 & 實現方式(補充設定瀏覽器不快取的方法)

開始時間:2018年10月13日20:53:30 | 2018年10月14日16:10:56 結束時間:2018年10月13日21:53:30 | 2018年10月14日17:02:23 累計時間:3小時 動態資源: Servlet 簡單介紹:   Servlet

servlet實現方式

一般來說,寫一個servlet,有三種實現方式: 1、實現Servlet介面。 2、繼承GenericServlet。 3、繼承HttpServlet。 第三種方式是現在比較常用的。 第一種: package com.tsinghua; //這是我的第一個servlet,使

javaWeb--Servlet----簡述,實現方式原理

一、servlet概述 1、每個servlet都像是10086的話務員,但是每個servlet都是唯一的,他們能處理的請求是不同的。servlet的作用:接收請求資料,處理請求,完成響應。 2、Servlet類由我們來寫,但物件由伺服器來建立,並且由伺服器來

javaWeb基礎之Servlet實現方式以及兩配置方式

一、Servlet的三種實現方式 Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務程式或服務聯結器,用Java編寫的伺服器端程式,主要功能在於互動式地瀏覽和修改資料,生成動態Web內容。 1、Servlet的第一種建立方式:繼承Ht

前臺頁面與後臺servlet實現登入的實現方式

第一種:action獲取資料在servlet實現轉發處理實現登入 前臺頁面 <form action="Hasdf" method="get">賬號:<input type="tex

Java 多線程 實現方式

() 例子 屬於 周期性 core www object 並且 check Java多線程實現方式主要有三種:繼承Thread類、實現Runnable接口、使用ExecutorService、Callable、Future實現有返回結果的多線程。其中前兩種方式線程執行完後都

mysql讀寫分離的實現方式

不能 span bsp 缺點 解決方案 使用 隨機 mas 均衡   1 程序修改mysql操作類可以參考PHP實現的Mysql讀寫分離,阿權開始的本項目,以php程序解決此需求。優點:直接和數據庫通信,簡單快捷的讀寫分離和隨機的方式實現的負載均衡,權限獨立分配缺點:自己維

沈浸式狀態欄的實現方式

stemwin barh webp trac war nba schema 布局文件 adding 沈浸式算是目前Android行業比較流行的一種App設計風格,將菜單欄北京設置為導航欄的顏色,感覺頂部狀態欄像是被入侵了一樣,因此稱為沈浸式菜單欄。本文將介紹三種方式去實現沈

mybatis之接口方法多參數的實現方式

自動 spa commit col pri true keys use 數據 關鍵代碼舉例: DaoMapper.xml 1 <!-- 傳入多個參數時,自動轉換為map形式 --> 2 <insert id="insertByCol

生產者消費者模式的實現方式

ring product while ide bsp turn this trac exce synchronized版本public class Test { public static void main(String[] args) { Shared s =

單例的實現方式

In imp SQ span wrap 定制 bsp () import 一:類方法實現單例 class Mysql: __instance = None def __init__(self,host,port): self.ho

單例模式的實現方式

let ini dict 重新 文件中 rap acl return **kwargs 一、單例模式的三種實現方式 1. 什麽是單例模式 基於某種方法,實例化多次,得到同一個實例/對象 2. 為什麽用單例模式 實例化多次,得到的對象屬性內容都一樣時,應該將這些對

java筆試題:找出3~999的水仙花數的實現方式

style col 展示 ava num get 實現 sys pack 第一種方式: package test; public class Exsercise { public static void main(String[] args) {

分散式鎖解決併發的實現方式

分散式鎖解決併發的三種實現方式 在很多場景中,我們為了保證資料的最終一致性,需要很多的技術方案來支援,比如分散式事務、分散式鎖等。有的時候,我們需要保證一個方法在同 一時間內只能被同一個執行緒執行。在單機環境中,Java中其實提供了很多併發處理相關的API,但是這些API在分散式場景中就無能

hdu4841---圓桌問題解題報告(約瑟夫環問題---陣列,queue,vector實現方式)

                                          &

Spark SQL join的實現方式

引言 join是SQL中的常用操作,良好的表結構能夠將資料分散到不同的表中,使其符合某種規範(mysql三大正規化),可以最大程度的減少資料冗餘,更新容錯等,而建立表和表之間關係的最佳方式就是join操作。 對於Spark來說有3種Join的實現,每種Join對應的不同的應用場景(SparkSQL自動決策

php 遞迴函式的實現方式 php利用遞迴函式實現無限級分類

遞迴函式是我們常用到的一類函式,最基本的特點是函式自身呼叫自身,但必須在呼叫自身前有條件判斷,否則無限無限呼叫下去。實現遞迴函式可以採取什麼方式呢?本文列出了三種基本方式。理解其原來需要一定的基礎知識水品,包括對全域性變數,引用,靜態變數的理解,也需對他們的作用範圍有所理解。遞迴函式也是解決無限級分類的一個很

併發程式設計的實現方式

java天生就是多執行緒的程式語言,建立新的執行緒有三種實現方式,分別是: 繼承Thread,實現Runable,實現Callable<T> 程式碼如下: //Thread class ThreadTest extends Thread { @Override pu