一个 jsp 文件对应一个 servlet 所以当多个用户请求同一个 jsp 文件 或者同一个用户同时开不同 tab (标签)请求一个 jsp 文件 只有第一个 jsp 请求生成一个 servlet 实例 譬如 这个 jsp 是 form.jsp tomcat 容器生成一个 名为 formservlet 的实例 然后容器里有一个 mapping ("form.jsp", formservlet) 那么接下来, 其他对于这个 jsp 文件的请求来时 tomcat 容器利用这个 mapping 找出 formservlet 实例 与此同时会从线程池里取出一个线程
线程大概是
class worker implements runnable(){
void run(){
Servlet svl = tomcat_container.get("form.jsp")
svl.service()
}
}
是不是这样子?
1
ihuotui 2017-02-23 19:59:33 +08:00 via iPhone
理解为一个没有全局静态变量的函数被多线程调用。
|
3
sorra 2017-02-23 20:50:12 +08:00
大概可以这么理解。
实际上容器本身有一个 servlet 映射到*.jsp 这个路径,这个 servlet 会根据*的实际值进一步分发到对应的类实例(由 JSP 编译而成,是单例)。 |
4
ovear 2017-02-23 20:52:48 +08:00
类似这样, registerHandler 的时候 *.jsp 会被映射到一个单独的 Handler 上,这个 Handler 进行处理。
|
5
ihuotui 2017-02-23 20:55:04 +08:00 via iPhone
线程在 tomcat 中, servlet 还是 servlet ,你可以打印 servlet hashcode
|
6
esolve OP |