Java Web学习笔记——Tomcat数据源和JSP标签编程

JDBC操作原理:

        (1)加载数据库驱动程序,数据库驱动程序通过classpath配置。

        (2)通过DriverManager类取得数据库连接对象

        (3)通过Connection实例化PreparedStatement对象,编写SQL命令操作数据库

        (4)数据库属于资源操作,操作完成后要关闭数据库以释放资源。


        数据库连接时需要建立多次连接。在使用JDBC连接数据库时,程序会进行多个Socket连接操作,这种传统的数据库操作性是很低的。

        数据源操作的核心原理就是,在一个对象池中保存多个数据库的连接(也称为数据库连接池,Connection Pool),这样以后再进行数据库操作时,直接从连接池中取出一个数据库连接,当数据库操作完成后,再将此连接放回到数据库连接池中,等待其他用户继续使用。在此过程中需要考虑几个问题:最小连接数、最大连接数、最大等待时间。

        在Web容器中,数据库的连接池都是通过数据源(javax.sql.DataSource)访问的,即可以通过javax.sql.DataSource类取得一个Connection对象,但是要想得到一个DataSource对象需要使用JNDI进行查找。(JNDI:java naming and directory interface,Java命名即目录接口,是Java EE提供的一个服务,其服务的主要功能就是通过一个名称的“key”查找到对应的一个对象“value”。)

        一定要配置数据库驱动程序,即将数据库驱动程序复制到%TOMCAT_HOME%\common\lib文件夹中。其中有两种连接数据库的方法:

        (1)Container:容器将代表应用程序登录到资源管理器,一般使用此方法

        (2)Application:应用程序必须程序化地登录到资源管理器。

       

        数据源的操作使用JNDI方式进行查找,所以如果使用数据源取得数据库连接,则必须按照如下步骤进行:

        (1)初始化名称查找上下文:Context ctx = new InitialContext();

        (2)通过名称查找DataSource对象:DataSource ds = (DataSource)ctx.lookup(JNDI名称);

        (3)通过DataSource取得一个数据库连接:Connection conn = ds.getConnection();


        完成一个标签的开发需要具有以下几个部分:

        (1)标签处理类

        (2)标签描述文件

        (3)JSP页面

        (4)(可选)在web.xml文件中配置映射名称

        在一个标签的操作中*.tld是一个最重要的文件,所有标签的具体信息都要通过此文件定义,而此文件在导入时也是分为两种情况的。当一个JSP页面第一次运行时,首先会根据JSP文件编写的<%taglib%>中的uri属性找到对应的*.tld文件,并将其加载到JVM中;而如果是第二次运次此标签,由于JVM已经存在与此*.tld文件,所以不会再重复加载。

        关于TLD中的<rtexprvalue>元素。<rtexprvalue>元素的主要功能是定义format属性是否支持表达式输出,如果设置成了true,则可以通过如下的代码设置format属性的内容:

    <% pageContext.setAttribute("fm","yyyy-MM-dd HH:mm:ss.SSS"); %>

    <mytag:date format="${fm}"/>

    或者使用“<%=%>”的形式输出format属性的内容:

    <% String str = "yyyy-MM-dd HH:mm:ss.SSS"; %>

    <mytag:date format="<%=str%>"/>

    而如果将此属性设置成了false,则是无法在此处使用表达式输出的,否则程序将出现异常。

        标签的实现都需要继承TagSupport这个类。该类是整个标签编程的一个核心类。TagSupport类同时实现了IterationTag和Serializable两个接口。IterationTag本身又是Tag接口的子接口。在整个TagSupport类中,doStartTag()、doEndTag()、doAfterTag()和release()4个方法是最重要的方法。

        BodyTagSupport是TagSupport类的子类,通过继承BodyTagSupport类实现的标签可以直接处理标签体内容的数据。BodyTagSupport类实现了BodyTag接口。

        <body-content>元素可以设置的内容有3中,主要的功能是指定标签体的类型,可能的取值有以下4种:empty、JSP、scriptless、tagdependent。

        DynamicAttributes接口的主要功能是用于完成动态属性的设置,即用户在使用一个标签时可以根据自己的需要,任意设置多个属性。但是要想实现动态属性,仅靠一个DynamicAttributes接口是不够的,还需要配置标签描述文件,在其中增加设置动态属性的操作。

        在JSP2.0之后为了方便标签处理类的开发,提供了SimpleTagSupport类,用户开发时可以避免处理各个方法的返回值问题,而直接在doTag()方法中编写标签处理即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

镰刀韭菜

看在我不断努力的份上,支持我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值