Servlet学习笔记4

对于Servlet接口而言,实现该接口,都要覆盖重写该接口的所有抽象方法。GenericServlet 是 Servlet接口的实现类,它对Servlet的所有抽象方法都进行了覆盖重写(都做了默认的空实现),其中有一个方法是抽象方法,那就是提供服务的方法 service 方法。

GenericServlet 类的简单学习

创建项目,直接继承GenericServlet类,并覆盖重写service方法:

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

@WebServlet(urlPatterns="/demo01")
public class ServletDemo01 extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse)
            throws ServletException, IOException {
        System.out.println("覆盖重写GenericServlet抽象方法~~~");
    }
}

启动服务器,访问 http://localhost:8080/HTTPServletAndGenericServlet_war_exploded/demo01 即可。

HttpServlet 类的简单学习

HttpServlet 类是 GenericServlet 类的子类,该类对HTTP协议进行了简单的封装,用到Servlet,可以尽量选择该类。

快速入门:

  1. 创建一个类,继承HttpServlet类,覆盖重写doGet()方法、doPost()方法:

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/demo02")
    public class ServletDemo02 extends HttpServlet {
        @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() 方法!!!");
        }
    }
    
  2. 创建一个HTML文件,用于测试: HelloHttpServlet.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Servlet Demo02</title>
    </head>
    <body>
        <!-- 路径指定为 demo02,请求方法为 post -->
        <form action="/HTTPServletAndGenericServlet_war_exploded/demo02" method="post">
            <input name="username">
            <input type="submit" value="post提交">
        </form>
        <!-- 路径指定为 demo02,请求方法为 get -->
        <form action="/HTTPServletAndGenericServlet_war_exploded/demo02" method="get">
            <input name="username">
            <input type="submit" value="get提交">
        </form>
    </body>
    </html>
    
  3. 浏览器访问

    1. 访问 http://localhost:8080/HTTPServletAndGenericServlet_war_exploded/demo02

      提交方式默认为 get 方式,控制台输出:“doGet() 方法!!!

    2. 访问 http://localhost:8080/HTTPServletAndGenericServlet_war_exploded/HelloHttpServlet.html 效果如下:

@WebServlet 的 urlpartten 参数说明

  1. 写法1:@WebServlet("/demo1")

    该类的url路径为 /demo1

  2. 写法2:@WebServlet("/demo1", "demo2", "demo3", ... , "demoN")

    该类的url路径可是是:/demo1、/demo2、/demo3、 ...... 、/demoN

  3. 写法3:@WebServlet("/*")

    该类的url路径无论是什么都可以

Good Good Write Bug, Day Day Up
原文地址:https://www.cnblogs.com/liyihua/p/14477488.html