zencart 网站安装,建立微信公众号的流程,とらぶるだいあり しすた在线,聚名网下载更新正如一个更新和更明确#xff0c;这些是servlet 2.5和3之间的主要区别(我不想穷举#xff0c;我只是提到最有趣的部分)#xff1a;声明servlet#xff0c;过滤器和监听器的注释(易于开发)在servlets 2.5中#xff0c;要声明具有一个init参数的servlet#xff0c;您需…更新正如一个更新和更明确这些是servlet 2.5和3之间的主要区别(我不想穷举我只是提到最有趣的部分)声明servlet过滤器和监听器的注释(易于开发)在servlets 2.5中要声明具有一个init参数的servlet您需要将其添加到web.xmlmyServletmy.server.side.stuff.MyAwesomeServletconfigFileconfig.xmlmyServlet/path/to/my/servlet在servlet 3中web.xml是可选的您可以使用注释而不是XML。同样的例子WebServlet(namemyServlet,urlPatterns{/path/to/my/servlet},initParams{InitParam(nameconfigFile, valueconfig.xml)})public class MyAwesomeServlet extends HttpServlet { ... }对于过滤器您需要在servlet 2.5中的web.xml中添加myFiltermy.server.side.stuff.MyAwesomeServletmyFilter/path/to/my/filter在servlet中使用注释的等效方式3ServletFilter(namemyFilter, urlPatterns{/path/to/my/filter})public class MyAwesomeFilter implements Filter { ... }对于侦听器(在本例中为ServletContextListener)在servlet 2.5my.server.side.stuff.MyAwesomeListener同样使用注释WebServletContextListenerpublic class MyAwesomeListener implements ServletContextListener { ... }web.xml的模块化(可插入性)在servlets 2.5中只有一个整体web.xml文件。在servlet 3中每个“可加载”jar在其META-INF目录中都有一个web-fragment.xml指定servlet过滤器等。这是为了允许库和框架指定自己的servlet或其他对象。在上下文初始化时动态注册servlet过滤器和侦听器(可插入性)在Servlet 3中ServletContextListener可以使用添加到SevletContext的以下方法动态添加servlet过滤器和侦听器addServlet()addFilter()和addListener()异步支持示例假设某个servlet容器在其线程池中有五个线程并且每个请求都需要执行一个耗时的进程(如复杂的SQL查询)。使用servlet 2.5如果servlet容器同时接收到五个请求并且五个可用线程开始执行该进程则此servlet容器将用完可用线程因为线程不会返回直到service()(或doGet()doPost ()等)从开始到结束执行并返回响应。使用servlet 3.0这个长时间进程可以在发送响应之前委托给另一个线程并完成service()(现在响应将由最新线程发送)。这样线程可以自由接收新的响应。异步支持的示例Servlet 2.5public class MyAwesomeServlet extends HttpSerlvet {Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response) {// ...runSlowProcess();// no async support, thread will be free when runSlowProcess() and// doGet finish// ...}}Servlet 3WebServlet(namemyServlet,urlPatterns{/mySlowProcess},asyncSupportedtrue) // asyncSupported MUST be specified for// servlets that support asynchronous// processingpublic class MyAwesomeServlet extends HttpSerlvet {Overridepublic 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 threaddelegateExecutionToProcessingThread(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也有方法来获取请求对象响应对象和添加监听器以便在进程完成时通知它们。程序化登录和注销(安全增强功能)在servlet 3中接口HttpServletRequest已经添加了两个新方法login(usernamepassword)和logout()。