1. 我们先在Tomcat 中创建一个DataSource- jdbc/Panabia,然后再创建一个java“基类”,这个类封装了数据库连接和连接的释放。

  1. package Panabia.db;
  2.  
  3. import javax.sql.DataSource;
  4. import javax.naming.*;
  5. import java.sql.*;
  6.  
  7. public class SQLFactory
  8. {
  9. private static DataSource ds = null;
  10. private static Object Lock = new Object();
  11.  
  12. // 生成DataSource**
  13. public static DataSource gainDataSource()
  14. {
  15. try{
  16. if(ds==null)
  17. {
  18. synchronized(Lock)
  19. {
  20. if(ds==null)
  21. {
  22. Context ctx=new InitialContext();
  23. ds=(DataSource)ctx.lookup(\"java:comp/env/jdbc/Panabia\");
  24. }
  25. }
  26. }
  27. }catch(NamingException e){
  28. e.printStackTrace();
  29. }
  30. return ds;
  31. }
  32.  
  33. // 生成SQL连接**
  34. public static synchronized Connection gainConnection()
  35. {
  36. Connection con = null;
  37. try{
  38. if(ds == null)
  39. {
  40. gainDataSource();
  41. }
  42. con = ds.getConnection();
  43. }catch (SQLException e){
  44. e.printStackTrace();
  45. }
  46. return con;
  47. }
  48.  
  49. // 释放SQL连接**
  50. public static void releaseConnection(ResultSet rs, PreparedStatement ps,
  51. Statement sql, Connection con)
  52. {
  53. try
  54. {
  55. if (rs != null)
  56. rs.close();
  57. }catch (SQLException e) {
  58. e.printStackTrace();
  59. }
  60.  
  61. try
  62. {
  63. if (ps != null)
  64. ps.close();
  65. }catch (SQLException e) {
  66. e.printStackTrace();
  67. }
  68.  
  69. try
  70. {
  71. if (sql != null)
  72. sql.close();
  73. }catch(SQLException e) {
  74. e.printStackTrace();
  75. }
  76.  
  77. try {
  78. if (con != null && !con.isClosed())
  79. con.close();
  80. }catch (SQLException e) {
  81. e.printStackTrace();
  82. }
  83. }
  84.  
  85. }

 大家都应该注意到了,这个类的所有的方法全部是static的,之所以这样,主要是为了方便其它“扩展类”的调用,当然,还有其它好处--- :)

2. 然后,这个类就封装完毕了,现在我们就可以针对不同的应用要求单独写javaBean了,比如一个简单的:在JSP中列出verify表中的所有用户名与密码列表。

该怎么做?--使用SQLFactory生成Connection,再生成Statement,再生成ResultSet--然后枚举吗?好象不错,哦,等等......这样做你难道没有一种“非常亲切”的感觉吗?---对了,ASP,PHP中就是如此-Faint~我们怎么又回到“原始社会”了....

有没有更好的方式?答案是肯定的,JAVA的能力是“通天”的强大,只要你能想得到,仔细看看它的API Document,就不难找出解决办法。

答案出来了:

  我们在查询类中返回Iterator到JSP枚举,而不是ResultSet。

好了,我们的UserQuery类就产生了:

  1. package Panabia.operate;
  2.  
  3. import Panabia.db.SQLFactory;
  4. import java.util.*;
  5. import java.sql.*;
  6.  
  7. public class UserQuery
  8. {
  9. private ArrayList list = null;
  10. private Connection con = null;
  11. private Statement sql = null;
  12. private ResultSet rs = null;
  13.  
  14. public Iterator getResult()
  15. {
  16. try{
  17. con=SQLFactory.gainConnection();
  18. sql=con.createStatement();
  19. rs=sql.executeQuery(\"select * from verify\");
  20. //verify表只有两个字段:username,password;
  21. list=new ArrayList();
  22. while(rs.next())
  23. {
  24. list.add(rs.getString(1));
  25. list.add(rs.getString(2));
  26. }
  27. }catch(SQLException e){
  28. e.printStackTrace();
  29. }finally{
  30. SQLFactory.releaseConnection(rs,null,sql,con);
  31. }
  32.  
  33. return list.iterator();
  34. }
  35. }

3. 在jsp页面进行查询

  1. Iterator it=UserQuery.getResult();
  2. while(it.hasNext())
  3. {
  4. out.print((String)it.next());
  5. }
  6.  
  7. //尚不完善的地方:虽然情况好了一些,但当使用ArrayList取出体积很大的数据时,会相当耗费系统资源[系统会在内存单独开一块空间存放结果]---相关的优化方法是有的,我在这里就不作陈述了,大家可以参考一下其它的相关资料。

构建一个高可扩展性javabean和jsp连接数据库操作的更多相关文章

  1. 通向高可扩展性之路(推特篇) ---- 一个推特用来支撑1亿5千万活跃用户、30万QPS、22MB每秒Firehose、以及5秒内推送信息的架构

    原文链接:http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to-deal-with-150m-active ...

  2. javabean+servlet+jsp程序_个人辛苦探索

    主要介绍主流的java web编程技术.设计模式和框架,以及如何利用Eclipese开发Web应用程序. 要点:1.Java Web编程的主要组件技术: 2.MVC设计模式: 3.用Eclipse构建 ...

  3. 构建一个简单的基于MVC模式的JavaWeb

    零晨三点半了,刚刚几个兄弟一起出去吼歌,才回来,这应该是我大学第二次去K歌,第一次是大一吧,之后每次兄弟喊我,我都不想去,因为我还是很害怕去KTV,或许是因为那里是我伤心的地方,也或许是因为我在那里失 ...

  4. struts1:(Struts重构)构建一个简单的基于MVC模式的JavaWeb

    在构建一个简单的基于MVC模式的JavaWeb 中,我们使用了JSP+Servlet+JavaBean构建了一个基于MVC模式的简单登录系统,但在其小结中已经指出,这种模式下的Controller 和 ...

  5. 基于TMF SID的高可扩展性数据模型

    基于TMF SID的高可扩展性数据模型 前言 此文根据TMF SID规范撰写,欢迎大家提出建议和意见. TMF文档版权信息 Copyright © TeleManagement Forum 2013. ...

  6. .Net中的AOP系列之构建一个汽车租赁应用

    返回<.Net中的AOP>系列学习总目录 本篇目录 开始一个新项目 没有AOP的生活 变更的代价 使用AOP重构 本系列的源码本人已托管于Coding上:点击查看. 本系列的实验环境:VS ...

  7. 从零构建一个简单的 Python Web框架

    为什么你想要自己构建一个 web 框架呢?我想,原因有以下几点: 你有一个新奇的想法,觉得将会取代其他的框架 你想要获得一些名气 你遇到的问题很独特,以至于现有的框架不太合适 你对 web 框架是如何 ...

  8. javaBean和jsp应用

    原网页:http://www.douban.com/note/102320977/ JavaBean是一种可复用,跨平台的组件.共有两种JavaBean:一种无用户界面,这种一般用于处理数据运算,操作 ...

  9. JavaBean与Jsp

    这一节我们总结一下JavaBean和Jsp的关系. 1. JavaBean javaBean是一个遵循特定写法的Java类,它通常具有如下特点:        1)这个java类必须具有一个无参构造函 ...

随机推荐

  1. 20165333 实验二 Java面向对象程序设计

    姓名:陈国超 学号:20165333 班级:1653 实验课程:JAVA程序设计 实验名称:Java面向对象程序设计 实验时间:2018.4.14 指导老师:娄家鹏 实验内容及步骤 (一) " ...

  2. Python3语法详解

    一.下载安装 1.1Python下载 Python官网:https://www.python.org/ 1.2Python安装 1.2.1 Linux 平台安装 以下为在Unix & Linu ...

  3. asp.net MVC发布iis无法加载css,js和图片

    今天真够郁闷的,遇到了在本地能运行的项目到了iis服务器那里就不行了,无法加载css,js和图片,这里说清楚一下先,关于asp.net 的MVC中这样的情况其实不少,但是之前遇到的是在visual s ...

  4. Springboot以war包方式运行

    一.  修改打包形式 在pom.xml里设置 <packaging>war</packaging>   二.添加以下依赖  提供标记嵌入式servlet容器 <depen ...

  5. UVA - 120Stacks of Flapjacks (摊煎饼。。)排序

    /* 这题使我记起了以前很多忘掉的东西,例如sstream(分割流),deque(双端队列),还有众多函数(STL里的).值得收藏 值得注意的是这题的序号问题,(因为要求输出翻转的位置),序号从右往左 ...

  6. web服务端安全之SQL注入攻击

    一.SQL注入攻击的原理攻击者在HTTP请求中,注入恶意的SQL代码,并在服务端执行.比如用户登录,输入用户名camille,密码 ' or '1'='1 ,如果此时使用参数构造的方式,就会出现 ' ...

  7. [ 转载 ] Java基础11--Java总结篇系列:Java泛型

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(Stri ...

  8. Django配置参数可选总结

    一.可选字段参数 null blank core db_index editable primary_key radio_admin unique True or False db_colum hel ...

  9. android 实现 view 滑动

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 1,通过view 的  滑动到 方法 或者 通过什么滑动  方法 实现.  适合 视图 ...

  10. codevs 1462 素数和

    1462 素数和  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 青铜 Bronze     题目描述 Description 给定2个整数a,b 求出它们之间(不含a,b)所有 ...