使用JSP技术和JDBC技术访问基于Web的动态数据(2) |
| http://www.zk168.com.cn 招考学习网 2006-4-11 2:45:31 |
|
| -----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]-- |
|
| 使用JSP技术和JDBC技术访问基于Web的动态数据(2)
· JDBC 用于 JSP 页面
那么我们怎样结合使用 JDBC 和 JSP 技术才能使我们的动态内容来自数据库呢?
作为一条普遍的法则,良好的 JSP 惯例建议您应当把表示同模式行为分离。这与面向对象编程中的“模式-视图-控制器(MVC)”范例类似。分离原因之一是,基于 JSP 技术的应用很可能由程序员编写“模式(Model)”和“控制器(Controller)”组件,而由页面设计人员编写“视图(View)”组件。就 JSP 应用体系结构而言,负责表示的“视图”角色由 JSP 页面处理。负责对请求做出响应的“控制器”的角色通常由 servlet 担当,但许多 JSP 用户开始认识到用 JSP 页面来担任“控制器”的角色的优点。“模式”这一角色负责为应用实体的行为构建模式,典型情况下由 JavaBean 组件来担当。
除确定在 MVC 范例中的何处同数据库交互之外,关于在 JSP 页面中集成 JDBC 技术您有多种选择。例如,您可以使用 scriptlet 插入 JDBC 或使用标记库插入,还可以把它隐藏在定制标记或其它的类里。接下来我们要看看一些方式的示例并讨论其用法。
· JSP scriptlet 示例 JSP 程序员新手有可能做的第一件事是写一个 scriptlet 来访问 JDBC。也许写出来的这个 scriptlet 象清单 3 中的示例一样使用 JDBC 来实现该页面的“点击计数器”。(这个页面的实际版本位于 JavaServer Page Developers Guide Web 站点上)
清单 3. JSP 页面通过 scriptlet 使用 JDBC
<jsp:directive.page import="java.sql.*" /> <jsp:scriptlet> Class.forName("org.gjt.mm.mysql.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "", ""); Statement statement = connection.createStatement(); int changed = statement.executeUpdate("update counters set hitCount = hitCount + 1 " + "where page like ´" + request.getRequestURI() + "´"); if (changed == 0) statement.executeUpdate("insert counters(page) values(´" + request.getRequestURI() + "´)"); ResultSet rs = statement.executeQuery("select hitCount from counters where page like ´" + request.getRequestURI() + "´"); rs.next(); int hitCount = rs.getInt(1); statement.close(); connection.close(); </jsp:scriptlet>
<HTML> <HEAD> <TITLE>JDBC scriptlet example</TITLE> </HEAD> <BODY>
<P>This page has been hit <jsp:expression>hitCount</jsp:expression> times. The page counter is implemented by a JSP scriptlet calling the JDBC package directly.</P>
</BODY> </HTML>
该页面中有一个 scriptlet(高亮的第一部分)连接到数据库、创建 statement(语句)并试图对一个以页面的 URI 为主键的计数器记录进行更新。如果更新没有对任何行起作用,那么这个示例就假定没有这样的记录并添加一条。最后,这个 scriptlet 查询数据库中当前点击计数并把结果赋给一个局部变量。继续往下看,这个 JSP 页面的“表示”部分中高亮的 JSP 表达用于显示点击计数器的值。
注:您也许不希望真的以这种方式实现点击计数器。为每一次请求而更新数据库的开支是不必要的开销。但是,我们可以用点击计数器这个对数据库进行更新和查询的简单示例来说明在您的 JSP 页面中集成 JDBC 的各种途径。 尽管 JSP 页面能起作用,但它有许多问题。首先,不编程的页面设计者不会希望在页面中看到 scriptlet。坦白的讲,连程序员也不会希望在页面中有这类内容,因为它使页面的实际内容变得杂乱。第二,为简化示例,这个页面缺少异常处理,而这个异常处理应该是实际的 JDBC 代码中的一部分。第三,点击计数器的实现的确是嵌在 JSP 页面里的,因此对点击计数器的任何更改都需复制到使用点击计数器的每个 JSP 页面。
那么我们怎样修改这个 JSP 页面呢?一种常用的解决方案是使用标记库换掉 scriptlet。在下一个示例中,我们会看一下这种可选择的解决方案。
(未完待续)
|
| -----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]-- |
友情提醒:
1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网 友来信指正!
2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
4.如需转载请注明出处及作者,谢谢合作!
5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL: XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接! |
|