热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

建立JSP操作以提高数据库访问的效率_MySQL

从服务器端促进程序快速开发的JavaServerPages(JSP)决定它成为一种广为流行的工具。虽然呆板的一面仍然存在,然而无论它包含多少缺点,JSP能够为Web程序设计者提供很多东西,尤其是与数据库的输入和输出操作与数据的处理。通过JSP来进行数据库访问不需要太多的引导
从服务器端促进程序快速开发的Java Server Pages (JSP)决定它成为一种广为流行的工具。虽然呆板的一面仍然存在,然而无论它包含多少缺点,JSP能够为Web程序设计者提供很多东西,尤其是与数据库的输入和输出操作与数据的处理。
通过JSP来进行数据库访问不需要太多的引导。问题是如何使开发者能够接受Web程序的数据库访问比传统的本地OLAP系统的数据库访问更加具有吸引力,并且使他们认识到,整洁和简要的数据访问方法才是关键的。在这一点上,JSP可以很好地解决。

你能够做哪些?
如果你正在编写高数据量、数据密度大的Web程序时,你的数据库访问应该具备哪一方面的要求?如果你正在使用JSP,那么你必须处理大量的服务器端的数据。程序也许需要大量的数据,或者很多用户,或者这二者的结合。你所考虑的可能范围还会包括:性能的优化,可检测性,每一用户的多个查询的影响,查询的复杂性,以及当单一的会话处理大量数据时,高等级的类型转换。

这其中包含大规模的处理。但是,JSP能够帮助你很好地处理,因为它能够与Java Database Connectivity API (JDBC)很好的兼容。你可以将JDBC包含在JSP代码中,并且JDBC能够传递声明执行类似数据库的命令,只要你能够正确地使用JDBC驱动程序。

开始
这里是一个通常的、抽象的JSP程序执行的体系。首选的JSP设计模式为模型-视图-控制器(MVCModel-View-Controller),即传统三层体系的一种变异,以更好的适合于服务器程序。在JSP的MVC设计模式中,Model指的是程序的逻辑与数据,View为查看,以及Controller为请求处理。

当你设计一个JSP程序时,在客户端与服务器交互之间建立第一步骤的页面,这是最好的一个过程。例如,在一个典型程序中,在数据交换中的每一个特定步骤都会有页面:一个数据入口页面,一个验证请求页面,一个数据库响应页面,以及这些页面的子页面(一个更改记录的页面,一个删除记录的页面,等等)。

你可以将JDBC嵌入到每一页面中,以完成被请求的数据库操作。然而,这一操作也会冒很大的风险,因为由于混合了JSP和JDBC而混合了整个程序──JDBC是基于SQL。这也就是SQL被封装在JDBC,而JDBC也被封装在JSP──这也足够让你晕头转向的。如果你选择这一方法,你将会获得你想要的功能,但一定要保证你的程序逻辑与数据库访问代码的关系非常清晰,这一点格外小心。

嵌入式JDBC
JDBC API不会直接地与数据库进行交流。其中的驱动程序完成的实际的连接,你可以在卖方的Web站点上下载这些驱动程序。除此之外,还有四种JDBC的驱动程序类型,如果你决定使用JDBC,你需要正确地选择最为适合你需要的那种类型。你将使用一个DriverManager类来处理基于驱动程序的连接。

你可以使用一个名为getConnection的DriverManager方法来建立你的数据库连接。你还可以使用它的URL参数来识别数据库:

public static Connection getConnection(jdbc:odbc:nameOfDatabase)

现在,告诉DriverManager有关驱动程序的信息(应该在你的classpath中):

Class.forName(“sun.jdbc.odbc.nameOfJDBCDriver”);


你已经将数据库连接到JSP程序,但你仍然不能够执行一个数据库命令。解决这一点,你可以在JSP代码中生成声明以建立数据库命令,如下所示:

public Statement createStatement(intresultSetType, intresultSetConcurrency)


其中的参数能够让你控制从数据库查询得到的结果。当使用第一个参数时,可以在程序中看到结果;当使用第二个参数时,你可以通过查询来更新数值(这是一个难以相信的功能,在以后的文章中值得进一步讨论)。

表A显示列举了下两种方法的复杂性。

声明(Statement)就是SQL命令。PreparedStatement就是SQL的声明,你可以通过其中的参数来控制程序的过程。CallableStatement是用于访问SQL存储程序。你是否开始意识到,如果你没有看到这些说明,你是否觉得这些声明很复杂?请注意到,通过调用rollback方法,你可以撤除交易过程。

如果你想完全使用这些数据库访问的方法,你唯一遗漏的还有:

ResultSetexecuteQuery(string sqlQuery)


(你可以使用executeQuery来完成以上过程。你也可以使用一个executeUpdate来完成更新、插入和删除)。你以上的声明接口使你可以使用一些方法来执行SQL声明。ResultSet所做的就是访问从查询得到的数据,所以你可以在JSP程序中使用这些数据。

通过将JSP程序分解成单一的、功能明显的页面,以及在任何给定页面中执行一个单一的数据库操作,可以很大程度地简化你的数据库操作,以及建立可以用于以后程序开发的页面,即使你将SQL嵌入到这些页面的JDBC中。

但是你还可以做更多的事情,以使得你的JSP数据库访问更加整洁和容易维护。在JSP代码中嵌入JDBC,以及通过发送SQL命令与数据库通讯,这些过程都很好。但是,它要求在不能增加代码复杂程度下,建立通过接口的SQL命令的程序。当你的SQL处理需要提高灵活性的时候,你可以进一步地分离你的数据库接口代码,以清洁你的JSP程序。在下面的文章中,我将告诉你如何实现这些过程。

推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • SpringMVC工作流程概述
    SpringMVC工作流程概述 ... [详细]
  • 数据库锁的分类和应用
    本文介绍了数据库锁的分类和应用,包括并发控制中的读-读、写-写、读-写/写-读操作的问题,以及不同的锁类型和粒度分类。同时还介绍了死锁的产生和避免方法,并详细解释了MVCC的原理以及如何解决幻读的问题。最后,给出了一些使用数据库锁的实际场景和建议。 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之六 || API项目整体搭建 6.1 仓储模式
    代码已上传Github+Gitee,文末有地址  书接上文:前几回文章中,我们花了三天的时间简单了解了下接口文档Swagger框架,已经完全解放了我们的以前的Word说明文档,并且可以在线进行调 ... [详细]
  • 一、Struts2是一个基于MVC设计模式的Web应用框架在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2优点1、实现 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
author-avatar
哈多哥_864
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有