Java Servlet的实现方式


Java Servlet的实现方式

方法一、实现Servlet接口

Servlet接口

servlet接口

package javax.servlet;

public interface Servlet {
    
    
    void init(javax.servlet.ServletConfig servletConfig) throws javax.servlet.ServletException;

    javax.servlet.ServletConfig getServletConfig();

    void service(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse) throws javax.servlet.ServletException, java.io.IOException;

    java.lang.String getServletInfo();

    void destroy();
}

方法一代码

package test.first;

import javax.servlet.*;
import java.io.IOException;

/**
 * 实现servlet的第一种方式
 * 实现Servlet接口
 */

public class FirstServlet implements Servlet {
    
    

    /**
     * servlet的初始化方法
     * 该函数只会被调用一次
     * 用户第一次访问该servlet的时候
     * 服务器(tomcat)创建一个servlet,这个servlet对象调用init方法完成必要的初始化工作
     */
    /*
     *该方法是HttpServlet类中的方法
     * 可以在子类中重写
     * 不过,一般使用不重写
     */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    
    
        System.out.println("FirstServlet初始化");
    }

    /**
     * 获取config对象
     */
    @Override
    public ServletConfig getServletConfig() {
    
    
        return null;
    }

    /**
     * servlet的业务处理方法
     * 开发人员将业务处理代码写在该方法中
     *
     * 该方法可以被多次调用
     * 用户访问该servlet时由服务器(tomcat)调用
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    
    
        System.out.println("这是实现Servlet接口的service方法");
    }

    /**
     * 获取servlet信息的方法
     */
    @Override
    public String getServletInfo() {
    
    
        return "FirstServlet";
    }

    /**
     * servlet的销毁方法
     */
    @Override
    public void destroy() {
    
    
        System.out.println("销毁FirstServlet");
    }
}



运行结果

  • 多次请求First Servlet
  • init方法只执行了一次
  • service方法请求几次就执行几次
    firstservlet运行结果
  • 关闭tomcat服务器
  • tomcat销毁该servlet
    firstservlet销毁

方法二、继承GenericServlet抽象类

GenericServlet抽象类

genericservlet

方法二代码

package test.first;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;

/**
 * 实现servlet的第二种方式
 * 继承GenericServlet抽象类
 */
public class SecondServlet extends GenericServlet {
    
    

    /**
     * 重写service方法
     * 实现业务需求
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    
    
        System.out.println("这是通过继承GenericServlet抽象类来实现service方法");
    }
}

运行结果

secondservlet运行结果

方法三、继承HttpServlet抽象类

HttpServlet抽象类

HTTPservlet

方法三代码

package test.first;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import java.io.IOException;

/**
 * 实现servlet的第三种方式
 * 继承HttpServlet抽象类
 */
public class ThreeServlet extends HttpServlet {
    
    

    /**
     * 重写业务代码
     */
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    
    
        System.out.println("这是通过继承HttpServlet抽象类来实现service方法");
    }
}

运行结果

threeservlet运行结果

示例

package test.first;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class hello extends HttpServlet {
    
    
    @Override
    public void init(ServletConfig config) throws ServletException {
    
    
        super.init(config);
    }
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
    
    
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.println("<h1>hello,你好</h1>");
    }
}

运行结果

配置文件

在这里插入图片描述

<?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">

    <!-- 创建名字为hello的servlet -->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>test.first.hello</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

    <!-- 创建名字为first的servlet -->
    <servlet>
        <servlet-name>first</servlet-name>
        <servlet-class>test.first.FirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>first</servlet-name>
        <url-pattern>/first</url-pattern>
    </servlet-mapping>

    <!-- 创建名字为second的servlet -->
    <servlet>
        <servlet-name>second</servlet-name>
        <servlet-class>test.first.SecondServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>second</servlet-name>
        <url-pattern>/second</url-pattern>
    </servlet-mapping>

    <!-- 创建名字为three的servlet -->
    <servlet>
        <servlet-name>three</servlet-name>
        <servlet-class>test.first.ThreeServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>three</servlet-name>
        <url-pattern>/three</url-pattern>
    </servlet-mapping>
</web-app>

おすすめ

転載: blog.csdn.net/m0_47585722/article/details/115707212