java.sql.SQLException: QueryRunner requires a DataSource to be invoked in this w

不爱总结的麦穗 2018-02-24 11:53:15
package com.tx.dao;

import java.sql.SQLException;
import java.util.List;
import com.tx.vo.Emp;

public interface IEmpDao {
/*查询所有员工*/
List<Emp> selectAll() throws SQLException ;
}
==============================================================================================
package com.tx.dao.impl;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.tx.dao.IEmpDao;
import com.tx.util.DruidUtil;
import com.tx.vo.Emp;

public class EmpDaoImpl implements IEmpDao{
@Override
public List<Emp> selectAll() throws SQLException {
return DruidUtil.qr.query("select * from emp", new BeanListHandler<Emp>(Emp.class));
}
}
==============================================================================================
package com.tx.service;

import java.sql.SQLException;
import java.util.List;

import com.tx.vo.Emp;

public interface IEmpService {
List<Emp> selectAll() throws SQLException ;
}
===============================================================================================
package com.tx.service.impl;

import java.sql.SQLException;
import java.util.List;

import com.tx.dao.IEmpDao;
import com.tx.dao.impl.EmpDaoImpl;
import com.tx.service.IEmpService;
import com.tx.vo.Emp;

public class EmpServiceImpl implements IEmpService{
IEmpDao empDao=new EmpDaoImpl();
@Override
public List<Emp> selectAll() throws SQLException {
return empDao.selectAll();
}
}
=============================================================================================
package com.tx.vo;

public class Emp {
private Integer empno;
private String ename;
private String job;
private String deptno;
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getDeptno() {
return deptno;
}
public void setDeptno(String deptno) {
this.deptno = deptno;
}
@Override
public String toString() {
return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job + ", deptno=" + deptno + "]";
}

}

==============================================================================================
package com.tx.servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import com.tx.service.IEmpService;
import com.tx.service.impl.EmpServiceImpl;
import com.tx.vo.Emp;

/**
* Servlet implementation class EmpServlet
*/

public class EmpServlet extends HttpServlet {

IEmpService empService=new EmpServiceImpl();

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String pathInfo=request.getPathInfo().substring(1);

if("listAll".equals(pathInfo)){
ListAll(request,response);
}

}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);
}


private void ListAll(HttpServletRequest request, HttpServletResponse response) {
try {
//调用业务成的方法拿到所有员工
List<Emp> emps=empService.selectAll();
//request对象绑定属性员工list
request.setAttribute("empList",emps);
//转发到jsp处理页面
request.getRequestDispatcher("/student/student_list.jsp").forward(request, response);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}
==============================================================================================
package com.tx.util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbutils.QueryRunner;

public class DruidUtil {
public static DataSource dataSource;

static{
InputStream input=DruidUtil.class.getClassLoader().getResourceAsStream("druid.properties");
Properties prop=new Properties();
try {
prop.load(input);
} catch (IOException e) {
e.printStackTrace();
}
}
public static QueryRunner qr=new QueryRunner(dataSource);
public static Connection getConnection(){
try {
return dataSource.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return null;
}
}
===============================================================================================
driverClassName = oracle.jdbc.driver.OracleDriver
url = jdbc:oracle:thin:@localhost:1521:orcal
username = scott
password = tiger
initialSize = 5
maxActive = 10
minIdle = 3
maxWait = 10000
=============================================================================
java.sql.SQLException: QueryRunner requires a DataSource to be invoked in this way, or a Connection should be passed in
at org.apache.commons.dbutils.AbstractQueryRunner.prepareConnection(AbstractQueryRunner.java:315)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:345)
at com.tx.dao.impl.EmpDaoImpl.selectAll(EmpDaoImpl.java:17)
at com.tx.service.impl.EmpServiceImpl.selectAll(EmpServiceImpl.java:15)
at com.tx.servlet.EmpServlet.ListAll(EmpServlet.java:46)
at com.tx.servlet.EmpServlet.doGet(EmpServlet.java:31)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)


求大神帮忙解决,谢谢~~~~~~~~~~






...全文
1772 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_39670158 2018-02-24
  • 打赏
  • 举报
回复
public class DruidUtil { public static DataSource dataSource; 还没初始化呢。看看你用谁的连接池,如果是dbcp 就貌似 dataSource = new BasicDataSource();
  • 打赏
  • 举报
回复
引用 1 楼 weixin_39670158的回复:
public class DruidUtil { public static DataSource dataSource; 还没初始化呢。看看你用谁的连接池,如果是dbcp 就貌似 dataSource = new BasicDataSource();
谢谢大神,已解决
  • 打赏
  • 举报
回复
引用 1 楼 weixin_39670158的回复:
public class DruidUtil { public static DataSource dataSource; 还没初始化呢。看看你用谁的连接池,如果是dbcp 就貌似 dataSource = new BasicDataSource();
我用的是druid链接池
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在计算机视觉领域,实时目标跟踪是许多应用的核心任务,例如监控系统、自动驾驶汽车和无人机导航等。本文将重点介绍一种在2017年备受关注的高效目标跟踪算法——BACF(Boosted Adaptive Clustering Filter)。该算法因其卓越的实时性和高精度而脱颖而出,其核心代码是用MATLAB编写的。 BACF算法全称为Boosted Adaptive Clustering Filter,是基于卡尔曼滤波器改进的一种算法。传统卡尔曼滤波在处理复杂背景和目标形变时存在局限性,而BACF通过引入自适应聚类和Boosting策略,显著提升了对目标特征的捕获和跟踪能力。 自适应聚类是BACF算法的关键技术之一。它通过动态更新特征空间中的聚类中心,更准确地捕捉目标的外观变化,从而在光照变化、遮挡和目标形变等复杂情况下保持跟踪的稳定性。此外,BACF还采用了Boosting策略。Boosting是一种集成学习方法,通过组合多个弱分类器形成强分类器。在BACF中,Boosting用于优化目标检测性能,动态调整特征权重,强化对目标识别贡献大的特征,从而提高跟踪精度。BACF算法在设计时充分考虑了计算效率,能够在保持高精度的同时实现快速实时的目标跟踪,这对于需要快速响应的应用场景(如视频监控和自动驾驶)至关重要。 MATLAB作为一种强大的数学计算和数据分析工具,非常适合用于算法的原型开发和测试。BACF算法的MATLAB实现提供了清晰的代码结构,方便研究人员理解其工作原理并进行优化和扩展。通常,BACF的MATLAB源码包含以下部分:主函数(实现整个跟踪算法的核心代码)、特征提取模块(从视频帧中提取目标特征的子程序)、聚类算法(实现自适应聚类过程)、Boosting算法(包含特征权重更新的代
内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱和、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性和优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学和动态神经网络领域的学术界和工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束和系统动力学的情况下;②解决带有参数不确定性的线性和非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计和验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真和实验进一步验证书中提出的理论和技术。

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧