12
返回列表 发新帖
楼主: violent

JSPBEAN的SCOPE的问题?

[复制链接]
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
11#
发表于 2001-12-4 21:19 | 只看该作者

感谢。

我看了connection pool有关的知识,不太理解。比如oracle帮助文档里写的等等。我挑几个问一下:
物理连接可以有几个?比如我这种情况,在没有并发用户的情况下,物理连接就那一会,页面出现了,物理连接也就消失了。极端一点讲,比如有10000个用户在同一时刻点这个页面,物理连接有几个?
逻辑连接不大好理解。你把connectionpool的scope设成application,那是否一直至少有一个物理连接?大家共用一个物理连接?一个物理连接下的多个逻辑连接?

我承认你的思路非常好,可我现在水平不到那个高度。
servlet可以调用bean吗?
bean可以调用bean吗?
我只知道在jsp里可以调用bean呵呵。哎呀我真是糊涂了,用import就可以了对吗?不就是一个class吗!
我现在的代码风格就是我上面给你看的那样,没有分离开各种功能,与所谓的PVM模式差的很远,我自己看都不舒服。太需要努力了

使用道具 举报

回复
论坛徽章:
29
ITPUB元老
日期:2005-02-28 12:57:00奥运会纪念徽章:赛艇
日期:2012-06-27 19:13:53ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322013年新春福章
日期:2013-02-25 14:51:24日产
日期:2013-09-09 12:38:53马自达
日期:2013-09-26 23:28:19马自达
日期:2013-11-20 14:52:01红旗
日期:2013-12-09 11:45:58一汽
日期:2013-12-14 13:27:442014年新春福章
日期:2014-02-18 16:41:11
12#
发表于 2001-12-5 12:43 | 只看该作者
那把我的代码放到JSP中就成了:

<%@ page import="DBConnectionPool" %>
<jsp:useBean id="dbconn" scope="application" class="DBConnectionPool" />
然后我在页面里执行
<%
Connection conn = dbconn.getConnection();
String str="select * from data where id="+request.getParameter("id";
System.out.println(str) ;//观察
Statement stmt = conn.createStatement();
ResultSet rset =stmt.executeQuery (str);
.......
%>

最后我把它关掉:
<%
rset.close;
stmt.close;
//这句不能有!!! conn.closeConn();
finally{dbconn.returnConnection(conn)}
%>

SERVLET,JSP,BEAN,EJB通通都是JAVACLASS,之间调用没有任何问题,关键是怎么调用的问题.

CONNECTIONPOOL的东西下次有空在讲吧.

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
13#
发表于 2001-12-6 21:39 | 只看该作者

谢谢

欢迎继续为大家提供帮助。你能否帮忙看 一下我另外一个问题。用jsp写的一段代码可是有错误(不影响工作)。

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
14#
发表于 2001-12-12 09:53 | 只看该作者

sparky再看看

我尝试用你的思路思考。可发现一个问题:
你说:. 产生一个通用的CONNECTION BEAN(改进的CONNECTION POOL)和一个通用的SQL BEAN(用来执行所有的SQL), 逻辑处理部分放在你的BUSINESS BEAN里如USER BEAN
程序运行一开始,把CONNECION BEAN和SQL BEAN放在APPLICATIONSCOPE里(大家都来共享吧!),

我在逻辑上搞不清楚了,你这样做实际上只有userbean是bean,别的人都是类了,是userbean用import去调用它们,那它们哪有什么scope?在JSP中只需调用BUSSINESS BEAN,也就是说只有BUSSINESS BEAN出现在<jsp:usebean>的语法中,别的人都不在jsp里出现了,哪有什么scope/?

麻烦看一下,不好意思

使用道具 举报

回复
论坛徽章:
29
ITPUB元老
日期:2005-02-28 12:57:00奥运会纪念徽章:赛艇
日期:2012-06-27 19:13:53ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322013年新春福章
日期:2013-02-25 14:51:24日产
日期:2013-09-09 12:38:53马自达
日期:2013-09-26 23:28:19马自达
日期:2013-11-20 14:52:01红旗
日期:2013-12-09 11:45:58一汽
日期:2013-12-14 13:27:442014年新春福章
日期:2014-02-18 16:41:11
15#
发表于 2001-12-12 11:02 | 只看该作者
在USERBEAN里必须有下面类似的METHOD:
private ConnectionPool connPool;
private SqlCommand sqlComd;
public void setConnectionPool(ConnectionPool connPool)
{this.connPool=connPool;}
public void setSqlCommand(SqlCommand sqlComd)
{this.sqlComd=sqlComd;}
public boolean checkUser(...){...}

初始化USERBEAN时必须调用上面两个METHOD否则USERBEAN不能用啊(若USERBEAN要连数据库的话).要调用的话得传CONNECTIONPOOL和SQLCOMMAND过去,那么他们就必须先初始化,在哪初始话,放在什么SCOPE中或者干脆只用一次,别的JSP或SERVLET不需要调用,那么也不需要放在SCOPE里,这些全看你自己的需要.这里给个例子(放在APPLICATION SCOPE里,若用SESSION和REQUEST SCOPE已经有DEFAULT的SESSION和REQUEST OBJECT了,所以挑个难的)

// first servlet called before any jsp page (or you can convert them to 1st jsp)
ConnectionPool connPool;
SqlCommand sqlComd;
// in init()
// ... initialize ConnectionPool
...
// ... initailize SqlCommand
...
// put them into application scope
getServletContext().setAttribute("connection", connPool);
getServletContext().setAttribute("sql", sqlComd);
// in detroy()
// remove connPool and sqlComd

// any jsp page to use connectionPool and sqlCommand
<%
UserBean user = new UserBean();
// pull the them from application scope
ConnectionPool connPool = (ConnectionPool)pageContext.getAttribute("connection", PageContext.APPLICATION_SCOPE);
SqlCommand SqlComd = (SqlCommand)pageContext.getAttribute("", PageContext.APPLICATION_SCOPE);
user.setConnectionPool(connPool);
user.setSqlCommand(sqlComd);
session.setAttribute("user", user);
...
%>

在SERVLETs(或JSPs)之间传递或共享数据还有好几种方法,上面的是"最好用的"(我认为),其它的细节看OREILLY的JAVA SERVLET,里面有更详细的讨论.

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
16#
发表于 2001-12-12 15:15 | 只看该作者

感谢sparky。

你的这些回复对我学习帮助很大,我的思路有了很大拓展。我再看看书籍,消化消化。
我以前一直以为要用bean就得<jsp:usebean>。其实本质上都是class,不用这个而直接定义比如你的方法3也是可以的。我记得以前有人说在bean里不能用构造函数,其实完全可以,用你的方法3的话不就可以吗?
我现在倒觉得<jsp:usebean>好象没必要了,也没简化代码呀,而且它默认的新建对象还不让用构造函数呵呵。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表