Java JSP和derby数据库类

Java JSP和derby数据库类,java,eclipse,jsp,derby,Java,Eclipse,Jsp,Derby,我有一个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://ww

我有一个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>

Lab4
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:";
}
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.sql.Statement;
导入java.util.ArrayList;
公共类DBHandler{
公共静态数组列表GetCompanyList(){
连接conn=null;
ArrayList语句=新的ArrayList();
语句s=null;
结果集rs=null;
字符串dbName=“Lab4DB”;
ArrayList returnArray=新的ArrayList();
试一试{
conn=DriverManager.getConnection(协议+数据库名);
System.out.println(“连接到数据库”+dbName);
连接设置自动提交(错误);
s=conn.createStatement();
声明.添加(s);
rs=s.executeQuery(“从公司中选择公司”);
while(rs.next()){
returnArray.add(rs.getString(1));
}
}捕获(SQLE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回数组;
}
私有静态字符串协议=“jdbc:derby:”;
}

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

就像您导入的
java.util.ArrayList
要使用它,您必须导入
DBHandler
类才能使用它。如果DBHandler像看上去一样位于默认包中,则将其移动到包中。默认包中不应包含任何类


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

Ok,DBHandler类在DB包中。我应该如何导入它?import=“DB.DBHandler”?import=“java.util.ArrayList,DB.DBHandler”。谷歌搜索“JSP导入”会给你答案。和包名称应为小写。