地址栏默认的是get提交方式,默认的走service()里面的doGet 方法。
如果重写了service方法,那跳转直接到service方法。
如果没有重写service方法,service方法会根据请求方式,去将请求分发到不同的方法中去处理。
比如 get提交的到doGet 方法中,post提交的到doPost方法中。
这个可以跟一下service方法的源码就可以看到。

解决方案 »

  1.   


    哦哦,其实我的意思是在地址栏直接输入servlet地址,,,不过刚才试了,在只重写doPost和doGet方法的情况下,是直接进入到了doGet方法的,,,,如果在doGet方法中调用doPost方法,则可以直接进入doPost方法。,,,,重写service方法的情况还没有试试,一会写完了试试。多谢。。
      

  2.   


    能看下我发的另外个关于jstl的问题么,,,谢谢啦。。
      

  3.   

    下面是httpservlet的service方法源码,里面有分发跳转    protected void service(HttpServletRequest req, HttpServletResponse resp)
            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);
            }
        }
      

  4.   

    服务器已经自动帮你搞定了,在service方法中判断了一把
      

  5.   

    也就是说如果直接访问这个servlet页面,而不是通过提交form表单,,那么是默认doGet方法。。
      

  6.   

    form表单中默认的是get提交方式,也就是会走service方法,然后跳转到doGet方法。
    form中如果指明了post提交方式,那么会走doPost方法。
    理论上讲,都是先走service方法,如果service方法被重写了,那就根据自己的需要处理业务了,也可以不需要doGet和doPost方法了。