V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
esolve
V2EX  ›  问与答

关于 jsp, servlet 和线程的关系,我这样理解对吗?

  •  
  •   esolve · 2017-02-23 18:38:16 +08:00 · 1298 次点击
    这是一个创建于 2835 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个 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()
           }
    }
    

    是不是这样子?

    7 条回复    2017-02-23 21:32:37 +08:00
    ihuotui
        1
    ihuotui  
       2017-02-23 19:59:33 +08:00 via iPhone
    理解为一个没有全局静态变量的函数被多线程调用。
    esolve
        2
    esolve  
    OP
       2017-02-23 20:02:08 +08:00
    @ihuotui 具体大致是什么样呢?
    是我上面的代码那样吗?
    sorra
        3
    sorra  
       2017-02-23 20:50:12 +08:00
    大概可以这么理解。
    实际上容器本身有一个 servlet 映射到*.jsp 这个路径,这个 servlet 会根据*的实际值进一步分发到对应的类实例(由 JSP 编译而成,是单例)。
    ovear
        4
    ovear  
       2017-02-23 20:52:48 +08:00
    类似这样, registerHandler 的时候 *.jsp 会被映射到一个单独的 Handler 上,这个 Handler 进行处理。
    ihuotui
        5
    ihuotui  
       2017-02-23 20:55:04 +08:00 via iPhone
    线程在 tomcat 中, servlet 还是 servlet ,你可以打印 servlet hashcode
    esolve
        6
    esolve  
    OP
       2017-02-23 21:32:22 +08:00
    @ovear
    *.jsp 会被映射到一个单独的 Handler , handler 和 servlet 的关系呢?
    我的描述中有什么不对的地方吗?
    esolve
        7
    esolve  
    OP
       2017-02-23 21:32:37 +08:00
    @ihuotui 我的描述中有什么不对的地方吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1410 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 17:33 · PVG 01:33 · LAX 09:33 · JFK 12:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.