servlet生命周期知识点

#Servlet 生命周期

Servlet 是 SUN 公司提供的一种用于开发动态 WEB 资源的技术,SUN 公司在其 API 中提供了一个 Servlet 接口。如果用户想要开发一个 Java Web 服务,需要完成两个步骤:

1.编写一个实现了 Servlet 接口的 Java 类;
2.将该 Java 类放到 Servlet 容器中(通常是 Tomcat);
通常我们写好的实现了 Servlet 接口的 Java 程序就称为 Servlet,它的路径在 %{TOMCAT_HOME}$/webapp/应用名/WEB_INF/classes/ 下。
————————————————

Servlet 生命周期

Servlet 主要有三个接口:init(), service(), destroy();Servlet 生命周期可以分为 5 个步骤:

加载 Servlet;当 Tomcat 第一次访问 Servlet 的时候,Tomcat 负责创建 Servlet 的实例;
只有第一次访问 Servlet 时会创建 Servlet 实例,第一次之后就会检查已经装载了的该 Servlet 实例对象;
1.初始化:当 Servlet 实例化时,Tomcat 调用 init() 方法初始化对象;
2.执行服务:接收浏览器传来的请求,调用 service() 方法处理请求并返回响应;
3.service() 方法通常是开发者需要重新实现的方法;
4.销毁 Servlet:当 Tomcat 关闭,或者检测到 Servlet 要从 Tomcat 中删除时,调用 Servlet 的 destroy() 接口,释放该 Servlet 实例占的资源;
5.卸载:Servlet 调用 destroy() 方法后等待垃圾回收。
在三个主要接口中,只要访问 Servlet,service() 方法就会被调用;init() 方法只有第一次访问 Servlet 的时候才会被调用;destroy() 方法只有在 Tomcat 关闭销毁时才会被调用。
————————————————

Servlet 的配置

<?xml version="1.0" encoding="UTF-8"?>

DispatcherServlet org.springframework.web.servlet.DispathcerServlet DispatcherServlet /home ————————————————

Servlet 的实现

通常开发人员不会实现 Servlet 接口内容,因为 SUN 公司已经提供了两个默认实现类:GenericServlet, HttpServlet。开发人员在开发时通常只需要继承这两个 Servlet 实现类中的某一个,然后重新实现其中的主要方法即可。例如对于继承 HttpServlet,开发人员只需要重写 doGet(), doPost() 方法即可,不需要复写 service() 方法。

##缺省 Servlet

如果某个 Servlet 的映射路径仅仅为一个正斜杠 (/),那么这个 Servlet 就成为当前 Web 应用程序的缺省 Servlet。凡是在 web.xml 文件中找不到匹配的 servlet-mapping 元素的 URL,它们的访问请求都将交给缺省 Servlet 处理。也就是说,缺省 Servlet 用于处理所有其他 Servlet 都不处理的访问请求。
通常在 Tomcat 安装目录\conf\web.xml 中注册了一个名为 org.apache.catalina.servlets.DefaultServlet 的 Servlet,在该配置文件中被设置成了缺省 Servlet。

————————————————

Servlet 线程安全问题

当多个客户端并发访问同一个 Servlet 时,Web 服务器会为每个访问创建一个连接。所以如果不涉及 Servlet 实例中的共享资源,就不会涉及线程安全问题;但如果涉及共享资源,就需要考虑通过同步等手段解决线程安全问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

北境·

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

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

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

打赏作者

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

抵扣说明:

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

余额充值