我有两个jsp页面,一个是connector.jsp
,另一个是select.jsp
。我创建了数据库连接并尝试创建一个环境来运行connector.jsp
中的任何查询。我在select.jsp
编写了主要查询。我想将查询作为字符串传递给connector.jsp
。我想只在connector.jsp中执行它。但我不知道我应该怎么做解决它。请帮我解决我的问题
这是我的代码
connector.jsp
<%@page import="java.util.HashMap"%>
<%@page import="java.sql.ResultSetMetaData"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%!
Connection connection = null;
Statement statement = null;
%>
<% Class.forName("org.postgresql.Driver"); %>
<%
Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/test", "postgres", "root");
statement = connection.createStatement();
out.println("Database Connected Successfully.");
%>
<%!
List select(String query) {
List rows = new ArrayList();
Map row = null;
try {
ResultSet resultSet = statement.executeQuery(query);
ResultSetMetaData metaData = resultSet.getMetaData();
int numColumns = metaData.getColumnCount();
while (resultSet.next()) {
row = new HashMap();
for (int i = 1; i < numColumns + 1; i++) {
row.put(metaData.getColumnName(i), resultSet.getObject(i));
}
rows.add(row);
}
resultSet.close();
} catch (Exception e) {
}
return rows;
}
%>
这是我的另一个页面,我写了我的sql主查询
selectquery.jsp
<%@page import="java.util.List"%>
<%@page import=" com.google.gson.Gson"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<jsp:include page="connector.jsp" />
<%
String query =("select distinct eid,ename,esalary from testemployee order by eid");
Gson gson = new Gson();
String json = gson.toJson(rows);
out.print(json);
%>
但显示错误。
答案 0 :(得分:0)
您需要使用&lt; @include ....&gt;如果要从包含页面而不是jsp:include访问父页面中定义的变量。
在包含页面之前定义您的变量(即本例中的查询)。
答案 1 :(得分:0)
当你使用&lt;%! ..%&gt ;,表示您正在使用服务方法编写代码。您应该将整个代码包含在以下方法中。
<%!
public List select(String query) throws Exception{
Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/test", "postgres", "root");
Statement statement = connection.createStatement();
out.println("Database Connected Successfully.");
List rows = new ArrayList();
Map row = null;
ResultSet resultSet = statement.executeQuery(query);
ResultSetMetaData metaData = resultSet.getMetaData();
int numColumns = metaData.getColumnCount();
while (resultSet.next()) {
row = new HashMap();
for (int i = 1; i < numColumns + 1; i++) {
row.put(metaData.getColumnName(i), resultSet.getObject(i));
}
rows.add(row);
}
resultSet.close();
connection.close();
}
%>
使用&lt; @include file =“connector.jsp”&gt;包含此jsp。
嗯,使用JSP进行连接是不合适的。您应该创建一个类并声明连接实用程序方法init。
答案 2 :(得分:0)
您不得在JSP中编写与此数据库相关的代码。它的坏习惯。而是应该在托管bean或在JSP页面中用作bean的其他类中。