servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)
第一种:
实现Servlet 接口
第二种:
继承GenericServlet
第三种
继承HttpServlet (开发中使用)
通过查看api文档发现他们三个(servlet 和GenericServlet和HttpServlet)的关系是
Servlet是一个接口,其中含有很多方法如:init(),service(),destory()方法。
GenericServlet是一个实现了Servlet接口的实现类,他可以使用Servlet中的方法。
HttpServlet是GenericServlet的实现类(儿子),也就是说间接的实现了Servlet接口,
他可以使用Servlet的所有方法,和GenericServlet的所有的方法(GenericServlet中没有私有方法,私有方法是继承不来的),
除此之外,HttpServlet还自己有了许多方法,如:doGet, doPost, doDelete, doPut, doTrace等方法对应处理http协议里的命令的请求响应过程。
所以,HttpServlet中拥有最多的方法,想用谁的什么方法就用什么方法(Servlet接口和GenericServlet的方法),所以我们使用的时候是继承这个
HttpServlet方法来使用Servlet。
第一种:实现Servlet 接口
package com.chensi; import java.io.IOException; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; public class ServletDemo2 implements Servlet { @Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("这里是destory方法");
} @Override
public ServletConfig getServletConfig() {
System.out.println("getServletconfig");
return null;
} @Override
public String getServletInfo() {
System.out.println("getServletInfo");
return null;
} @Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("这里是 init 实例化。。"); } @Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("这里是 service方法");
res.getWriter().write("hello twice servelt222");
} }
第二种:继承GenericServlet类
package com.chensi; import java.io.IOException; import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; public class ServletDemo extends GenericServlet{ /**
*
*/
private static final long serialVersionUID = 1L; @Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("这里是service 方法");
} }
第三种:继承HttpServlet类
package com.chensi; import java.io.IOException; import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; public class ServletDemo extends GenericServlet{ /**
*
*/
private static final long serialVersionUID = 1L; @Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("这里是service 方法");
} }
web.xml 的配置 :
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>ServletDemo2</display-name>
<servlet>
<servlet-name>servletDemo3</servlet-name>
<servlet-class>com.chensi.ServletDemo3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletDemo3</servlet-name>
<url-pattern>/demo3</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>servletDemo2</servlet-name>
<servlet-class>com.chensi.ServletDemo2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletDemo2</servlet-name>
<url-pattern>/demo2</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>servletDemo</servlet-name>
<servlet-class>com.chensi.ServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletDemo</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)的更多相关文章
- Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比
Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比 上一篇文章: Android自动化测试中AccessibilityService获取控件信息(1 ...
- Servlet实现的三种方式
实现Servlet的三种方式:一个实现,两个继承 /*========================================== * servlet的执行过程: * 1.创建servlet对 ...
- 详细理解servlet实现的三种方式和生命周期
阅读目录 开发servlet的三种方式 理解实现servlet接口的方式,理解servlet生命周期 Servlet接口有五个方法 继承GenericServlet 继承HttpServlet 现在很 ...
- php 链接mysql的三种方式对比
PHP连接Mysql的三种方式: 1.原生的连接方式 原生的连接方式是面向过程的写法 <?php $host = 'localhost'; $database = 'test'; $usern ...
- servlet三种方式实现servlet接口
简单介绍 Servlet接口实现类 1.Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet.HttpServlet. 2.HttpServlet指能够处理HTTP请 ...
- Struts2访问Servlet API的三种方式
有时我们需要用到Request, Response, Session,Page, ServletContext这些我们以前常用的对象,那么在Struts2中怎么样使用到这些对象呢,通常有三种方式. * ...
- Struts2中的数据处理的三种方式对比(Action中三种作用域request,session,application对象)
1:在Action中如何获得作用域(request,session,application)对象: 取得Map(键值对映射集)类型的requet,session,application; 对数据操作的 ...
- Struts2访问Servlet API的几种方式
struts2提供了三种方式访问servlet API:大致分为两类 1. ActionContext: public static ActionContext getContext() :获得当前 ...
- Kubernetes 对象管理的三种方式
Kubernetes 中文文档 1. Kubernetes 对象管理的三种方式对比 Kubernetes 中的对象管理方式,根据对象配置信息的位置不同可以分为两大类: 命令式:对象的参数通过命令指定 ...
随机推荐
- nodejs-基本语法
初识nodejs-基本语法 nodejs是JavaScript的一个在后端的运行环境,关于nodejs的认识,我们可以看上一篇文章<<初识nodejs>>,我们要使用nodej ...
- Centos 7 通过挂载系统光盘搭建本地yum仓库的方法
实验环境:CentOS 7 1:在media文件下创建一个目录 #创建一个www文件 cd /media/www 2: 挂载光盘,将光盘挂载在刚才创建的www文件下 mount /dev/cdrom ...
- [转]Windows多进程编程
转自:http://blog.csdn.net/bxhj3014/article/details/2082255 一.进程的概念 进程是是一个正在运行的程序的实例(飘---),是系统分配资 ...
- DB2导出脚本,重新建立数据库
在做项目的时候,我们经常会涉及到数据库的迁移 所以我们需要导出 db2数据的建库脚本,存储过程脚本,函数脚本, 我是这么做的 windows键---cmd---进入命令-----db2cmd----进 ...
- Windows下用C++删除磁盘分区信息
做一个能对U盘重新分区的小工具,使用该方法删除U盘中原有的分区表. bool CCesDiskDll::DestroyDisk(unsigned char deviceNumber) { DWORD ...
- [家里蹲大学数学杂志]第432期Hardy type inequalities
If $p>1$, $f\geq 0$, and $$\bex F(x)=\int_0^x f(t)\rd t, \eex$$ then $$\bee\label{Hardy:0 to x} \ ...
- 用于所有Windows驱动程序开发者的概念
用户模式和内核模式 虚拟地址空间 设备节点和设备堆栈 I/O 请求数据包 驱动程序堆栈 微型驱动程序和驱动程序对 Windows 驱动程序工具包中的头文件 为不同版本的 Windows 编写驱动程序
- IIS部署WCF
IIS部署WCF [转载自——http://www.cnblogs.com/starksoft/p/4992059.html] 1 部署IIS 1.1 安装WAS IIS原本是不支持非HTTP协议的服 ...
- 数据结构中很常见的各种树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)
数据结构中常见的树(BST二叉搜索树.AVL平衡二叉树.RBT红黑树.B-树.B+树.B*树) 二叉排序树.平衡树.红黑树 红黑树----第四篇:一步一图一代码,一定要让你真正彻底明白红黑树 --- ...
- zedboard如何从PL端控制DDR读写(五)
有了前面的一堆铺垫.现在终于开始正式准备读写DDR了,开发环境:VIVADO2014.2 + SDK. 一.首先要想在PL端通过AXI去控制DDR,我们必须要有一个AXI master,由于是测试,就 ...