type="strutsbook.actions.InsertAction"
我不知道你的ActionForm是不是这个名字。这个type里写的是这个Action所对应的ActionForm的类,struts会根据这里的配置将页面中的数据收集到ActionForm里。

解决方案 »

  1.   

    insertForm定义了吗?里面所有的property只要在form中有,那么你就可以用get来取出
      

  2.   

    <form-bean      name="insertForm"
                        type="addressbook.forms.InsertForm"/>
      

  3.   

    <action    path="/insert"
                   type="strutsbook.actions.InsertAction"
                   name="insertForm"
                   scope="request"
                   input="/insert.jsp">
          <forward name="success" path="/insert.jsp"/>
        </action>
    这个只是一个配置...真正的流程是ActionServlet来完成的...
    ActionServlet里面有许多的方法...先是通过doPost()或者doGet()接受request然后调用process() 方法....
    Process()方法会生成一个当前的RequestProcesor类..这个类把你从request里面传来的数据整合到你在配置文件中定义的ActionForm中.......
    具体的流程你可以去google上查查或者找书来看看
      

  4.   

    看到过相关的一点资料,共享一下:配置ActionServlet实例 
     
    application:应用程序资源包基类的java类名;
     
    config:包含配置信息的XML资源的上下文相关路径;【/web-inf/action.xml】
     
    debug:这个Servlet的调试级别,它控制记录多少信息到日志中;
     
    digester:我们在initMapping()中利用的Digester的调试级别,它记录到System.out而不是Servlet的日志中;
     
    forward:使用ActiongForward实现Java类名;
     
    mapping:使用ActionMapping实现的Java类名;
     
    nocache:如果设置为true,增加HTTP头信息到所有响应中,是浏览器对于说呢管程或者重定向到的任何响应不作缓冲;
     
    null:如果设置为true,设置应用程序资源名,是的如果为止的消息关键字被使用则返回null,否则一个包括不欢迎的消息关键字的出错消息将被返回; 
      

  5.   

    ActionForm Beans 
     
    Struts框架通常假定已经为每一个应用程序中请求的输入创建了一个ActionForm Bean(即一个实现了ActionForm接口的类)。如果您在ActionMapping配置文件中定义了这样的Beans,Struts的ControllerServlet在调用适当的Action方法前将自动执行如下服务:
     
    1、用适当的关键字检查用户的Session中是否有适当的类的Beans的一个实例;
     
    2、如果没有这样的Session范围的Beans,自动建立一个新的Beans并且添加到用户的Session中;
     
    3、对每个名字对应于Bean中的一个属性的请求参数,调用相应的set方法。这个操作类似于以通配符“*”选择所有属性使用标准的JSP行为标记<jsp:setProperty>;
     
    4、更新的ActionFormBean在被调用时将被传递给Action类的perform方法,以使这些值能够立即生效。
     
    在写ActionFormBeans时应该记住一下的原则:
     
    1、ActionForm接口本身不需要特殊的实现方法,它用来标志这些特定的Beans在整个体系结构中的作用。典型情况下,一个ActinoFormBean只包括属性的get方法和set方法,没有商业逻辑;
     
    2、通常在一个ActionFormBean中只有很少的输入验证逻辑。这样的Beans存在的主要理由是保存用户为相关的表单所输入的大部分近期值--甚至在错误被检测到时--这样同样的页面可以被重建,伴随有一些错误信息,这样用户仅仅需要纠正错误字段,用户输入的验证应该在Action类中执行,或者在适当的商业逻辑Beans中执行;
     
    3、在每个表单中出现的字段定义一个属性字段名和属性名必须按照JavaBeans的约定相匹配,例如一个名为Username的输入字段必须引起setUsername()方法被调用;
     
    4、应该注意一个表单在这里讨论时的意义并不在于用户界面中的一个单独JSP页面,在很多应用程序中一个表单延伸到多个页面也是很平常的。例如,通常在安装新的应用程序时使用的导航安装程序的用户界面。Struts鼓励用户定义一个包含梭鱼字段属性的单独的ActionFormBean,不管字段实际上时显示在那个也卖弄,同样的,同一个表单的不同的页面应该提交到相同的Action类,按照上面的说法,那么在大多数情况下,页面设计者可以重新组织不同页面中的字段而不需要改变处理逻辑。