CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  框架、开源

[Struts]主从表结构的数据显示!

楼主jade007(询人启事)2005-05-16 11:50:03 在 Java / 框架、开源 提问

大家在用Struts的时候查询遍历主从表数据是怎么做的?  
  在Action里应该怎么写?   JSP里应该怎么写?   请举个简单的例子. 问题点数:100、回复次数:16Top

1 楼nimifeng(学海无涯.......苦作舟....理解是美!!!Mars.Neil)回复于 2005-05-16 11:54:16 得分 0

不熟.帮顶.学习.Top

2 楼loveyousomuch(★Allen★)回复于 2005-05-16 11:59:39 得分 0

楼主说的是多表查询??  
   
  要不你专门写个View视图,其中包括你耍显示的所有属性就可以了,不过就是有点麻烦Top

3 楼jade007(询人启事)回复于 2005-05-16 12:03:21 得分 0

可以说是多表,主要是主表和从表,怎么样在STRUTS里显示出来呢?Top

4 楼jade007(询人启事)回复于 2005-05-16 12:04:24 得分 0

专门写个VIEW?不明白.是自定义TAG吗?Top

5 楼jade007(询人启事)回复于 2005-05-16 14:52:17 得分 0

还有个问题,  
   
  1.在ACTION里遍历好返回一个LIST呢,然后在JSP直接遍历?  
  2.还是在ACTION里返回两个主从的LIST,然后在JSP循环遍历呢?  
   
  希望大侠们多多指教啊.........Top

6 楼bitou(大鹏一日同风起,扶摇直上九万里)回复于 2005-05-17 18:06:08 得分 100

不论主从表还是多表查询,其结果均可用一个简单的javabean来表示,即一个View,举个例子  
  主表中有  
  corpID(公司ID),corpname(公司名),corpaddress(公司地址)...  
  从表  
  employeeID(员工ID),corpID(公司ID),empname(员工姓名)...  
  那么你可以建一个这样的VIEW    
  public   class   EmployeeView   implements   Serializable{  
          private   int   CORPID;                      
          private   int   EMPLOYEEID;  
          private   String   CORPNAME;  
          private   String   CORPADDRESS;  
          private   String   EMPNAME;                
  //然后是一大串的get()   set()   方法啦  
  }        
  然后在取数据时  
  //...  
  ArrayList   list   =   new   ArrayList();  
  while(rs.next()){  
        EmployeeView   view   =   new   EmployeeView();  
        view.setCORPID(rs.getInt("CORPID"));  
  //...  
  //View     数据set   完以后别忘了加到ArrayList中去  
  list.add(view);  
  }  
  return   list;//返回的就是一个包含所有View的ArrayList了,数据就随便你怎么用啦  
   
   
   
  Top

7 楼GFNotFoundException(喜欢下雨天)回复于 2005-05-17 19:27:43 得分 0

学习ing~关注Top

8 楼jade007(询人启事)回复于 2005-05-18 10:54:33 得分 0

我觉得用二维列表还可以,但在JSP里却不知道怎么写了:  
   
  public   List   getList()   {  
  mainlist   =   getProductClass1Service().getClass1AllList();  
  for   (int   i   =   0;   i   <   mainlist.size();   i++)   {  
  list2   =   new   ArrayList();  
  pc1   =   (ProductClass1)   mainlist.get(i);  
  list2.add(pc1);  
  sublist   =   getProductClass2Service().getClass1IDList(pc1.getClass1No());  
  System.out.println("sublist测试数据:"+sublist.size());  
  list3   =   new   ArrayList();  
  for   (int   j   =   0;   j   <   sublist.size();   j++)   {  
  list3.add((ProductClass2)   sublist.get(j));  
  }  
  list2.add(list3);  
  list1.add(list2);  
  }  
  return   list1;  
  }  
   
  public   static   void   main(String[]   args)   {  
  ProductClass1   pc1;  
  ProductClass2   pc2;  
  TestClassManages   tc   =   new   TestClassManages();  
  List   list   =   tc.getList();  
  List   list1;  
  List   sublist;  
  System.out.println("测试数据:"+list);  
  for   (int   i   =   0;   i   <   list.size();   i++)   {  
  list1=(List)list.get(i);  
  pc1   =   (ProductClass1)   list1.get(0);  
  System.out.println("编号:"   +   pc1.getClass1No());  
  System.out.println("名称:"   +   pc1.getClass1Name());  
  System.out.println("注释:"   +   pc1.getClass1Description());  
  System.out.println("关键:"   +   pc1.getClass1Keywords());  
  System.out.println("点击:"   +   pc1.getClass1Click());  
  System.out.println("相关:"   +   pc1.getClass1Interfix());  
  System.out.println("===================下属类=================");  
  sublist   =   (List)   list1.get(1);  
   
  for   (int   j   =   0;   j   <   sublist.size();   j++)   {  
  pc2   =   (ProductClass2)   sublist.get(j);  
  System.out.println("大号:"   +   pc2.getClass1No());  
  System.out.println("编号:"   +   pc2.getClass2No());  
  System.out.println("名称:"   +   pc2.getClass2Name());  
  System.out.println("注释:"   +   pc2.getClass2Description());  
  System.out.println("关键:"   +   pc2.getClass2Keywords());  
  System.out.println("点击:"   +   pc2.getClass2Click());  
  System.out.println("相关:"   +   pc2.getClass2Interfix());  
  }  
  System.out.println("=========================================");  
  System.out.println("==========================================================");  
  }  
   
  }  
   
  请问main()里的代码在JSP里怎么写?最主要的logic:iterate和bean:define应该怎么写呢?Top

9 楼bitou(大鹏一日同风起,扶摇直上九万里)回复于 2005-05-18 11:37:38 得分 0

楼主你把它弄得太复杂啦,你把主表记录作为一个List,然后该主表的所有子记录放到另一个List,然后再通通放到另一个List,客观的讲,这种做法不可取,第一,无端增加了资源的开销,第二,你取数据的过程弄复杂了,第三,你的JSP记录显示也变复杂了  
  Top

10 楼jade007(询人启事)回复于 2005-05-18 11:52:46 得分 0

还有更好的方法吗??请指教了.Top

11 楼jade007(询人启事)回复于 2005-05-18 11:56:50 得分 0

to:bitou(大鹏一日同风起,扶摇直上九万里)    
  非常感谢你的思路..  
  你上面所提供的思路我觉得只能对单一主表显示,  
  但我现在要的是所有主表和从表的遍历,有没有更好的,更便于Struts遍历的思路呢?Top

12 楼lchao12(南海)回复于 2005-05-20 14:27:09 得分 0

首先,先定义一个BEAN,里面包含要查询和显示的字段.  
   
  其次,使用SQL   语句把结果集存在两个不同定级的LIST中.然后在JSP中使用循环在显示LIST中不同的属性值.其中LIST结点中保存要显示的数据的结构.Top

13 楼jade007(询人启事)回复于 2005-05-23 10:05:22 得分 0

两个不同定级的LIST??不同的属性值??  
  能具体说清楚点吗?Top

14 楼bitou(大鹏一日同风起,扶摇直上九万里)回复于 2005-05-23 15:58:43 得分 0

回楼主,这种方法当然也能适用多表查询  
  第一步:创建View  
  public   class   EmployeeView   implements   Serializable{  
          private   int   CORPID;                     //主表中的字段        公司ID    
          private   String   CORPNAME;           //主表中的字段        公司名称  
          private   String   CORPADDRESS;     //主表中的字段        公司地址  
          private   int   EMPLOYEEID;             //从表中的字段        员工ID  
          private   String   EMPNAME;             //从表中的字段           员工姓名  
  //然后是一大串的get()   set()   方法啦  
  }    
  --------------------------------------------  
  第二步:从数据库取数据  
  public   Class   Test{  
  public   ArrayList   getDataList   throw   Exception{  
  //...  
  String   sql   =   "select   *   from   corp,employee   where   corp.id   =   employee.id";     //SQL语句  
  try{  
  //ResultSet   rs   =   stmt.executeQuery(sql);  //执行数据库查询  
  ArrayList   list   =   new   ArrayList();  
  while(rs.next()){         //取记录  
        EmployeeView   view   =   new   EmployeeView();  
        view.setCORPID(rs.getInt("CORPID"));  
        view.setCORPNAME(rs.getString("CORPNAME"));  
        view.setCORPADDRESS(rs.getString("CORPADDRESS"));  
        view.setEMPLOYEEID(rs.getInt("EMPLOYEEID"));  
        view.setEMPNAME(rs.getString("EMPNAME"));  
  //...  
  //View     数据set   完以后别忘了加到ArrayList中去  
  list.add(view);         //将view   加到List中  
  }  
  catch(Exception   e){  
  System.out.println("------Exception");  
  }  
  return   list;//返回的就是一个包含所有View的ArrayList了,数据就随便你怎么用啦  
   
  }  
  }  
  ------------------------------------------------------  
  第三步:显示数据  
  ArrayList   list   =   Test.getDataList();//即你查询数据库返回List的那个方法  
  for(int   i=0;i<list.size();i++){  
  EmployeeView   view   =   (EmployeeView)list.get(i);  
  out.println("公司名称:"+view.getCORPNAME());     //主表数据           公司名称                
  out.println("员工姓名:"+view.getEMPNAME());//取出从表数据  员工姓名  
  //其它类似  
  }Top

15 楼wkj520()回复于 2005-05-24 14:13:21 得分 0

不错  
  大部门都是这样处理主从关系的Top

16 楼jade007(询人启事)回复于 2005-05-24 15:13:32 得分 0

To:   bitou(大鹏一日同风起,扶摇直上九万里)  
  非常感谢你的思路.......祝你工作顺利,步步高升,女孩子越泡越多.哈哈!Top

相关问题

  • 三层 结构中,主从表数据提交的 事务控制 ???
  • 主从表取数据
  • 请问哪里有Struts主从结构(如采购单和采购单明细)同时保存的例子?
  • ¥@CSDN:三层结构中的主从表
  • 三层结构主从关系
  • 求救:三层主从结构!!!!!!!!!!!
  • pfc主从数据窗口问题
  • 数据库复制问题,主从表
  • FastReport的主从数据的问题
  • 主从表数据比较,多题

关键词

  • 数据
  • struts
  • view
  • jsp
  • 主从
  • 遍历
  • employeeview
  • corpid
  • 表
  • 显示

得分解答快速导航

  • 帖主:jade007
  • bitou

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo