1 / 4
文档名称:

JavaServlet工作原理问答-Java开发Java经验技巧.doc

格式:doc   大小:54KB   页数:4页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

JavaServlet工作原理问答-Java开发Java经验技巧.doc

上传人:小博士 2019/7/27 文件大小:54 KB

下载得到文件列表

JavaServlet工作原理问答-Java开发Java经验技巧.doc

相关文档

文档介绍

文档介绍::..JavaServletI*作原理问答-编程开发技术JavaServlet工作原理问答木文由ImportNew・honoka翻译自stackoverflowo欢迎加入翻译小组。转载请见文末耍求。导读本文来自stackoverflow的问答,讨论了JavaServlet的工作机制,如何进行实例化、共享变量和多线程处理。问题:Servlet是如何工作的?Servlet如何实例化、共享变量、并进行多线程处理?假设我有一个运行了大量Servlet的web服务器。通过Servlet之间传输信息得到Servlet上下文,并设置session变量。现在,如果有两名或更多使用者向这个服务发送请求,接下來session变量会发生什么变化?究竟是所有用户都是用共同的变量?述是不同的用户使用的变量都不一样?如果是后者,服务器如何区分不同用户?另一个相似的问题,如果有*n*名用户访问一个特定的Servlet,那么该Servlet是仅在第一个用户首次访问的吋候实例化,还是分别为每个用户实例化?回答(BalusC):ServletContext当Servlet容器(比如ApacheTomcat)启动后,会部署和加载所有web应用。当web应用被加载,Servlet容器会创建一次ServletContext,然后将其保存在服务器的内存中。,找到其中所有servlet、filter和Listener或***@WebServlet>***@WebFilter和***@WebListener注解的内容,创建一次并保存到服务器的内存中。对于所有过滤器会立即调用initOo当Servlet容器停止,将卸载所有web应用,调用所有初始化的Servlet和过滤器的destroy()方法,最后回收ServletContext和所有Servlet>FiIter与Listener实例。当问题中的Servlet配置的load-on-startup或者QWebServlet(loadOnStartup)设置了一个大于0的值,则同样会在启动的时候立即调用init()方法。"load-on-startup”中的值表示那些Servlet会以相同顺序初始化。如果配置的值相同,***@WebServlet类加载的顺序。另外,如果不设置“load-on-startup”值,init()方法只在第一次HTTP请求命中问题中的Servlet时才被调用。HttpServletRequest与HttpServletResponseServlet容器附加在一个web服务上,这个web服务会在某个端口号上监听HTTP请求,在开发环境中这个端口通常为8080,生产环境中通常为80o当客户端(web浏览器)发送了一个HTTP请求,Servlet容器会创建新的HttpServletRequest和HttpServletResponse对象,传递给已创建好并J_L请求的URL匹配url-pattcrn的Filter和Servlet实例中的方法,所有工作都在同一个线程屮处理。request对象可以访问所有该HTTP请求中的信息,例如requestheader和requestbody。response