Java Web应用开发

侯玉香,聂军,雷秦川,骆丽华,陈道敏,苗莹莹,刘叶

目录

  • 1 Java Web概述
    • 1.1 任务导引
    • 1.2 动态网页技术介绍
    • 1.3 JSP的运行环境
    • 1.4 JSP的运行原理
    • 1.5 JSP程序开发模式
    • 1.6 JSP开发工具
    • 1.7 任务实施:搭建项目环境及公司主页设计
    • 1.8 学习测验
  • 2 JSP基本语法
    • 2.1 任务导引
    • 2.2 JSP的基本组成
    • 2.3 脚本元素
    • 2.4 指令元素
    • 2.5 动作元素
    • 2.6 任务实施
    • 2.7 学习测验
  • 3 服务器交互
    • 3.1 任务导引
    • 3.2 课堂实录
    • 3.3 JSP内置对象概述
    • 3.4 out对象
    • 3.5 request对象
    • 3.6 response对象
    • 3.7 session对象
    • 3.8 application对象
    • 3.9 其他内置对象
    • 3.10 任务实施:使用JSP内置对象实现登录和注销功能
    • 3.11 学习测验
  • 4 JavaBean技术
    • 4.1 任务引导
    • 4.2 JavaBean概述
    • 4.3 JavaBean的应用
    • 4.4 JavaBean的作用域
    • 4.5 任务实施
    • 4.6 JSP中的文件操作
    • 4.7 学习测验
  • 5 Servlet技术
    • 5.1 任务引导
    • 5.2 Servlet基础
    • 5.3 Servlet开发
    • 5.4 Servlet常用API
    • 5.5 任务实施
    • 5.6 章节测验
  • 6 第6章 过滤器和监听器
    • 6.1 任务导引
    • 6.2 Servlet过滤器
    • 6.3 过滤器创建与配置
    • 6.4 Servlet监听器
    • 6.5 Servlet3.0新特性
    • 6.6 任务实施
    • 6.7 学习测验
  • 7 Java Web的数据库操作
    • 7.1 任务导引
    • 7.2 JDBC技术
    • 7.3 使用JDBC驱动程序访问数据库
    • 7.4 数据库连接的JavaBean
    • 7.5 JDBC对事务的操作
    • 7.6 连接池技术
    • 7.7 任务实施
    • 7.8 扩展阅读
    • 7.9 章节测验
  • 8 JSP高级技术
    • 8.1 任务导引
    • 8.2 EL概述
    • 8.3 JSTL标签库简介
    • 8.4 JSTL核心标签
    • 8.5 JSP与Ajax
    • 8.6 任务实施
    • 8.7 扩展阅读
    • 8.8 学习测验
  • 9 JSP实用组件技术
    • 9.1 任务导引
    • 9.2 上传与下载组件
    • 9.3 发送E-mail
    • 9.4 JSP动态图表
    • 9.5 在线编辑器
    • 9.6 任务实施
  • 10 教学过程材料
    • 10.1 2024-2025学年第一学期
      • 10.1.1 教学大纲
      • 10.1.2 授课计划
      • 10.1.3 实训指导书
      • 10.1.4 教案
      • 10.1.5 课件PPT
    • 10.2 2024-2025学年第二学期
      • 10.2.1 教学大纲
      • 10.2.2 授课计划
      • 10.2.3 实训指导书
      • 10.2.4 教案
      • 10.2.5 课件PPT
    • 10.3 2025-2026学年第一学期
      • 10.3.1 教学大纲
      • 10.3.2 授课计划
      • 10.3.3 实训指导书
      • 10.3.4 教案
      • 10.3.5 课件PPT
    • 10.4 2025-2026学年第二学期
      • 10.4.1 教学大纲
      • 10.4.2 授课计划
      • 10.4.3 实训指导书
      • 10.4.4 教案
      • 10.4.5 课件PPT
  • 11 课外资料
    • 11.1 电子书
      • 11.1.1 JavaWeb从入门到精通
      • 11.1.2 JavaWeb开发详解
      • 11.1.3 JavaWeb开发之道
      • 11.1.4 深入体验JavaWeb开发内幕-核心基础
      • 11.1.5 学通JavaWeb的24堂课
      • 11.1.6 Java Web 程序设计
      • 11.1.7 Java Web程序设计教程
      • 11.1.8 Java Web设计与应用教程
      • 11.1.9 Java_Web编程新手自学手册
      • 11.1.10 Tomcat and Java Web 开发技术详解
      • 11.1.11 Spring Boot 2+Thymeleaf企业应用实战
      • 11.1.12 Spring Boot+Vue全栈开发实战
      • 11.1.13 Spring实战
      • 11.1.14 JavaEE 8+Tomcat 9
    • 11.2 教学视频
      • 11.2.1 JDBC基础教学视频
      • 11.2.2 JDBC高级应用教学视频
连接池技术

请同学们先浏览PPT,这是一个任务点哈!完成后有惊喜哟!





1.连接池概述


数据库连接池指定是在应用服务器启动时,预先建立一定数量的数据库连接,然后将它们放置到池中进行统一管理。一旦客户端请求数据连接时,服务器立即给它将分配一个连接,而不需要为它重新创建数据库连接。

数据库连接池的优缺点

优点:而采用连接池技术,将预先建立的连接分配给客户端的请求,一方面缩短了服务器响应时间,另一方面通过池化管理减轻了服务器负担。

缺点:服务器启动时就会创建一定数量的数据库连接,事实上,这些连接都在等待服务器为其分配客户端的请求,当请求数目远远少于连接数目时,就会导致许多空连接,它们消耗了一定的系统资源。

2.连接池的实现原理

服务器在启动时创建连接池,同时建立一定数量的数据库连接。当客户端请求数据库时,服务器立即为其分配连接。当客户端请求数量超出了已经创建的连接数目时,服务器将为其创建新的连接。当请求数目少于连接数时,将关闭不必要的空连接。连接池的实现原理如图所示。



3.Tomcat连接池的实现 

(1)配置数据源 

在Tomcat安装目录下的conf\server.xml文件中配置,也可以在Web工程下的META-INF\context.xml文件中配置,在context.xml文件中配置数据源的具体代码如下(Tomcat 5.5以上的版本):

<Context  >

<Resource name="jdbc/mysql" type="javax.sql.DataSource" auth="Container"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/jdbcdemo"

username="root"

password="123456"

maxActive="40"

maxIdle="2"/>

</Context> 

(2)获取连接

public class JDBConnection {

private Connection con = null;

private DataSource ds;

public JDBConnection() { //通过构造方法加载数据库驱动

try {

Context ctx = new InitialContext();

ctx = (Context) ctx.lookup("java:comp/env");

ds = (DataSource) ctx.lookup("jdbc/mysql"); //获取JNDI的名称

con = ds.getConnection();

} catch (Exception e) {

e.printStackTrace();

}

}

}


4.Proxool连接池的实现 

Proxool是一个Java SQL Driver驱动程序,它提供了对其它类型的驱动程序的连接池封装,可以透明的为现存的JDBC驱动程序增加连接池功能。Proxool同时也是一个开源的连接池,它的性能优异,可实时监控连接池状态。

(1)Proxool连接池类库下载 

Proxool连接池类库的下载是“http://proxool.sourceforge.net”,根据页面中的提示可以下载到该连接池的最新类库版本:proxool-0.9.0RC2。下载后的文件是一个“proxool-0.9.0RC2.zip”压缩文件,解压后的文件中的“proxool-0.9.0RC2.jar”拷贝到当前Web工程下的WEB-INF/lib文件夹即可。  

(2)配置Proxool连接池 

Proxool连接池通过配置文件显式的指定各个配置选项。该配置文件在WEB-INF文件创建名称“proxool.xml”,该文件的代码如下: 

<?xml version="1.0" encoding="UTF-8"?>

<something-else-entirely>

    <proxool>

        <alias>mysqlpool</alias>

        <driver-url>

            jdbc:mysql://localhost:3306/jdbcdemo

        </driver-url>

        <driver-class>

        com.mysql.jdbc.Driver

        </driver-class>

        <driver-properties>

            <property name="user" value="root" />

            <property name="password" value="123456" />

        </driver-properties>

        <maximum-connection-count>100</maximum-connection-count>

        <prototype-count>15</prototype-count>

        <minimum-connection-count>5</minimum-connection-count>

        <maximum-active-time>1000</maximum-active-time>

        <house-keeping-sleep-time>30000</house-keeping-sleep-time>

        <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>

    </proxool>

</something-else-entirely>

(3)配置web.xml 

<! -- 配置初始化servlet,在web容器加载的时候自动加载配置文件,如果不是web程序,这个部分就需要通过开发接口来初始化了 -->

   <servlet>     

          <servlet-name>proxoolInitialServlet</servlet-name>

         <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>       

          <init-param>          

                 <param-name>xmlFile</param-name>           

                 <param-value>WEB-INF/proxool.xml</param-value>     

          </init-param>     

            <load-on-startup>1</load-on-startup>   

</servlet>

(4)获取连接

在程序中调用时,一般将获取connection的行为封装为一个工厂模式,便于多种情况的切换,以下是其中proxool数据源的getConnection方法的实现:

public Connection getConnection() {            

try{                             

    Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");                                       

        return DriverManager.getConnection("proxool.mysqlpool");                    

    }catch(Exception ex){                         

        ex.printStackTrace();                 

    }                 

    return null;    

}