jsp:
<form action="test" method="post">
      username:<input type="text" name="username"><br>
      password:<input type="password" name="pwd">
      <input type="submit"> </form>Test.java
public class Test extends HttpServlet
{
   public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {    }
   public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
   {
    
    }
}web.xml
<servlet>
       <description>This is the description of my J2EE component</description>
       <display-name>This is the display name of my J2EE component</display-name>
       <servlet-name>Test</servlet-name>
       <servlet-class>com.ht.servlet.Test</servlet-class>
     </servlet>
     <servlet-mapping>
       <servlet-name>Test</servlet-name>
       <url-pattern>/test</url-pattern>
     </servlet-mapping>
疑问:
1) 当我提交的时候,是通过action找到Test这个类了吧?
2) 那怎么就自动的调用了doPost()这个方法了呢?

解决方案 »

  1.   

    是因为method="post"所以就调用了doPost() 方法
    那么怎么知道的就调用doPost()呢?
    是通过哪里调用了呢?
      

  2.   

    父类HttpServlet中有service方法。
    service中调用的doPost方法
      

  3.   

    通过form表单的提交方式,去调用doget还是dopost;在form表单中有一个method属性可以设置为post或get
      

  4.   

    问题1:通过WEB.XML中的Servlet配置找到的TEST类
    问题2:父类HttpServlet中有service方法调用的doPost方法这一切都是Servlet容器自动实现的,有兴趣可以看Servlet源码
      

  5.   

    一个类,不是只有构造函数自动执行的吗?
    HttpServlet 的 service是方法吧,那也可以自动调用?
      

  6.   

    简单说一下Servlet的生命周期,通常情况下
    启动TOMCAT servlet.ini方法自动执行
    客户端发出请求 servlet.service方法自动执行
    关闭TOMCAT servlet.destroy方法自动执行
      

  7.   

    这个问题我从来都没有想过,不过使用反射机制应该就可以实现了,需要时动态执行service()方法应该是没有问题的,嘿嘿,只是猜测,没有看过源代码!
      

  8.   

    等学会了自定义tld文件,也就理解其中的原理了
      

  9.   

    servlet会寻找jsp里的form 的method属性,是post就会找到dopost方法,是get就会找到doGet方法。这是“甲鱼的臀部”---”规定“   的。