zoukankan      html  css  js  c++  java
  • servlet的运行工作

    我是一个刚学几天的小白,写得不好,如果哪个地方有错误,欢迎你们指出。

    在服务器端,我用的是Tomcat作为Servlet 容器,在容器中有一个Servlet接口,你编写一个servlet类放在Tomcat中,当你在浏览器中访问这个servlet的URL时,在这里假设你访问的是存在的servlet,我们都知道接下来就是WEB容器会解析请求,创建servlet 实例,然后调用service( )方法,然后把响应结果发送给浏览器,具体过程可以通过一些资料得知,我接下来要写的是我自己的一些迷惑和理解。

    我是在eclipse ee 搭建Tomcat,然后创建一个项目,创建一个serlet类,在该servlet类中,你只看到无参构造方法、doGet()和doPost( )方法,并没有service( )方法,那么上面所说的调用service( )方法是什么意思呢?

    其实通过eclipse 提供的servlet类模板,可以看到你所编写的servlet类是继承了HttpServlet类,而HttpServlet类是GenericServlet类的子类,GenericServlet类实现了Servlet容器中的Servlet接口,在Servlet接口中,就定义了service( )方法,这个方法是要由Servlet 容器来调用的,GenericServlet类实现该接口,由GenericServlet类的源码可看出,GenericServlet类并没有实现Service( )方法,而service()方法也成为了GenericServlet类中唯一的抽象方法,(GenericServlet类是抽象类),所以GenericServlet类的具体子类必须实现该方法,而HttpServlet是GenericServlet类的子类,所以在HttpServlet类中,由源码可知HttpServlet实现了Servlet接口中的service()方法,并且重载了该方法,重载后的该方法,会根据获得的客户端请求方式来调用匹配的服务方法,如果是Get方法,则调用doGet()方法,如果是Post方法,则调用doPost()方法,我们创建的servlet类继承了HttpServlet类,并且重载了doGet()和doPost(),这可以说是一种封装思想吧,你并不需要去修改service()方法,你只需要根据需要去修改doGet()和doPost()方法,通过源码,我们可以知道在HttpServlet中,有两个service()方法,第一个是实现了Servlet接口的service()方法,第二个则是重载service()方法,在第一个srevice()方法调用了重载的service()方法,重载的service()方法的功能,上面已经说过了,就是判断要调用哪个方法,

  • 相关阅读:
    常用类型转换
    配置相关的一些辅助类
    Java Class与反射相关的一些工具类
    一些中文相关的操作方法
    提供一些对象有效性校验的方法
    编码相关的封装类
    数组相关的工具类
    提供Web相关的个工具类
    URL相关的工具类
    经纬度相关的一些操作
  • 原文地址:https://www.cnblogs.com/LxyXY/p/7749701.html
Copyright © 2011-2022 走看看