Servlet的层次结构
Servlet–>GenericServlet–>HttpServlet
HTTP请求有很多种类型,常用的有四种
GET 读取
POST 保存
PUT 修改
DELETE 删除
GenerServlet实现Servlet接口,同时为他的子类屏蔽了不常用的方法,子类只需要重写Service方法即可。
HttpServlet继承GenerServlet,根据请求类型进行分发处理,GET进入doGet方法,POST进入doPost方法
开发者自定义的Servlet类只需要继承HttpServlet即可,重写doGet和doPost
package com.southwind.servlet;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/hellos")
public class HelloServlet implements MyHttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException{
response.getWriter().write("helloget");
}
@Override
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{
response.getWriter().write("hellopost");
}
}
MyHttpServlet文件
package com.southwind.servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
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("/hello")
public class MyHttpServlet extends MyGenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
HttpServletRequest request =(HttpServletRequest) servletRequest;
HttpServletResponse response=(HttpServletResponse) servletResponse;
//获取请求类型
String method=request.getMethod();
switch (method){
case "Get":
this.doGet(request,response);
break;
case:"POST":
this.doPost(request,response);
break;
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{
}
}
MyGenericServlet文件
package com.southwind.servlet;
import javax.servlet.*;
import java.io.IOException;
public class MyGenericServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}