Servlet接口实现类开发步骤

Servlet编程方式

  • 1、实现Servlet接口
    这种情况Servlel不是独立的应用程序,没有main( )方法,而是生存在容器中,由容器来管理。编程时需要实现javax.servlet.Servlet接口的5个方法。
  • 2、继承GenericServlet类
    由javax. servlet包提供个抽象类GenericSerlet。它给出了Servlet接口中除service()方法外的其他4个方法的简单实现,并且还实现了ServletConfig接口,编程时直接继承这个类,代码会简化很多。
  • 3、继承HttpServlet、覆盖doXXX( )方法
    在大部分网络中,都是客户端通过HTTP协议来访问服务器端的资源。为了快速开发应用于HTTP协议的Servlet类,在javax.servlet.http包中提供了一个抽象类HttpServlet,它继承了GenericServlet类。编写一个Servlet类继承HttpServlet,只需要覆盖相应的doxx()方法即可。
  • 4、继承HttpServlet、重写service( )方法
    其本质就是扩展HttpServlet类,用户只需重写service( )方法,Servlet模块执行service()方法时,会自动调用doPost()和doGet()这两个方法,实现Servlet的逻辑处理功能。

步骤

第一步:创建一个Java类继承HttpServlet,使之成为一个Servlet接口实现类。
第二步:重写HttpServlet父类两个方法,doGet或doPost。
第三步:将Servlet接口实现类信息注册到Tomcat服务器(在web.xml里面部署)。

xml配置信息

<?xml version="1.0" encoding="UTF-8"?>
<web-app ...>
    <!--将Servlet接口实现类的类路径地址交给Tomcat-->
    <servlet>
        <!--声明一个变量存储servlet接口实现类的类路径-->
        <servlet-name>自己起的名字</servlet-name>
        <!--声明servlet接口实现类的类路径-->
        <servlet-class>servlet的类名,如果有包加上包名,注意这里的类名不要加.java</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>和servlet-name里的值一样</servlet-name>
        <url-pattern>该servlet运行的路径名,随便起名字,但是前面要加上“/”</url-pattern>
    </servlet-mapping>
</web-app>

代码示例

在这里插入图片描述

package com.zyh.controller;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 直接实现servlet接口的话需要实现五个方法:
 *     init
 *     getServletConfig
 *     getServletInfo
 *     destroy
 *     service---只有这个方法有用
 * 为什么?
 *     Tomcat根据Servlet规范调用Servlet接口实现类规则:
 *     1、Tomcat有权创建Servlet接口实现类实例对象:
 *     Servlet oneservlet = new OneServlet();
 *     2、Tomcat根据实例对象调用service方法处理当前请求:
 *     oneServlet.service();
 */

public class OneServlet extends HttpServlet {

    /*
     * 调用doGet还是doPost方法?
     * 由父类HttpServlet决定(看源码,大概在227行)
     * */

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doGet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doPost");
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>demo</servlet-name>
        <servlet-class>com.zyh.controller.OneServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo</servlet-name>
        <url-pattern>/myserv</url-pattern>
    </servlet-mapping>
</web-app>

访问:
在这里插入图片描述
在这里插入图片描述

原文地址:https://www.cnblogs.com/yu011/p/13706014.html