java中的tomcat以及最原始的Servlet开始

 1首先从最基本的tomcat:开始一个请求说起:

假设来自客户的请求为:

http://localhost:8080/spring/cc.jsp

1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得
2) Connector把该请求交给它所在的ServiceEngine来处理,并等待来自Engine的回应
3) Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host
4) Engine匹配到名为localhostHost(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
5) localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
6) Host匹配到路径为/wsotaContext(如果匹配不到就把该请求交给路径名为”"Context去处理)
7) path=”/wsota”Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet
8) Context匹配到URL PATTERN*.jspservlet,对应于JspServlet
9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServletdoGetdoPost方法
10)Context把执行完了之后的HttpServletResponse对象返回给Host
11)HostHttpServletResponse对象返回给Engine
12)EngineHttpServletResponse对象返回给Connector
13)ConnectorHttpServletResponse对象返回给客户browser


2 可能以前对java、 web并不是了解很深。
 *
 * 首先每一种东西的产生都有他的用途。
 * 
 * 2种情况第一种情况:本身自己的系统,肯定直接通过浏览器直接访问或ajax请求到服务器端
 * 
 * 浏览器form表单或者ajax给你封装好了http报文协议
 *    第二种情况:自己通过httpclient以及开源的java客户端util向服务器端发起请求
 * 




3这东西我越问越深了。哎怎么办呢??为什么tomcat能够接受到请求呢?为什么又执行了自定义的servlet中的service了呢??



   /我是学Java的所以我就以tomcat为例
//1用户通过浏览过程是浏览器根据用户的选择将相关信息按http协议报文的规范组装请求的http报文,报文通过网络传输到指定的服务器,服务器通过特定的web容器接收这个报文信息,例如:tomcat,jetty,jboss这样的web容器,web容器会将http报文解析出来,如果是用户请求,最终解析出来的报文信息会用一个request对象存储起来,服务端使用这个request做完相应的处理后,服务端程序将结果信息封装到response对象里,然后将response对象交给web容器,web容器则把这个response对象转变为http协议的报文,并将报文回传给浏览器,浏览器最后解析这个响应报文,将最终结果展示给用户。
//2用户发起请求到80端口的tomcat容器======tomcat容器将浏览器的报文头解析放入到request中,将相应处理后的信息放入到response中。但是最为开发者你改如何使用容器接收到的数据,以及拿到服务器tomcat相应的数据呢??、

//3既然容器已经把结果放入到了request和response中

//程序不知道啊,java程序怎么获取呢?于是伟大的servlet
//就出现了。我的tomcat容器只创造servlet接口、


//简单理解:就是tomcat将请求传递给了servlet
//Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,

//利用httpclient请求过来的东西=====首先请求到tomcat,tomcat直接继续解析自己的web.xml中的东西

//然后加载项目下的web.xml中的servlet映射。他会告诉哦,用户请求我这个servlet了,我要开始工作了。。



最后总结::

,一般情况下:tomcat内部
//已经有了servlet接口:tomcat  GenericServlet实现了servlet接口:httpServlet是基于http继承了GenericServlet

//servlet这个接口主要是:定义了容器的初始化  请求  销毁三个动作。

//但是这样还不够啊,用户的请求request 和response怎么办呢?所以出现了ServletRequest和ServletResponse

//但是httpservlet类是继承过来的,怎么办呢所以自己也造了一个HttpServletRquest和HttpServletResponse作为参数




那么说这么多我自己都迷了,怎么迷呢为什么会执行我servlet的service方法呢??、(tomcat很复杂不要想了哈哈)



1、Servlet容器启动时:读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,

      同时将ServletConfig对象作为参数来调用Servlet对象的init方法。

2、在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对

      象,如果没有则创建它,然后根据客户的请求创建HttpRequest、HttpResponse对象,从而调用Servlet

     对象的service方法。

3、Servlet的类文件被更新后,重新创建Servlet

      Servlet容器在启动时自动创建Servlet,这是由在web.xml文件中为Servlet设置的<load-on-startup>属性决定

      的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在。



哈哈。当tomcat为你创建servlet这个类的时候就开始执行你的init方法和service方法了::tomcat自动帮你执行了,关注好你的业务逻辑吧,容器帮你去调用你 的service方法了



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值