本文是作者原创文章,欢迎转载,请注明出处 from:@Eric_Lai

前言

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

准备工作

首先需要建立一个数据库,有关数据库的不在我们的讨论范围之内。相信建立数据库和创建数据表大家都是可以比较轻易的完成的。 其次是建立数据库与开发环境的连接,这里可以参看我的前一篇文章。 最后要提示一下,在使用JSTL库之前需要下载相关的JRE,并将他们放到tomcat的相关目录下,这里也可以参看我的上一篇文章。

代码过程

首先是整个工程的目录架构 图中可以看到的.jsp文件有四个:

下面给出,最重要的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可以很容易的解决,现在,基本主流的浏览器都能够支持这个的运行。