Servlet 创建有三种方式。
1、实现 Servlet 接口
因为是实现 Servlet 接口,所以我们需要实现接口里的方法。

下面我们也说明了 Servlet 的执行过程,也就是 Servlet 的生命周期。

//Servlet的生命周期:从Servlet被创建到Servlet被销毁的过程
//一次创建,到处服务
//一个Servlet只会有一个对象,服务所有的请求
/** 1.实例化(使用构造方法创建对象)* 2.初始化  执行init方法* 3.服务     执行service方法* 4.销毁    执行destroy方法*/
public class ServletDemo1 implements Servlet {//public ServletDemo1(){}//生命周期方法:当Servlet第一次被创建对象时执行该方法,该方法在整个生命周期中只执行一次public void init(ServletConfig arg0) throws ServletException {System.out.println("=======init=========");}//生命周期方法:对客户端响应的方法,该方法会被执行多次,每次请求该servlet都会执行该方法public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {System.out.println("hehe");}//生命周期方法:当Servlet被销毁时执行该方法public void destroy() {System.out.println("******destroy**********");}
//当停止tomcat时也就销毁的servlet。public ServletConfig getServletConfig() {return null;}public String getServletInfo() {return null;}
}

2、继承 GenericServlet 类
它实现了 Servlet 接口除了 service 的方法,不过这种方法我们极少用。

public class ServletDemo2 extends GenericServlet {@Overridepublic void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {System.out.println("heihei");}
}

3、继承 HttpServlet 方法

public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("haha");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("ee");doGet(req,resp);}}

创建 Servlet 的第三种方法,也是我们经常用的方法。

这里只简单讲 Servlet 的三种创建方式,关于更详细的应用我们后面再说。

Servlet 的三种创建方式相关推荐

  1. JavaScript 闭包的详细分享(三种创建方式)(附小实例)

    JavaScript闭包的详细理解 一.原理:闭包函数--指有权访问私有函数里面的变量和对象还有方法等:通俗的讲就是突破私有函数的作用域,让函数外面能够使用函数里面的变量及方法. 1.第一种创建方式 ...

  2. Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)

    阅读目录 一.MVC与MTV 二.多对多表的创建 三.ajax,前后端传输编码格式contentType 四.批量插入数据与自定义分页器 摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端 ...

  3. 线程的三种创建方式以及代码实现

    线程和进程的概念 一个进程可以有多个线程 程序:是指令和数据的有序集合(静态的) 进程:是执行程序的一次执行过程(动态的),是系统资源分配的单位.在操作系统中运行的程序就是进程. 通常在一个进程中可以 ...

  4. Django09:图书管理系统笔记/choices用法/ MTV与MVC模型/多对多三种创建方式

    图书管理系统笔记 redirect括号内可以直接写url 也可以直接写别名 但如果别名需要参数,必须使用reverse解析. choices用法 使用场景:能列举完全的数据 #使用方法:xxx_cho ...

  5. 五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看)

    五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看) 一.搭建vue环境 安装Nodejs 官网下载Nodejs,如果希望稳定的开发环境则下LTS(Long Time Support) ...

  6. java线程的任务的三种创建方式,严格地说,就一种,就是如何重写Runnable接口的run()方法

    仅简单演示Java中线程任务的三种创建方式 第一种:使用了适配器模式,有返回值,能抛出异常,任务代码写在Callable.call()方法中,Runnable的run方法会通过适配器调用到Callab ...

  7. Django 数据库查询优化,choices参数(数据库字段设计常见),MVC和MTV模型,多对多三种创建方式...

    数据库查询优化 orm语句的特点:惰性查询 如果仅仅只是书写了orm语句,在后面没有用到该语句所查询出来的参数,那么orm会自动识别,并不执行 举例: res = models.Book.object ...

  8. 线程的三种创建方式和他们的优缺点

    文章目录 一.线程的三种创建方式 1.继承Thread 2.实现Runable接口 3.实现Callable接口 二.三种创建方式的优缺点 1.使用Runnable接口比使用继承Thread的优势 2 ...

  9. 线程池三种创建方式和自定义线程池ThreadPoolExecutor

    线程池的优势: 线程池做的工作只要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任 ...

最新文章

  1. 第6章-一阶多智体系统一致性-->6.4 切换拓扑系统一致性
  2. 【深度学习】越来越卷,教你使用Python实现卷积神经网络(CNN)
  3. 关于Cocos2d-x属性和引用
  4. 成为Google认证机器学习工程师,零基础只需要2步?
  5. JavaScript基本资料
  6. perl中替换文本一例
  7. Java NIO学习篇之StandardOpenOption详解
  8. opencv-api draw
  9. python装饰器模式带参数_Python装饰器使用实例:验证参数合法性 请教Python 使用装饰器实现单例模式的原理...
  10. ios中amplify配置configure_Asp.netCore3.0 简单的webapi接口 (中)
  11. 吃亏的程序员,如何拿到 9 个月的年终奖?
  12. 批量图片处理,打包成zip
  13. python一对一视频教学-使用Python的Tornado框架实现一个一对一聊天的程序
  14. php 判断是否是16进制,如何求解16进制字符串的验证
  15. wine手动安装wine-mono和wine-gecko组件
  16. 用摄动法证明fibs的一个公式(继续变形)
  17. python 拼音性命按照姓出现的次数排序_Python按姓氏排序字典列表
  18. GitHub使用指南
  19. (翻译)用户难以阅读全大写文本的原因
  20. 基于OpenCV的音频频谱优化(仿酷狗频谱)

热门文章

  1. php 返回索引,PHP mySQL - 你能否返回帶有數字索引的關聯數組?
  2. vSphere 5.5:使用 RVC VSAN 监控工具
  3. 停止、启动或重新启动 VMware vCenter Server Appliance 6.x 及更高版本上的服务 (2109887)
  4. Linux学习总结(74)——wget 命令详解
  5. 消息中间件学习总结(18)——MQ常见面试题总结
  6. rs232接口定义_RS485通讯接口定义和特点
  7. java regex match 替换_java正则表达式四种常用的处理方式(匹配、分割、替代、获取)...
  8. SpringBoot之使用(一)
  9. openURL的使用(iOS调用系统电话、浏览器、地图、邮件等)
  10. synchronized方法与synchronized代码块的区别