http://localhost:8080/webroot/login登录试试。
struts会自己识别.do 

解决方案 »

  1.   

    你的struts-config.xml里面怎么写的?
      

  2.   

    <html:form   action="/login"   > 
    这里的action会根据你web.xml中的配置,自动生成带后缀名的
    你可以右键看一下你的页面源代码
      

  3.   

    Action要绑定form,这是在struts-config.xml中配置的,
    <html:form   action="/login"   >是struts的自定义标签, 
    用到了login这个action,那么,Struts这个框架就会为这个页面初始化对应的form,
    跟ActionServlet无关。 
      

  4.   

    看来你对struts工作流程还不大明白
    在你请求的是login.jsp页面的时候,struts会先根据你的struts-config.xml文件实例化一个form,所以当你请求login.jsp页面的时候会先调用一下reset()方法,这个你可以先实验一下,你把form中的和页面相对应的属性去掉一个,然后再访问页面你会发现页面会出错,虽然你页面没有任何问题的
    第二个问题,action会自动生成带.do的请求,这是struts标签html:form来完成的
      

  5.   

    看看CSDN这位兄弟的帖子,也是初学者,hehe:
    http://topic.csdn.net/u/20071109/20/4549638a-65d9-421c-883f-4a5e0dbf5abd.html
      

  6.   

    同意zhb_821012的解释。
    当点击提交按钮,struts会先执行ActionForm中的validator()方法,当validator返回null值,才提交给Action类进行处理。其实还是RequestProcessor类在控制整个流程。