我有一个问题,我有一个导入java.sql的自定义类。;我正在创建一个jsp页面,在jsp页面中,我做了自定义类的页面导入,但是当我试图调用我的自定义类数据库方法时,它无法工作。只有当我执行了java.sql的页面导入。才有效。自定义类导入的API也包含在.class文件中吗?
An error occurred at line: 6 in the jsp file: /resetpw.jsp
Statement cannot be resolved to a type
3:
4: <%
5: db.connect();
6: Statement stmt = db.getConnection().createStatement();
7: ResultSet rs = stmt.executeQuery("SELECT * FROM created_accounts");
8:
9:
An error occurred at line: 7 in the jsp file: /resetpw.jsp
ResultSet cannot be resolved to a type
4: <%
5: db.connect();
6: Statement stmt = db.getConnection().createStatement();
7: ResultSet rs = stmt.executeQuery("SELECT * FROM created_accounts");
8:
9:
10:
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:93)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:319)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:298)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:565)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:309)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.31 logs.
编辑。如果我没有对java.sql进行页面导入,那么会添加什么错误。*;
答案 0 :(得分:1)
很简单,您使用的是java.sql包中的Statement和Resultset类。因此,您必须在JSP中导入java.sql包。
如果您在自定义类中执行所有数据库工作并在JSP中调用它的方法,而不需要任何此类,那么您只能在Jsp页面中省略java.sql的导入。
在一个类中导入的API不能用于调用第一个类的另一个类或页面。它们不包含在.class文件中。
希望你明白我的意思。
答案 1 :(得分:1)
Harry Joy是对的,你需要导入声明。这是JSP页面的一些框架:
<%@ page language ="java" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
...some stuff...
<%
String paramT1=request.getParameter("t1");
String paramT2=request.getParameter("t2");
%>
...some stuff..
<%
try{
Class.forName("your_jdbc_drier_class");
Connection con=DriverManager.getConnection("connection_url","username","password");
PreparedStatement st;
st = con.prepareStatement("Insert into ch values (1,2)");
st.setString(1,fname);
st.setString(2,lname);
st.executeUpdate();
}
catch(Exception e1)
{
out.println("cannot display the records");
}
%>
... some stuff ...
这应该可行,但我强烈建议在容器和JSTL SQL中使用JNDI。以下是一些可能有用的教程: