在servlet中默认情况下,无论你是get还是post 提交过来都会经过service()方法来处理,然后转向到doGet
或是doPost方法,可以看HttpServlet 类的service方法:
Java代码
[java] view plain copy
1. protected void service(HttpServletRequest req, HttpServletResponse resp)
2. throws ServletException, IOException
3. {
4. String method = req.getMethod();
5. if(method.equals("GET"))
6. {
7. long lastModified = getLastModified(req);
8. if(lastModified == -1L)
9. {
10. doGet(req, resp);
11. } else
12. {
13. long ifModifiedSince = req.getDateHeader("If-Modified-Since");
14. if(ifModifiedSince < (lastModified / 1000L) * 1000L)
15. {
16. maybeSetLastModified(resp, lastModified);
17. doGet(req, resp);
18. } else
19. {
20. resp.setStatus(304);
21. }
22. }
23. } else
24. if(method.equals("HEAD"))
25. {
26. long lastModified = getLastModified(req);
27. maybeSetLastModified(resp, lastModified);
28. doHead(req, resp);
29. } else
30. if(method.equals("POST"))
31. doPost(req, resp);
32. else
33. if(method.equals("PUT"))
34. doPut(req, resp);
35. else
36. if(method.equals("DELETE"))
37. doDelete(req, resp);
38. else
39. if(method.equals("OPTIONS"))
40. doOptions(req, resp);
41. else
42. if(method.equals("TRACE"))
43. {
44. doTrace(req, resp);
45. } else
46. {
47. String errMsg = lStrings.getString("http.method_not_implemented");
48. Object errArgs[] = new Object[1];
49. errArgs[0] = method;
50. errMsg = MessageFormat.format(errMsg, errArgs);
51. resp.sendError(501, errMsg);
52. }
53. }
从上面可以看出 这里的service是用来转向的,但是如果你在自己的servlet类中覆盖了service方法,比如说你的service是这样的:
Java代码
[java] view plain copy
1. public void service(ServletRequest req, ServletResponse res)
2. throws ServletException, IOException {
3. res.getOutputStream().print(
4. "image is <img src='images/downcoin.gif'></img><br>");
5. }
那么这时service就不是用来转向的,而是用来处理业务的,现在不论你的客户端是用pos还是get来请求此servlet
都会执行service方法也只能执行servlet方法,不会去执行doPost或是doGet方法。
|
|