servlet doPost() doHead() doGet()等方法被执行的由来
2011-05-06 17:24
459 查看
在httpservlet源码中有:
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
String method = req.getMethod();
if(method.equals("GET"))
{
long lastModified = getLastModified(req);
if(lastModified == -1L)
{
doGet(req, resp);
} else
{
long ifModifiedSince = req.getDateHeader("If-Modified-Since");
if(ifModifiedSince < (lastModified / 1000L) * 1000L)
{
maybeSetLastModified(resp, lastModified);
doGet(req, resp);
} else
{
resp.setStatus(304);
}
}
} else
if(method.equals("HEAD"))
{
long lastModified = getLastModified(req);
maybeSetLastModified(resp, lastModified);
doHead(req, resp);
} else
if(method.equals("POST"))
doPost(req, resp);
else
if(method.equals("PUT"))
doPut(req, resp);
else
if(method.equals("DELETE"))
doDelete(req, resp);
else
if(method.equals("OPTIONS"))
doOptions(req, resp);
else
if(method.equals("TRACE"))
{
doTrace(req, resp);
} else
{
String errMsg = lStrings.getString("http.method_not_implemented");
Object errArgs[] = new Object[1];
errArgs[0] = method;
errMsg = MessageFormat.format(errMsg, errArgs);
resp.sendError(501, errMsg);
}
}
总结一下servlet的执行过程,当通过页面的方式或者其它方式向servlet发送请求时,会先执行init方法,然后会调用service方法,通过service方法来判断是调用doGet还是doPost方 法,最后当容器被移除时调用destory方法。
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
String method = req.getMethod();
if(method.equals("GET"))
{
long lastModified = getLastModified(req);
if(lastModified == -1L)
{
doGet(req, resp);
} else
{
long ifModifiedSince = req.getDateHeader("If-Modified-Since");
if(ifModifiedSince < (lastModified / 1000L) * 1000L)
{
maybeSetLastModified(resp, lastModified);
doGet(req, resp);
} else
{
resp.setStatus(304);
}
}
} else
if(method.equals("HEAD"))
{
long lastModified = getLastModified(req);
maybeSetLastModified(resp, lastModified);
doHead(req, resp);
} else
if(method.equals("POST"))
doPost(req, resp);
else
if(method.equals("PUT"))
doPut(req, resp);
else
if(method.equals("DELETE"))
doDelete(req, resp);
else
if(method.equals("OPTIONS"))
doOptions(req, resp);
else
if(method.equals("TRACE"))
{
doTrace(req, resp);
} else
{
String errMsg = lStrings.getString("http.method_not_implemented");
Object errArgs[] = new Object[1];
errArgs[0] = method;
errMsg = MessageFormat.format(errMsg, errArgs);
resp.sendError(501, errMsg);
}
}
总结一下servlet的执行过程,当通过页面的方式或者其它方式向servlet发送请求时,会先执行init方法,然后会调用service方法,通过service方法来判断是调用doGet还是doPost方 法,最后当容器被移除时调用destory方法。
相关文章推荐
- 关于servlet中doPost()或doGet()方法不执行的问题?
- 在servlet中出现service()、doGet()和doPost()方法时的执行问题
- servlet中service() doGet() doPost() 方法
- (Servlet)什么情况下调用doGet()和doPost()方法
- SERVLET中的doGet与doPost两个方法之间的区别
- servlet中service() doGet() doPost() 方法
- doget和dopost方法的意思,为什么在servlet中dopost中调用doget方法
- servlet中service() doGet() doPost() 方法
- Servlet中doGet和doPost方法区别
- Java - 服务器收到用户提交的表单数据,到底是调用Servlet的doGet()还是doPost()方法?
- servlet中service() doGet() doPost() 方法
- Servlet的doGet与doPost方法的区别与使用
- Servlet中doGet和doPost等方法
- servlet中的service()、doPost()、doGet()方法
- servlet中service() doGet() doPost() 方法
- Servlet的几个方法介绍(init() 、service()、doGet() 、doPost()、destroy()、getServletConfig()、getServletInfo())
- moo 7 Servlet init() doget() dopost() service()方法之间的区别及应用/GenericServlet、Servlet、HttpServlet借口之间的关系
- 转: servlet中的service, doGet, doPost方法的区别和联系
- 【JavaEE】Servlet的doGet()和doPost()方法
- servlet中service() doGet() doPost() 方法