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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java servlet 3_java – Servlet 2.5和3之间有什么区别?

發(fā)布時(shí)間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java servlet 3_java – Servlet 2.5和3之间有什么区别? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

更新

正如一個(gè)更新和更明確,這些是servlet 2.5和3之間的主要區(qū)別(我不想窮舉,我只是提到最有趣的部分):

聲明servlet,過濾器和監(jiān)聽器的注釋(易于開發(fā))

在servlets 2.5中,要聲明具有一個(gè)init參數(shù)的servlet,您需要將其添加到web.xml:

myServlet

my.server.side.stuff.MyAwesomeServlet

configFile

config.xml

myServlet

/path/to/my/servlet

在servlet 3中,web.xml是可選的,您可以使用注釋而不是XML。同樣的例子:

@WebServlet(name="myServlet",

urlPatterns={"/path/to/my/servlet"},

initParams={@InitParam(name="configFile", value="config.xml")})

public class MyAwesomeServlet extends HttpServlet { ... }

對(duì)于過濾器,您需要在servlet 2.5中的web.xml中添加:

myFilter

my.server.side.stuff.MyAwesomeServlet

myFilter

/path/to/my/filter

在servlet中使用注釋的等效方式3:

@ServletFilter(name="myFilter", urlPatterns={"/path/to/my/filter"})

public class MyAwesomeFilter implements Filter { ... }

對(duì)于偵聽器(在本例中為ServletContextListener),在servlet 2.5:

my.server.side.stuff.MyAwesomeListener

同樣使用注釋:

@WebServletContextListener

public class MyAwesomeListener implements ServletContextListener { ... }

web.xml的模塊化(可插入性)

>在servlets 2.5中只有一個(gè)整體web.xml文件。

>在servlet 3中,每個(gè)“可加載”jar在其META-INF目錄中都有一個(gè)web-fragment.xml,指定servlet,過濾器等。這是為了允許庫和框架指定自己的servlet或其他對(duì)象。

在上下文初始化時(shí)動(dòng)態(tài)注冊(cè)servlet,過濾器和偵聽器(可插入性)

在Servlet 3中,ServletContextListener可以使用添加到SevletContext的以下方法動(dòng)態(tài)添加servlet,過濾器和偵聽器:addServlet(),addFilter()和addListener()

異步支持

示例:假設(shè)某個(gè)servlet容器在其線程池中有五個(gè)線程,并且每個(gè)請(qǐng)求都需要執(zhí)行一個(gè)耗時(shí)的進(jìn)程(如復(fù)雜的SQL查詢)。

>使用servlet 2.5,如果servlet容器同時(shí)接收到五個(gè)請(qǐng)求,并且五個(gè)可用線程開始執(zhí)行該進(jìn)程,則此servlet容器將用完可用線程,因?yàn)榫€程不會(huì)返回直到service()(或doGet(),doPost ()等)從開始到結(jié)束執(zhí)行并返回響應(yīng)。

>使用servlet 3.0,這個(gè)長(zhǎng)時(shí)間進(jìn)程可以在發(fā)送響應(yīng)之前委托給另一個(gè)線程并完成service()(現(xiàn)在響應(yīng)將由最新線程發(fā)送)。這樣線程可以自由接收新的響應(yīng)。

異步支持的示例:

Servlet 2.5:

public class MyAwesomeServlet extends HttpSerlvet {

@Override

public void doGet(HttpServletRequest request, HttpServletResponse response) {

// ...

runSlowProcess();

// no async support, thread will be free when runSlowProcess() and

// doGet finish

// ...

}

}

Servlet 3:

@WebServlet(name="myServlet",

urlPatterns={"/mySlowProcess"},

asyncSupported=true) // asyncSupported MUST be specified for

// servlets that support asynchronous

// processing

public class MyAwesomeServlet extends HttpSerlvet {

@Override

public void doGet(HttpServletRequest request, HttpServletResponse response) {

// an AsyncContext is created, now the response will be completed

// not when doGet finalizes its execution, but when

// myAsyncContext.complete() is called.

AsyncContext myAsyncContext = request.startAsync(request, response);

// ...

// myAsyncContext is passed to another thread

delegateExecutionToProcessingThread(myAsyncContext);

// done, now this thread is free to serve another request

}

}

// ... and somewhere in another part of the code:

public class MyProcessingObject {

public void doSlowProcess() {

// ...

runSlowProcess();

myAsyncContext.complete(); // request is now completed.

// ...

}

}

接口AsyncContext也有方法來獲取請(qǐng)求對(duì)象,響應(yīng)對(duì)象和添加監(jiān)聽器,以便在進(jìn)程完成時(shí)通知它們。

程序化登錄和注銷(安全增強(qiáng)功能)

在servlet 3中,接口HttpServletRequest已經(jīng)添加了兩個(gè)新方法:login(username,password)和logout()。

總結(jié)

以上是生活随笔為你收集整理的java servlet 3_java – Servlet 2.5和3之间有什么区别?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。