package com.jdbc8.DAO;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;public class BaseDAO {
private  Connection con; public  Connection getConnection() throws SQLException,
ClassNotFoundException {
Properties p = Env.getInstance();
Class.forName(p.getProperty("driver"));
return con = DriverManager.getConnection(p.getProperty("url"),
p.getProperty("id"), p.getProperty("password"));
} public  void closeConnection(PreparedStatement pstmt, ResultSet rs,
Connection con) throws SQLException {
if (rs != null && !rs.isClosed()) {
con.close();
}
if (pstmt != null && !pstmt.isClosed()) {
pstmt.close();
} if (con != null && !con.isClosed()) {
con.close();
} }}
package com.jdbc8.DAO;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport;public class SqlDAO extends BaseDAO {
private String sql;
private List<Object> params;
private PreparedStatement pstmt;
private ResultSet rs; public void setSql(String sql) {
this.sql = sql;
} public void setParams(List<Object> params) {
this.params = params;
} public int executeUpdate() throws SQLException, ClassNotFoundException {
int rows = 0;
Connection con = this.getConnection();
pstmt = con.prepareStatement(sql);
if (params != null && params.size() > 0) {
for (int i = 0; i < params.size(); i++) {
pstmt.setObject(i + 1, params.get(i));
}
} rows = pstmt.executeUpdate();
this.closeConnection(pstmt, rs, con); return rows; } public Result executeQuery() throws SQLException, ClassNotFoundException {
Connection con = this.getConnection();
pstmt = con.prepareStatement(sql);
if (params != null && params.size() > 0) {
for (int i = 0; i < params.size(); i++) {
pstmt.setObject(i + 1, params.get(i));
}
}
rs = pstmt.executeQuery();
Result r = ResultSupport.toResult(rs);//报错提示的就是这句代码…………
this.closeConnection(pstmt, rs, con); return r; }}
package com.jdbc8.DAO;import java.sql.Connection;
import java.sql.SQLException;import java.util.ArrayList;
import java.util.List;
import java.util.Map;import javax.servlet.jsp.jstl.sql.Result;public class Jdbc8 {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
String sql="select * from employees where id=?";
List<Object> params=new ArrayList<Object>();
params.add(3);

SqlDAO sd=new SqlDAO();
sd.setSql(sql);
sd.setParams(params);
Result r=sd.executeQuery();
for(Map map:r.getRows()){
System.out.println(map.get("id"));
System.out.println(map.get("name"));
System.out.println(map.get("borndate"));
}

}}执行的时候,总会报如下错误,请各位高手不吝赐教,不胜感激!Exception in thread "main" java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/jsp/jstl/sql/ResultSupport
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at com.jdbc8.DAO.SqlDAO.executeQuery(SqlDAO.java:52)
at com.jdbc8.DAO.Jdbc8.main(Jdbc8.java:21)