地址栏默认的是get提交方式,默认的走service()里面的doGet 方法。
如果重写了service方法,那跳转直接到service方法。
如果没有重写service方法,service方法会根据请求方式,去将请求分发到不同的方法中去处理。
比如 get提交的到doGet 方法中,post提交的到doPost方法中。
这个可以跟一下service方法的源码就可以看到。
如果重写了service方法,那跳转直接到service方法。
如果没有重写service方法,service方法会根据请求方式,去将请求分发到不同的方法中去处理。
比如 get提交的到doGet 方法中,post提交的到doPost方法中。
这个可以跟一下service方法的源码就可以看到。
哦哦,其实我的意思是在地址栏直接输入servlet地址,,,不过刚才试了,在只重写doPost和doGet方法的情况下,是直接进入到了doGet方法的,,,,如果在doGet方法中调用doPost方法,则可以直接进入doPost方法。,,,,重写service方法的情况还没有试试,一会写完了试试。多谢。。
能看下我发的另外个关于jstl的问题么,,,谢谢啦。。
throws ServletException, IOException {
String method = req.getMethod();
if (method.equals(METHOD_GET)) {
long lastModified = getLastModified(req);
if (lastModified == -1) {
doGet(req, resp);
} else {
long ifModifiedSince;
try {
ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
} catch (IllegalArgumentException iae) {
ifModifiedSince = -1;
}
if (ifModifiedSince < (lastModified / 1000 * 1000)) {
maybeSetLastModified(resp, lastModified);
doGet(req, resp);
} else {
resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
}
}
} else if (method.equals(METHOD_HEAD)) {
long lastModified = getLastModified(req);
maybeSetLastModified(resp, lastModified);
doHead(req, resp);
} else if (method.equals(METHOD_POST)) {
doPost(req, resp);
} else if (method.equals(METHOD_PUT)) {
doPut(req, resp);
} else if (method.equals(METHOD_DELETE)) {
doDelete(req, resp);
} else if (method.equals(METHOD_OPTIONS)) {
doOptions(req,resp);
} else if (method.equals(METHOD_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(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg);
}
}
form中如果指明了post提交方式,那么会走doPost方法。
理论上讲,都是先走service方法,如果service方法被重写了,那就根据自己的需要处理业务了,也可以不需要doGet和doPost方法了。