日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java _web之Servlet简单应用

發布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java _web之Servlet简单应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?Servlet是一種獨立于平臺和協議的服務器端的Java應用程序,可以生成動態的web頁面。它擔當Web瀏覽器或其他http客戶程序發出請求、與http服務器上的數據庫或應用程序之間交互的中間層。

所謂動態網頁,就是在不同時刻或不同條件下訪問Web服務器上的同一個頁面時,瀏覽器會獲得不同的內容。

Servlet主要內容:Web應用程序開發過程、Servlet的運行原理、Servlet的生命周期等。

開發Java Web應用程序的大致流程

設計目錄結構:根據具體業務需要,遵照規范的目錄結構設計好Web應用程序的目錄結構。

?

編寫Web應用程序代碼:編寫業務邏輯所需的Java代碼。

?

編寫部署描述文件:把Servlet、初始化參數等定義到部署描述文件web.xml中。

?

編譯代碼:把編寫好的Java源代碼編譯成字節碼。

?

Web應用程序打包:把整個Web應用程序打成War包,以方便部署。

?

部署Web應用程序:把打好的War包部署到Web服務器上。

?

執行Web應用程序:啟動Web服務器,利用客戶端瀏覽器進行訪問測試。

?

注意:在具體的開發過程中,一般都會使用IDE工具,使用IDE工具進行Web應用程序開發時,只需要開發人員完成前三個步驟,其他步驟IDE工具可以自動完成。

?

Servlet是用Java編寫的Server端程序,它與協議和平臺無關。Servlet運行于Java服務器中。

Java Servlet可以動態地擴展服務器的能力,并采用請求-響應模式提供Web服務。

?

Servlet簡介

Servlet是使用Java Servlet應用程序設計接口及相關類和方法的Java程序。它在Web服務器上或應用服務器上運行并擴展了該服務器的能力。Servlet裝入Web服務器并在Web服務器內執行。

Servlet是以Java技術為基礎的服務器端應用程序組件,Servlet的客戶端可以提出請求并獲得該請求的響應,它可以是任何Java程序、瀏覽器或任何設備。

?

Servlet運行原理

Web服務器接收到一個HTTP請求時,它會先判斷請求內容——如果是靜態網頁數據,Web服務器將會自行處理,然后產生響應信息;如果牽涉到動態數據,Web服務器會將請求轉交給Servlet容器。此時Servlet容器會找到對應的處理該請求的Servlet實例來處理,結果會送回Web服務器,再由Web服務器傳回用戶端。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

針對同一個ServletServlet容器會在第一次收到http請求時建立一個Servlet實例,然后啟動一個線程。第二次收到http請求時,Servlet容器無須建立相同的Servlet實例,而是啟動第二個線程來服務客戶端請求。所以多線程方式不但可以提高Web應用程序的執行效率,也可以降低Web服務器的系統負擔。

?

Servlet的優點

可移植性好:Servlet是用Java語言編寫的,具有完善的Servlet API標準,企業編寫的Servlet程序,可以輕松地移植到其他服務器中。

執行效率高:Servlet請求到來的時候激活Servlet,請求處理完,等待新的請求,新的請求將生成一個線程而不是進程。

使用方便:Servlet可以輕松地處理HTML表單數據,并讀取和設置HTTP頭,處理Cookie,跟蹤會話。

?

舉例:

1.web工程下的web-inf目錄下的classes目錄中編寫一個FirstServlet類,實現GenericServlet接口

?

package cn.itcast;

import java.io.*;

import javax.servlet.*;

?

public class FirstServlet extends GenericServlet{

?

public void service(ServletRequest req,ServletResponse res) throws ServletException,

?

java.io.IOException{

?

OutputStream out = res.getOutputStream();

out.write("Firstservlet".getBytes());

}

}

?

2.啟動命令行窗口,把servlet開發包導入到classpath

set classpath=%classpath%;C:\apache-tomcat-6.0.20\lib\servlet-api.jar

?

3.編譯:javac -d . FirstServlet.java

?

4.web.xml文件中把編譯后的servlet配置到服務器中,并為它配置對外訪問路徑

<?xml version="1.0" encoding="ISO-8859-1"?>

?

<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">

?

<servlet>

<servlet-name>FirstServlet</servlet-name>

<servlet-class>cn.itcast.FirstServlet</servlet-class>

</servlet>

?

<servlet-mapping>

<servlet-name>FirstServlet</servlet-name>

<url-pattern>/FirstServlet</url-pattern>

</servlet-mapping>

?

</web-app>

?

5.啟動tomcatie,訪問:

?

Servlet的生命周期

在代碼中,Servlet生命周期由接口javax.servlet.Servlet定義。所有的Servlet必須直接或間接地實現javax.servlet.Servlet接口,這樣才能在Servlet容器中運行。Servlet提供service方法、init方法和destroy方法等。在Servlet的生命周期中,運行javax.servlet.Servlet接口中定義的這些方法,方法會在特定時間按照一定的順序被調用

?

?

?

?

?

?

?

?

?

?

Servlet程序是由WEB服務器調用,web服務器收到客戶端的Servlet訪問請求后:

1Web服務器首先檢查是否已經裝載并創建了該Servlet的實例對象。如果是,則直接執行第步,否則,執行第步。

2裝載并創建該Servlet的一個實例對象。

3調用Servlet實例對象的init()方法。

4創建一個用于封裝HTTP請求消息的HttpServletRequest對象和一個代表HTTP響應消息的HttpServletResponse對象,然后調用Servletservice()方法并將請求和響應對象作為參數傳遞進去。

5WEB應用程序被停止或重新啟動之前,Servlet引擎將卸載Servlet,并在卸載之前調用Servletdestroy()方法。

?

Servlet如何被加載和實例化

Servlet容器負責實例化和加載Servlet,這個過程可以在Servlet容器加載時執行,可以在Servlet響應請求時執行,也可以在兩者之間的任何時候執行。

Servlet 容器加載完Servlet之后,首先必須初始化它。初始化時Servlet調用init()方法,該方法可以以一個ServletConfig類型的引用為參數,該參數可以讓Servlet從部署描述符文件中讀取一些鍵值對形式的參數值,以初始化這些數據,ServletConfig對象的引用還可以讓Servlet接受ServletContext對象。

?

Servlet如何處理請求

Servlet被初始化以后,就處于能響應請求的就緒狀態。每個Servlet都有一個請求的Servlet Request對象和響應的Servlet Response對象。

Servlet還可以實現ServletRequestServletResponse接口。ServletRequest接口可以讓Servlet獲取客戶端請求中的參數,如request信息、協議類型等。Servlet可以從ServletInputStream流中讀取request數據。ServletResponse接口允許Servlet設置response headersstatus codes。實現這個接口可以使Servlet能訪問ServletOutputStream流,用來向客戶端返回數據。

?

Servlet如何被釋放

Servlet 容器可以隨時使用或釋放Servlet。當Servlet 容器判斷一個Servlet應當被釋放時(例如容器準備釋放或需要回收資源),容器必須讓Servlet 能釋放其正在使用的任何資源,并保存持續性的狀態信息。

Servlet 容器釋放一個Servlet之前,必須讓其完成當前實例的service方法或是等到時間超時。當容器釋放一個Servlet以后,容器必須徹底釋放該Servlet并將其標明為可回收的,此時容器將不能再將請求轉發給它。

?

eclipse中新建一個web project工程,eclipse會自動創建下圖所示目錄結構:

?

?

?

Servlet API中定義了一整套的接口和類,讓開發人員很容易地開發出一個Servlet,這套接口和類的繼承層次:

Servlet接口SUN公司定義

了兩個默認實現類,

分別為:

GenericServletHttpServlet

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

HttpServlet指能夠處理HTTP請求的servlet,它在原有Servlet接口上添加了一些與HTTP協議處理方法,它比Servlet接口的功能更為強大。因此開發人員在編寫Servlet時,通常應繼承這個類,而避免直接去實現Servlet接口。

?

HttpServlet在實現Servlet接口時,覆寫了service方法,該方法體內的代碼會自動判斷用戶的請求方式,如為GET請求,則調用HttpServletdoGet方法,如為Post請求,則調用doPost方法。因此,開發人員在編寫Servlet時,通常只需要覆寫doGetdoPost方法,而不要去覆寫service方法。

?

?

由于客戶端是通過URL地址訪問web服務器中的資源,所以Servlet程序若想被外界訪問,必須把servlet程序映射到一個URL地址上,這個工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。

<servlet>元素用于注冊Servlet,它包含有兩個主要的子元素:<servlet-name><servlet-class>,分別用于設置Servlet的注冊名稱和Servlet的完整類名。

一個<servlet-mapping>元素用于映射一個已注冊的Servlet的一個對外訪問路徑,它包含有兩個子元素:<servlet-name><url-pattern>,分別用于指定Servlet的注冊名稱和Servlet的對外訪問路徑。例如:

<web-app>

<servlet>

<servlet-name>AnyName</servlet-name>

<servlet-class>HelloServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>AnyName</servlet-name>

<url-pattern>/demo/hello.html</url-pattern>

</servlet-mapping>

</web-app>

?

?

myeclipse創建一個servlet,向瀏覽器輸出Hello servlet!!.

//這是最常用額Servlet方法;還有一種比較麻煩,建議使用這種;

首先創建一個javaweb項目,選擇j2EE1.4版本,然后在src中創建一個Servlet類,

?

package com.csdn;

?

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 ServletDemo2 extends HttpServlet {

?

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

?

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("Hello Servlet");

?

}

?

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

?

doGet(request,response);

}

?

}

然后執行就ok了,這個文件會在xml文件中自動生成相關代碼

?

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

?

<servlet>

<servlet-name>ServletDemo2</servlet-name>

<servlet-class>com.csdn.ServletDemo2</servlet-class>

</servlet>

?

?

<servlet-mapping>

<servlet-name>ServletDemo2</servlet-name>

<url-pattern>/servlet/ServletDemo2</url-pattern>

</servlet-mapping>

?

</web-app>

?

選擇Tomcat6.x執行在ie頁面中輸入http://localhost:8080/firstweb/servlet/ServletDemo2

轉載于:https://blog.51cto.com/fighter2013/1147893

總結

以上是生活随笔為你收集整理的java _web之Servlet简单应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。