在应用程序中,如果涉及多个 servlet,那么每次都会为不同的 servlet 创建一个新线程
例如,我有2个servlet,servlet 1和servlet 2都从同一个html表单获取请求,一个通过 anchor 标记获取,另一个通过表单获取请求
当点击链接时,请求被发送到 servlet 1,servlet 1 再次将请求分派(dispatch)到索引页面,并从那里提交表单,其中请求被发送到 servlet 2
是为 servlet 1 和 servlet 2 分别创建 2 个线程,还是只创建 1 个线程为两个 servlet 提供服务??
最佳答案
Servlet 容器的一般模式是使用一个线程
来处理一个请求。
for ex i have 2 servlets servlet 1 and servlet 2 both are getting rquest from the same html form one is getting through anchor tag and another through form
当您提交表单
时,浏览器会发送一个 HTTP 请求。您的服务器会调度一个Thread
来处理它。想象一下它做了这样的事情(实际上要复杂得多)
final Servlet servlet = ...// which servlet is url-mapped to the request
Runnable toRun = new Runnable(
public void run() {
servlet.service(request, response); // with exception handling of course
}
);
Thread toDispatch = new Thread(toRun); // actually get it from pool, but for simplicity
toDispatch.start();
同样,如果您点击 anchor 链接,您的浏览器会发送一个新的 HTTP 请求,并以相同的方式进行处理。
Servlet
类实例在线程之间共享。
关于java - Servlet 中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18944850/