Java 如何将数据从servlet获取到JSP页面?

Java 如何将数据从servlet获取到JSP页面?,java,tomcat,servlets,Java,Tomcat,Servlets,我正在开发一个小型SQLServlet应用程序,它从html页面的文本区域接收sql命令,将命令发送到一个servlet,该servlet建立sql连接,并将结果集放入arraylist中。我已经记下了所有这些,我可以在JavaServlet类中将列名打印到浏览器中。我需要做的一件事是使用JSP页面将结果打印到表中。JSP页面看起来就像我们第一次使用的html页面。我不知道如何将arraylist从servlet获取到要向用户显示的JSP页面 以下是HTML页面: <html>

我正在开发一个小型SQLServlet应用程序,它从html页面的文本区域接收sql命令,将命令发送到一个servlet,该servlet建立sql连接,并将结果集放入arraylist中。我已经记下了所有这些,我可以在JavaServlet类中将列名打印到浏览器中。我需要做的一件事是使用JSP页面将结果打印到表中。JSP页面看起来就像我们第一次使用的html页面。我不知道如何将arraylist从servlet获取到要向用户显示的JSP页面

以下是HTML页面:

<html>
    <head>
        <title>WebApp</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body style="background-color:blue;">
    <center>
        <font color="white">
        <h1> Welcome to the Project 4 Remote Database Management System</h1>
        <hr>
        You are connected to the Project4 database. <br>Please enter any valid SQL query or update statement.<br>
        If no query/update command is given the Execute button will display all supplier information in the database. <br>All execution results will appear below. 
        <br>
        <br>
        <form action="NewServlet" method="post">
            <textarea rows="10" cols="60"name="command"></textarea>
            <br>
             <button type="submit">Execute Query</button>
             <button type="submit">Clear Command</button>
       </form>
        <hr>
        <h1>Database Results</h1>
        </font>
    </body>
</html>
以下是JSP页面的开头:

    <html>
        <head>
            <title>WebApp</title>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
        </head>
        <body style="background-color:blue;">
        <center>
            <font color="white">
            <h1> Welcome to the Project 4 Remote Database Management System</h1>
            <hr>
            You are connected to the Project4 database. <br>Please enter any valid SQL query or update statement.<br>
            If no query/update command is given the Execute button will display all supplier information in the database. <br>All execution results will appear below. 
            <br>
            <br>
            <form action="NewServlet" method="post">
                <textarea rows="10" cols="60"name="command"></textarea>
                <br>
                 <button type="submit">Execute Query</button>
                 <button type="submit">Clear Command</button>
           </form>
            <hr>
            <h1>Database Results</h1>

           <%
    DO TABLE STUFF HERE TO OUTPUT SQL RESULTS
%>

            </font>
        </body>
    </html>

网络应用
欢迎使用Project 4远程数据库管理系统

您已连接到Project4数据库
请输入任何有效的SQL查询或更新语句。
如果未发出查询/更新命令,则执行按钮将显示数据库中的所有供应商信息
所有执行结果将显示在下面。


执行查询 明确命令
数据库结果
我想我将创建一个javaBean来存储数组,以便JSP页面可以访问列arraylist。然后使用for循环遍历数组列表,以便创建表列如何将JSP页面链接到servlet,以便if可以获得所需的信息?


我必须在servlet中进行sql连接,而不能在JSP页面中进行连接

在servlet中,将数据存储在请求属性中:

request.setAttribute("rows", rows);
在JSP中,用于在行上循环:

<c:forEach var="row" value="${rows}">
    ...
</c:forEach>

...

不要在JSP中使用Java Scriptlet。

在servlet中,将数据存储在请求属性中:

request.setAttribute("rows", rows);
在JSP中,用于在行上循环:

<c:forEach var="row" value="${rows}">
    ...
</c:forEach>

...

不要在JSP中使用Java Scriptlet。

在servlet方法中,在页面上下文中设置属性,如下所示

HttpServletRequest req = (HttpServletRequest)request;
.... // find out what to put
req.getPageContext.setAttribute('some', objectYouFound);
在jsp中,使用el访问变量:

${some}

在servlet方法中,在页面上下文中设置属性,如下所示

HttpServletRequest req = (HttpServletRequest)request;
.... // find out what to put
req.getPageContext.setAttribute('some', objectYouFound);
在jsp中,使用el访问变量:

${some}

您的当前代码几乎没有问题:

(1) 单个servlet实例将在所有请求线程之间共享,因此您不应该为servlet类创建实例变量,即

Connection connection;
Vector<String> columnNames = new Vector<String>();
你可以看一个很好的例子


(3) 使用
request.setAttribute
将结果设置为请求对象,然后您可以检索到下一个JSP(结果)页面。

您当前的代码几乎没有问题:

(1) 单个servlet实例将在所有请求线程之间共享,因此您不应该为servlet类创建实例变量,即

Connection connection;
Vector<String> columnNames = new Vector<String>();
你可以看一个很好的例子


(3) 使用
request.setAttribute
将结果设置为request对象,然后可以检索到下一个JSP(结果)页面。

这一点很好!我确实注意到,每次重新加载页面时,都会将相同的列名附加到向量中!说得好!我确实注意到,每次重新加载页面时,都会将相同的列名附加到向量中!