Servlet

一、Servlet规范

  • Servlet规范来自于JavaEE规范,是JavaEE规范中的一种

1. Servlet规范作用

  1. 在Servlet规范中,指定动态资源文件开发步骤(三步)
  2. 在Servlet规范中,指定HTTP服务器调用动态资源文件规则(new对象,调用service方法,根据浏览器请求方式调用doGet或者doPost方法)
  3. 在Servlet规范中,指定HTTP服务器管理动态资源文件实例对象规则(Servlet生命周期)

二、servlet接口实现类

  1. Servlet接口来自于Servlet规范下的一个接口,这个接口存在于HTTP服务器提供的jar包中
  2. tomcat服务器下lib文件中有一个servlet-api.jar存放Servlet接口(javax.servlet.Servlet接口)
  3. Servlet规范中认为,HTTP服务器能调用的动态资源文件必须是一个Servlet接口实现类(实现Servlet接口的Java类)

三、Servlet接口实现类开发步骤

1. 步骤一

  • 创建一个Java类继承(extends)HttpServlet父类,使之成为一个Servlet接口实现类(HttpServlet继承自GenericServlet,GenericServlet实现了Servlet接口,则HttpServlet也实现了Servlet接口),而不是直接实现(implements)Servlet接口,这是为了简化开发难度,因为每次需要重写Servlet接口的5个方法(init、getServletConfig、service、getServletInfo、destroy),而我们通常只需要service这一个方法,而抽象类HttpServlet、GenericServlet的作用就是降低接口实现类(创建的Java类)对接口Servlet实现过程的难度,会将Servlet接口中不需要使用的抽象方法交给抽象类HttpServlet、GenericServlet进行完成,这样接口实现类(创建的Java类)只需要对接口Servlet需要的方法进行重写

1.1 tomcat根据Servlet规范调用Servlet接口实现类规则:

  1. tomcat创建Servlet接口实现类实例对象
Servlet demoServlet = new DemoServlet();
  1. tomcat根据实例对象调用service方法处理当前请求
    通过父类决定在何种情况下调用子类中的方法(模板设计模式)
demoServlet.service();

2. 步骤二

  • 重写HttpServlet父类两个方法,doGet或者doPost

3. 步骤三

  • 将Servlet接口实现类信息注册到tomcat服务器,目录结构:webapp---->WEB-INF---->web.xml(写注册信息)
<web-app>
  <!--配置相对应的Servlet类-->
  <servlet>
    <!--声明一个变量存储Servlet接口实现类类路径,与类名相同,首字母小写-->
    <servlet-name>demoServlet</servlet-name>
    <!--声明Servlet接口实现类类路径,相当于反射,完全限定名-->
    <servlet-class>com.lzj.controller.DemoServlet</servlet-calss>
  </servlet>

  <!--以上即:
      String demoServlet = "com.lzj.controller.DemoServlet";
  -->

  <!--配置Servlet对应的映射-->
  <!--为了降低用户访问Servlet接口实现类难度,设置一个请求别名-->
  <servlet-mapping>
    <!--之前声明的变量-->
    <servlet-name>demoServlet</servlet-name>
    <!--设置请求别名,以“/”开头-->
    <url-pattern>/demo</url-pattern>
  </servlet-mapping>
</web-app>

四、Servlet生命周期

  1. 网站中所有的Servlet接口实现类的实例对象,只能由HTTP服务器负责创建,开发人员不能手动创建Servlet接口实现类的实例对象,即demoServlet由HTTP服务器负责,不需要我们额外干预
  2. 在默认情况下,HTTP服务器接收到对于当前Servlet接口实现类第一次请求时,自动创建这个Servlet接口实现类的实例对象。在手动配置的情况下,可以要求HTTP服务器在启动时自动创建某个Servlet接口实现类的实例对象
<servlet>
    <!--声明一个变量存储Servlet接口实现类类路径,与类名相同,首字母小写-->
    <servlet-name>demoServlet</servlet-name>
    <!--声明Servlet接口实现类类路径,相当于反射,完全限定名-->
    <servlet-class>com.lzj.controller.DemoServlet</servlet-calss>
    <!--启动时创建实例对象-->
    <load-on-startup>1</load-on-startup><!--填写一个大于0的整数(默认是0)数字大小代表优先级-->
</servlet>
  1. 在HTTP服务器运行期间,一个Servlet接口实现类只能被创建出一个实例对象(构造方法执行一次,可以理解为单例模式)
  2. 在HTTP服务器关闭时刻,自动将网站中所有的Servlet对象进行销毁
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jayco-J

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值