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>
时间: 2024-12-23 11:12:43

servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)的相关文章

Servlet实现的三种方式

实现Servlet的三种方式:一个实现,两个继承 /*========================================== * servlet的执行过程: * 1.创建servlet对象(Tomcat执行) * 2.第一次访问servlet时执行 * init()方法 该方法只执行一次 * service()方法 * 3.之后每访问一次 就执行一次service()方法 * 4.关闭服务时调用destroy()方法 该方法只执行一次 *servlet的服务周期 *1.创建 *2.

05_创建线程三种方式对比

[采用实现Runnable.Callable接口方式创建多线程] [优点]1.线程只是实现了Runable接口或者Callable接口,还可以继承其它类. 2.在这种方式下,多个线程可以共享同一个target对象,比较适合多个相同线程来处理同一份资源的情况. [缺点] 编程略复杂,如果需要访问当前线程,则必须使用Thread currentThread()方法. [采用继承Thread类来创建多线程] [优点] 编写简单,如果需要访问当前线程,只需使用this即可获得当前线程. [缺点] 因为继

Struts2访问Servlet API的几种方式

struts2提供了三种方式访问servlet API:大致分为两类 1. ActionContext: public static ActionContext getContext() :获得当前Action的ActionContext实例. public Object get(Object key) :此方法类似于调用HttpServletRequest的getAttribute(String name)方法. public void put(Object key, Object value

Struts2访问servlet的三种方式

第一种方式:使用ActionContext类实现 //获取对象 ActionContext context = ActionContext.getContext(); //获取页面提交数据 Map<String, Object> parameters = context.getParameters(); //操作域对象相关的方法 context.put(String,Object);//相当于HttpServletRequest的setAttribute方法 context.getApplic

实现servlet的三种方式

实现servlet的三种方式 01,实现servlet接口 02,继承GenericServlet 03,继承HttpServlet 常用的 注:Httpservlet=====extends====>GenericServlet=====implements====>Servlet接口

创建servlet的三种方式

第一种方式,实现Servlet接口 1 package com.example.servlet; 2 3 import java.io.IOException; 4 5 import javax.servlet.Servlet; 6 import javax.servlet.ServletConfig; 7 import javax.servlet.ServletException; 8 import javax.servlet.ServletRequest; 9 import javax.se

Struts2中获取servlet API的几种方式

struts2是一个全新的MVC框架,如今被广大的企业和开发者所使用,它的功能非常强大.这给我们在使用servlet 纯java代码写项目的时候带来了福音.但是一般来说,我们的项目不到一定规模并不需要框架的.通常功能模块和系统架构复杂的时候会少不了框架的,如果没有框架,我们写的项目和代码会复杂很多,而且扩展性也会大大降低,代码审查效率也会降低.如下代码供大家参考,主要是说明在使用struts2的时候如何获取servlet API,大家可以试着对比一下不用struts2的时候的所写的servelt

Action访问Servlet API的三种方法

一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器而言,不访问action是不行的,Struts提供了一种比较简单的方式来访问Servlet API . 二.通常我们需要访问的Servlet API 是 HttpSession.HttpservletRequest.ServletContext,分别对应了JSP内置对象 session,reques

java创建线程的三种方式及其对比

Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. (2)创建Thread子类的实例,即创建了线程对象. (3)调用线程对象的start()方法来启动该线程. package com.thread; public class FirstThreadTest extends Thread{ int i = 0; //重写run方法,run方法的方