使用jsp的JSTL标准标签配合数据库连接池与数据库进行交互

来源:互联网 发布:网络道德的现状调查 编辑:程序博客网 时间:2024/06/06 02:48

前言

昨天因为有事情,没有时间来做实验。今天接着前面的来做了一下,前面已经完成了数据库与开发环境的连接配置。今天要做的就是写一个简单的demo来通过网页操作数据库里面的资源。几个交互的网页那当然是一下子就写完了,代码将会在下面给出。在这次的小实验当中,最令我困惑的就是如何把网页提交的比如说查询的目标参数,传入到JSTL的语句里面来进行查询。为此,我浪费了不少时间,但是要经过一番努力。原来有一种叫做EL(expression language)的东西非常有用。关于这个的详细资料,大家可以参看这里。

准备工作

首先需要建立一个数据库,有关数据库的不在我们的讨论范围之内。相信建立数据库和创建数据表大家都是可以比较轻易的完成的。

其次是建立数据库与开发环境的连接,这里可以参看我的前一篇文章。

最后要提示一下,在使用JSTL库之前需要下载相关的JRE,并将他们放到tomcat的相关目录下,这里也可以参看我的上一篇文章。

代码过程

首先是整个工程的目录架构


图中可以看到的.jsp文件有四个:

index是开始页面,这里提供两个按钮,分别可以进入到查询或者创建的相关页面;

create顾名思义是创建新的数据库条目的文件,下面给出的代码不包含创建,有需要可以自己完成;

query是查询的相关页面,这里我们输入查询的参数,服务器会从数据库当中找到相关的内容,然后返回给用户;

response是服务器的反应,相当于一个servlet,是服务器的逻辑处理部分。只不过这里是用jsp来进行书写,并且使用的JSTL的核心标签和数据库标签;

下面给出,最重要的response的代码:

<%--     Document   : response    Created on : 2015-7-19, 14:16:11    Author     : ERIC_LAI--%><%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@page contentType="text/html" pageEncoding="UTF-8"%><!DOCTYPE html><html>    <head>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        <title>response</title>    </head>    <center>            <body>            <h1>查询结果</h1>            <span style="color:#ff0000;"><!-- JSTL的数据库标签,用来处理和数据库相关的内容,这里使用的是查询 --></span>            <sql:query var="result" scope="request" dataSource="jdbc/DbTest">                                SELECT * FROM sendtable WHERE rePhone=${param.phone}               <span style="color:#ff0000;"><!-- ${param.phone} 这里是整个的关键,使用EL将查询页面的请求参数读取出来,给select语句使用 --></span>                            </sql:query>            <table border="1" width="60%">                <thead>                    <tr>                        <td>收件人手机</td>                        <td>收件人地址</td>                        <td>寄件人手机</td>                        <td>寄件人地址</td>                        <td>id</td>                    </tr>                </thead>                <tbody>                    <c:forEach var="row" items="${result.rows}">                        <tr>                            <td><c:out value="${row.rePhone}"/></td>                            <td><c:out value="${row.reAddress}"/></td>                            <td><c:out value="${row.sePhone}"/></td>                            <td><c:out value="${row.seAddress}"/></td>                            <td><c:out value="${row.id}"/></td>                        </tr>                    </c:forEach>                               </tbody>            </table>        </body>    </center></html>
下面是index的代码:

<%@page contentType="text/html" pageEncoding="UTF-8"%><!DOCTYPE html><html>    <head>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        <title>DataBase Test Welcome</title>    </head>    <center>          <body>            <h1>数据库实验</h1>                        <input type="button" value="我要快递" name="create" onClick="window.open('create.jsp');"/>                         <input type="button" value="我要查询" name="query" onClick="window.open('query.jsp');"/>                   </body>          </center></html>
下面是query的代码,这里使用了表单和http的POST方法将请求参数传到服务器上:

<%@page contentType="text/html" pageEncoding="UTF-8"%><!DOCTYPE html><html>    <head>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        <title>query an iteam</title>    </head>    <center>        <body>            <h1>查询我的快递</h1>             <form action="response.jsp"  method="POST">                <p><input type="radio" name="query method" value="rePhone" checked="checked" />按照收件人手机查询</p>                <p><input type="radio" name="query method" value="sePhone"   />按照寄件人手机查询</p>                <p>请输入手机号<input type="text" name="phone" ></p>                <br>                <input type="submit" value="提交数据">            </form>        </body>    </center></html>


至此,完成了本次实验。总而言之,最重要的是数据传递的问题,这个问题使用EL可以很容易的解决,现在,基本主流的浏览器都能够支持这个的运行。



0 0