2 JSP中实现客户端动态显示与隐藏功能的技术路线
使用JSP (Javas erverp age)实现的B/W/D结构的优点是操作方便,运行效率高。JSP是使用Java实现的动态网页,其动态性主要表现在同一个网页在输入不同的参数后,Java程序能根据输入参数去查询数据库从而显示出不同的内容,这是与传统的静态网页的不同之处!但是显示到浏览器的网页其实也是一个静态的网页,要实现静态网页与用户的互动,只能通过客户端脚本语言JavaScript与HTML相结合来进行。
2.1 客户端动态显示与隐藏
HTML中的DIV标签用来标记某一块独立的信息单元,将这个DIV标签的style属性设置为displaymone时,DIV所包含的内容可以实现隐藏;当将这个DIV标签的style属性设置为display:时,DIV所包含的内容就可以显示出来。由于DIV是一个HTML标签,所以可以使用客户端脚本语言JavaScript来控制DIV标签的style属性值,达到客户端信息的动态显示与隐藏的目的。
对于需要逐层显示与隐藏的BOM来说中,要求BOM信息按照显示的顺序在网页上排列好,这样才能通过DIV来控制上层信息对下层信息的显示与隐藏,事实上BOM信息的显示与隐藏并不改变BOM信息在网页上的实际排列。如某行显示的是一个部件,那么其下一行开始显示的信息是在BOM中将这个部件当成一个产品来所查得的部件BOM信息,而上一层的BOM数据就要顺序后移。
2.2 Java中的数据访问与集合技术的结合
使用JSP技术通过Java代码来实现数据库的存取,并返回一个ResultSet类型的结果集对象。因为ResultSet数据集中的数据是一次查询的结果。而查得的下层BOM信息有可能插入到上层BOM信息中间,所以BOM信息在Web服务器端的临时存贮就不能以一个ResultSet数据集来完成,解决这个问题的办法就是要将每次查询得到的结果集数据按照要显示的顺序放到一个动态数组中。
在Java2中的Vector类可以支持动态数组,并且可以将不同类型的对象(当然相同类型的对象更没有问题)引用到Vector类的对象中去。Vector引用的对象存储的是一条条BOM 信息,而不是一个个的ResultSet数据集,所以在构建Vector对象时就必须对每一次查询得到的ResultSet数据集中的BOM信息进行重新处理,使数据集中的BOM信息能够按照要显示的1顷序在Vector对象中排列好。这是一个先序遍历过程,具体操作过程流程如图3所示。

网页上显示的是Vector对象中的一条条BOM信息,由于这些信息已经在Vector对象中按照相互的从属关系排列好,所以只要完全按照Vector中的顺序显示出来后,这些BOM信息之间的相互关系就可以正确显示出来,通过BOM信息中的“属于哪一级”信息,保证每一个层次的BOM信息都属于同一个DIV。通过“是否有下一级”就可以确定层与层之间的相互关系。
所以如果某一层DIV可见,则该层BOM能显示,如果该层DIV不可见,则该层BOM就隐藏。结合JSP中的集合技术、HTML中的DIV及Javascript代码实现了BOM在客户端的动态显示与隐藏。
3 结束语
通过一次先序遍历就可以将一个树状结构的产品BOM信息从数据库中提取出来(实际的实现中是通过多次数据库表的查询来完成),并按照需要显示的顺序存储到Vector对象的引用中。在网页上通过使用JavaScript来控制DIV标签的style属性的设置,就可以控制DIV标签的显示与隐藏,从而做出动态逐层显示与隐藏BOM信息的网页效果,有利于有效利用网页空间来显示BOM的树状信息。