猿教程 Logo

Servlet如何工作

通过了解servlet如何工作来了解servlet是非常重要的。 在这里,我们将了解第一个servlet程序的内部细节。

服务器首次检查servlet是否被请求。

如果是,web容器执行以下任务:

  • 加载servlet类。

  • 实例化servlet类。

  • 调用传递ServletConfig对象的init方法

其他

  • 调用服务方法传递请求和响应对象

Web容器在需要删除servlet时调用destroy方法,例如在停止服务器或取消部署项目时。


Web容器如何处理servlet请求?

Web容器负责处理请求。 让我们看看它如何处理请求。

  • 使用web.xml文件中的servlet映射请求。

  • 为此请求创建请求和响应对象

  • 调用线程上的service方法

  • 公共服务方法在内部调用受保护的服务方法

  • 受保护的服务方法根据请求的类型调用doGet方法。

  • doGet方法生成响应,并将其传递给客户端。

  • 发送响应后,Web容器将删除请求和响应对象。 线程包含在线程池中或者被删除,这些取决于服务器的实现。


写在公共服务方法内的是什么?

公共服务方法将ServletRequest对象转换为HttpServletRequest类型和ServletResponse对象转换为HttpServletResponse类型。 然后,调用传递这些对象的service方法。 让我们看看内部代码:

public void service(ServletRequest req, ServletResponse res)
        throws ServletException, IOException
    {
        HttpServletRequest request;
        HttpServletResponse response;
        try
        {
            request = (HttpServletRequest)req;
            response = (HttpServletResponse)res;
        }
        catch(ClassCastException e)
        {
            throw new ServletException("non-HTTP request or response");
        }
        service(request, response);
    }

写在受保护的服务方法内的是什么?

受保护的服务方法检查请求的类型,如果请求类型是get,它调用doGet方法,如果请求类型是post,它调用doPost方法,等等。 让我们看看内部代码:

protected void service(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException
    {
        String method = req.getMethod();
        if(method.equals("GET"))
        {
            long lastModified = getLastModified(req);
            if(lastModified == -1L)
            {
                doGet(req, resp);
            } 
	....
	//rest of the code
        }
    }


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Servlet/how-servlet-works.html