过程简析:
上图简单的演示了一次请求响应过程,不难发现Servlet对于一次服务的重要性。
关于HttpServlet:
先看下简单继承图和API:
自我实现HttpServlet,了解具体实现细节:
public abstract class HttpServlet extends GenericServlet {
private static final long serialVersionUID = 1L;
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
/*
* 将请求和响应信息强转为Http协议相关的HttpServletRequest、HttpServletResponse
*/
request = (HttpServletRequest) request;
response = (HttpServletResponse) response;
service(request, response);
}
public void service(HttpServletRequest request, HttpServletResponse response) {
/*
* 解析协议,获取协议类型分别调用doxxx()
*/
String method = request.getMethod();
if(method.equals("METHOD_GET")) {
doGet(request, response);
} else if(method.equals("METHOD_POST")) {
doPost(request, response);
}
/*
* 其他doxxx()
*/
}
abstract protected void doGet(HttpServletRequest request, HttpServletResponse response);
abstract protected void doPost(HttpServletRequest request, HttpServletResponse response);
}
public class AServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
}
}
ServletContext:
在分析ServletContext之前,先明白几个对应关系:
如上图所示:一个项目里有多个Servlet,每个Servlet对应一个ServletConfig,但是每个项目值对应一个ServletContext。
ServletContext内容比较丰富,可在具体需要时查看对应API实现相应需求。