我估计也是这样的。
但有不同:
“系统初始化exampleForm,根据该exampleForm中的set方法,将search_m中的html元素取得”:
根据jsp页面上的struts的html标签,将这个标签对应的属性值写入刚初始化完的exampleForm实例中。

解决方案 »

  1.   

    “jsp页面上的html元素命名必须和exampleForm中的set方法以及get方法后面的方法名一样”:
    是这样的,否则会报错!它同时遵守jsp标签和JavaBean规范。
      

  2.   

    基本上正确,但对问题的理解不够深入。
    1、<html:form>是Struts自定义标签,它的处理一是把Bean变量加入Form中;二是产生一些Javascript,如Javascript数据验证等;三是生成标准<form>输出。
    2、在一些场合里,<html:form>中的name不一定在配置文件中有对应的name
      

  3.   

    name只代表这个form内默认的是哪个Bean。form内还可以同时用到其它的Bean。
    3、如果,<html:form>中的Bean要用配置是的Bean,那么两者的name名一定要是一至的,否则谁知道谁呢?但是,这个name是定义的Bean名,并不是Bean中的属性,不需要setName()和getName。
    4、excute()中的参数ActionForm就是用户提交的表单中的Bean,也就是form。但并不是最初的初始化时的值了。
    5、查询数据库时,可以用ActionForm保存数据,但这时与你要用户提交数据时的ActionForm是不同的。所以,通常另定义一个Bean类来保存数据库查询结果。
    6、action=main.do?action=example中的action=example并不是默认地表示返回哪一页,action=通常用来传递事件类型或操作类型。只不过你这里正好是把action=example与Action配置项中的<forward>配置成一样的。通过在<forward>中可定义几个页面,在excute()中根据不同的情况转发到不同的页面,有时还定义了输入页面,excute()中有操作不成功时,让它返回输入页面。
    7、如果为了方便和快速,开发Struts建议采用JSPStudio开发工具。
      

  4.   

    首先很感谢kui(kui)耐心长篇的解释^_^,不过我还有几点疑问,都糊涂了现在:)
    1、你说道<html:form>是struts的自定义标签:我在jsp页面中,还是使用html的标准元素<form></form>,没有使用struts的form标签,这有不妥的地方么?
    2、不是很看的明白你指的name是哪个name
    3、你指的name是不是指<bean:define id="carBrands" name="carBrandList" type="com.list.CarBrandList"/>中的name?
    我指的name是指在jsp页面上<form></form>中定义的html元素的name,诸如
    <select name="aaa"></select>和<input type="text" name="bbb">中的name
    4、你最后说道不是最初的初始化的值了:我的理解是初始化的form作为参数传递到excute方法的时候,已经经过后台处理,并形成一个经过set方法的form,究竟set哪些值是看jsp页面被提交的<form></form>里定义了哪些html元素决定的。我不是很理解你说的初始化的form到底是怎么样的一个form?能再解释一下么?
    5、这点我知道的呵呵。传递到excute参数的form主要是用于传递页面参数,至于查询结果肯定是要new一个诸如ArrayList这样的一个list,填装ResultSet的返回值后,再返回给调用者的直至最后页面的呈现。
    6、这点我也是知道的。可以在程序里通过Form.get("action")得到该action,然后通过反射调用与该action值同名的方法,然后方法返回一个forward的string值,该值必须能在struts-config.xml里相应的<action></action>里找到相应的forward跳转页面。
    7、知道了,谢谢。