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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

servlet容器_Servlet详解(一)之基本概念

發(fā)布時間:2023/12/19 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 servlet容器_Servlet详解(一)之基本概念 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

天天學,應該把這些基本spring底層概念了解下,更好的理解我們常用框架的套路。

1.Servlets是SUN公司指定的一套開發(fā)動態(tài)網頁的技術。一般JavaEE相關的類,都是以javaX開頭

2. Servlet規(guī)范核心類圖,他們之間的關系如圖下:

1. 編寫一個Servlet案例應用的基本過程:

a) 建立一個標準的JavaWeb應用目錄:

比如:

|--MyWebApp:

|--WEB-INF

|--classes:用來存放java運行的class文件

|--lib:存放web應用中需要的jar包

web-xml:配置文件,通常配置servlet類的訪問映射

|--jsp css js等網頁文件

b) 進入classes目錄,建立一個java擴展名文件,這些java文件統(tǒng)稱為Servlet,它們都必須間接或直接實現(xiàn)javax.servlet.Servlet接口。例如以下代碼:

package com.lsh.itcast;import java.io.*;import javax.servlet.*;public class ServerletDemo extends GenericServlet{public void service(ServletRequest req,ServletResponse rep)throws ServletException, IOException{System.out.println("執(zhí)行service方法");OutputStream out=rep.getOutputStream();out.write("hello my servlet".getBytes());out.close();}}

a) 進入classes目錄,對我們編寫的類進行編譯。

首先是Tomcat的lib目錄下的servlet-api.jar,部署到當前的classpath環(huán)境變量中。在dos命令行的臨時配置法是:

set classpath=%classpath%;C:apache-tomcat-6.0.35libservlet-api.jar

然后在dos命令行使用cd命令進入到classes目錄下,編譯Servlet類

編譯命令:javac -d . 類名.java

b) 修改web應用中WEB-INF目錄下的web.xml,對servlet類進行url地址映射,配置如下:

<?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>ServerletDemo</servlet-name><servlet-class>com.lsh.itcast.ServerletDemo</servlet-class> </servlet><servlet-mapping><servlet-name>ServerletDemo</servlet-name><url-pattern>/test</url-pattern></servlet-mapping></web-app>

a) 把已建立好的web應用配屬到Tomcat中,并啟動服務器

b) 訪問地址是:http://localhost:8080/MyWebApp/test

看到寫的Servlet類的輸出結果,表示Servlet操作成功

1. Servlet的生命周期:在內存中一個Servlet只有一個實例,針對不同的的用戶請求,容器采用多線程的機制來調用Service方法。容器什么時候開始裝載Servlet呢?在以下四種情況下,Servlet被啟動,容器裝載Servlet的時刻。

a) 容器啟動時會自動的裝載某些需要的Servlet

b) 在容器啟動后,客戶首次向Servlet發(fā)出請求

c) Servlet的類文件被更新后,重新裝載Servlet

d) Servlet被裝載后,Servlet容器創(chuàng)建一個Servlet實例并調用init()方法進行初始化。在Servlet的整個生命周期中,init方法只會調用一次。

如果在web.xml中加上:2。作用在于:

某些Servlet在web.xml文件中只有元素而沒有元素,這樣我們就無法通過url地址的方式訪問這個Servlet了,這種Servlet通常會在元素中配置一個子元素,讓容器在啟動的時候自動加載該Servlet,并且調用其init方法完成一些全局性的初始化工作。

Servlet的生命周期的常用方法:

a) public void init(ServletCOnfig config):對Servlet進行初始化,Servlet類被實例化后就執(zhí)行,且執(zhí)行一次。由容器調用。默認情況下,只有第一次方訪問時才執(zhí)行,且執(zhí)行一次。

b) public void destroy():在內存中銷毀了Servlet對象。

1. Servlet的生命周期:在內存中一個Servlet只有一個實例,針對不同的的用戶請求,容器采用多線程的機制來調用Service方法。容器什么時候開始裝載Servlet呢?在以下四種情況下,Servlet被啟動,容器裝載Servlet的時刻。

a) 容器啟動時會自動的裝載某些需要的Servlet

b) 在容器啟動后,客戶首次向Servlet發(fā)出請求

c) Servlet的類文件被更新后,重新裝載Servlet

d) Servlet被裝載后,Servlet容器創(chuàng)建一個Servlet實例并調用init()方法進行初始化。在Servlet的整個生命周期中,init方法只會調用一次。

如果在web.xml中加上:2。作用在于:

某些Servlet在web.xml文件中只有元素而沒有元素,這樣我們就無法通過url地址的方式訪問這個Servlet了,這種Servlet通常會在元素中配置一個子元素,讓容器在啟動的時候自動加載該Servlet,并且調用其init方法完成一些全局性的初始化工作。

Servlet的生命周期的常用方法:

a) public void init(ServletCOnfig config):對Servlet進行初始化,Servlet類被實例化后就執(zhí)行,且執(zhí)行一次。由容器調用。默認情況下,只有第一次方訪問時才執(zhí)行,且執(zhí)行一次。

b) public void destroy():在內存中銷毀了Servlet對象。

1. 關于web-xml文件的Servlet的配置:

a) 一個Servlet可以被映射到多個URL地址上,即配置兩個URL去映射一個Servlet,這兩個URl都可以去訪問這個Servlet。

b) URL地址映射支持通配符。即代表只要這個URL是字母,都可以去訪問映射的Servlet,

i. 以開頭,以擴展名結尾。比如.do

ii. 以/前綴開頭,以結尾。比如/action/

iii. 如果一個Servlet的映射為一個"/",就稱之為默認的Servlet,它負責處理沒有映射路徑的URL請求的響應。

但當一個web.xml有多個使用通配符時,會遵循一定的優(yōu)先級規(guī)則。

a) 絕對匹配:以"/"開頭(方式二)要比"*"開頭(方式一)優(yōu)先級高

b) 都以"/"開頭,還是有多個匹配,找最匹配的

c) 以"/"開頭(方式二)要比"*"開頭(方式一)優(yōu)先級高

2. Servlet的多線程同步問題:Servlet本身是單實例的,這樣當有多個用戶同時訪問某個Servlet時,會訪問該唯一的Servlet實例中的成員變量,如果對成員變量進行寫入操作,那就會導致Servlet的多線程問題,即數(shù)據(jù)不一致。

解決辦法:去除成員變量,使用局部變量.或者是使用同步代碼塊。

建議:在Servlet中定義變量時,除非特殊要求,盡量使用局部變量,當如果有需要實例變量時,應做同步處理,且同步代碼塊盡量包圍少的代碼。

如果看到這里,說明你喜歡這篇文章,請 轉發(fā)、點贊。同時 標星(置頂)本公眾號可以第一時間接受到博文推送。

本文由博客群發(fā)一文多發(fā)等運營工具平臺 OpenWrite 發(fā)布

總結

以上是生活随笔為你收集整理的servlet容器_Servlet详解(一)之基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。

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