CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

jive源代码问题!狂送分!!

楼主wsnds()2002-05-21 16:07:31 在 Java / J2SE / 基础类 提问

研究JIVE也又好长一段时间了,问题就是出在JIVE里的jsp设计,比如创建用户,论坛,发贴什么的好象都与database无关,但实际上在它的database里全部都是与数据库有关的类(DB*.class),但在jsp里怎么好象没有用到DBUser或DBUserManager之类的class呢?而在jsp源代码只是把interface给定义,设置,那在jsp里怎么与数据库打交道呢?又怎么把页面提交的数据如用户名称,密码,email等信息插到数据库呢?我百思不得其解,甚是苦恼,特请指点!谢谢!  
  如:createUser.jsp片断  
   
   
  ProfileManager   profileManager   =   null;  
  if(   !errors   &&   doCreate   )   {  
  //   get   a   profile   manager   to   edit   user   properties  
  profileManager   =   forumFactory.getProfileManager();  
  try   {  
  User   newUser   =   profileManager.createUser(username,password,email);   //jive是怎么把信息插到数据库里的??  
  newUser.setName(   name   );     //newUser是接口啊!不能赋值吧?为什么要这样呢?  
  newUser.setEmailVisible(   emailVisible   );  
  newUser.setNameVisible(   nameVisible   );  
  success   =   true;  
  }  
  catch(   UserAlreadyExistsException   uaee   )   {  
  errorUserAlreadyExists   =   true;  
  errorUsername   =   true;  
  errors   =   true;  
  }  
  catch(   UnauthorizedException   ue   )   {  
  errorNoPermissionToCreate   =   true;  
  errors   =   true;  
  }  
  } 问题点数:100、回复次数:12Top

1 楼aiaiok(小东子~我不入地欲,谁入地域?)回复于 2002-05-21 16:19:35 得分 0

学习!学习!Top

2 楼nielinjie(学当活雷锋ing)回复于 2002-05-21 16:25:23 得分 0

forumFactory.getProfileManager();  
  profileManager.createUser(username,password,email);  
  返回的是类,不是接口。  
  另外接口为什么不能赋值?Top

3 楼wsnds()回复于 2002-05-21 16:44:17 得分 0

nielinjie(分低因为我一般不来),你好,  
  1:forumFactory.getProfileManager();  
  2:profileManager.createUser(username,password,email);  
  3:返回的是类,不是接口。  
  4:另外接口为什么不能赋值?  
  上面是你所说的地点,第一点返回的是ProfileManager接口,第二点返回的是User接口,第三点肯定就不成立了,第四点接口是能赋值,但我不理解在jive中给User.setName(),User.setEmail等有什么作用,请问是不是User.setName()完了以后再User.getName()取得吗?但我发现是取不了的,面向接口编程??请指点,谢谢!  
  Top

4 楼slighting(会飞的蛤蟆)回复于 2002-05-21 17:18:30 得分 0

开发大型系统有个要求那就是:面向接口编程.接口是的方法是可以传值的,系统初始化的时候,就用FACTORY和抽象FACTORY模式,实例化了DbUser.所以,你在调用User.serName方法的时候,实际上是通过动态绑定调了DbUser.setName方法.  
          你可以参考一些设计模式的文章,这里好像有过一篇专么介绍JIVE设计模式的:  
  http://www-900.ibm.com/developerWorks/cn/index.shtmlTop

5 楼wsnds()回复于 2002-05-21 17:30:01 得分 0

那DbUser.setName("测试")了以后,DbUser怎么样才能得到这个值呢?谢谢!!Top

6 楼wsnds()回复于 2002-05-21 17:39:04 得分 0

同上,那User.setName(     "测试     ")了以后,DbUser怎么样才能得到这个值呢?谢谢!!   我的意思是说,在User里setName()与DbUser有什么直接关系吗?怎么样动态绑定调用了DbUser.setName方法呢?Top

7 楼banq(板桥里人)回复于 2002-05-21 18:53:51 得分 0

如何动态梆定,就是用接口啊.  
  User是个interface,   Dbuser是继承User的  
  你可能对接口不是很熟悉,Jive是用了很多GOF的设计模式,  
  你理解了设计模式就了解Jive的体系.  
  关于设计模式和Jive见我的主页  
  http://www.jdon.comTop

8 楼wsnds()回复于 2002-05-22 08:52:30 得分 0

banq(www.jdon.com),你好!很感谢你的回答,正如你说的,我虽然java很长时间了,但是对接口还真的很不熟悉,能否真对上例做个小例子或详细说明一下呢?比如说User.setName("测试"),然后我想知道有没有设置好值了,System.out.println(?????),我就卡在这里出不去了,怎么才能得到它设置的那个值呢?真是百思不得其解,这是一件很痛苦的事情,希望你能帮我解答一下!谢谢了!Top

9 楼hongliqiu(在火中)回复于 2002-05-22 09:15:06 得分 0

up  
  Top

10 楼cyberworm(虫子)回复于 2002-05-22 09:38:24 得分 0

如果实现了newUser接口的类提供了回调Name的方法比如getName()   :)  
  你就能得到你set进去的值了。像楼上说得,去看看patters的书吧。Top

11 楼yakuu(BraveT)回复于 2002-05-22 09:47:07 得分 80

我用jive很长时间了。现在开发的论坛内核也用的是jive。  
  从2.5版开始,jive开始接近一流forum水平,它的整个系统框架和  
  许多代码设计都是非常有研究价值的。  
  上面已经说了很多,在我看来,jive在操作数据库过程中,它创建的  
  对象虽然都是接口类,但是,在实例化的时候,使用的是实现类。也  
  就是DB*.class,比如上面的User.class,在定义对象后,接口类和  
  实现类同时进行实例化。然而,所有的操作数据库,都是在DB*.class  
  这些类的saveToDb(),loadFromDb()等方法中实现。  
   
  呵呵,这么大个东东,要说清楚真是累。欢迎和我交流:  
  taochina@msn.com  
   
  以上只是我的一点使用心得,请指正。Top

12 楼pengji(彭乃超)回复于 2002-05-22 10:00:11 得分 20

 
  public   class   B  
  {  
  public   static   void   main(String[]   args)    
  {  
  a   obja=A1.geta();  
  obja.p("interface   test");  
  }  
  }  
  ////////////  
  public   interface   a  
  {  
  public   void   p(String   str);  
  }////////////////  
  public   class   A1   implements   a  
  {  
  private   static   A1   objA1;  
  public   void   p(String   str)  
  {  
  System.out.println(str);  
  }  
  public   static   a   geta()  
  {  
  objA1=new   A1();  
  return   objA1;  
  }  
  }  
  存为三个文件,然后编译!java   B运行!Top

13 楼wsnds()回复于 2002-05-22 10:23:00 得分 0

yakuu(享受孤独),你好,  
  <-上面已经说了很多,在我看来,jive在操作数据库过程中,它创建的  
  对象虽然都是接口类,但是,在实例化的时候,使用的是实现类。也  
  就是DB*.class,比如上面的User.class,在定义对象后,接口类和  
  实现类同时进行实例化。然而,所有的操作数据库,都是在DB*.class  
  这些类的saveToDb(),loadFromDb()等方法中实现。  
  ->  
  上面所说的接口类和实现类同时进行实例化在哪里体现呢?我看jive源代码的时候好想没有啊!就是直接从factory里得到一个接口,然后对接口进行设置,而具体类(DB*.class)根本就没有初始化啊!请指点!  
   
  Top

相关问题

  • 分析源代码!
  • 送分!源代码
  • 请大家提供一个Jive Version: 2.1.1 的源代码!100分奉送
  • java源代码??(48分)
  • 高分求源代码!!
  • 100分求Socket源代码
  • 100分求Socket源代码
  • 100分求源代码
  • 简单源代码分析
  • 高分求分页源代码!(200分)

关键词

  • 接口
  • 源代码
  • 数据库
  • 设计模式
  • jsp
  • 测试
  • jive
  • dbuser
  • profilemanager
  • setname

得分解答快速导航

  • 帖主:wsnds
  • yakuu
  • pengji

相关链接

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

广告也精彩

反馈

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