【问题标题】:JSP and derby database classJSP 和 derby 数据库类
【发布时间】:2014-02-09 08:30:37
【问题描述】:

我有一个 jsp 页面,我想在其中放置一些来自数据库的信息。 代码:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"
    import="java.util.ArrayList"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/bootstrap.min.css" rel="stylesheet">
<title>Lab4</title>
</head>
<body>
<div id='chekboxOfCompanies'>
<%
ArrayList<String> companiesList=DBHandler.getCompaniesList();
for (int i=0;i<companiesList.size();i++){
    out.println("<input type='checkbox'>");
}
%>
</div>
</body>
</html>

DBHandler 获取数据库中公司名称的arrayList。这是代码。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;


public class DBHandler {
    public static ArrayList<String> getCompaniesList(){
        Connection conn = null;
        ArrayList<Statement> statements = new ArrayList<Statement>(); 
        Statement s = null;
        ResultSet rs = null;
        String dbName = "Lab4DB";
        ArrayList<String> returnArray=new ArrayList<String>();
        try {
            conn = DriverManager.getConnection(protocol + dbName);
            System.out.println("Connected to database " + dbName);
            conn.setAutoCommit(false);
            s = conn.createStatement();
            statements.add(s);
            rs = s.executeQuery("SELECT company from companies");
            while(rs.next()){
                returnArray.add(rs.getString(1));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return returnArray;
    }
    private static String protocol = "jdbc:derby:";
}

当我尝试在服务器上运行它时,它说 DBHandler 无法解析。我怎样才能得到这些信息?我做错了什么?

【问题讨论】:

    标签: java eclipse jsp derby


    【解决方案1】:

    就像您导入 java.util.ArrayList 才能使用它一样,您必须导入 DBHandler 类才能使用它。如果 DBHandler 看起来像在默认包中,则将其移动到包中。默认包中不应该有任何类。

    也就是说,您也不应该在 JSP 中使用 scriptlet。数据库访问代码应该从 Servlet 调用,用 Java 编写,并且 servlet 应该将列表存储在请求属性中并转发给 JSP。 JSP 应该使用 JSP EL 和 JSTL 来显示这个列表,并且不应该包含任何 Java 代码。

    【讨论】:

    • 好的,DBHandler 类在 DB 包中。我应该如何导入它? import="DB.DBHandler"?
    • import="java.util.ArrayList, DB.DBHandler"。谷歌搜索“JSP 导入”会给你答案。并且包名应该是小写的。
    猜你喜欢
    • 2019-09-26
    • 2020-08-29
    • 1970-01-01
    • 2017-10-25
    • 2015-07-11
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 2011-01-20
    相关资源
    最近更新 更多