定义一个 Servlet 很简单,只需要继承javax.servlet.http.HttpServlet
类并重写doXXX
(如doGet、doPost
)方法或者service
方法就可以了,其中需要注意的是重写HttpServlet
类的service
方法可以获取到上述七种Http请求方法的请求。
javax.servlet.http.HttpServlet:
在写Servlet
之前我们先了解下HttpServlet
,javax.servlet.http.HttpServlet
类继承于javax.servlet.GenericServlet
,而GenericServlet
又实现了javax.servlet.Servlet
和javax.servlet.ServletConfig
。javax.servlet.Servlet
接口中只定义了servlet
基础生命周期方法:init(初始化)
、getServletConfig(配置)
、service(服务)
、destroy(销毁)
,而HttpServlet
不仅实现了servlet
的生命周期并通过封装service
方法抽象出了doGet/doPost/doDelete/doHead/doPut/doOptions/doTrace
方法用于处理来自客户端的不一样的请求方式,我们的Servlet只需要重写其中的请求方法或者重写service
方法即可实现servlet
请求处理。
javax.servlet.http.HttpServlet类:
TestServlet示例代码:
package com.anbai.sec.servlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* Creator: yz
* Date: 2019/12/14
*/
// 如果使用注解方式请取消@WebServlet注释并注释掉web.xml中TestServlet相关配置
//@WebServlet(name = "TestServlet", urlPatterns = {"/TestServlet"})
public class TestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
PrintWriter out = response.getWriter();
out.println("Hello World~");
out.flush();
out.close();
}
}
Servlet Web.xml配置
定义好了Servlet类以后我们需要在web.xml
中配置servlet标签才能生效。
基于配置实现的Servlet: