当前位置: 技术问答>java相关
请大家帮我看看jsp/javabean这样的设计可以吗?大家一定帮我啊,谢谢啦。发言有分了
来源: 互联网 发布时间:2015-04-25
本文导语: 我刚刚开始做项目,没经验,所以请大家出出主意 我开始写的jsp是把所有的程序都写到jsp里了,我觉得这样做很方便,最让我高兴的是修改很容易,改来改去的也不用重新启动,可是主管说不可以,要我把数据库的...
我刚刚开始做项目,没经验,所以请大家出出主意
我开始写的jsp是把所有的程序都写到jsp里了,我觉得这样做很方便,最让我高兴的是修改很容易,改来改去的也不用重新启动,可是主管说不可以,要我把数据库的操作方到bean里面,于是我重新设计了以下:
我先定义了一个类,这个类实现的功能和MyResultSet的类似(但和数据库无关),是一个集合组,也就是一个ArrayList,里边放的对象是一个HashMap,HashMap的键就是对应数据库中的字段名,值就是从数据库中取出的字段内容。
我在bean 里面查询数据库,检索出的结果集合java.sql.ResultSet通过absolute()定位到我要的记录位置,然后通过rs.next()取出我要的记录,并且把每个rs的记录字段去出,重新封装到我的MyResultSet,这样我就可以返回个MyResuletSet对象到JSP页面,而且我还可以在bean里把数据库的连接资源释放掉。
这样我的Jsp页面上就没有数据库的操作了,所完成的仅仅是显示结果啊
请问:
1、我的设计可行吗?有没有什么严重的缺陷啊
2、这样设计的效率会不会差啊
3、有没有更好的办法
4、如果直接返回java.sql.ResultSet给Jsp,那数据库就不能在bean关闭了。直接返回java.sql.ResultSet好,还是封装一下返回的好
请大家一定帮我啊!做不好饭碗就没了呢
如果可以,我写好代码,贴出来大家帮我挑挑毛病
我开始写的jsp是把所有的程序都写到jsp里了,我觉得这样做很方便,最让我高兴的是修改很容易,改来改去的也不用重新启动,可是主管说不可以,要我把数据库的操作方到bean里面,于是我重新设计了以下:
我先定义了一个类,这个类实现的功能和MyResultSet的类似(但和数据库无关),是一个集合组,也就是一个ArrayList,里边放的对象是一个HashMap,HashMap的键就是对应数据库中的字段名,值就是从数据库中取出的字段内容。
我在bean 里面查询数据库,检索出的结果集合java.sql.ResultSet通过absolute()定位到我要的记录位置,然后通过rs.next()取出我要的记录,并且把每个rs的记录字段去出,重新封装到我的MyResultSet,这样我就可以返回个MyResuletSet对象到JSP页面,而且我还可以在bean里把数据库的连接资源释放掉。
这样我的Jsp页面上就没有数据库的操作了,所完成的仅仅是显示结果啊
请问:
1、我的设计可行吗?有没有什么严重的缺陷啊
2、这样设计的效率会不会差啊
3、有没有更好的办法
4、如果直接返回java.sql.ResultSet给Jsp,那数据库就不能在bean关闭了。直接返回java.sql.ResultSet好,还是封装一下返回的好
请大家一定帮我啊!做不好饭碗就没了呢
如果可以,我写好代码,贴出来大家帮我挑挑毛病
|
没什么问题,你的设计很符合一般的JSP/BEAN设计!
不过我建议你还是用VECTOR因为ARRAYLIST并不是同步的!
不过我建议你还是用VECTOR因为ARRAYLIST并不是同步的!
|
这样要比你以前的作法好多了
可以在你的这个Java类里封装很多方法
insert,delete,updata等
还有,在页面上的页也可以在这里实现
可以在你的这个Java类里封装很多方法
insert,delete,updata等
还有,在页面上的页也可以在这里实现
|
建议看看一看J2ee 的有关设计指南与OOA 的书籍.
在没有用到 Ejb 的情况下,java Bean就是其业务层,所有的业务逻辑都应该在bean中实现而不仅仅是如何返回一个结果集的问题.
根据不同的需要可以返回不同的用户对象集.
在没有用到 Ejb 的情况下,java Bean就是其业务层,所有的业务逻辑都应该在bean中实现而不仅仅是如何返回一个结果集的问题.
根据不同的需要可以返回不同的用户对象集.
|
1、基本上是没有问题的
2、效率可以,
3、若JSP中没有JAVA的语句会更好,即没有流程之类的语句;
4、生成一个对象来代表数据库的一个表,会更直观!
2、效率可以,
3、若JSP中没有JAVA的语句会更好,即没有流程之类的语句;
4、生成一个对象来代表数据库的一个表,会更直观!
|
基本上是没有问题的但不是很清楚
我建议你这么做
创建一个class,负责数据库的连接(据库的连接的参数可放到一个文件中)
负责接收sql语句,并执行数据库操作,返回操作结果(对
select操作可返回一个vector结果集,对update, delete,
insert可返回一个操作成功失败信息)
创建bean,负责调用class中执行sql语句的方法,并传入sql语句,接受
执行结果,对结果进行你需要的操作
在jsp中调用bean中的方法,显示相应信息
我建议你这么做
创建一个class,负责数据库的连接(据库的连接的参数可放到一个文件中)
负责接收sql语句,并执行数据库操作,返回操作结果(对
select操作可返回一个vector结果集,对update, delete,
insert可返回一个操作成功失败信息)
创建bean,负责调用class中执行sql语句的方法,并传入sql语句,接受
执行结果,对结果进行你需要的操作
在jsp中调用bean中的方法,显示相应信息
|
为实现某些功能通常会有同时打开两个记录集的情况,这样直接返回ResultSet对象就存在一些问题。但是Vector用起来远不如Resultset来得方便些。我觉得也应该能够直接返回ResultSet对象。
|
如果要显示结果集,我觉得你输出xml文件比较好!
|
我推荐你使用ResulSet 在Jsp里面关闭。
因为这样占用内存少,否则,在ResultSet未关闭时,要开设一个vector的内存,
对于频繁访问的多记录大数据库来说,肯定浪费。
真正做东西不能太按照理论, 既然你不是做EJB,我想选择Javabeans的理由就是其效率高,如果你想完美实现什么模式,不如你去使用J2ee.
因为这样占用内存少,否则,在ResultSet未关闭时,要开设一个vector的内存,
对于频繁访问的多记录大数据库来说,肯定浪费。
真正做东西不能太按照理论, 既然你不是做EJB,我想选择Javabeans的理由就是其效率高,如果你想完美实现什么模式,不如你去使用J2ee.
|
你主管是正确的,
但是不要返回MyResuletSet给jsp
你操作完数据库必须断开连接
那么这时使用MyResuletSet就会出错
所以你最好返回用Vector或者Collection等结构的数据
但是不要返回MyResuletSet给jsp
你操作完数据库必须断开连接
那么这时使用MyResuletSet就会出错
所以你最好返回用Vector或者Collection等结构的数据
|
同意muly(feather) 的做法,我觉得这样比较合理,一般的情况下,可以解决大部分问题,而且你的javabean也不会受限太大!!!!
|
我要使用servlet来实现呢?我认为也未尝不可
|
最好返回vector,逻辑和表现分开